繁体   English   中英

如何使webpack排除angular2模块

[英]How to make webpack exclude angular2 modules

我正在尝试制作一个简单的Webpack版本Angular 2 5 min快速入门教程

因为让Webpack自动包含所需的所有模块可能会有问题 ,我将“直接”包含来自html的供应商脚本,几乎就像教程一样,除了我不需要system.js用于webpack设置,所以我我不包括那个,但我确实需要webpack生成的“bundle.js”:

<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 )在这里没有帮助...

您是否看过IgnorePlugin https://webpack.github.io/docs/list-of-plugins.html#ignoreplugin

你说的可以通过做这样的事情来实现:

var webpack = require("webpack");
module.exports = {
  // ...
  plugins: [
    new webpack.IgnorePlugin(/angular2$/)
  ]
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM