[javascript] webpack으로 축소 및 압축되지 않은 번들을 작성하는 방법은 무엇입니까?
여기 내 webpack.config.js
var webpack = require("webpack");
module.exports = {
entry: "./entry.js",
devtool: "source-map",
output: {
path: "./dist",
filename: "bundle.min.js"
},
plugins: [
new webpack.optimize.UglifyJsPlugin({minimize: true})
]
};
나는 건물
$ webpack
내 dist
폴더에는
bundle.min.js
bundle.min.js.map
나는 또한 압축되지 않은 것을보고 싶습니다 bundle.js
답변
webpack.config.js :
const webpack = require("webpack");
module.exports = {
entry: {
"bundle": "./entry.js",
"bundle.min": "./entry.js",
},
devtool: "source-map",
output: {
path: "./dist",
filename: "[name].js"
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
include: /\.min\.js$/,
minimize: true
})
]
};
Webpack 4부터는 webpack.optimize.UglifyJsPlugin
더 이상 사용되지 않으며 사용으로 인해 오류가 발생합니다.
webpack.optimize.UglifyJsPlugin이 제거되었습니다. 대신 config.optimization.minimize를 사용하십시오.
설명서에 설명 된 대로 플러그인을 minimize
옵션 으로 교체 할 수 있습니다 . UglifyJsPlugin
인스턴스 를 지정하여 플러그인에 사용자 정의 구성을 제공 할 수 있습니다 .
const webpack = require("webpack");
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
// ...
optimization: {
minimize: true,
minimizer: [new UglifyJsPlugin({
include: /\.min\.js$/
})]
}
};
이것은 간단한 설정 작업을 수행합니다. 보다 효과적인 해결책은 Webpack과 함께 Gulp를 사용하고 한 번에 동일한 작업을 수행하는 것입니다.
답변
단일 구성 파일을 사용하고 환경 변수를 사용하여 조건부로 UglifyJS 플러그인을 포함 할 수 있습니다.
var webpack = require('webpack');
var PROD = JSON.parse(process.env.PROD_ENV || '0');
module.exports = {
entry: './entry.js',
devtool: 'source-map',
output: {
path: './dist',
filename: PROD ? 'bundle.min.js' : 'bundle.js'
},
plugins: PROD ? [
new webpack.optimize.UglifyJsPlugin({
compress: { warnings: false }
})
] : []
};
그리고이 변수를 축소하려는 경우이 변수를 설정하십시오.
$ PROD_ENV=1 webpack
편집하다:
의견에서 언급했듯이, NODE_ENV
일반적으로 특정 환경이 프로덕션 환경인지 개발 환경인지를 나타내는 데 사용됩니다 (일반적으로). 이를 확인하기 위해을 설정 var PROD = (process.env.NODE_ENV === 'production')
하고 정상적으로 계속할 수도 있습니다 .
답변
다른 인수로 웹팩을 두 번 실행할 수 있습니다.
$ webpack --minimize
그런 다음 명령 줄 인수를 확인하십시오 webpack.config.js
.
var path = require('path'),
webpack = require('webpack'),
minimize = process.argv.indexOf('--minimize') !== -1,
plugins = [];
if (minimize) {
plugins.push(new webpack.optimize.UglifyJsPlugin());
}
...
답변
다른 답변을 추가하기 위해 플래그 -p
( --optimize-minimize
)가 기본 인수로 UglifyJS를 활성화합니다.
단일 실행에서 축소 된 원시 번들을 얻거나 다른 이름의 번들을 생성 -p
하지 않으므로 플래그가 사용 사례에 맞지 않을 수 있습니다.
반대로 -d
옵션은 짧습니다--debug
--devtool sourcemap
--output-pathinfo
내 webpack.config.js의 생략합니다 devtool
, debug
, pathinfo
,이 두 플래그에 찬성 플러그인 minmize.
답변
어쩌면 나는 여기에 늦었지만 같은 문제가 있으므로이 목적 으로 축소되지 않은 webpack-plugin 을 작성했습니다.
설치
npm install --save-dev unminified-webpack-plugin
용법
var path = require('path');
var webpack = require('webpack');
var UnminifiedWebpackPlugin = require('unminified-webpack-plugin');
module.exports = {
entry: {
index: './src/index.js'
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'library.min.js'
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
}
}),
new UnminifiedWebpackPlugin()
]
};
위와 같이함으로써 library.min.js와 library.js라는 두 파일을 얻게됩니다. webpack을 두 번 실행할 필요가 없습니다. ^^
답변
제 생각 에는 UglifyJS 도구를 직접 사용하는 것이 훨씬 쉽습니다 .
npm install --save-dev uglify-js
./dst/bundle.js
파일 빌드와 같이 웹팩을 정상적으로 사용하십시오 .-
에
build
명령을 추가 하십시오package.json
:"scripts": { "build": "webpack && uglifyjs ./dst/bundle.js -c -m -o ./dst/bundle.min.js --source-map ./dst/bundle.min.js.map" }
- 번들 된 코드와 소스 코드 및 소스 맵을 빌드 할 때마다
npm run build
명령을 실행하십시오 .
uglify-js를 전역 적으로 설치할 필요가 없으며 프로젝트를 위해 로컬로 설치하십시오.
답변
웹팩에 대한 두 가지 구성을 만들 수 있습니다. 하나는 코드를 축소하고 다른 하나는 최적화하지 않습니다 (optimize.UglifyJSPlugin 행 제거). 두 구성을 동시에 실행 $ webpack && webpack --config webpack.config.min.js