私はwebpack 4を使用していますが、コードが圧縮および縮小されているかどうかはわかりません。 Reactも使用しています。
私の最初の問題は、webpack plugin
プロパティまたはoptimization
プロパティでWebpack UglifyJSプラグインを使用することです。 plugin
プロパティを使用すると、少なくとも1行には圧縮されないように見えます。それがミニファイであるかどうかはまだわかりません。 optimization
を使用すると、圧縮もされません。バンドルされたjsファイルを見ると、webpack
のようにnode_modules
にバンドルされているようです。
// plugin
と連携
module.exports = {
...
plugins: [new UglifyJsPlugin({
test: /\.js$/,
exclude: /node_modules/,
sourceMap: true,
uglifyOptions: {
compress: {},
mangle: true,
}
}],
// optimization
では機能しません
module.exports = {
...
optimization: {
minimize: true,
minimizer: [new UglifyJsPlugin({
test: /\.js$/,
exclude: /node_modules/,
sourceMap: true,
uglifyOptions: {
compress: {},
mangle: true,
}
}],
}
最初の例では、コードは少なくとも1行に圧縮されますが、1行には圧縮されません。
//例
!*** ./node_modules/scheduler/index.js ***!
\*****************************************/
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nif (false) {} else {\n...
!*** ./node_modules/scheduler/tracing.js ***!
\*******************************************/
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nif (false) {...
それが縮小されているかどうかもわかりません。私はReact Componentに関数を書きました
someFunc(one, two) {
return one + two
}
Npm uglifyjsのドキュメントによると、これは
someFunc(a, b) { \n return a+b\n}
しかしそれはとして出力されています
someFunc(one, two) { \n return one + two\n}
これは縮小ですか?
Webpack 4は、デフォルトでproduction
モードで最適化と縮小を行います。
したがって、私の推測が正しい場合、構成はdevelopment
構成です。
明示的なUglifyJsPlugin定義を削除し、mode
をproduction
に設定すると、Webpackがすべてを処理します。
mode: 'production',
plugins: [...],
optimization: ...
必要に応じて、最適化をカスタマイズできます。ただし、モードをproduction
に設定すると、期待どおりの結果が得られます。
詳細はこちら
私も同じ問題に直面していました。モード設定値をプロダクションとして提供した後、動作を開始しました。
module.exports = {
// webpack config
mode: process.env.NODE_ENV || 'development',
};
// command NODE_ENV=production webpack