TypeScript本地依赖项(多个项目)

14

我是Typescript的新手。目前,我正在尝试创建一个相互依赖的项目结构。有三个项目corecalculatortax-calculator。项目tax-calculator需要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或其他类型时一样可以使用自动完成和其他功能。


请查看此答案:http://stackoverflow.com/questions/43493029/how-to-bundle-up-a-set-of-typescript-classes-and-use-it-in-other-angular2-typesc/43495206#43495206 - Amid
我相信你可以使用像yarn工作区这样的东西来完成这个任务?https://yarnpkg.com/lang/en/docs/workspaces/ - Marco Daniel
1个回答

4

虽然有点晚,但我将提供截至2018年12月的不同选项:

使用类似Cycle.js的node/shell脚本进行自定义设置:

设置JavaScript Monorepo.

使用Lerna:

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

Typescript项目引用:

TypeScript 3.0现在支持项目引用

Git子模块

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

此外,如果您使用Yarn,可以考虑工作区,但我不确定它是否与TypeScript兼容。


4
这个简单的用例没有明确答案,说明JS基础设施有多么糟糕。如果是Java和Maven,这将是一件易如反掌的事情。 - Martynas Jusevičius
@MartynasJusevičius 我同意。然而,JS在不同环境中具有广泛的通用用途。在不引入向后兼容性的情况下推导出一个共同点是有其自身的成本的。 - Harshal Patil
顺便说一下,tsconfig.json中的“引用”对我很有用,但是我不得不使用相对路径指定imports{Class} from '../../lib',这让我感到不太满意。 但我想当我将被引用的库发布为npm包并在package.json中将其指定为适当的依赖项时,我可以摆脱这些路径。这是正确的方式吗? - Martynas Jusevičius
@MartynasJusevičius 这就是它的演变方式。当您将srcdist作为两个单独的文件夹并且使用单个文件导入时,例如 @mypackage/dist/file1.js,问题就会出现。dist这个词会一直出现。 - Harshal Patil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接