gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:08:40 33 4
gpt4 key购买 nike

我希望这个问题不会太固执己见,我问的是最好/常见的做法。

我正在发布一个用 ES6 编写并使用 babel 转换为 ES5 和 UMD 的 npm 模块和 rollup .

文件结构可以这样概括:

/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/中。
这些目录是 .gitignored:

  • 覆盖范围
  • 分布
  • Node 模块

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

我一直在使用带有构建过程的入门工具包:

  1. 取原来的package.json
  2. 从中删除所有脚本和开发相关字段
  3. 复制到 dist
  4. 还将文件 LICENSE 和 README 复制到 dist(未修改)

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

A) 整个文件结构(除去 /coverage//node_modules/)与顶级 package.json 具有指向 dist

中相关文件的入口点

B) 只需发布 dist 的内容,其中包含精简的 package.json 和 README & LICENSE。我知道仅仅发布 /dist 的内容会使 source maps 毫无用处。

这里的常见做法是什么?

最佳答案

在我看来,最好的做法是在 dist 中发布这两个压缩代码。文件夹以及 src 中的源代码文件夹。还应包括其他文件,例如 package.json , package-lock.json , README.md , LICENSE.txt , CONTRIBUTING.md等位于根包目录。

要实现这一点,应该使用 files package.json 中的属性将需要发布到 npm 的内容列入白名单而不是通过将 .npmignore 列入黑名单来查找不需要发布的内容.

dist文件夹应该只有缩小的包,不需要生成另一个 package.json通过删除脚本在 dist 文件夹中,devDependencies等。

这是因为当包的消费者做 npm install <package name> ,它只安装 dependencies 中的包并忽略 devDependecies 下的包.

浏览器可以通过直接引用脚本标签来使用缩小的文件,其中由于文件大小较小而加载时间会更短,而现代框架如 angular将使用未缩小的代码。现代框架有自己的构建工具,例如 webpack/rollup它创建了一个缩小的捆绑文件。

没有必要有顶级package.jsonmain 中有一个入口点dist 中相关文件的字段.相反,在我看来,顶级 package.json应该有相关文件的入口点,例如 index.js在同一根包级别。

终于可以运行了 npm pack 看看 tarball 里面有什么,然后最后做 npm publish从根包文件夹中到 npm 注册表供公众使用。

关于javascript - 我应该在 npm 上发布我的模块的源代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43613124/

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