Создание псевдонима пути для файлов вне проекта

#javascript #angular #typescript

#javascript #угловой #typescript

Вопрос:

Я работаю над проектом, который разделен между несколькими проектами angular. Затем у меня есть некоторые службы, которые используются в каждом проекте. Есть ли способ загрузить их в мой проект? Я получаю ошибки, когда пытаюсь это сделать.

 /root
  /project-1
    /angular.json
    /tsconfig.json
  /project-2
    /angular.json
    /tsconfig.json
  /utilities
    /src
      /auth.service.ts
      /s3.service.ts
      /lambda.service.ts
 

У меня это есть в корне файла angular projects tsconfig.json (project-1, project-2):

 {
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@utilities/*": [
        "../utilities/src/*"
      ]
    }
  }
}
 

при запуске я npm start project-1 получаю следующие ошибки:

 Error: ../utilities/node_modules/buffer-equal-constant-time/index.js
Module not found: Error: Can't resolve 'buffer' in 'C:projectsutilitiesnode_modulesbuffer-equal-constant-time'

// Same error repeated for different modules...       
 

В моем utilities/package.json

 {
  "dependencies": {
    "@angular/core": "^11.0.5",
    "@aws-sdk/client-cognito-identity": "^3.0.0",
    "@aws-sdk/client-lambda": "^3.0.0",
    "@aws-sdk/credential-provider-cognito-identity": "^3.0.0",
    "jsonwebtoken": "^8.5.1",
    "rxjs": "^6.6.3",
    "tslib": "^2.0.0"
  },
}
 

Ответ №1:

Я нашел один способ сделать это. В utilities папке сделайте это ссылкой npm link . Затем в project-1 папке ссылка на проект npm link utilities .

Затем мне пришлось добавить некоторые пути и включить в tsconfig.json for references:

 {
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@utilities/*": [
        "node_modules/utilities/src/*"
      ]
    }
  },
  "include": [
    "node_modules/utilities/src/**/*.ts"
  ]
}