我正在开发一个作为节点包发布的库,并且我正在使用webpack构建系统构建这个库。我有一个package.json和一个package-lock.json,它们被提交到存储库中。webpack构建正在生成一组编译和打包的工件和资产到一个dist文件夹中,该文件夹构成了我想要发布的库。
我的假设是,当我将已编译和捆绑的库发布到npm存储库时,使用包的开发人员不希望重新构建库,因此不需要下载库的任何dependencies或devDependencies,因为我将库的编译输出发送到我发布的包中。
这意味着在npm publish步骤中,我需要一个删除dependencies和devDependencies字段的package.json。否则,依赖于我的库的开发人员在将npm install运行到工作区时将收到所有这些依赖项,从而产生额外的开销。
对于如何从签入版本中生成一个新的package.json,删除这些字段并在发布前将它们放置在dist文件夹中,有什么最佳实践吗?
我可以想出许多方法来做到这一点,例如:
copy-webpack-plugin和transform函数的webpack构建将一个新的package.json输出到dist文件夹中。通过向构建管道中添加一个自定义步骤,生成修改后的package.json到dist文件夹。H 223H 124提交一个单独的package.json到一个子文件夹中,该子文件夹用于发布,并在发布时自动复制到D26文件夹中。H 227F 228我想知道在如何做到这一点上是否有一些公认的最佳实践方法,或者npm工具是否已经对用例内建提供了支持?
发布于 2022-03-09 06:17:42
回答
我没有看到任何标准的方法。您建议的所有方法都是为了生成一个新的、干净的package.json,这并没有什么问题。我想你能看到奇怪的是新的package.json的产生。别担心,这很常见,但据我所知,没有关于如何生成修改过的副本的规则。不过,我想就你的忧虑提出一些意见。
关于devDependencies
如果是从npm安装的,则依赖项的dev依赖项将不会被安装(或者不应该安装),在大多数情况下,这应该足够了。
依赖关系呢?
应该包括。如果您认为在最终的dist中不需要某些依赖项,并且只需要在开发中使用,那么从定义上来说是一个开发依赖项。将其移动到devDependencies数组中的package.json中。
捆绑的依赖关系呢?
那么,您的依赖关系不应该被捆绑或打包,也不应该被排除在依赖项之外。您可以这样做,但这违背了npm和类似的包管理器的目的,失去了与依赖关系模块化、缓存和版本控制相关的优势。如果您希望强制分发某些文件,因为您使用的是修改后的第三方库或其他具有绝对分发控制的原因,那么您可能至少应该查看一下package.json中的package.json密钥。
https://stackoverflow.com/questions/68996842
复制相似问题