Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Junctions (linked folders) in the assets folder are only partially copied to the build output #19086

Open
LoaderB0T opened this issue Oct 15, 2020 · 2 comments

Comments

@LoaderB0T
Copy link

@LoaderB0T LoaderB0T commented Oct 15, 2020

🐞 Bug report

Command

  • new
  • build
  • serve
  • test
  • e2e
  • generate
  • add
  • update
  • lint
  • xi18n
  • run
  • config
  • help
  • version
  • doc

Is this a regression?

Did not work with ng 8 and does not work with ng 10. Did not check with 9 or anything before 8.

Description

When creating a junction inside the src/assets folder to another folder somewhere in the filesystem, the compiled output only contains the files that are directly beneath the linked folder. Any sub-folders in this linked folder are ignored by the compiler.

🔬 Minimal Reproduction

Tested on Windows 10:

  1. Create an empty angular app with ng new assetsBugApp,
  2. create a folder outside the application like "testAssets"
  3. Inside "testAssets" create a textfile "works.txt"
  4. Inside "testAssets" create a folder "myFolder"
  5. Inside "testAssets/myFolder" create a textfile "does not work.txt"
  6. Create a junction from "assetsBugApp/src/assets/test" to "testAssets" (eg mklink /J C:\tmp\assetsBugApp\src\assets\test C:\tmp\testAssets)
  7. Run ng build
  8. Look in the dist/assets folder. You will find the folder "test" containing "works.txt" but no "myFolder" and no "does not work.txt"

🌍 Your Environment


Angular CLI: 10.1.4
Node: 12.18.3
OS: win32 x64

Angular: 10.1.4
... animations, cli, common, compiler, compiler-cli, core
... elements, forms, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.1001.4
@angular-devkit/build-angular      0.1001.4
@angular-devkit/build-ng-packagr   0.1001.4
@angular-devkit/core               10.1.1
@angular-devkit/schematics         10.1.4
@angular/cdk                       10.2.3
@angular/language-service          10.1.1
@angular/material                  10.2.3
@schematics/angular                10.1.4
@schematics/update                 0.1001.4
ng-packagr                         10.1.2
rxjs                               6.6.3
typescript                         3.9.7

Anything else relevant?
Might be isolated to Windows environments.

Would be great to have this resolved, copying assets from A to B is less fun than linking them... :)

@alan-agius4
Copy link
Collaborator

@alan-agius4 alan-agius4 commented Oct 15, 2020

Had chat with @clydin and he mentioned that this is the expected behaviour.

We mentioned two action points.

  • For globs provide an option to follow symlinks such as the one provided by node-glob (https://github.com/isaacs/node-glob)
  • Short hand paths ex src/assets (non globs) should always follow symlinks
@LoaderB0T
Copy link
Author

@LoaderB0T LoaderB0T commented Oct 15, 2020

Hi @alan-agius4, thanks for the fast reply.
I also found a workaround. Adding the linked path directly to the assets array in the angular json resolves the issue and the subfolder is found/copied. In my personal case this workaround is enough to resolve the issue, would still be great if it would be found in the first place 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.