gpt4 book ai didi

javascript - 是否可以通过创建新的(未发布的) "sub"包来分解(发布的)包的依赖关系列表?

转载 作者:IT老高 更新时间:2023-10-28 23:20:51 25 4
gpt4 key购买 nike

我维护了一个发布在 npm 注册表上的 JavaScript 库,它有很多依赖项。很难跟踪代码的哪一部分取决于外部包。

不幸的是,lernayarn 的工作区、npm linknpm 的本地路径依赖都没有申报帮助。 (我在例子之后解释了原因。)

我希望能够通过将一些依赖项提取到新的“子包”中来分解 package.json 中声明的 dependencies 列表。

所以,不要有下面的依赖列表

// ~/code/example-lib/package.json
{
"name": "example-lib",
"dependencies": {
"lodash": "*",
"request": "*",
"chalk": "*",
"bluebird": "*",
"mz": "*",
"moment": "*",
"socket.io": "*",
"socket.io-client": "*",
"react": "*",
"react-dom": "*"
}
}

我想将一些依赖项提取到一个新的本地包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": "*"
}
}

example-lib 的依赖列表将大大减少到;

// ~/code/example-lib/package.json
{
"name": "example-lib",
"dependencies": {
"chalk": "*",
"example-lib-subpackage": "./packages/example-lib-subpackage",
"mz": "*",
"socket.io": "*"
}
}

注意 example-lib 现在如何依赖于本地包 example-lib-subpackage;

  ...
"name": "example-lib",
"dependencies": {
...
"example-lib-subpackage": "./packages/example-lib-subpackage",
...

有人做到了吗?会 super 方便的。

请注意,lernayarn 的工作区功能仅在您可以将本地包发布到 npm 注册表时才有帮助。但在我的情况下,将本地包 example-lib-subpackage 发布到 npm 注册表没有意义。

另外,npm linknpm 的本地路径依赖功能仅适用于未发布但 example-lib 需要的包在 npm 注册表中。

Local paths [...] should not be used when publishing packages to the public registry.

引自 https://docs.npmjs.com/files/package.json#local-paths

最佳答案

由于 package.json 只是一个 JS 对象,您可以在发布到 NPM 之前对其进行扩展。

关于预发布:

  • 更新软件包版本
  • 移除 package.json 本地 example-lib-subpackage 依赖
  • 扩展 example-lib 依赖项与example-lib-subpackage
  • 可选择对更新后的 package.json
  • 运行一些测试
  • 发布
  • 还原原始依赖对象
  • 提交新版本

PouchDb遵循更详细描述的模糊相似的方法herehere .

关于javascript - 是否可以通过创建新的(未发布的) "sub"包来分解(发布的)包的依赖关系列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47182280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com