Performance 网页包,Angular2重建优化

Performance 网页包,Angular2重建优化,performance,angular,bundle,webpack,Performance,Angular,Bundle,Webpack,我正在尝试用webpack编译Angular2;这是我的设置:我有一个vendor.ts文件,其中有: import 'es6-shim/es6-shim.min'; import 'reflect-metadata/Reflect.js'; import 'zone.js/dist/zone'; import '@angular/platform-browser'; import '@angular/platform-browser-dynamic'; import '@angular/co

我正在尝试用webpack编译Angular2;这是我的设置:我有一个vendor.ts文件,其中有:

import 'es6-shim/es6-shim.min';
import 'reflect-metadata/Reflect.js';
import 'zone.js/dist/zone';

import '@angular/platform-browser';
import '@angular/platform-browser-dynamic';
import '@angular/core';
import '@angular/common';
import '@angular/http';
import '@angular/router-deprecated';
我的
webpack.config.js

"use strict";
let path = require('path');
let webpack = require("webpack");
let CommonsChunkPlugin = webpack.optimize.CommonsChunkPlugin;
let ProvidePlugin = webpack.ProvidePlugin;
let UglifyJsPlugin = webpack.optimize.UglifyJsPlugin;

module.exports = {
    devtool: 'source-map',
    debug: true, // set false in production
    cache: true,
    entry: {
        vendor: './app/vendor.ts',
        app: './app/main.ts'
    },
    output: {
        filename: './public/assets/js/[name].js'
    },
    plugins: [
        new webpack.optimize.OccurenceOrderPlugin(true),
        new webpack.optimize.CommonsChunkPlugin({name: 'vendor', filename: './public/assets/js/vendor.js', minChunks: Infinity}),
        new UglifyJsPlugin({
            compress: {
                warnings: false
            }
        })
    ],
    module: {
        loaders: [
            {
                test: /\.ts$/,
                loader: 'ts-loader',
                query: {
                    'ignoreDiagnostics': [
                        2403, // 2403 -> Subsequent variable declarations
                        2300, // 2300 -> Duplicate identifier
                        2374, // 2374 -> Duplicate number index signature
                        2375 // 2375 -> Duplicate string index signature
                    ]
                },
                exclude: [/\.(spec|e2e)\.ts$/, /node_modules\/(?!(ng2-.+))/]
            }
        ]
    },

    resolve: {
        extensions: ["", ".ts", ".js"]
    }
};

所以,一切都很好,webpack正在编译这些东西,但速度太慢了。需要15089毫秒。我计划将此添加为一个“吞咽”任务,但这不起作用,每次保存都需要等待3-5秒。有没有可能建立一个设置,如果块没有改变,就阻止编译?这将大大提高性能。提前感谢您的帮助。

您必须禁用
webpack.optimize.
插件,将
devtool
切换到
eval
并将
transpileOnly:true
添加到
ts loader
查询。

您必须禁用
webpack.optimize.
插件,将
devtool
切换到
eval
并将
transpileOnly:true
添加到
ts加载器
查询。

谢谢您的回答。这稍微改善了性能,但仍然不够。仍然很慢,而且文件现在太大了。我想我得扔掉网页包,大口大口地吃东西。然后我想,我会对编译什么有更多的控制。因为我真的需要只有在服务器启动时才编译供应商。要在app dir.com中的更改中仅重新编译app.js,它应该很快,请启用网页包查看模式:
watch:true
谢谢您的回答。这稍微改善了性能,但仍然不够。仍然很慢,而且文件现在太大了。我想我得扔掉网页包,大口大口地吃东西。然后我想,我会对编译什么有更多的控制。因为我真的需要只有在服务器启动时才编译供应商。要在app dir.com中的更改中仅重新编译app.js,它应该是快速的,请启用网页包监视模式:
watch:true