bri*_*out 10 javascript node.js npm lerna yarnpkg
我维护一个在npm注册表上发布的JavaScript库,它有很多依赖项.很难跟踪代码的哪个部分取决于外部包.
不幸的是lerna,yarn工作空间,npm link或者npm本地路径依赖声明都没有帮助.(我解释了为什么在这个例子之后.)
我希望能够通过将一些依赖项提取到新的"子包"中来分解dependencies声明的列表package.json.
所以,而不是具有以下依赖列表
// ~/code/example-lib/package.json
{
"name": "example-lib",
"dependencies": {
"lodash": "*",
"request": "*",
"chalk": "*",
"bluebird": "*",
"mz": "*",
"moment": "*",
"socket.io": "*",
"socket.io-client": "*",
"react": "*",
"react-dom": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
我想将一些依赖项提取到一个新的本地包中example-lib-subpackage.对于本地而言,我的意思example-lib-subpackage是仅仅意味着消费example-lib.
example-lib-subpackage的依赖列表是;
// ~/code/example-lib/packages/example-lib-subpackage/package.json
{
"name": "example-lib-subpackage",
"dependencies": {
"lodash": "*",
"request": "*",
"bluebird": "*",
"moment": "*",
"socket.io-client": "*",
"react": "*",
"react-dom": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
并且example-lib依赖列表将大大减少到;
// ~/code/example-lib/package.json
{
"name": "example-lib",
"dependencies": {
"chalk": "*",
"example-lib-subpackage": "./packages/example-lib-subpackage",
"mz": "*",
"socket.io": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
注意example-lib现在如何取决于本地包example-lib-subpackage;
...
"name": "example-lib",
"dependencies": {
...
"example-lib-subpackage": "./packages/example-lib-subpackage",
...
Run Code Online (Sandbox Code Playgroud)
有没有人实现过这个?这将是非常方便的.
请注意,lerna和yarn,如果您没有问题发布本地套餐到NPM注册表的工作区功能只能帮助.但在我的情况下,将本地包发布example-lib-subpackage到npm注册表是没有意义的.
此外,npm link并且npm本地路径依赖性功能仅适用于未发布但example-lib需要在npm注册表上的包.
将包发布到公共注册表时,不应使用本地路径[...].
我在想你可以使用构建工具来维护多个package.jsons 并将它们编译为真实的 - 但你会一直与平台作斗争。你必须有自己的 CLI 来安装,这会很混乱。
你说:
请注意,仅当您可以将本地包发布到 npm 注册表时,
lerna和的工作区功能才会有帮助。yarn但就我而言,将本地包发布example-lib-subpackage到 npm 注册表是没有意义的。
我认为你不会找到一个完全有意义的解决方案(如果你正在尝试使用 npm 做完全非标准的事情),而且我很好奇为什么你要排除突破example-lib-subpackage自己的做法回购-这似乎是显而易见的解决方案。
| 归档时间: |
|
| 查看次数: |
474 次 |
| 最近记录: |