dea*_*904 7 javascript uglifyjs uglifyjs2 webpack webpack-2
我想从生成的捆绑包中树摇动lodash以及我未使用的multiply功能webpack
我有2个主要文件app.js&math.js
它包含以下代码 -
import map from "lodash/map";
import { sum } from "./math";
console.log("");
console.log(`2 + 3 = ${sum(2, 3)}`);
map([1, 2, 3], x => {
console.log(x);
});
Run Code Online (Sandbox Code Playgroud)
export const sum = (a, b) => a + b;
export const multiply = (m, n) => m * n;
Run Code Online (Sandbox Code Playgroud)
const path = require("path");
const webpack = require("webpack");
const UglifyJSPlugin = require("uglifyjs-webpack-plugin");
const Jarvis = require("webpack-jarvis");
let plugins = [new Jarvis()];
if (process.env.NODE_ENV === "production") plugins.push(new UglifyJSPlugin());
const config = {
entry: "./app.js",
output: {
path: path.resolve(__dirname, "dist"),
filename: "bundle.js"
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: "babel-loader"
}
]
},
plugins
};
module.exports = config;
Run Code Online (Sandbox Code Playgroud)
我的npm脚本看起来像 -
"scripts": {
"dev": "webpack --optimize-minimize --mode development",
"dev:watch": "webpack --watch --optimize-minimize --mode development",
"prod": "webpack -p --optimize-minimize --mode production",
"prod:watch": "webpack -p --watch --optimize-minimize --mode production",
"start": "npm run prod",
"clean": "rm -rf dist"
}
Run Code Online (Sandbox Code Playgroud)
完整的代码可以在https://github.com/deadcoder0904/webpack-treeshake上找到
我尝试过使用UglifyJSPlugin但是在生成的包中它仍然显示我未使用的multiply函数math.js.此外,production从npm run prod遗骸产生的捆绑20kB很多,我也看到了很多lodash东西.
dea*_*904 10
我找到了答案
要使用lodash树摇动,我们应首先安装lodash-es然后删除lodash依赖项
此外,它不应该首先编译,所以我们将.babelrc文件如下 -
{
"presets": [
[
"env",
{
"modules": false
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
请注意,该设置modules以false使得它不transpile
现在捆绑减少到16.2kB和5.79kB gzip
lodash仍然会使用模块中的某些代码,因为它需要lodash自行运行,而不是在结果包中添加该multiply函数./math.js
我还需要lodash-webpack-plugin才能正常工作
Treeshaking工作
我做了一些基本的回购解决了陈述的问题 -
https://github.com/deadcoder0904/webpack-exam
https://github.com/deadcoder0904/webpack-treeshake
| 归档时间: |
|
| 查看次数: |
3750 次 |
| 最近记录: |