5

我有一个应用程序模块和一个由多个应用程序模块共享的通用模块。

- app
  - src
  - package.json
  - webpack.config.json
  - .babelrc
- common
  - lib
  - package.json
  - .babelrc

应用程序/package.json

dependencies: {
  common: "../common"
},
devDependencies: {
  ...othe deps,
  "babel-plugin-transform-object-rest-spread": "^6.23.0",
}

普通/package.json

devDependencies: {
  ..other deps,
  "babel-plugin-transform-object-rest-spread": "^6.23.0",
}

通用代码在 es6 中,需要在 app 中转译,所以 webpack.config.js 包含

{
  test: /\.js/,
  exclude: /node_modules\/(?!(ui-common|ui-server-common)\/).*/,
  loader: 'babel-loader',
},

如果我在 common 模块中运行 yarn install 一切正常,然后在 app 模块中运行。这会复制公共模块的完整 node_modules,因此它包含所有开发部门,包括 babel-plugin-transform-object-rest-spread。

如果我从公共模块中删除 node_modules,运行 yarn install app 模块,只会复制 prod 依赖项,并且 app/node_modules/common/node_modules 中缺少 babel-plugin-transform-object-rest-spread。然后我得到

Module build failed: ReferenceError: Unknown plugin "transform-object-
rest-spread" specified in "/Users/blaf/projects/management-
ui/ui-common/.babelrc" at 0, attempted to resolve relative to 
"/Users/blaf/projects/management-ui/ui-common"

因为 app/node_modules/common/node_modules 中缺少 babel-plugin-transform-object-rest-spread。该包已经在 app/node_modules 中,所以应该没有问题,但是 babel 想要它在 common 包中吗?我如何告诉 babel 使用根级别的依赖?

4

0 回答 0