2017-02-15 5 views
1

Bei Verwendung von ngc anstelle von tsc oder bei Verwendung von AotPlugin von @ ngtools/webpack sollten ngfactory-Dateien für jedes Winkelmodul generiert werden. Aber in meinem Fall ist das ngc still, aber es werden keine Dateien erzeugt.Angular2 AoT Compiler keine ngfactory Dateien?

Können Sie mir bitte eine Anleitung geben, wie man das sogar untersuchen kann, wenn die ngc keine Nachricht ausdruckt?

Ich versuchte mit [email protected] und 2.0.2 Mit @angular 2.3.1 und 2.4.7. Das Ergebnis ist das gleiche.

Hier ist auch meine tsconfig und Webpack-Konfig. In beiden Fällen (run webpack oder run ngc) werden die Dateien nicht erstellt.

{ 
    "compileOnSave": true, 
    "compilerOptions": { 
    "target": "es5", 
    "module": "es2015", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": true, 
    "diagnostics": false, 
    "suppressImplicitAnyIndexErrors": true, 
    "outDir": "./compiled", 
    "rootDir": "./" 
    }, 
    "filesGlob": [ 
    "**/*.ts" 
    ], 
    "include": [ "typings" ], 
    "exclude": [ "node_modules" ], 
    "angularCompilerOptions": { 
    "entryModule": "app/module#AppModule", 
    "gendir": "aot", 
    "skipMetadataEmit": true, 
    "debug": true, 
    "trace": true, 
    "generateCodeForLibraries": true 
    } 
} 

und die webpack Datei:

/// <binding ProjectOpened='Watch - Development' /> 
var AotPlugin = require("@ngtools/webpack").AotPlugin; 

var path = require("path"); 
var webpack = require("webpack"); 
var basePath = path.join(__dirname, "wwwroot"); 

module.exports = { 
    context: basePath, 
    entry: { 
     main: ["./app/main.ts"], 
     productModule: "./app/components/product-module", 
     adminModule: "./app/components/admin-module" 
'rxjs/add/operator/map', 'rxjs/add/operator/delay'] 
     }, 
     output: { 
      path: path.join(__dirname, "wwwroot/built"), 
      filename: "[name].bundle.js", 
      sourceMapFilename: "[name].bundle.js", 
      publicPath: "built/" 
     }, 
     module: { 
      rules: [ 
       { 
        test: /\.html$/, 
        loader: "html-loader", 
        query: { 
         minimize: true, 
         ignoreCustomFragments: [/\{\{.*?}}/], 
         removeAttributeQuotes: false, 
         caseSensitive: true, 
         customAttrSurround: [ [/#/, /(?:)/], [/\*/, /(?:)/], [/\[?\(?/, /(?:)/] ], 
         customAttrAssign: [ /\)?\]?=/ ] , 
         root: basePath, 
         attrs: false // ['img:src', 'link:href'] 
        } 
       }, 
       { 
        test: /\.ts$/, 
        loaders: ["@ngtools/webpack"] 
       }//, 
       // { test: /\.css$/, loader: "style-loader!css-loader?root=." } 
      ] 
     }, 
     externals: { 
      "jquery": "jQuery" 
     }, 
     devtool: false, 
     plugins: [ 
      new AotPlugin({ 
       tsConfigPath: "./tsconfig.json", 
       entryModule: "app/module#AppModule" 
      }), 
      // new webpack.optimize.DedupePlugin(), 
      new webpack.optimize.CommonsChunkPlugin({ 
       //filename: "[name].c.bundle.js"//, 
       names: ["main"] 
      }) 
      //, 
      , new webpack.optimize.UglifyJsPlugin({ 
       sourceMap: true, 
       minimize: true, 
       acorn: true, 
       angular: true, 
       beautify: false, 
       compress: { 
        properties: true, 
        sequences: true, 
        dead_code: true, 
        drop_debugger: true, 
        unsafe_comps: true, 
        conditionals: true, 
        comparisons: true, 
        evaluate: true, 
        booleans: true, 
        keep_fargs: false, 
        loops: true, 
        unsafe: true, 
        angular: true, 
        unused: true, 
        cascade: true, 
        hoist_funs: true, 
        join_vars: true, 
        warnings: false 
       }, 
       output: { 
        comments: false 
       } 
      }) 
     ] 

    }; 

Antwort

1

Es gibt viele offene Fragen darüber sind, wenn Version 2.1.x

Verwenden Typoskript 2.0.2 jetzt mit Typescript.

Quelle: https://github.com/angular/angular/issues/11689

Ein weiterer Grund könnte sein, dass es ein Tippfehler in Ihrem "gendir": "aot", sollte es sein genDir

+1

Vielen Dank für diese Antwort. Ich habe bereits 2.0.2 ausprobiert, aber da ich manchmal Probleme mit der Quelle der Verwendung von Paketen habe (ich könnte das lokale Typskript herunterstufen, aber irgendetwas könnte mit globally weitergehen), werde ich es erneut überprüfen. Die Sache mit genDir, danke auch dafür. Ich würde das nicht verstehen :) – doker

0

Ich denke, der Grund @ ist ngtools/webpack erzeugen diese Dateien nicht.

@gtools/webpack behandeln diese Dateien im Speicher und erzeugen eine Datei.

Verwandte Themen