Tìm kiếm trang web

git - Typescript sử dụng thư viện chia sẻ


Khi có các cơ sở mã khác nhau, tôi sẽ chia sẻ mã giữa chúng như thế nào. Tất cả mã đều bằng TypeScript và đang trong quá trình phát triển liên tục.

Tôi đang tìm một giải pháp đơn giản.

Những thứ tôi đã thử:

1 sử dụng câu lệnh import với đường dẫn đến dự án khác:

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

không hoạt động:

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

2 mô-đun npm

Đã cài đặt cục bộ bằng

npm i ../otherProj

Điều này gây vấn đề vì tôi luôn phải cập nhật phiên bản thư viện mỗi khi có thay đổi hoặc tôi phải tự gỡ cài đặt/cài đặt lại thư viện.

3 git submodule/subtree

Sử dụng một submodule của git.

4 Liên kết mềm/Liên kết thư mục

Vì chúng ta đang sử dụng Windows, hiện tại chúng ta đang sử dụng mklink /D /J

Có bất kỳ lựa chọn thay thế nào khác không?

Câu trả lời #1

2 mô-đun npm

Sử dụng npm link để liên kết mô-đun.

Tài liệu

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

Câu trả lời #2

Cuối cùng tôi đã thiết lập một gulp-task để theo dõi cơ sở mã ở vị trí chính và sao chép cả mã nguồn và đầu ra đã biên dịch sang dự án/mục tiêu phụ. Thư viện chia sẻ nằm ở gốc của cả hai dự án và có cùng các đường dẫn tương đối.

Tại đích, tôi đã .gitignore các nguồn đã sao chép.

Điều này hoạt động tốt, nhưng có nhược điểm lớn là các tham chiếu biểu tượng trong trình soạn thảo khiến tôi phải chỉnh sửa mã phản chiếu, không phải mã nguồn được quản lý. Điều này có thể được cải thiện bằng cách sử dụng phương pháp "submodule" của git, nơi cả hai cây sẽ được quản lý, nhưng tôi đã bỏ qua vì nó có vẻ làm tăng độ phức tạp và sự phụ thuộc vào máy chủ nguồn.

Đến từ .net với các assembly đã biên dịch và chia sẻ, đây hóa ra là một vấn đề khó khăn đáng ngạc nhiên, và tôi nghi ngờ rằng cố gắng sao chép hành vi này trong Typescript có thể đơn giản là không phải cách đúng để làm điều đó?

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'));
}