如何捆绑不依赖于发布NPM包的模块

Wen*_*Liu 3 javascript npm reactjs webpack

最近,我开发了一个React组件,并希望发布它。

在这个包中

"dependencies": {
  "react": "^0.14.6",
  "react-dom": "^0.14.6",
  "react-timer-mixin": "^0.13.3"
}
Run Code Online (Sandbox Code Playgroud)

当通过webpack命令构建软件包时,我将得到一个包含的捆绑包react, react-dom and react-timer-mixin
这种做法似乎是错误的...

因此,我的问题是如何构建不依赖发布的软件包。

*我认为将主要包和依赖项分开的查克-供应商方法适用于多个包文件。但是我的要求是建立库。

Que*_*Roy 5

如果要构建库,则需要将这些依赖项注册为externals

概括来说,只需externals在webpack配置中添加属性,然后将其设置为包含要排除的模块名称(字符串)的数组即可。

一个更复杂的情况可能要求您指定在导入系统功能中应如何导入依赖项。您可以使用一个对象来实现。

这是官方示例

module.exports = {
    output: {
        libraryTarget: "umd"
    },
    externals: [
        "add",
        {
            "subtract": {
                root: "subtract",
                commonjs2: "./subtract",
                commonjs: ["./math", "subtract"],
                amd: "subtract"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

有关库和外部组件的更多信息,请参见此处

如果您使用的是ES 2015和babel 6,则还可能会遇到导出问题,即导出库是模块对象而不是所需的对象(例如,组件)。看看这个问题可以解决。