Angular 2 uygulamasını yapıyorum ve web paketi ile paketliyorum. Şu anda, uygulamam hala küçük ancak webpack görevi zaten 10 saniye sürüyor. Derleme ve paketleme süresini geliştirmek için webpack yapılandırmamı veya TypeSript derleme seçeneklerimi optimize etmek mümkün mü?Webpack ile açısal 2 uygulama oluşturma süresini optimize edin
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"
}
]
}
}
Ve 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"
]
}
GÜNCELLEME(sabit webpack.config benim cevaba bakınız)
Bu
webpack kullandığım yapılandırma olduğunu Ben ayrı bir boğa içinde açısal derleme tarafından jpwiddy tarafından önerilen DLL webpack eklentisi denemek d, gelişmeler sırasında sadece uygulama kodunu yeniden oluşturmak ve derleme için önemli zaman kazanabilmek için. Bununla birlikte, JS çıkışının incelenmesinden sonra, dosya boyutu oldukça aynıdır ve içinde hala açısal kod bulunmaktadır. İştevar 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"
}
]
}
}
benim uygulamada JS bulunan açısal kod biridir:
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'
})
]
}
Ve uygulama için güncellenmiş webpack yapılandırma: Burada
açısal kaynakları için yeni webpack yapılandırma dosyasıdır çıkışı:_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;
};
mü ben w önlemek için yeni config şey kaçırmış çıktıdaki açısal kaynakları içeren ebpack?
size WebPack süreç Yapınızda içinde dll uyguluyor inşa hızlandı şahsen yaptığım
[commons-öbek-eklentisi] (https://webpack.js.org/plugins/commons-chunk-plugin/) da yardımcı olabilir:
İşte benim yeni webpack yapılandırma olduğunu. Özel olarak nasıl kullanabileceğinizi görmek için [angular2-webpack-kısa yol verici] 'nin (https://github.com/dominik791/angular2-webpack-brief-starter/blob/master/webpack.dev.js) yapılandırmasına bakın. tüm satıcı dosyaları için (açısal dahil). – dominik791