Typescript使用共享库

时间:2017-03-28 20:00:40

标签: git typescript npm

当拥有不同的代码库时,我将如何在它们之间共享代码。 所有代码都是打字稿和持续开发。

我正在寻找一个简单的解决方案。

我尝试过的事情:

1使用带有其他项目路径的import语句:

import { type } from '../../otherProj/src/type';

不起作用:

error TS2307: Cannot find module '../../otherProj/src/type'

2 npm模块

使用

在本地安装
npm i ../otherProj

有问题,因为我总是需要在每次更改时更新库的版本,或者我必须手动卸载/重新安装库。

3 git子模块/子树

使用git子模块。

4 Softlink / Directory Junction

正如我们在Windows上一样,我们现在正在使用mklink /D /J

还有其他选择吗?

2 个答案:

答案 0 :(得分:0)

  

2 npm模块

使用npm link链接模块。

文档

https://docs.npmjs.com/cli/link

答案 1 :(得分:0)

我最终设置了一个gulp-task来监视主要位置的代码库,并将源代码和已编译的输出复制到辅助项目/目标。共享库位于两个项目的根目录中,并具有相同的相对路径。

在目标处,我已经.gitignore了复制的源。

这很好用,但是主要的缺点是编辑器中的符号引用会导致我编辑镜像代码,而不是托管源代码。这可以通过使用git“子模块”方法来改进,其中两个树都将被管理,但我放弃了它,因为它似乎增加了复杂性和源服务器依赖性。

来自.net与编译和共享程序集这已经证明是一个非常困难的问题,我怀疑尝试复制这种行为我打字稿可能根本不是正确的方法吗?

function compileUtils() {
    // Tried to use the tool syncy for this, but it did not work with "../", had to revert to manual sync.
    //   NB: This will break when bad files are removed and renamed.
    return gulp.src(utilsPath)
        .pipe(gulp.dest('./utils'));
}

function compileBuiltUtils() {
    // Copy of the above, copies the built utils files
    return gulp.src(utilsBuiltPath)
        .pipe(gulp.dest('./build/utils'));
}