2016-11-20 2 views
0

Angular2 (2.0.1) & Webpack 2 (2.1.0-Beta.21) Kein Problem, ich kann führen nom Lauf build: prod wo jedes Problem ...Angular2 (2.2.0) & Webpack 2 (2.1.0-Beta.21) kompilieren Problem ausgeführt Build: prod

Als ich Angular2 auf die neueste Version (2.0.1) aktualisieren,

npm Lauf build // => kein Fehler

aber,

npm run build: prod // => Ich bekomme einen Fehler

Die einzigen Veränderungen in meinem package.json sind:

.... 
"dependencies": { 
"@angular/common": "2.2.0", 
"@angular/compiler": "2.2.0", 
"@angular/compiler-cli": "2.2.0", 
"@angular/core": "2.2.0", 
"@angular/forms": "2.2.0", 
"@angular/http": "2.2.0", 
"@angular/platform-browser": "2.2.0", 
"@angular/platform-browser-dynamic": "2.2.0", 
"@angular/platform-server": "2.2.0", 
"@angular/router": "3.2.0", 
"@angular/upgrade": "2.2.0", 
.... 

# not changed 

"devDependencies": { 
"@types/core-js": "^0.9.34", 
"@types/node": "^6.0.45", 
"angular2-router-loader": "^0.3.2", 
"angular2-template-loader": "^0.5.0", 
"awesome-typescript-loader": "^2.2.4", 
"del-cli": "^0.2.0", 
"html-loader": "^0.4.4", 
"raw-loader": "^0.5.1", 
"typescript": "^2.0.3", 
"webpack": "^2.1.0-beta.21", 
"webpack-merge": "^0.14.1" 

}

web pack.config.common.js

var webpack = require('webpack'); 

module.exports = { 
entry: { 
    'app': './assets/app/main.ts' 
}, 

resolve: { 
    extensions: ['.js', '.ts'] 
}, 

module: { 
    loaders: [ 
     { 
      test: /\.ts$/, 
      loaders: [ 
       'awesome-typescript-loader', 
       'angular2-template-loader', 
       'angular2-router-loader' 
      ] 
     }, 
     { 
      test: /\.html$/, 
      loader: 'html-loader' 
     }, 
     { 
      test: /\.css$/, 
      loader: 'raw-loader' 
     } 
    ] 
}, 

plugins: [ 
    new webpack.ContextReplacementPlugin(
     // The (\\|\/) piece accounts for path separators in *nix and Windows 
     /angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/, 
     './src' // location of your src 
    ) 
    ] 
}; 

Web-Pack. config.prod.js

var webpack = require('webpack'); 
var webpackMerge = require('webpack-merge'); 
var commonConfig = require('./webpack.config.common.js'); 

module.exports = webpackMerge.smart(commonConfig, { 
entry: { 
    'app': './assets/app/main.aot.ts' 
}, 

output: { 
    path: './public/js/app', 
    filename: 'bundle.js', 
    publicPath: '/js/app/', 
    chunkFilename: '[id].[hash].chunk.js' 
}, 

module: { 
    loaders: [ 
     { 
      test: /\.ts$/, 
      loaders: [ 
       'awesome-typescript-loader', 
       'angular2-template-loader', 
       'angular2-router-loader?aot=true&genDir=public/js/app' 
      ] 
     } 
    ] 
}, 

plugins: [ 
    new webpack.NoErrorsPlugin(), 
    new webpack.optimize.UglifyJsPlugin({ 
     sourceMap: false 
    }) 
    ] 
}); 

tsconfig.aot.json

{ 
"compilerOptions": { 
"target": "es5", 
"module": "es2015", 
"moduleResolution": "node", 
"sourceMap": true, 
"emitDecoratorMetadata": true, 
"experimentalDecorators": true, 
"removeComments": false, 
"noImplicitAny": false, 
"outDir": "./public/js/app" 
}, 
"exclude": [ 
"node_modules", 
"dist", 
"assets/app/polyfills.ts" 
], 

"angularCompilerOptions": { 
"skipMetadataEmit" : true 
} 

}

Antwort

1

Ausgabe angehoben wurde den neuesten @angular verwenden, @ Winkel-Compiler und @ Winkel/Compiler-cli (Version 2.2.0) und Web Pack (Version 2.1.0-Beta.21) ... Ich habe auch mit den neuesten Versionen 2.2.1/2.1.0.βa.27 ...

getestet

in der Produktion Skript, läuft

ngc -p tsconfig.aot.json 

Kompilierungsausgabe die .ngFactory in dem Verzeichnis, in tsconfig.aot.json angegeben

(outDir: " ./public/js/app" 

verketteten mit der gleichen Verzeichnisstruktur wie meine project (/ assets/app/..., so dass der endgültige Pfad, der vom Web Pack verwendet wird,

./public/js/app/assets/app/.. 
ist

dieser Weg durch webpack Lader (genDir Parameter) ... sein muss wissen, so in meinem webpack.confid.prod.js ich es erklären müssen:

module: { 
    loaders: [ 
     { 
      test: /\.ts$/, 
      loaders: [ 
       'awesome-typescript-loader', 
       'angular2-template-loader', 
       'angular2-router-loader?aot=true&genDir=public/js/app/assets/app' 
      ] 
     } 
    ] 
}, 
Verwandte Themen