通过npm链接和打字本地开发的多模块

时间:2016-06-21 19:39:30

标签: node.js typescript npm tsc

我正在尝试使用NPM将依赖模块B与其依赖关系A链接。使用this作为指导,我已完成以下操作。

项目A定义为:

{
  "name": "typescript-link-failure-a",
  "version": "1.0.0",
  "description": "",
  "main": "dist/A.js",
  "typescript": "dist/A.d.ts",
  "scripts": {
    "setup": "npm link"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-typescript": "^2.13.6",
    "merge2": "^1.0.2"
  }
}

A.ts

export class A {
    "foo":string;
}
执行

npm run-script setup以创建从此目录到全局node_modules的链接。

在项目B中:

{
  "name": "typescript-link-failure-b",
  "version": "1.0.0",
  "description": "",
  "main": "dist/B.js",
  "scripts": {
    "preinstall": "npm link ../A"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-typescript": "^2.13.6",
    "merge2": "^1.0.2"
  }
}

B.ts

import {A} from "typescript-link-failure-a"

class B {
    "foo":A;
}

我使用NPM链接链接回项目A.我认为链接正常,如项目B的node_modules,我可以看到项目A.

然而,当我尝试

import {A} from "typescript-link-failure-a",Intellij,VS Code和TSC都说他们不理解名为typescript-link-failure-a的模块。

任何人都可以提供见解吗?

github link to code example

1 个答案:

答案 0 :(得分:2)

在这种情况下,项目B需要引用执行NPM链接到项目A的名称,而不是路径。

将其更改为`npm link typescript-link-failure-a'作为项目B根目录中的命令解决了问题。