我正在尝试制作一个简单的Webpack版本Angular 2 5 min quickstart tutorial。
正如may be problematic to just let Webpack autmatically include all modules needed一样,我直接包含来自html"的供应商脚本",几乎就像教程一样,除了我不需要system.js来进行webpack设置,所以我不包括那个,但我确实需要" bundle.js"哪个webpack产生:
<body>
<my-app></my-app>
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="bundle.js"></script>
</body>
如果我将此配置用于webpack,我几乎达到了我的目标:
module.exports = {
entry: './src/boot.ts',
output: {
filename: 'bundle.js'
},
devtool: 'source-map',
resolve: {
extensions: ['', '.ts', '.js']
},
module: {
loaders: [
{ test: /\.ts$/, exclude: [/angular2/], loader: 'ts-loader' }
],
noParse: [/angular2/]
}
};
如果没有noParse,webpack将包含223个模块,这本身就是应该的,但由于某些奇怪的原因,这会导致一个有问题的庞大的bundle文件(参见上面的链接)。使用noParse,我几乎达到了我的目标,但不完全,它仍然包括两个我不希望webpack包含的角度模块:
[0] ./src/boot.ts 195 bytes {0} [built]
[1] ./~/angular2/platform/browser.js 13.1 kB {0} [built]
[2] ./src/myapp/components/myapp.ts 1.27 kB {0} [built]
[3] ./~/angular2/core.js 4.54 kB {0} [built]
我不希望webpack包含任何Angular 2模块(正如我已经包含的那样)。它可能包括在内,因为我的两个自己制作的模块使用这两个模块。但是我怎么能让webpack忽略这些呢?我的noParse
(或exclude
)在这里没有帮助......
答案 0 :(得分:3)
您是否看过IgnorePlugin
https://webpack.github.io/docs/list-of-plugins.html#ignoreplugin
你所说的可以通过做这样的事情来实现:
var webpack = require("webpack");
module.exports = {
// ...
plugins: [
new webpack.IgnorePlugin(/angular2$/)
]
};