【问题标题】:Typescript local dependencies (Multiple Projects)Typescript 本地依赖项(多个项目)
【发布时间】:2017-09-21 23:40:09
【问题描述】:

我是打字稿的新手。我目前正在尝试创建一个相互依赖的项目结构。共有三个项目corecalculatortax-calculator。项目tax-calculator 需要来自calculator 项目的代码,它需要来自core 项目的内容。 corecalculator 项目应该是库,tax-calculator 应该是 Web 界面。我拆分代码的原因是,我在其他项目中也需要corecalculator

core
    |--src
        |--MathUtils.ts
        |--...
    |--dist
        |--MathUtils.js

calculator
    |--src
        |--Calculator.ts // needs MathUtils.ts
    |--dist
        |--Calculator.js

tax-calculator
    |--src
        |--TaxCalculator.ts // needs Calculator.ts
    |--dist
        |--TaxCalculator.js

如何使用npmwebpack 提供其他项目中的源代码?我正在使用 VisualStudio Code,我想在开发时使用自动编译和其他功能,就像我使用 @types/chrome 或其他类型时一样。

【问题讨论】:

标签: typescript npm webpack visual-studio-code typescript-typings


【解决方案1】:

晚会有点晚了,但我会从今天(2018 年 12 月)开始提供不同的选择:

使用 node/shell 脚本进行自定义设置,如 Cycle.js 中所做的:

Setting up JavaScript Monorepo.

使用 Lerna:

包括 Babel、Marble.js、Material、Angular 在内的许多大型项目都使用 Lerna 进行多包设置。

Typescript 项目参考:

TypeScript 3.0 现在提供对 Project references 的支持。

Git 子模块

也可以使用 Git 子模块,尽管它不仅仅是 TypeScript。它可用于共享任何类型的代码。 Ghost博客平台使用这种方法。除非您了解与此相关的所有问题,否则我不会真正推荐这种方法。

另外,如果你使用 Yarn,你可以考虑工作区,虽然我不确定它与 TypeScript 的配合如何。

【讨论】:

  • 这样一个简单的用例没有明确的答案这一事实说明了 JS 基础架构有多糟糕。这对于 Java 和 Maven 来说是一件轻而易举的事。
  • @MartynasJusevičius 我同意。然而,JS 在不同的环境中有大量的通用用例。在不引入向后兼容性的情况下得出一个共同点有其自身的成本。
  • BTW references in tsconfig.json 为我工作,但我必须使用相对路径指定 imports { Class } from '../../lib',我不喜欢。但是我想当我将引用的 lib 作为 npm 包发布并在 package.json 中将其指定为适当的依赖项时,我可以摆脱这些路径。这会是要走的路吗?
  • @MartynasJusevičius 这就是它的演变方式。当您将srcdist 作为两个单独的文件夹并且您使用像@mypackage/dist/file1.js 这样的单个文件导入时,就会出现问题。 dist 这个词不断出现。
猜你喜欢
  • 2020-06-15
  • 2020-10-09
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2014-07-31
  • 2013-06-22
相关资源
最近更新 更多