현재 requirejs를 기반으로하는 우리 프로젝트를 webpack으로 마이그레이션하는 데 어려움을 겪고 있습니다.느린 웹팩 빌드 시간 (고급 모듈 최적화)
webpack을 사용하여 현재 프로젝트 상태를 복제하려는 몇 주 후에 성능 문제가 있습니다.
웹팩 버전 2.3.3을 사용 중입니다.
현재 240 개의 모듈과 58 개의 청크가 있습니다.
에서 webpack을 실행하면 파일을 수정할 때마다 개발 모드 (또는 webpack-dev-server 사용)가 표시 될 때마다 약 10 초 정도 기다려야합니다.
6185ms building modules
65ms sealing
2ms optimizing
1ms basic module optimization
12ms module optimization
7906ms advanced module optimization
1ms basic chunk optimization
0ms chunk optimization
1ms advanced chunk optimization
0ms module and chunk tree optimization
12ms module reviving
2ms module order optimization
3ms module id optimization
2ms chunk reviving
6ms chunk order optimization
9ms chunk id optimization
22ms hashing
0ms module assets processing
214ms chunk assets processing
2ms additional chunk assets processing
1ms recording
0ms additional asset processing
0ms chunk asset optimization
2ms asset optimization
192ms emitting
우리는 우리의 모듈 중 하나를 modifiy 경우는, 웹팩이를 발생 :이 초기 빌드에 대한 통계입니다
{
context: path.resolve(__dirname),
entry: {
'app-std': [
'main',
'plugins/base-component',
'controllers/base-controller',
'widgets/base-widget',
'usertiming'
]
},
output: {
path: path.resolve('./dist/js'),
filename: '[name].js',
publicPath: '/js/'
},
resolve: {
modules: ['public/js', 'node_modules'],
alias: {
'uuid': path.resolve(__dirname, 'public/vendor/uuid.js/dist/uuid.core.js'),
'jsLogger': 'js-logger',
'jqueryCookie': 'js-cookie',
'jqueryValidation': path.resolve(__dirname, 'node_modules/jquery-validation/dist/jquery.validate.js'),
'jQueryXDomainRequest': 'jquery-ajax-transport-xdomainrequest',
'dust': 'dustjs-linkedin',
'dust.core': 'dustjs-linkedin',
'dustHelpers': 'dustjs-helpers',
'bootstrapSelect': 'bootstrap-select',
'bootstrapDropDown': path.resolve(__dirname, 'node_modules/bootstrap/js/dropdown.js')
}
},
module: {
rules: [
{
test: /\.jsx?$/,
loader: 'babel-loader',
exclude: /(node_modules)/,
options: {
presets: [['es2015', { modules: false }]/*, 'react'*/],
plugins: ['syntax-dynamic-import'],
cacheDirectory: true
}
}
]
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('local')
}
}),
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
}),
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
],
devtool: 'cheap-module-eval-source-map',
devServer = {
https: true,
port: 7070,
host: '0.0.0.0',
headers: { 'Access-Control-Allow-Origin': '*' }
},
stats: {
chunks: true,
chunkModules: true,
modules: true
}
}
: 여기
우리 웹팩 개발 설정입니다 다시 작성하면 다음 번호를 얻습니다.38ms building modules
38ms sealing
1ms optimizing
1ms basic module optimization
1ms module optimization
7470ms advanced module optimization
1ms basic chunk optimization
0ms chunk optimization
1ms advanced chunk optimization
0ms module and chunk tree optimization
3ms module reviving
0ms module order optimization
4ms module id optimization
3ms chunk reviving
1ms chunk order optimization
4ms chunk id optimization
14ms hashing
0ms module assets processing
1ms chunk assets processing
1ms additional chunk assets processing
0ms recording
0ms additional asset processing
1ms chunk asset optimization
0ms asset optimization
1ms emitting
두 경우 모두 대부분의 시간을 소모하는 고급 모듈 최적화 고급 모듈 최적화 단계입니다. 고급 최적화이 비 프로덕션 빌드에있는 이유를 이해하지 못하고 왜 그렇게 많은 시간이 걸리는 지 알 수 없습니다.
개발 모드에서 최적화를 비활성화 할 수 있다면 시간이 많이 걸리는 단계를 더 깊이 파고들 수있는 방법이 있는지 알고 싶습니다.
감사합니다.
웹팩 CLI 플래그 :
이
누군가가 미래에 유용 발견 한 경우에, 우리의 사용자 정의 플러그인의 코드 FOT'웹팩 --progress --profile' – joemaller