# 打包库
webpack 可以打包库或者组件,支持多种配置
- 支持 ES module
import * as Test from "test";
- 支持 CJs
const Test = require("test");
- 支持 AMD
require(["test"], function(Test) {
//Test()
});
# 1. 配置
- library: 库的全局变量
- libraryTarget: 支持库的引入方式
- libraryExport: 导入形式
module.exports = {
entry: {
'index': '../index/index.js'
'index.min': '../index/index.js'
},
output: {
filename: '[name].js',
library: 'index',
libraryTarget: 'umd',
libraryExport: 'default'
}
}
# 2. 针对.min 文件压缩
- 安装插件
terser-webpack-plugin
yarn add terser-webpack-plugin -D
- mode 设置为 none
- minimizer 通过正则匹配.min 文件,通过 TerserPlugin 进行压缩
TerserPlugin 好处可以把 es6 语法进行压缩
module.exports = {
entry: {
'index': '../index/index.js'
'index.min': '../index/index.js'
},
output: {
filename: '[name].js',
library: 'index',
libraryTarget: 'umd',
libraryExport: 'default'
},
mode: 'none',
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
include: /\.min\.js$/,
})
]
}
}
- 配置 package.json
{
"main": "index.js"
}
- 配置 main 入口文件
//index.js
if (process.env.NODE_ENV === "production") {
module.exports = require("./dist/index.js");
} else {
module.exports = require("./dist/index.min.js");
}