- webpack除了可以打包应用,也可以用来打包js库
实现一个大整数加法库的打包
未压缩版
large-number.js
- 压缩版
large-number.min.js
|-dist |-large-number.js |-large-number.min.js |-src |-index.js
|-index.js |-webpack.config.js |-package.json
支持的引入方式
- 支持ES module
- 支持 CJS
- 支持 AMD
// webpack.config.js
const TerserPlugin = require('terser-webpack-plugin)
module.exports = {
mode: 'none',
entry: {
'large-number': './src/index.js',
'large-number.min': './src/index.js'
},
output: {
filename: '[name].js',
library: 'largeNumber',
libraryTarget: 'umd',
libraryExport: 'default'
},
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({ include: /\.min\.js$/ })
]
}
}
// package.json
{
"main":"index.js",
"description": "大整数加法", // 这个描述是发布到npm上的时候的描述
"script": {
"prepublish": "webpack" // 发布到npm之前,进行打包
}
}
// 根目录下的index.js
if(process.env.NODE_ENV === 'production') {
module.exports = require('./dist/largeNumber.min.js')
} else {
module.exports = require('./dist/largeNumber.js')
}
- 发布到npm上
- 先要有一个npm的账号
npm publish