Я пытаюсь решить проблему для разработчика Angular. Я не разработчик angular, но настраиваю данные для многоразового приложения Angular. Что мы пытаемся сделать, так это разрешить разработку основного инструмента Angular в одном Git репозитории и иметь параллельный Git репозиторий с конфигурацией приложения и файлами данных, многие из которых генерируются динамически. Среда Windows 10 со следующей версией Angular, и мы также используем Git Bash и терминал Cygwin windows для запуска командной строки ng
и других команд.
Angular CLI: 7.3.5
Node: 10.15.3
OS: win32 x64
Angular:
...
Package Version
------------------------------------------------------
@angular-devkit/architect 0.13.5
@angular-devkit/core 7.3.5
@angular-devkit/schematics 7.3.5
@schematics/angular 7.3.5
@schematics/update 0.13.5
rxjs 6.3.3
typescript 3.2.4
Чтобы разрешить переключение между конфигурациями данных, мы хотим использовать символ c ссылку, например src/assets/app -> some/data/folder/in/a/repo
. Папки назначения и ссылки игнорируются файлами .gitignore
, поскольку они являются динамическим содержимым c. Я следил за статьей Jo sh Kelley о символических ссылках , чтобы включить символические ссылки в Windows 10, и настроил Cygwin, Git Bash (MinGW) и Git. Я вижу символические ссылки в Git Bash и терминале Cygwin, Windows Explorer, Windows командной строке, cd
через каталог ссылок, et c. Итак, из операционной системы ссылки работают во всех средах. Я также попытался создать символическую ссылку со стороны Windows с mklink /d
и со стороны Git Bash с аналогичными результатами.
Файл angular.json
имеет "preserveSymlinks": true
, хотя в документации по этой особенности мне не понятно. Означает ли это, что путь, видимый для Angular, будет путь ссылки symboli c, а не расширенный базовый путь? Это свойство, кажется, упоминается в статьях поддержки, относящихся к программным библиотекам и коду, но я не видел обсуждения этого, связанного с папкой ресурсов, и этот вопрос касается папки ресурсов.
"projects": {
"info-mapper": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/info-mapper",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"preserveSymlinks": true,
Когда ng serve
запускается в оболочке Git Bash, приложение отображается нормально и может получить доступ к основному файлу конфигурации в верхней папке. Однако любые файлы данных в папках ниже основной приводят к ошибке 404. Путь, который отображается в сообщениях об ошибках консоли браузера, является правильным и использует путь символической ссылки (а не путь базовой операционной системы), как задумано. Если я использую обходной путь, описанный ниже, он будет работать нормально.
Мы застряли. Без возможности ссылки symboli c обходной путь:
- скопируйте все файлы ресурсов из репозитория данных в папку ресурсов Angular веб-приложения (не очень хорошо, потому что есть много файлов, которые нужно многократно copy)
- используйте символическую c ссылку в другом направлении (
assets/app <- path/to/some/data/folder
), что в основном похоже на # 1, но принимающая папка (символическая ссылка) находится в репозитории данных.
Любое из этих решений затрудняет быстрое перенаправление приложения Angular для использования новой конфигурации данных в рабочих файлах другого репозитория. Похоже, что другие люди столкнулись бы с этим. Любая помощь приветствуется.