在TypeScript中导入没有作用域名称的作用域npm模块

时间:2016-03-26 00:26:11

标签: typescript npm node-modules

我们有一些私人NPM套餐使用npmjs'私人仓库。假设

  • 范围名称:@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 这样我们就可以使用了 import {SomeThing} from 'private-package'而非添加@scope

2 个答案:

答案 0 :(得分:2)

您可以为此使用 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

中查看更多详细信息

答案 1 :(得分:0)

您可以为此使用tsconfig的路径映射功能。在“ compilerOptions”部分中,添加“ paths”部分,其中包含每个路径映射的条目。例如,在您的情况下:

{
  "compilerOptions": {
    ...
    "paths": {
      "private-package": ["@scope/private-package"]
    }
  }
}

请注意,如果您使用捆绑程序,则它不会知道此映射,因此您可能还必须对其进行配置。