【问题标题】:package.json: generating a package.json for releasepackage.json:生成一个 package.json 用于发布
【发布时间】:2021-08-31 10:12:27
【问题描述】:

我正在开发一个想要作为节点包发布的库,并且我正在使用webpack 构建系统构建该库。我有一个package.json 和一个package-lock.json 已提交到存储库。 webpack 构建正在将一组已编译和捆绑的工件和资产生成到构成我要发布的库的 dist 文件夹中。

我的假设是,当我将编译和捆绑的库发布到 npm 存储库时,使用该包的开发人员不想重新构建库,因此不需要下载任何 dependencies 或 @库的 987654326@,因为我在我发布的包中运送了库的编译输出。

这意味着在npm publish 步骤中,我需要一个删除dependenciesdevDependencies 字段的package.json。否则,依赖我的库的开发人员在他们的工作区运行 npm install 时将收到所有这些依赖项,从而导致额外的开销。

关于如何从签入版本中生成一个新的package.json 以删除这些字段并在发布前将它们放入 dist 文件夹中是否有最佳实践?

我可以想到很多方法来做到这一点,例如:

  • 使用带有copy-webpack-plugintransform 函数的webpack 构建将新的package.json 输出到dist 文件夹中。
  • 通过向我的构建管道添加一个自定义步骤,将修改后的package.json 生成到dist 文件夹中。
  • 通过将单独的package.json 提交到专门用于发布的子文件夹中,并在发布时自动将其复制到dist 文件夹中。

我想知道是否有一些普遍接受的最佳实践方法可以做到这一点,或者npm 工具是否已经支持该用例内置?

【问题讨论】:

    标签: node.js npm webpack


    【解决方案1】:

    回答

    我还没有看到任何标准的方式。你提出的所有方法都是为了生成一个新的、干净的 package.json ,这没有错。我猜你可以看到奇怪的是新 package.json 的生成。别担心,这很常见,但据我所知,没有关于如何生成修改副本的规则。不过,我想分享一些关于您的担忧的观点。

    关于 devDependencies

    如果从 npm repo 安装,则不会安装(或不应该)依赖项的 dev 依赖项,这在大多数情况下应该足够了。

    依赖项呢?

    应该包含。如果您认为最终 dist 中不需要某些依赖项,而仅在开发中需要,则根据定义,它是一个开发依赖项。将其移至 package.json 中的 devDependencies 数组。

    捆绑的依赖项呢?

    好吧,您的依赖项永远不应捆绑或打包并从依赖项中排除。你可以这样做,但这违背了 npm 和类似包管理器的目的,失去了与依赖模块化、缓存和版本控制相关的优势。如果您想强制分发某些文件,因为您正在使用修改过的第三方库或其他原因以拥有绝对分发控制权,您可能至少应该查看 package.json 中的 bundledDependencies 键。

    【讨论】:

    • 这是真的。如果最终工件在dist 中,那么其他所有内容都是devDependency
    猜你喜欢
    • 2022-10-15
    • 2013-03-16
    • 2012-04-23
    • 1970-01-01
    • 2020-02-10
    • 2012-10-29
    • 2019-12-28
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多