-
Notifications
You must be signed in to change notification settings - Fork 12k
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
Angular 6 CLI does not copy library's assets folder into dist folder. #11071
Comments
Glad to see I'm not the only one with this problem. |
This is currently expected behavior from ng-packagr, which powers the library packaging process in the cli. The current suggestion is to copy manually after the build. I've heard mention that they will be addressing this in the future though. |
this works for me (latest version) here is a complete project configuration in angular.json "@lvm/core-components": { Environment |
@lammers Could you expand on your answer please, where does this need to go for this to work? |
@lammers I don't see how that would work, build-ng-packagr schema being like so, we cannot add any custom property : {
"title": "ng-packagr Target",
"description": "ng-packagr target options for Build Architect.",
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The file path of the package.json for distribution via npm."
},
"tsConfig": {
"type": "string",
"description": "The file path of the TypeScript configuration file."
}
},
"additionalProperties": false,
"required": [
"project"
]
} |
ok .. I just recognized that my scenario is different .. my assets are in the main project and are copied with the configuration above for the karma tests of the library project. |
Having the same problem. Please let us know how to fix, or when a fix is in? |
I just logged similar issue and it seems right now the only solution is either again gulp tasks or running directly npm command. Other than that for a library support and probably there already feature requests you need to have a option to release a version, so some command in the chain that is able to bump up the version ! Otherwise library support is good for some simple usecases, but its definitelly good step forward ! |
we need support for this also! |
I’m working on a big project, big enough that we were considering using nrwl also but the effort required to get our dozens of libraries setup to handle asserts correctly is a big hold up for the project. I would love to see a simpler integration for assets as well. |
@fkolar This is a bit off topic, but we've managed to incorporate semantic-release into our Angular CLI Library release process. It's not perfect but we've been happy with it so far. The key for us was to change the You could probably use their exec plugin to script the syncing of the versions in the various |
Thanks For the update. I have some solution for assets/resources and release cycle as well https://github.com/SAP/angular-metaui that I am using right now, its not perfect but better than nothing;-) Hopefully they will add in the next release or so. |
Just to add another use case for this feature: when publishing a module to a private VSTS npm feed, it's required that the module include a Actually, scratch that: the |
Why is this still not resolved?? Angular 6 not displaying assets,images after --prod build???? works fine locally! Finally ready for deploy and assets are not rendering at firebase after my ng build --prod? All my other projects have worked in the past and I missing something in the latest version? |
@alvics can you elaborate more on your issue? The problem you describe sounds more like an issue with an Angular application. This issue is regarding bundling assets in a library that was created by the CLI and doesn't involve the normal applications generated with a If you are trying to build a library and find that your assets aren't being included the current workaround is to manually copy the assets to the build destination with a post build step before publishing your library. |
@bniedermeyer my current work around looks like it needs to change with every CLI update? No other project or version has ever been a problem with assets? I'm not having a go, but what you are saying is with this latest update I need to do more to work around this in order to render my assets? shouldn't it be getting simpler/easier? Why isn't the current version including the assets folder within dist automatically? it has in the past right? This works in older projects by default just not now? |
@alvics it sounds like you are having a different issue other than what this thread is about. You are correct that assets were (and still are) included in builds for normal Angular projects managed by the CLI. However, this thread is talking about bundling assets for libraries created by the CLI with the If you've recently added a library to an existing project's workspace that you recently upgraded and are now having assets issues there are some steps that may help you out here. If you are just trying to create a library is there a repro you could throw together that demonstrates your problem? If you are not trying to build you own Angular library creating a new issue or reaching out to Stack Overflow or the Gitter channel should get you the help you need 😄 |
Hello I'm having same problem when creating library with extra localization files and also extra sass styles file which has to be preprocessed before a copy. I have to run another script to copy files into destination. It would be nice if that could work as integrated functionality of angular-cli, same as it can do with application type project. Will there be such support ? |
Hello, we're also using a library with internal assets, Having the ability to include those assets without a custom script would be highly desirable. |
You can write a simple npm script to copy the assets after library is built using cpx:
But it would be really great if this is possible via angular.json |
This definitely should be available from angular.json. Library should be totally independent project and assets are quite important part of it. |
I can't understand how, after almost 4 months, this issue is not at least in progress. Yes, there is a workaround, but it's like working against the angular.json configuration to do something outside of it when it should handle it. |
Thank you for your interest in this issue. This issue is currently on the project backlog. However, as there is a viable method to accomplishing the underlying use case and post-build staging will always be required for specific scenarios, other issues currently have a higher priority. |
Since libraries are exported in the Angular Package Format, wouldn't that first have to be updated to contain guidance for asset output? I see a note about preferring "styles" and "template" over "styleUrls" and "templateUrls" but I don't see anything about assets. |
It seems there are only two workarounds for this problem if angular-cli doesn't provide the capability of copying the assets folder across.
Either of those slow down quite a lot the development process. If someone has any other better idea, please shout! |
Heya, this isn't the first time an issue has been opened on this topic. #13285, #10927 and #10869 are essentially the same thing as this one. The short answer is that libraries are built with ng-packagr, and But it's a frequent issue that gets a lot of attention so I think it's worth it to go more into detail about this topic. We'll also leave it open and label it as a FAQ to increase visibility. Building your browser app and building are library are similar insofar as they are both built. There are a bunch of source files that get transpiled and bundled and whatnot and put somewhere. That's about how similar they are though. Building an browser app is actually a completely different build pipeline than building a library. And that means that the pipeline has different configuration options. For building browser apps we use webpack and a customized set of configurations in the Some options you don't really expect to be there when building a library, like the path to the But since I agree this is a desirable feature and that many libraries, like But the right place to request it is in ng-packagr/ng-packagr#1092 because that is where the code for building libraries is. If you are interested in contributing to this feature, that is where you should discuss possible approaches and collaborate with people working on this feature. Although it sounds like an easy thing, it's not necessarily as easy as just copying some files over. Especially if we're talking about sass files, or other files that are meant to be consumed in specific ways. Often you'll find special instructions in libraries about how the assets must be used. I hope this sheds some light on the topic. |
Hi there, earlier this week i was starting to migrate our company's library build to the Angular CLI way. First i have to say, that it was a bit of frustrating me because i assumed that it would be easy going since the Angular tools are so great. When I realized that there is no copy functionality for library assets, I did consider for not migrating to the cli tools. But Angular schematics and architect builders are so a great tools. That's why I decided to continue. I have extended the @angular-devkit/build-ng-packagr:build and created an own one with asset copy functionality. Here you will find how to use it: https://github.com/linnenschmidt/build-ng-packagr#how-to-use-it npm install @linnenschmidt/build-ng-packagr --save-dev Please give it a try. Maybe this approach is enough for you. |
@filipesilva I understand it would be job for ng-packagr but since Angular CLI runs ng-packagr and we have no option to change the command to something like EDIT: Found there's an issue for that already: |
i have solved this by changing the file path to another location which folder doesn't contain special character |
@waterplea Angular version 8 brings the a stable Architect API which will allow for the extension and/or customization of builders like |
Re the last comment by @Splaktar, this blog post was just published which explains the Architect API: https://blog.angular.io/introducing-cli-builders-d012d4489f1b |
After trying different approches. Example: (build)---> myApp/myAngularBuild this way I can even build with it's not genius, but it's functional. |
Some times ( ) cause these type of issue in build path
…On Tue 25 Jun, 2019, 11:50 PM tecsolucionesinformaticas, < ***@***.***> wrote:
After trying different approches.
My solution was to create angular build as a subfolder of where my assets
are. This way I can access assets as ../
Example:
(build)---> myApp/myAngularBuild
(assets)--> myApp/
this way I can even build with
*ng build --base-href ./ --watch*
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#11071?email_source=notifications&email_token=AJWMR64JGMFOFUMTJ5YCQHTP4JOXJA5CNFSM4FCPTQF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYREMHQ#issuecomment-505562654>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AJWMR6YX4NNXV73AS6FGRC3P4JOXJANCNFSM4FCPTQFQ>
.
|
Oh, so thank you, dhanarajknp! I used [] in the root folder name. |
Something ? Anything ?? |
I am using nodemon in my project. I have been able to copy the images in dist folder of library. https://github.com/Sunbird-Ed/sunbird-ui-components/blob/master/nodemon.json. This works However, Now I am facing issues in using these images in the lib components. |
Well in the meantime I developed my own builder, that executes There is however one more thing...I had to configure application assets in |
Brilliant @klemenoslaj could you share your implementation? |
Ck your base directory contain Any special characters
…On Mon 16 Sep, 2019, 1:19 PM Bastien Lemaire, ***@***.***> wrote:
Brilliant @klemenoslaj <https://github.com/klemenoslaj> could you share
your implementation?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#11071?email_source=notifications&email_token=AJWMR66WGH53XVFBYCKK6ODQJ43ARA5CNFSM4FCPTQF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6YLGKI#issuecomment-531673897>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AJWMR6Z5N4CH3M4DANDDOFTQJ43ARANCNFSM4FCPTQFQ>
.
|
@blemaire in fact I just opened an issue in angular-builders for that very reason. I didn't want to create yet another package, I'd rather contribute there. |
I can't understand how, It's been more than one year. |
Any news no this? |
check your base directory contains special character
Wrong Eg : c:\programfile(S)\test\
In above example ( is special character
Working Eg : c:\programfiles\test\
Thanks
dhanaraj.k
…On Mon, Nov 11, 2019 at 1:28 PM rorry121 ***@***.***> wrote:
Any news no this?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#11071?email_source=notifications&email_token=AJWMR6ZWIRYMBQETAVAWAKLQTEGB3A5CNFSM4FCPTQF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDV66EI#issuecomment-552333073>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AJWMR62QZPISAW6P2DT5V2DQTEGB3ANCNFSM4FCPTQFQ>
.
|
This behaves the same way `srcs` of the `npm_package` bazel rule which allows copying of files to the distributable folder. ```js "assets": [ 'CHANGELOG.md', "./syles/**/*.scss" ], "lib": { } ``` Closes: angular/angular-cli#11071 and closes: #1092
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
Versions
Repro steps
@acme/lib1
usingng generate library @acme/lib1
projects/acme/lib1/assets
and add images"projects" -> "@acme/lib1" -> "architect" -> "build" -> "options" -> "assets"
key to the library's config withinangular.json
file.ng build @acme/lib1
dist
folder.Observed behavior
Upon building & packaging an Angular 6 library e.g.
@acme/lib1
usingng build @acme/lib1
, the Angular CLI does not copy the library's assets into thedist/acme/lib1/assets
folder. This happens also when using the--prod
flag.The CLI seems to only support copying the root app's assets but not library specific assets.
When trying to add
"assets": ["src/assets"]
to project@acme/lib1
withinangular.json
, the following error appears in the command line:When creating the following custom rule to copying the files on
ng build
:I get the following error:
While it is possible to work around this issue using other command line tools/scripts, it will be more consistent to add support for library's assets copy as well.
Desired behavior
Use Case
Very often libraries include image files, icons, css files and other static files which are needed to be distrubted with the package.
What would like to see implemented?
Add ability to define a library specific
assets
property withinangular.json
.Example -
What did you expect to see?
Project's specific assets should be copied from
projects/acme/lib1/src/assets
intodist/acme/lib1/assets
.Mention any other details that might be useful (optional)
The text was updated successfully, but these errors were encountered: