• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Webpack使用供应商块的node_modules而不明确说明它们

用户头像
it1352
帮助1

问题说明

所以代码拆分是创建不同捆绑包的技术 - 所以app ,供应商等...

So code splitting is the technique of creating different bundles - so app, vendor etc...

我知道我想要的供应商捆绑包但仅按惯例...

I know what I want in my vendor bundle but only by convention...

一切

import x from 'name';
import 'name';

这些必须在供应商中,因为(我认为它们)明显来自 node_modules

These need to be in vendor, because (i think they are) clearly coming from node_modules.

但是,我只看到明确说明的例子这个。

However, I've only seen examples of explicitly stating this.

有没有办法使用约定?

如果没有,我可以建立一个插件来做这个(这个插件可以进入 package.json 的依赖项部分)?

If not, could I build a plugin to do this (this plugin could just go into your dependencies section of package.json)?

正确答案

#1

你可以这样做:

const pkg = require('./ package.json');

并在您的配置中:

{
   entry: {
      vendor: Object.keys(pkg.dependencies) // use node_module dependencies
   },
   plugins: [
     new webpack.optimize.CommonsChunkPlugin({
        name: "vendor"
     })
   ]
}

编辑:
似乎有更好的方法来做到这一点。可以在CommonsChunkPlugin插件中使用 minChunks 属性。你可以在那里传递一个函数:

It seems there is a better way to do it. One can use minChunks property in the CommonsChunkPlugin plugin. You can pass a function there, as such:

plugins: [
    new webpack.optimize.CommonsChunkPlugin({
        name: "vendor",
        minChunks: ({ resource }) => {
            return resource && resource.match(/\.js$/) && resource.indexOf('node_modules') >= 0;
        }
    })
]

通过这样做,您不需要依赖package.json列表,webpack将只考虑项目中使用的依赖项。整洁。

By doing that, you don't need to rely on package.json list and webpack will consider only dependencies used in the project. neat.

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /reply/detail/tanhcfhaeg
系列文章
更多 icon
同类精品
更多 icon
继续加载