【问题标题】:How to export multiple library variants from a single NPM package如何从单个 NPM 包中导出多个库变体
【发布时间】:2021-08-02 18:52:10
【问题描述】:

我正在创建一个可以部分用于网络浏览器的节点库。

我目前的结构是这样的:

package.json
lib/
    index.js
    node.js
    web.js
modules/
    some-function.js
    some-node-function.js
    some-web-function.js
    ...

"lib/index.js"package.json 中被指定为 "main" p>

我正在使用 lib/ 中的每个文件重新导出 modules/ 过滤的函数目标(所有/节点/网络)

我想这样使用它:

import fullLibrary from "my-library";
import {someFunction} from "my-library";

import webOnlyLibrary from "my-library/web";
import {someWebFunction} from "my-library/web";

import nodeOnlyLibrary from "my-library/node";
import {someNodeFunction} from "my-library/node";

BUT 保留 index.jsnode.js >web.js/lib 中!

目前只有前两个 import 语句有效(因为 index.js 是从 package.json 指向的)。

我知道我可以将这些文件放在包的根目录中,并且在导入时它会按预期工作,但我想知道是否有办法在将文件保留在 中的同时做同样的事情/lib 用于清洁。

无论如何,这是从单个 NPM 包中公开同一库的多个变体的推荐方法吗?

【问题讨论】:

    标签: javascript node.js npm


    【解决方案1】:

    仅适用于对图书馆结构和组织有类似问题的任何人。

    那时我开始使用 LernaYarn Workspaces 使用 monorepos,我没有后悔。我认为这是模块化、可读性、可扩展性和可维护性方面最有效的方法。

    具体来说,问题代码会被翻译成这样:

    import webOnlyLibrary from "@my-library/web";
    import {someWebFunction} from "@my-library/web";
    
    import nodeOnlyLibrary from "@my-library/node";
    import {someNodeFunction} from "@my-library/node";
    

    【讨论】:

      猜你喜欢
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      相关资源
      最近更新 更多