在 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-packageprivate-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”的模块?

在 Typescript 中导入 React 图像

在 react-typescript 中导入 html 文件

如何从 typescript 项目中导入 npm 包?

在 tsx 编译错误中导入 jsx 文件