Node/NPM如何映射导入路径



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

我在包中导入了共享模块。Json如下:

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

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

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

我必须使用"src"在导入中。然而,当我构建时,我创建了一个build目录,它打破了所有这些导入!

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

我可以让它不需要使用"src"吗?

我可以这样做吗:

import Blah from 'my-shared/sharedTypes';

,然后它会神奇地计算出是否使用"或";build"dirs吗?

What I tried

我查看了package.json的选项,有一个"我觉得可能有用的东西然而,我认为这只是白名单文件。

我还查看了"主"属性,但是我并没有导出一个模块。我只是有一堆实用程序文件,我想把它们导入到其他多个项目中。

我想要达到的效果

我正在使用typescript,我有一个前端和后端,它们共享某些模型的类型,但也共享一些实用程序函数。

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

虽然这不是你想要的,但你可能正在寻找npm link。这不是直观的,但这是我在你上面的情况下使用的。

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

在消费者项目中,你可以使用路径映射——>https://www.typescriptlang.org/docs/handbook/module-resolution.html路径映射

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

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

有一个类似的讨论:如何npm发布特定的文件夹,但作为包根

最新更新