【发布时间】:2019-09-16 07:06:51
【问题描述】:
在我之前的问题之后,我遵循了使用多个目标来构建我的 NPM 包的 webpack 指南。 https://webpack.js.org/concepts/targets/#multiple-targets
我现在有两个不同的输出文件,index.js 是浏览器包,而 index.node.js 显然应该在后端运行。
应用程序应该在浏览器和 Node 上运行,代码大部分被重用,但在访问文件等方面存在很大差异。这意味着我确实需要两个单独的文件,具体取决于应用程序应该运行的平台。
我的问题是我应该如何发布这个库,以便用户在从 NPM 导入它时可以像import {//SOME OBJECT} from 'my-published-library' 一样使用它,无论他们是在浏览器还是在他们的节点应用程序中使用它?如果我现在尝试这样做,它始终默认为 index.js,它在浏览器中有效,但在 Node 中无效。
【问题讨论】:
-
只有较新的 Node.js 版本支持 ESM 并且只使用
--experimental-modules标志。因此,更广泛的 Node.js 生态系统目前还不能使用 ESM。标准仍然是 CommonJS,如果你想将包发布到 npm,你应该使用它。 -
不确定你想说什么?我的 index.node.js 在节点中工作得很好,问题是当我在节点中导入库时,它总是默认指向 index.js(浏览器版本)而不是 index.node.js
标签: javascript node.js typescript npm ecmascript-6