如何在基于Lerna搭建的Monorepo中运行babel-node?
在Lerna + Yarn Workspaces Monorepo中运行babel-node
嘿,我来帮你搞定这个问题!结合你当前的Lerna 2.9.0 + Yarn Workspaces配置,按照下面的步骤就能顺利运行babel-node:
1. 安装Babel相关依赖
首先在根目录安装所需的Babel开发依赖,这样所有子包都能共享这些工具:
yarn add -D @babel/core @babel/node @babel/preset-env
2. 配置Babel(适配Monorepo)
在根目录创建babel.config.json文件(这个配置会自动作用于所有工作区子包,比.babelrc更适合Monorepo场景),内容如下:
{ "presets": [ ["@babel/preset-env", { "targets": { "node": "current" } }] ] }
这个配置会根据你当前的Node版本转译代码,适配性拉满。
3. 运行babel-node的两种方式
方式一:直接通过Lerna命令运行子包文件
如果你想直接运行@monorepo/server里的指定文件(比如src/index.js),可以执行这条命令:
yarn lerna exec --scope @monorepo/server -- babel-node src/index.js
--scope @monorepo/server:指定只在这个子包下执行命令babel-node src/index.js:用babel-node运行目标文件
方式二:在根目录package.json中添加脚本(更便捷)
打开根目录的package.json,在scripts里新增一条命令:
{ "scripts": { // 保留原有脚本... "server:dev": "lerna exec --scope @monorepo/server -- babel-node src/index.js" } }
之后你只需要在终端执行:
yarn server:dev
就能一键启动用babel-node转译的server子包啦!
注意事项
- 因为你开启了
useWorkspaces,Yarn会统一管理依赖,根目录安装的Babel工具会被所有子包共享,不用在每个子包里重复安装。 - 确保子包中你要运行的文件路径是正确的(比如上面例子中的
src/index.js要真实存在于@monorepo/server包内)。
内容的提问来源于stack exchange,提问作者Mendes
相关产品推荐
相关产品推荐

