【问题标题】:Node/NPM How to map import pathsNode/NPM 如何映射导入路径
【发布时间】:2022-11-29 01:18:04
【问题描述】:

我有一个 NPM 模块,它使用另一个包含共享代码的本地 NPM 模块。它们都不是公开的,这都是本地的。

我像这样在我的 package.json 中导入共享模块:

  "my-shared": "file:../my-shared-code"

当我安装 npm 时,我的共享代码被正确导入,我可以导入如下代码:

import Blah from 'my-shared/src/sharedTypes';

问题

我必须在导入中使用“src”这个词。但是,当我构建时,我创建了一个 build 目录,这会破坏所有这些导入!

我想知道我是否可以使用 NPM 以某种方式映射导入?

我可以做到完全不用“src”这个词吗?

我可以这样做吗:

import Blah from 'my-shared/sharedTypes';

然后它神奇地计算出是使用“src”还是“build”目录?

我试过的

我查看了package.json 的选项,我认为有一个“文件”属性可能有帮助。但是我认为这只是将文件列入白名单。

我还查看了“主要”属性,但我不是在“导出模块”。我只有一大堆实用程序文件,我希望能够将它们导入到多个其他项目中。

我实际上想要实现的目标

我正在使用打字稿,我有一个前端和一个后端,它们都共享某些模型的类型,但也共享一些实用功能。

我希望我的 typescript/react 前端和我的 typescript 后端能够从另一个 node_package 导入 typescript 文件,但是它需要知道使用 "src" 进行开发,使用 "build" 进行生产。

【问题讨论】:

    标签: node.js typescript npm


    【解决方案1】:

    虽然这不完全是您所要求的,但您可能正在寻找 npm link。这不是直观的,但这是我用于上述情况的方法。

    npm-link是一种注册本地项目的方式,方便其他人参考。请注意,阅读文档很重要——使用它可能会以不明显的方式影响您的本地环境(特别是如果您直接从您的机器构建和发布——​​而不是 CI/CD)。

    【讨论】:

      【解决方案2】:

      在消费者项目中,您可以使用路径映射 --> Node/NPM How to map import paths

      至于包,您可以使用 export * from './my-file' 语法在 index.ts 文件中重新导出(每个目录可能需要一个)。但如果你有很多文件,这就很乏味了。

      另一个解决方案似乎是制作一个脚本来将 package.json 复制到 dist 文件夹并在那里进行构建。

      那里有类似的讨论:How to npm publish specific folder but as package root

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-05
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        相关资源
        最近更新 更多