gpt4 book ai didi

javascript - Babel 预设未在 monorepo 项目上加载

转载 作者:搜寻专家 更新时间:2023-11-01 00:04:20 25 4
gpt4 key购买 nike

我有一个使用 Lerna 的 monorepo,结构如下:

monorepo
|-- server
|-- package1
|-- package2

所有包都使用 Babel 并在安装 3 个项目后 yarn 将所有 @babel 库复制到 monorepo/node_modules。因此,项目上没有安装 babel,只是在 monorepo 存储库中。

我的 lerna.json:

{
"lerna": "2.9.0",
"npmClient": "yarn",
"useWorkspaces": true,
"packages": [
"packages/*"
]
}

lerna root package.json:

{
"name": "monorepo",
"version": "1.0.0",
"workspaces": [
"packages/*"
],
"private": true,
"scripts": {
"start": "lerna exec -- start",
},
"devDependencies": {
"lerna": "^2.9.0",
"concurrently": "3.5.1",
"eslint": "^4.18.2",
"eslint-config-airbnb": "16.1.0",
"eslint-plugin-import": "2.9.0",
"eslint-plugin-jsx-a11y": "6.0.3",
"eslint-plugin-react": "7.7.0",
"fs-extra": "^5.0.0",
"node-fetch": "^2.1.1",
"nodemon": "^1.11.0"
}
}

我的项目有以下 package.json:

{
"name": "@monorepo/server",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "nodemon --exec \"babel-node start-server.js\""
},
"dependencies": {
"@babel/cli": "^6.24.1",
"@babel/core": "^6.25.0",
"@babel/plugin-transform-runtime": "^6.23.0",
"@babel/preset-env": "^1.6.1",
"@babel/preset-es2017": "^6.24.1",
"bcryptjs": "^2.4.3",
"body-parser": "^1.17.2",
"connect-mongo": "^2.0.0",
"crypto": "^1.0.1",
"express": "^4.15.3",
"express-graphql": "^0.6.12",
"graphql": "^0.13.1",
"graphql-relay": "^0.5.4",
"jwt-simple": "^0.5.1",
"mongoose": "^5.0.10",
"morgan": "^1.8.2",
"nodemailer": "^4.6.0",
"passport": "^0.4.0",
"passport-jwt": "^4.0.0",
"path": "^0.12.7",
"validator": "^9.1.1"
},
"babel": {
"presets": [
"@babel/es2017",
"@babel/preset-env"
],
"plugins": [
"transform-runtime"
]
}
}

当我启动服务器时,它没有在本地找到加载器。我假设这是因为所有 babel 都安装在 monorepo/node_modules 中:

yarn server
yarn run v1.5.1
$ lerna exec --scope @amplifactory/server -- nodemon --exec "babel-node start-server.js
lerna info version 2.9.0
lerna info scope @amplifactory/server
[nodemon] 1.17.2
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `babel-node start-server.js`
D:\monorepo\node_modules\babel-core\lib\transformation\file\options\option-manager.js:328
throw e;
^

Error: Couldn't find preset "@babel/es2017" relative to directory "D:\\9. DEV\\WORKSPACE\\amplifactory\\packages\\server"
at D:\monorepo\node_modules\babel-core\lib\transformation\file\options\option-manager.js:293:19
at Array.map (native)
at OptionManager.resolvePresets (D:\monorepo\node_modules\babel-core\lib\transformation\file\options\option-manager.js:275:20)
at OptionManager.mergePresets (D:\monorepo\node_modules\babel-core\lib\transformation\file\options\option-manager.js:264:10)
at OptionManager.mergeOptions (D:\monorepo\node_modules\babel-core\lib\transformation\file\options\option-manager.js:249:14)
at OptionManager.init (D:\monorepo\node_modules\babel-core\lib\transformation\file\options\option-manager.js:368:12)
at compile (D:\monorepo\node_modules\babel-register\lib\node.js:103:45)
at loader (D:\monorepo\node_modules\babel-register\lib\node.js:144:14)
at Object.require.extensions.(anonymous function) [as .js] (D:\monorepo\node_modules\babel-register\lib\node.js:154:7)
at Module.load (module.js:487:32)
[nodemon] app crashed - waiting for file changes before starting...

我该如何解决?如何配置服务器以查看 monorepo babel 并解决该错误?

最佳答案

您的 Babel 依赖项应该安装在根 package.json 中(因为它们将在所有包中共享)。

yarn add --dev -W @babel/cli @babel/core @babel/plugin-transform-runtime @babel/preset-env @babel/preset-es2017"

-W 标志告诉 Yarn Workspaces 安装在根级别。然后,您还将 Babel 配置从包内部移动到根目录。我建议将配置从 package.json 中分离出来,放入它自己的 babel.config.js 文件中。

Here's a completed Monorepo example将 Babel 7 与 Lerna 和 Yarn Workspaces 结合使用。希望这对您有所帮助!

关于javascript - Babel 预设未在 monorepo 项目上加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49373181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com