Angular CLI: 6.0.7 Node: 9.3.0 OS: darwin x64 Angular: 6.0.3 ... animations, common, compiler, compiler-cli, core, forms ... http, language-service, platform-browser ... platform-browser-dynamic, router Package Version ------------------------------------------------------------ @angular-devkit/architect 0.6.7 @angular-devkit/build-angular 0.6.7 @angular-devkit/build-ng-packagr 0.6.7 @angular-devkit/build-optimizer 0.6.7 @angular-devkit/core 0.6.7 @angular-devkit/schematics 0.6.7 @angular/cdk 6.2.0 @angular/cli 6.0.7 @angular/material 6.2.0 @ngtools/json-schema 1.1.0 @ngtools/webpack 6.0.7 @schematics/angular 0.6.7 @schematics/update 0.6.7 ng-packagr 3.0.0 rxjs 6.2.0 typescript 2.7.2 webpack 4.8.3
@acme/lib1
using ng generate library @acme/lib1
projects/acme/lib1/assets
and add images"projects" -> "@acme/lib1" -> "architect" -> "build" -> "options" -> "assets"
key to the library's config within angular.json
file.ng build @acme/lib1
dist
folder.Upon building & packaging an Angular 6 library e.g. @acme/lib1
using ng build @acme/lib1
, the Angular CLI does not copy the library's assets into the dist/acme/lib1/assets
folder. This happens also when using the --prod
flag.css
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
within angular.json
, the following error appears in the command line:webpack
Schema validation failed with the following errors: Data path "" should NOT have additional properties(assets).git
When creating the following custom rule to copying the files on ng build
:github
"assets": [ "src/favicon.ico", "src/assets", { "glob": "**/*", "input": "src/assets", "output": "../acme/lib1/assets/" } ],
I get the following error:web
An asset cannot be written to a location outside of the output path.typescript
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.json
Use Case
Very often libraries include image files, icons, css files and other static files which are needed to be distrubted with the package.app
What would like to see implemented?
Add ability to define a library specific assets
property within angular.json
.
Example -ide
"@acme/lib1": { "root": "projects/acme/lib1", "sourceRoot": "projects/acme/lib1/src", "projectType": "library", "prefix": "lib", "architect": { "build": { "builder": "@angular-devkit/build-ng-packagr:build", "options": { "tsConfig": "projects/acme/lib1/tsconfig.lib.json", "project": "projects/acme/lib1r/ng-package.json", "assets": [ // <--------- this is currently not supported "src/assets" ] }, ...}
What did you expect to see?
Project's specific assets should be copied from projects/acme/lib1/src/assets
into dist/acme/lib1/assets
.ui