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

Posted

技术标签:

【中文标题】通过 npm 链接和 typescript 本地开发的多模块【英文标题】:Multi-module via npm link and typescript local development 【发布时间】:2016-10-23 12:28:17 【问题描述】:

我正在尝试使用 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】:

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

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

【讨论】:

在 IntelliJ 中仍然不起作用。我可以在 node_modules 中看到该项目,但是当我转到它的定义时,IDE 指向 @types 而不是 @myBigProject/Dependency 当我在组织中声明了一个依赖项时,它似乎不起作用,比如@myOrg/myDependency,但是如果我只使用像 myDependency 这样的简单名称,它就会起作用。 ://

以上是关于通过 npm 链接和 typescript 本地开发的多模块的主要内容,如果未能解决你的问题,请参考以下文章

使用 TypeScript 和 NPM 链接创建 React 应用程序:导致模块解析失败的枚举

通过 npm 包共享 TypeScript 类型声明

TypeScript 安装

将 npm 链接的 React JSX 项目/模块导入 AngularJS TypeScript 模块不起作用

无法通过 npm 全局卸载 typescript

如何通过npm编译Typescript代码