发布npm包时,我应该使用src还是dist目录?

6
当将一些javascript发布到npm作为库时,我应该将package.json中的“main”设置为“dist/index.js”还是“src/index.js”?
假设该库是使用webpack构建的,并且可能与使用webpack的项目一起使用。
这两个选项之间的区别将是什么?webpack能够在这两个选项中进行tree shaking吗?
谢谢!
1个回答

6
如果您的库是设计用于在浏览器中使用的,那么请记住并不是每个人都在使用模块打包器。良好的做法是将 main 属性设置为捆绑文件(在您的情况下为 dist/index.js),并确保您有一个 prepublish 脚本,在发布之前执行构建步骤。
为了支持像 Rollup 这样的打包器的 tree-shaking,您可以使用 module 属性,并确保它指向一个使用 ES2015 导入的模块。
例如:
{
  "main": "dist/index.js",
  "module": "src/index.js"
}

Rollup将会尊重这一点,但是让Webpack对你的代码进行摇树优化则需要更多的操作。具体细节请参考此链接:Tree shaking ES6 模块在 Webpack 2 中的实现

感谢回答问题。我最终使用了dist/index.js。原因是通常项目会从babel转译中排除node_modules,因此最好发布dist版本。唯一的缺点是当您npm link依赖项并在本地开发时,您需要记住启动构建过程以构建dist版本。有时会被遗忘,可能会浪费数小时。 - ryang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接