.
├── README.md
├── lerna.json
├── package.json
└── packages
├── module-a
│ ├── README.md
│ ├── bin
│ ├── node_modules
│ ├── package-lock.json
│ └── package.json
└── module-b
├── README.md
├── lib
├── node_modules
├── package-lock.json
└── package.json
如上所示,module-b目前是一个私有包(没有发布到npm上),我在module-a项目中引用了这个包。
module-a/package.json依赖如下:
{
"dependencies": {
"module-b": "^1.0.0", // 版本与module-b的package.json定义一致
}
}
通过learn bootstrap命令可以正确的建立起软链接。
当编写完代码之后,需要对module-a项目进行测试。
往常的方法是在module-a项目根目录下执行npm link,然而这时报错了…
npm ERR! code E404
npm ERR! 404 Not Found - GET http://reigstry.npmjs.org/module-b - no such package available
....
寻找解决方法的道路很曲折,这里不想赘述了…
{
"dependencies": {
"module-b": "../module-b", // 使用相对路径加载
}
}
清除原来下载的依赖 lerna clean
重新下载依赖 lerna boostrap
cd module-a && sudo npm link
此时可能会遇到这样的错误 (之前使用npm link创建的bin导致冲突,直接运行下面的命令删除)
npm ERR! code EEXIST
npm ERR! path /usr/local/bin/module-a
npm ERR! Refusing to delete /usr/local/bin/module-a .....
....
sudo rm usr/local/bin module-a
https://stackoverflow.com/questions/49037987/allow-local-project-to-depend-on-local-lerna-packages