webpack

webpack 打包组件和基础库

2020-12-05  本文已影响0人  阿畅_

需求

如果将库暴露出去

编写代码逻辑

export default function add(a, b) {
  let i = a.length - 1
  let j = b.length - 1
  // 记录进位
  let carry = 0
  let res = ''
  // 个位数+个位数 十位数 + 十位数
  while(i >= 0 || j >= 0) {
    let x = 0
    let y = 0
    let sum
    if (i >= 0) {
      // string 转成 number
      x = a[i] - '0'
      i --
    }
    if (j >= 0) {
      y = b[j] - '0'
      j --
    }
    // 每次求和必须要把进位加上
    sum = x + y + carry
    // 如果 sum >= 10 进位 = 1, sum - 10
    if(sum >= 10) {
      carry = 1
      sum -= 10
    } else {
      carry = 0
    }
    res += sum
  }
  // 最后判断一下有没有进位
  if (carry) {
    res += carry
  }
  return res
}

console.log(add('1000000000000000000000000', '1'))

创建项目

npm init or npm init -y
npm webpack webpack-cli -D

配置文件

module.exports = {
  entry: {
    'large-number': './src/index.js',
    'large-number.min': './src/index.js'
  },
  output: {
    filename: '[name].js',
    library: 'largeNumber',
    libraryTarget: 'umd',
    libraryExport: 'default'
  }
}

安装压缩插件

npm i terser-webpack-plugin -D
const TerserPlugin = require('terser-webpack-plugin')

module.exports = {
  entry: {
    'large-number': './src/index.js',
    'large-number.min': './src/index.js'
  },
  output: {
    filename: '[name].js',
    library: 'largeNumber',
    libraryTarget: 'umd',
    libraryExport: 'default'
  },
  mode: 'none',
  optimization: {
    minimize: true,
    minimizer: [
      new TerserPlugin({
        include: /\.min\.js$/
      })
    ]
  }
}

根据环境设置不同入口文件

// 通过环境变量来决定入口文件
if (process.env.NODE_ENV === 'production') {
  module.exports = require('./dist/large-number.min.js')
} else {
  module.exports = require('./dist/large-number.js')
}

查看代码

上一篇 下一篇

猜你喜欢

热点阅读