2016-05-04 18 views
7

Basta mettere questo fuori là per vedere se qualcun altro sta avendo questo problema ...dattiloscritto compilazione estremamente lento> 12s

Ho la costruzione di un 2 app angolare dattiloscritto usando webpack come il mio strumento di compilazione, tutto funziona bene , comunque ho notato che la compilazione di dattiloscritto è super super slow, sono a 12 secondi adesso .... ed è abbastanza chiaro che tutto è dovuto al processo di compilazione dattiloscritto ....

Ho usato ts- loader o caricatore dattiloscritto con un risultato simile, se commento questo caricatore, il mio tempo di costruzione scende a circa 1 secondo ....

Dopo alcuni ricerca sembra che il suo 'normale' avere tempi 'lenti' durante la compilazione del dattiloscritto, ma 12sec è il normale ??

Vecchi post suggerito che potrebbe essere a causa di un conflitto di versione nodo, Sono attualmente in esecuzione v4.4.2 ...

Qualsiasi come di seguito è il mio codice webpack nel caso qualcuno ha visto qualcosa che non va lì .. il codice commentato nella sezione Uglify è a causa di qualche 'bug' sul lato 2 angolare ...

const path = require('path'); 
const merge = require('webpack-merge'); 
const webpack = require('webpack'); 

const NpmInstallPlugin = require('npm-install-webpack-plugin'); 
const CopyWebpackPlugin = require('copy-webpack-plugin'); 
const HtmlWebpackPlugin = require('html-webpack-plugin'); 
const TARGET = process.env.npm_lifecycle_event; 

const PATHS = { 
    app: path.join(__dirname, 'app'), 
    dist: path.join(__dirname, 'dist') 
}; 

const common = { 
    entry: { 
    vendor: ['./app/vendor.ts'], 
    main: ['./app/boot.component.ts'] 
    }, 
    output: { 
    filename: '[name].[hash].bundle.js', 
    path: PATHS.dist 
    }, 
    resolve: { 
    extensions: ['', '.js', '.ts'] 
    }, 
    plugins: [ 
    new HtmlWebpackPlugin({ 
     title: 'Qarrot Performance', 
     template: 'index.template.ejs', 
     commonStyles: [ 
     '/public/styles/vendor/normalize.css', 
     '/public/styles/main.css' 
     ], 
     commonScripts: [], 
     baseHref: '/', 
     unsupportedBrowser: true, 
     mobile: true, 
     appMountId: 'app' 
    }), 
    ], 
    module: { 
    loaders: [ 
     { 
     test: /\.ts$/, 
     exclude: /node_modules/, 
     loaders: ['ts-loader'] 
     }, 
     { 
     test: /\.scss$/, 
     loader: 'raw-loader!sass-loader' 
     }, 
     { 
     test: /\.html$/, 
     loader: "html" 
     } 
    ] 
    } 
} 

// Dev Settings 
if(TARGET === 'start' || !TARGET) { 
    module.exports = merge(common, { 
    devtool: 'eval-source-map', 
    devServer: { 
     contentBase: PATHS.build, 
     historyApiFallback: true, 
     hot: true, 
     inline: true, 
     progress: true, 
     stats: 'errors-only', 
    }, 
    plugins: [ 
     new webpack.HotModuleReplacementPlugin(), 
     new NpmInstallPlugin({ 
     save: true 
     }) 
    ] 
    }); 
} 

// Prod Settings 
if(TARGET === 'build') { 
    module.exports = merge(common, { 
    devtool: 'cheap-module-source-map', 
    plugins: [ 
     // new webpack.optimize.UglifyJsPlugin({ 
     // beautify: false, 
     // mangle: false, 
     // compress : { screw_ie8 : true }, 
     // comments: false 
     // }), 
     new webpack.optimize.DedupePlugin(), 
     new webpack.DefinePlugin({ 
     'process.env.NODE_ENV': '"production"' 
     }), 
     new CopyWebpackPlugin([ 
      { from: 'public', to: 'public' } 
     ]), 
     new webpack.optimize.CommonsChunkPlugin({ 
     names: ['vendor', 'manifest'] 
     }), 
    ] 
    }); 
} 

sono anche su un Mac, in esecuzione angolare 2 beta.15 e webpack versione 1.12, al di sotto è il mio tsconfig.json

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": false, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false 
    }, 
    "compileOnSave": false, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 

risposta

-1

Si prega di condividere voi tsconfig.json. Molto probabilmente hai noEmitOnError impostato su true il che significa che il compilatore è obbligato a digitare l'intera codebase prima di qualsiasi emissione.

Si prega di impostare su false.

+0

Ehi @basart grazie per il tuo suggerimento, ho aggiornato la mia domanda con il mio tsconfig ... Non ho avuto quell'opzione impostata, ma non ha avuto un grosso impatto quando l'ho aggiunta anche se ... –

2

Vorrei attenermi allo awesome-typescript-loader. Ha alcune opzioni di prestazioni che possono essere attivate: un'opzione di caching e un transpile unica opzione:

"awesomeTypescriptLoaderOptions": { 
    "useCache": true, 
    "transpileOnly": true 
} 

Entrambi questi hanno avuto un miglioramento significativo sui tempi di compilazione.

Problemi correlati