我有一个使用 Lerna 的 monorepo,其结构如下:
monorepo
|-- server
|-- package1
|-- package2
所有软件包都使用Babel
并在安装 3 个项目后将所有库yarn
复制到. 因此,项目上没有安装,只是在 monorepo 存储库中。@babel
monorepo/node_modules
babel
我的 lerna.json:
{
"lerna": "2.9.0",
"npmClient": "yarn",
"useWorkspaces": true,
"packages": [
"packages/*"
]
}
lerna 根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 并解决该错误?