看第三方的模块"react-input-autosize"关于构建的结果和导出不是太明白;
dist 文件夹是 rollup 生成的 esm 和 umd 模块的文件,
lib 文件夹是 babel 生成的 commonjs 模块的文件,
请问为什么 package.json 文件之中的main字段声明的是babel 生成的 commonjs 模块的文件,到处 dist/react-input-autosize.js 这个 UMD module 文件不是应该更好一些么?
看第三方的模块"react-input-autosize"关于构建的结果和导出不是太明白;
dist 文件夹是 rollup 生成的 esm 和 umd 模块的文件,
lib 文件夹是 babel 生成的 commonjs 模块的文件,
请问为什么 package.json 文件之中的main字段声明的是babel 生成的 commonjs 模块的文件,到处 dist/react-input-autosize.js 这个 UMD module 文件不是应该更好一些么?
3 回答2.7k 阅读✓ 已解决
4 回答1.8k 阅读
2 回答1.2k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
4 回答1.6k 阅读
1 回答785 阅读✓ 已解决
首先 package.json 这玩意儿是给 Node.js 项目用的,node_modules 目录里的东西当然是需要你引入的。你既然都已经能
import XXX from 'XXX'
或者require('XXX')
了,那要么就是在 Node.js 的 CommonJS 方案下、要么是在 ESModule 的 ESM 方案下(在 package.json 里对应module
这个属性),压根就不可能是别的。你见过谁在需要 Node.js 环境的项目里模块化用 AMD、CMD 和从 globalThis 上找全局挂载的?既然都不用它们,那 UMD 的优势在哪儿呢?UMD 存在的意义不就是为了整合所有这些模块化方案吗?
所以用 UMD 可以、但没必要。UMD 的输出一般都是放到 CDN 上供外链下载的,以适应任何项目类型的模块导入方案。
当然某些库也确实会把 UMD 输出作为入口,这点上看作者个人选择了。