我应该在npm上发布模块的源代码吗?

我希望这个问题不要太过分,我在问最好的/常见的做法。

我发布了一个用ES6编写的npm模块,并使用babel和rollup转换为ES5和UMD。

文件结构可以总结如下:

/coverage/ /dist/ /node_modules/ /src/ /test/ /tools/ .editorconfig .eslintrc .gitattributes .gitignore .travis.yml CHANGELOG.md CONTRIBUTING.md LICENSE.txt package.json README.md 

源代码位于/src/ ,编译后的代码位于/dist/
这些dirs是.gitignored:

  • 覆盖
  • DIST
  • node_modules

用户真正使用的确实是/dist/的内容。

我一直在使用一个构build过程的入门工具包:

  1. 拿原来的package.json
  2. 从中删除所有的脚本和开发相关的领域
  3. 将其复制到dist
  4. 还将文件LICENSE和README复制到远程(未触及)

整个软件包源将在GitHub上发布,但我不确定在npm上发布什么

A)具有顶层package.json的整个文件结构(去除/coverage//node_modules/ ),该入口指向dist的相关文件

要么

B)只需发布一个精简的package.json和README&LICENSE的dist内容。 我知道只是发布/dist的内容会使源映射无用。

这里常见的做法是什么?

通常的做法是在npm上有一个源代码,而不是编译/缩小等的结果。 首先发布不需要任何转换的模块也是很常见的。

如果您的模块无法直接在Node中使用(如果npm上的模块是非常不寻常的,当然也不是这样),那么您必须确保在安装过程中转换模块(这是非常棘手的,可能会损坏用户的文件系统如果做错了)或将dist包含在已发布的模块中。

如果你打算在已发布的模块中包含dist ,那么你需要确保当人们需要你的模块时加载正确的文件,并且在做npm versionnpm publish之前总是build立一个新的dist

但是,我的build议是在Node中编写节点模块。 这样他们将可以直接使用小的下载,快速安装,没有问题与转发和可读的错误消息 – 最后一部分是非常重要的debugging过程中。

发布经常被忽略的传输代码存在一个严重的问题。 发布与实际源代码不同的代码,无论是以任何方式进行转译,缩小或混淆,都会产生一些安全隐患。 审核转录结果是非常困难的,如果这是实际运行的代码(特别是如果你自己没有编译的话),你必须这样做。