如何让 Webpack 需要根 node_module 而不是子包?
How to let Webpack require a root node_module instead of an child package?
我已经通过 npm 安装了 backbone 和 backbone.babysitter。当我像这样在我的脚本中使用 backbone 时: import Backbone from "backbone";
它加载安装的 backbone 版本 1.2.1
。在我想使用 backbone.babysitter 之前,它工作正常。当 backbone.babysitter 加载时,它需要将属性添加到 backbone 本身。但是 backbone.babysitter 的包在他自己的 node_modules 文件夹中导入了自己的 backbone 作为依赖项,这个 backbone 在 1.2.0
上。所以它将他的方法附加到我正在使用的不同 backbone。
我如何强制 Webpack 为 backbone.babysitter 要求根 node_modules
文件夹中的 backbone?
您可以使用 NormalModuleReplacementPlugin
将所有 require('backbone')
重新连接到根 backbone 模块。
plugins: [
new webpack.NormalModuleReplacementPlugin(/^backbone$/, require.resolve('backbone')),
],
找到一个workaround here
module.exports = {
resolve: {
alias: {
'backbone': require.resolve('backbone')
}
}
}
我已经通过 npm 安装了 backbone 和 backbone.babysitter。当我像这样在我的脚本中使用 backbone 时: import Backbone from "backbone";
它加载安装的 backbone 版本 1.2.1
。在我想使用 backbone.babysitter 之前,它工作正常。当 backbone.babysitter 加载时,它需要将属性添加到 backbone 本身。但是 backbone.babysitter 的包在他自己的 node_modules 文件夹中导入了自己的 backbone 作为依赖项,这个 backbone 在 1.2.0
上。所以它将他的方法附加到我正在使用的不同 backbone。
我如何强制 Webpack 为 backbone.babysitter 要求根 node_modules
文件夹中的 backbone?
您可以使用 NormalModuleReplacementPlugin
将所有 require('backbone')
重新连接到根 backbone 模块。
plugins: [
new webpack.NormalModuleReplacementPlugin(/^backbone$/, require.resolve('backbone')),
],
找到一个workaround here
module.exports = {
resolve: {
alias: {
'backbone': require.resolve('backbone')
}
}
}