Javascript 如何为已发布的npm库的子文件提供多个模块格式
给定一个在npm上发布的包,其中包含一个Javascript 如何为已发布的npm库的子文件提供多个模块格式,javascript,npm,webpack,package.json,rollup,Javascript,Npm,Webpack,Package.json,Rollup,给定一个在npm上发布的包,其中包含一个package.json,该包指向3个独立的分发文件,如下所示: { ... “名称”:“@myorg/mymodule”, “main”:“mymodule.umd.js”, “模块”:“mymodule.esm.js”, “unpkg”:“mymodule.min.js” } 公众使用情况如下所示: 从“@myorg/mymodule”导入mymodule mymodule()/…做一些事情 或者在使用commonJS时 const mymodul
package.json
,该包指向3个独立的分发文件,如下所示:
{
...
“名称”:“@myorg/mymodule”,
“main”:“mymodule.umd.js”,
“模块”:“mymodule.esm.js”,
“unpkg”:“mymodule.min.js”
}
公众使用情况如下所示:
从“@myorg/mymodule”导入mymodule
mymodule()/…做一些事情
或者在使用commonJS时
const mymodule=require('mymodule')
mymodule.default()
如何构造包以发布其他导入。例如,假设我们想要发布一个特性或本地化,我们不希望它成为每个人的捆绑包的一部分,因为只有少数人需要该特性。理想情况下,用法如下所示:
从“@myorg/mymodule”导入mymodule
从“@myorg/mymodule/fr”导入fr
mymodule({
地点:fr
})
我如何构建我的包以允许这种情况?从技术上讲,我可以进行这些导入,但如果我发布esm
网页包或汇总失败(意外的标记“导出”),因为他们认为这应该是通用的JS构建,如果我发布umd
,他们会发出警告,说找不到默认的导出。唯一有效的方法是从“@myorg/mymodule/fr.esm”显式导入import fr
然而,作为一名软件包维护人员,我希望预先配置软件包,以便更好地与捆绑包一起工作,而不是要求用户了解其捆绑包的内部结构,或者依靠树的晃动来减小大小。这在main
、module
和unpkg
中已经非常有效。对于主文件,如何对其他文件执行类似操作