繁体   English   中英

为浏览器和节点创建 npm 包

[英]Creating npm package for both browser and node

我正在尝试创建一个可由网络应用程序或其他节点模块使用的 npm 包。

如果我只支持浏览器,我会分配给窗口window.myExport = myExport; (除非有一种我不知道的更现代的方式?)。

如果我只支持节点模块,我会使用 export, module.exports = myExport; (同样,如果有更好的方法我不知道,请告诉我)。

但我想支持两者。 目前,我正在做的是

var window, module;
if (window)
    window.myExport = myExport;
if (module)
    module.exports = myExport;

这看起来很丑陋,但到目前为止有效。 什么是更好的方法? 这是一个非常轻量级的节点模块,所以除非不可避免,否则我不想引入像 webpack 之类的构建器。 我已经在使用 babel 创建我的代码的 es5 兼容版本,所以如果 babel 可以为我解决这个问题,那就行得通了。

如果有人已经在使用 npm 来管理他们的依赖关系,那么假设他们将使用 webpack 或 browserify 之类的东西来允许他们导入/需要模块是合乎逻辑的。 有人从 NPM 下载库并手动将其包含在他们的页面中是不寻常的。 我还认为 npm 库将自身添加到窗口对象是一种严重的违规行为。 这可能会导致各种问题,尤其是当您的库的不同版本包含在同一页面上时。

真正的问题是 ES 模块导出或 commonJS 导出。 其中我目前更喜欢 CommonJS,因为 ES 模块还没有在 nodejs 中原生实现,所以你必须使用 babel 来轻松导入它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM