在 TypeScript 中导入没有作用域名称的作用域 npm 模块
Posted
技术标签:
【中文标题】在 TypeScript 中导入没有作用域名称的作用域 npm 模块【英文标题】:Importing scoped npm modules without scope name in TypeScript 【发布时间】:2016-07-13 19:32:11 【问题描述】:我们有一些使用 npmjs 的私有仓库的私有 NPM 包。假设
范围名称:@scope
私有包名称为:private-package
当我们使用安装这个 NPM 包时
npm install @scope/private-package
安装到:.node_modules/@scope/private-package
在 VSCode 中,要从这个包中导入一些东西,我们需要做
import SomeThing from '@scope/private-package'
TypeScript 配置中有什么可以重新映射的吗
@scope/private-package
到 private-package
这样我们就可以使用 like
import SomeThing from 'private-package'
而不是添加@scope
?
【问题讨论】:
【参考方案1】:您可以为此使用 NPM 别名功能(从 6.9 开始)。
在你的情况下:
npm i private-package@npm:@scope/private-package
会导致软件包被安装在node_modules/private-package
并且您的工具将能够相应地解决它
在How do I install a package with npm with a different/custom module name中查看更多详细信息
【讨论】:
【参考方案2】:您可以为此使用 tsconfig 的路径映射功能。在“compilerOptions”部分中,添加一个“paths”部分,其中包含每个路径映射的条目。例如,在您的情况下:
"compilerOptions":
...
"paths":
"private-package": ["@scope/private-package"]
请注意,如果您使用捆绑器,它不会知道此映射,您可能还需要对其进行配置。
【讨论】:
以上是关于在 TypeScript 中导入没有作用域名称的作用域 npm 模块的主要内容,如果未能解决你的问题,请参考以下文章
如何在 TypeScript 中导入 package.json?
如何在没有 <reference> 的情况下在 TypeScript 中导入带有“Typings”的模块?