나는 Angular 2 응용 프로그램을 빌드하고 webpack과 함께 제공합니다. 현재 애플리케이션은 작지만 웹팩 작업에는 약 10 초가 소요됩니다. 컴파일 및 패키징 기간을 향상시키기 위해 webpack config 또는 TypeSript 컴파일 옵션을 최적화 할 수 있습니까?webpack을 사용하여 각도 2 응용 프로그램 빌드 기간 최적화
var webpack = require('webpack');
var LiveReloadPlugin = require('webpack-livereload-plugin');
module.exports = {
entry: __dirname + '/assets/app/app.ts',
output: {
filename: 'myApp.bundle.js',
path: __dirname + '/build/'
},
// Turn on sourcemaps
devtool: 'source-map',
resolve: {
extensions: ['.ts', '.js']
},
plugins: [
new LiveReloadPlugin({
appendScriptTag: true
}),
// Fixes angular 2 warning
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/,
__dirname
)
],
module: {
rules: [{
enforce: 'pre',
test: /\.js$/,
loader: "source-map-loader"
},
{
enforce: 'pre',
test: /\.tsx?$/,
use: "ts-loader"
}
]
}
}
그리고 tsconfig :
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"pretty": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"noUnusedLocals": false,
"removeComments": true,
"skipLibCheck": true,
"strictNullChecks": false,
"baseUrl": "./src",
"typeRoots": ["node_modules/@types"],
"types": [
"core-js",
"systemjs"
],
"outDir": "./build"
},
"exclude": [
"node_modules"
]
}
가 UPDATE가 (고정 webpack.config에 대한 내 대답을 참조)
이
은 웹팩 내가 사용하는 설정입니다 별도의 buil에서 각도를 컴파일하여 @jpwiddy에서 제안한 DLL webpack 플러그인을 시도해 보겠습니다. d를 사용하여 개발 중에 응용 프로그램 코드 만 다시 작성하고 편집 작업에 상당한 시간을 할애해야합니다.그러나 출력 JS를 검사 한 후에 파일 크기는 상당히 동일하며 내부에 각도 코드가 있습니다. 여기
var webpack = require('webpack');
var LiveReloadPlugin = require('webpack-livereload-plugin');
module.exports = {
entry: __dirname + '/assets/app/app.ts',
output: {
filename: 'myApp.bundle.js',
path: __dirname + '/build/'
},
// Turn on sourcemaps
devtool: 'source-map',
resolve: {
extensions: ['.ts', '.js']
},
plugins: [
new LiveReloadPlugin({
appendScriptTag: true
}),
// Fixes angular 2 warning
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/,
__dirname
),
new webpack.DllReferencePlugin({
context: __dirname + '/build/',
manifest: require(__dirname + '/build/ng2.json')
})
],
module: {
rules: [{
enforce: 'pre',
test: /\.js$/,
loader: "source-map-loader"
},
{
enforce: 'pre',
test: /\.tsx?$/,
use: "ts-loader"
}
]
}
}
내가 내 응용 프로그램 JS에서 발견 된 각 코드 중 하나입니다
var webpack = require('webpack');
module.exports = {
entry: {
angular:[
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/core',
'@angular/common',
'@angular/compiler',
'@angular/http',
'@angular/router',
'@angular/forms'
]
},
output: {
filename: 'ng2.dll.js',
path: __dirname + '/build/',
library: 'ng2'
},
plugins: [
// Fixes angular 2 warning
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/,
__dirname
),
new webpack.DllPlugin({
name: 'ng2',
path: __dirname + '/build/ng2.json'
})
]
}
그리고 응용 프로그램에 대한 업데이트 웹팩 설정 : 여기
는 각 소스에 대한 새로운 웹팩 설정 파일입니다 출력 :_TsEmitterVisitor.prototype.visitBuiltintType = function (type, ctx) {
var typeStr;
switch (type.name) {
case __WEBPACK_IMPORTED_MODULE_2__output_ast__["R" /* BuiltinTypeName */].Bool:
typeStr = 'boolean';
break;
case __WEBPACK_IMPORTED_MODULE_2__output_ast__["R" /* BuiltinTypeName */].Dynamic:
typeStr = 'any';
break;
case __WEBPACK_IMPORTED_MODULE_2__output_ast__["R" /* BuiltinTypeName */].Function:
typeStr = 'Function';
break;
case __WEBPACK_IMPORTED_MODULE_2__output_ast__["R" /* BuiltinTypeName */].Number:
typeStr = 'number';
break;
case __WEBPACK_IMPORTED_MODULE_2__output_ast__["R" /* BuiltinTypeName */].Int:
typeStr = 'number';
break;
case __WEBPACK_IMPORTED_MODULE_2__output_ast__["R" /* BuiltinTypeName */].String:
typeStr = 'string';
break;
default:
throw new Error("Unsupported builtin type " + type.name);
}
ctx.print(typeStr);
return null;
};
w가 표시되지 않도록 새 설정에서 놓친 것이 있었습니까? 출력에 각도 소스를 포함하는 ebpack?
당신에게 웹팩 과정은 빌드에서 DLL을 구현하고 구축을 가속화하고있다 개인적으로했던
[평민 - 청크 플러그인] (https://webpack.js.org/plugins/commons-chunk-plugin/)도 도움이 될 수
여기에 나의 새로운 웹팩 설정입니다. [angular2-webpack-brief-starter] (https://github.com/dominik791/angular2-webpack-brief-starter/blob/master/webpack.dev.js)의 구성을 확인하여 구체적으로 사용하는 방법을 확인하십시오. 모든 공급 업체 파일 (각도 포함). – dominik791