【问题标题】:Publish a library for client and node.js为客户端和 node.js 发布一个库
【发布时间】: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


【解决方案1】:

不确定这是否是您要查找的内容,但如果您正在为浏览器安装,package.json 提供了一个设置入口点的字段。

https://docs.npmjs.com/files/package.json#browser

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多