使用 lerna 和本地依赖项的正确方法是什么?
我已经在 mono 存储库中配置了两个模块,以将 lerna 与本地依赖项一起使用。我期望
$ lerna bootstrap
$ lerna run test
足以下载所有外部依赖项、链接本地依赖项并执行并通过所有模块中的所有测试。
预期行为
根据勒纳引导程序 https://github.com/lerna/lerna/tree/master/commands/bootstrap#usage文档:
- 将所有相互依赖的 Lerna 包符号链接在一起。
因此,我期望lerna bootstrap
会创建一个符号链接module-b/node_modules
下面指向module-a
(然后将允许执行并通过测试)。
目前的行为
没有发生链接,这会导致测试失败:
勒娜 错误!纱线运行测试在“模块-b”中退出 1
勒娜 错误!纱线运行测试标准输出:
纱线运行 v1.19.1
$ 开玩笑
信息访问https://yarnpkg.com/en/docs/cli/run https://yarnpkg.com/en/docs/cli/run有关此命令的文档。
勒娜 错误!纱线运行测试标准错误:
失败./import.test.js
● 测试套件运行失败
Cannot find module 'module-a' from 'import.test.js'
> 1 | const moduleA = require('module-a');
| ^
2 |
3 | test('should import module-a', () => {
4 | moduleA();
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
at Object.<anonymous> (import.test.js:1:1)
重现步骤
- 创建下面的文件夹结构
- 将内联文件复制到相应目录
- Execute
$ lerna bootstrap
其次是$ lerna run test
project-root
+ packages
| + module-a
| | + package.json
| | + index.js
| |
| + module-b
| | + package.json
| | + import.test.js
|
+ lerna.json
包/模块-a/package.json
{
"name": "module-a",
"version": "1.0.0",
"private": true,
"main": "index.js",
"scripts": {
"test": "echo \"Test passed in module-a\""
}
}
包/模块-a/index.js
module.exports = () => console.log('Log in module-a');
包/模块-b/package.json
{
"name": "module-b",
"version": "1.0.0",
"private": true,
"main": "index.js",
"scripts": {
"test": "jest"
},
"dependencies": {
"module-a": "file:../module-a"
},
"devDependencies": {
"jest": "^24.9.0"
}
}
包/模块-b/import.test.js
const moduleA = require('module-a');
test('should import module-a', () => {
moduleA();
});
lerna.json
{
"npmClient": "yarn",
"packages": [
"packages/*"
],
"version": "independent"
}
观察
执行中lerna 链接 --force-local https://github.com/lerna/lerna/tree/master/commands/link#--force-local不改变现状,测试仍然失败,因为module-b/node_modules/
仍然不包含对module-a
.
Remark
我无法使用纱线工作区 https://yarnpkg.com/lang/en/docs/workspaces/和lerna在一起因为module-b
是一个 Electron 应用程序,并且 Electron 构建器希望将其依赖项安装在packages/module-b/node_modules/
folder.
环境
- 勒纳——版本3.18.4
- npm --版本 6.11.3
- 纱线——版本 1.19.1
- 节点--版本 v12.12.0
- macOS 莫哈维 10.14.6