我正在尝试为 Angular 开发人员解决问题。 我不是角度开发人员,但正在为可重用的角度应用程序配置数据。 我们正在尝试做的是允许在一个 Git 存储库中开发核心 Angular 工具,并拥有一个包含应用程序配置和数据文件的并行 Git 存储库,其中许多文件是动态生成的。 环境是Windows 10以下Angular版本,我们还使用Git Bash和Cygwin终端窗口来运行命令行
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
为了允许在数据配置之间切换,我们希望使用像
src/assets/app -> some/data/folder/in/a/repo
这样的符号链接。 .gitignore
文件会忽略目标文件夹和链接文件夹,因为它们是动态内容。 我已按照 Josh Kelley 关于符号链接的文章 在 Windows 10 中启用符号链接,并配置了 Cygwin、Git Bash (MinGW) 和 Git。 我可以在 Git Bash 和 Cygwin 终端、Windows 资源管理器、Windows 命令提示符中看到符号链接,可以通过链接目录cd
等。因此,从操作系统来看,这些链接似乎在所有环境中都有效。 我还尝试使用
mklink /d
从 Windows 端和 Git Bash 端创建符号链接,得到类似的结果。
angular.json
文件有
"preserveSymlinks": true
,尽管关于此功能的文档我不清楚。 这是否意味着 Angular 可见的路径将是符号链接的路径,而不是扩展的基础路径? 这个属性似乎在与软件库和代码相关的支持文章中提到过,但我还没有看到与资产文件夹相关的讨论,而这个问题主要针对资产文件夹。
"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 shell 中运行时,应用程序显示正常,并且可以访问顶部文件夹中的主配置文件。 但是,主文件夹下的文件夹中的任何数据文件都会导致 404 错误。 浏览器控制台错误中显示的路径是正确的,并且按预期使用符号链接路径(而不是底层操作系统路径)。 如果我实施下面讨论的解决方法,它就可以正常工作。我们被困住了。 如果没有符号链接能力,解决方法是:
assets/app <- path/to/some/data/folder
),这基本上与#1类似,但接收文件夹(符号链接)位于数据存储库中。
如有任何帮助,我们将不胜感激。
src/assets
文件夹到另一个文件夹的符号链接以在 Windows 上工作,但稍后可能会花更多时间。 操作系统上的所有内容看起来都正常,但 Angular 对于链接文件夹的子文件夹中的任何内容都会返回 404 错误。 相反,我采用了编写脚本的强力方法,将其他文件夹中的文件复制到 Angular 项目的
src/assets
文件夹中。 无论如何,我们可能需要这样做,因为可能使用该软件的用户不是开发人员,并且在 Windows 上跳过障碍来启用符号链接有点痛苦,也许超出了他们的处理能力。 我不会将此标记为首选答案,希望有人最终会提供更好的答案。
{
"followSymlinks": true,
"glob": "**/*",
"input": "src/externalassets/ui/formats/general",
"output": "ui/formats/general"
},