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

标签 javascript node.js npm yarnpkg lerna

我维护了一个发布在 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/

相关文章:

javascript - 是否可以在 JavaScript 中对声音进行分层?

javascript - PHP 排序数组在 json_encode 后在 JS 中未排序

node.js - 服务器重新启动后议程作业不运行

git - Node app和多个node模块同时开发,npm-link的使用

javascript - Nodejs中require的使用与package.json有关吗

javascript - React Native 渲染多维数组

javascript - "stacked"上的 `translate()` 转换偶尔会卡顿 (v4.0.0-alpha40)

node.js - 自 SSL 以来没有 'Access-Control-Allow-Origin'

node.js - 发送到客户端后无法设置 header - 发送 SES 电子邮件

ios - 在 Xcode 中找不到“opencv2/opencv.hpp”文件