编辑依赖库(节点模块)时,React Boilerplate的HMR非常慢

时间:2018-08-15 10:19:15

标签: reactjs performance webpack webpack-hmr react-boilerplate

我正在使用React Boilerplate,它在开发环境中利用HMR(热模块重载)。

但是,我还有一个自定义组件库,我将其作为依赖项加载。它大约有20个React组件。该库是一个UMD模块,我通过样板中的package.json将其作为依赖项加载。 Webpack也正在构建它,构建过程大约需要2秒钟。

当在两个项目中进行本地处理时,我都在样板项目中链接了库(使用'npm link'),所以我可以看到最新的更改。

现在,每当我对依赖库中的任何位置进行更改时,HMR都会加入样板项目,这很棒。但是,即使是最简单的更改(如CSS颜色)也需要HMR约20秒(!!!)才能在样板项目中重建Webpack。

每次重新构建依赖项时都会发生这种情况,因此,当我进行细微更改时20秒非常有害。

有人可以告诉我如何减少时间吗?我觉得我想念什么。我正在运行默认的样板化webpack配置,因为它是开箱即用的。

依赖项的webpack配置与样板配置非常相似,但输出不同:

  output: {
    path: __dirname + '/dist',
    filename: 'index.js',
    library: 'my-component-library',
    libraryTarget: 'umd',
    umdNamedDefine: true,
  },

babel和样式加载器几乎相同。

谢谢大家的任何建议。

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题,我这样做了:

https://github.com/uber/react-map-gl/issues/165#issuecomment-275412920

internals / webpack / webpack.base.babel.js

@@ @@
    loaders: [{
      test: /\.js$/, // Transform all .js files required somewhere with Babel
      loader: 'babel-loader',
-      exclude: /node_modules/,
+      include: [
+        path.resolve(process.cwd(), 'app'),
+        path.resolve(process.cwd(), 'node_modules/mapbox-gl/js'),
+      ],
      query: options.babelQuery,
@@ @@
  resolve: {
    modules: ['app', 'node_modules'],
    extensions: [
      '.js',
      '.jsx',
      '.react.js',
    ],
    mainFields: [
      'browser',
      'jsnext:main',
      'main',
    ],
+    alias: {
+      'mapbox-gl$': path.join(__dirname, '../../node_modules/mapbox-gl/dist/mapbox-gl.js'),
+    },
},

package.json

    "env": {
      "production": {
-        "only": [
-          "app"
-        ],
        "plugins": [
          "transform-react-remove-prop-types",
          "transform-react-constant-elements",
          "transform-react-inline-elements"
        ]
      },