【发布时间】:2018-07-26 18:26:38
【问题描述】:
我想从webpack 生成的包中摇树lodash 以及我未使用的multiply 函数
我有 2 个主要文件 app.js 和 math.js
它包含以下代码-
app.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);
});
math.js
export const sum = (a, b) => a + b;
export const multiply = (m, n) => m * n;
webpack.config.js
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;
我的 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"
}
完整代码可在https://github.com/deadcoder0904/webpack-treeshake获取
我尝试过使用 UglifyJSPlugin,但在生成的包中它仍然显示来自math.js 的我未使用的multiply 函数。此外,从npm run prod 生成的production 包仍然是20kB,这很多而且我看到很多lodash 的东西也包括在内。
【问题讨论】:
标签: javascript webpack webpack-2 uglifyjs uglifyjs2