NodeJS 如何Map导入路径

ktca8awb  于 2022-11-29  发布在  Node.js
关注(0)|答案(2)|浏览(237)

我有一个NPM模块,它使用另一个包含共享代码的本地NPM模块。它们都不是公共的,这都是本地的。
我在package.json中导入共享模块,如下所示:

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

当我安装npm时,my-shared-code会被正确导入,我可以导入如下代码:

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

问题

我不得不在导入中使用单词“src”。然而,当我构建时,我创建了一个build目录,这破坏了所有这些导入!
我想知道我是否可以使用NPM来Map导入?
我能让它完全不用“src”这个词吗?
我能做的只是:

import Blah from 'my-shared/sharedTypes';

然后它神奇地指出是使用“src”目录还是“build”目录?
我所尝试的
我查看了package.json的选项,有一个“文件”属性,我认为可能会有帮助。然而,我认为这只是白名单文件。
我也查看了“main”属性,但是我没有“导出一个模块”。我只是有一个加载的实用程序文件,我希望能够导入到多个其他项目。
我真正想要实现的
我使用的是typescript,我有一个前端和一个后端,它们共享某些模型的类型,但也共享一些实用函数。
我希望我的typescript/react前端和我的typescript后端能够从另一个node_package导入typescript文件,但是它需要知道在开发时使用"src",在为生产构建时使用"build"

5lhxktic

5lhxktic1#

虽然这并不是您所要求的,但您可能会寻找npm link。它并不直观,但它正是我在上述情况下使用的。
npm-link是注册本地项目的一种方式,以便其他人可以引用它们。只是要注意,阅读文档是很重要的--使用它可能会以不明显的方式影响您的本地环境(特别是如果您直接从您的计算机构建和发布--而不是CI/CD)。

dddzy1tm

dddzy1tm2#

在消费者项目中,您可以使用路径Map--〉节点/NPM如何Map导入路径
对于软件包,你可以使用export * from './my-file'语法,在一个index.ts文件中重新导出(你可能在每个目录中都需要一个)。但是如果你有很多文件的话,这是很乏味的。(imperfect example
另一个解决方案似乎是制作一个脚本,将package.json复制到dist文件夹中,并在那里进行构建。
那里也有类似的讨论:How to npm publish specific folder but as package root

相关问题