Javascript 网页包:拆分供应商和应用程序代码

Javascript 网页包:拆分供应商和应用程序代码,javascript,npm,webpack,Javascript,Npm,Webpack,我安装了React+网页包项目。构建一个初始包需要60秒,附加增量更改需要1秒,但我甚至还没有我的应用程序代码!似乎节点单元模块的捆绑非常昂贵。我尝试使用普通块进行分割,但没有提高性能 如何使Webpack只绑定一次node_模块,甚至不监视此目录中的更改?如果这是一个问题,您不需要在项目中绑定外部依赖项。您可以将它们添加为外部依赖项。当然,为此,您应该将脚本添加到页面中 假设您将react和react dom脚本添加到页面中,您可以在webpack配置文件中添加以下内容: { extern

我安装了React+网页包项目。构建一个初始包需要60秒,附加增量更改需要1秒,但我甚至还没有我的应用程序代码!似乎节点单元模块的捆绑非常昂贵。我尝试使用普通块进行分割,但没有提高性能


如何使Webpack只绑定一次node_模块,甚至不监视此目录中的更改?

如果这是一个问题,您不需要在项目中绑定外部依赖项。您可以将它们添加为外部依赖项。当然,为此,您应该将脚本添加到页面中

假设您将react和react dom脚本添加到页面中,您可以在webpack配置文件中添加以下内容:

{
  externals: {
    'react': 'React',
    'react-dom': 'ReactDOM'
  } 
}
这告诉webpack的是每次您需要('react'),否则webpack将返回一个名为react的全局变量。如果您需要('react-dom'),也可以这样做

对于每个加载程序,您应该包含您想要的文件,或者排除您不需要的文件

下面是一个排除节点_模块的示例:

{
  module: {
    loaders: [
      {
        test: /\.jsx?/,
        exclude: /node_modules/,
        loader: 'babel'
      }
    ]
  }
}
或者更高性能,您可以只包含所需的文件:

{
  module: {
    loaders: [
      {
        test: /\.jsx?/,
        include: './src',
        loader: 'babel'
      }
    ]
  }
}

如果这是一个问题,您不需要在项目中捆绑外部依赖项。您可以将它们添加为外部依赖项。当然,为此,您应该将脚本添加到页面中

假设您将react和react dom脚本添加到页面中,您可以在webpack配置文件中添加以下内容:

{
  externals: {
    'react': 'React',
    'react-dom': 'ReactDOM'
  } 
}
这告诉webpack的是每次您需要('react'),否则webpack将返回一个名为react的全局变量。如果您需要('react-dom'),也可以这样做

对于每个加载程序,您应该包含您想要的文件,或者排除您不需要的文件

下面是一个排除节点_模块的示例:

{
  module: {
    loaders: [
      {
        test: /\.jsx?/,
        exclude: /node_modules/,
        loader: 'babel'
      }
    ]
  }
}
或者更高性能,您可以只包含所需的文件:

{
  module: {
    loaders: [
      {
        test: /\.jsx?/,
        include: './src',
        loader: 'babel'
      }
    ]
  }
}

是否可以将所有外部依赖项捆绑到一个文件中,这样webpack就可以用该文件中的react替换require('react')?您可以使用一些配置,但如果这样做,您仍然会遇到与今天相同的问题,这就是webpack必须捆绑所有依赖项。是否可以将所有外部依赖项捆绑到一个文件中,以便webpack可以用该文件中的react替换require('react')?您可以使用一些配置,但如果您这样做,您仍然会遇到与今天相同的问题,这就是webpack必须捆绑您所有的依赖项。您有没有研究过这些依赖项?这种方法允许您生成一次DLL,并在供应商依赖关系发生变化时更新它。这可以避免很多工作。是的,我看到了DLL,但我没有设法让它们工作。你能举一个例子,说明我是如何实现一个只构建一次的完整的node_模块包的吗?我将尝试制作一些东西。目前在线示例和是您的最佳选择。有什么特别的东西不见了吗?你查过了吗?这种方法允许您生成一次DLL,并在供应商依赖关系发生变化时更新它。这可以避免很多工作。是的,我看到了DLL,但我没有设法让它们工作。你能举一个例子,说明我是如何实现一个只构建一次的完整的node_模块包的吗?我将尝试制作一些东西。目前在线示例和是您的最佳选择。那里有什么特别的缺失吗?