zoukankan      html  css  js  c++  java
  • 为什么angular library的build不能将assets静态资源打包进去(转)

    Versions

    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
    

    Repro steps

    • Create a library @acme/lib1 using ng generate library @acme/lib1
    • Create assets folder under projects/acme/lib1/assets and add images
    • Add a "projects" -> "@acme/lib1" -> "architect" -> "build" -> "options" -> "assets" key to the library's config within angular.json file.
    • Build library using ng build @acme/lib1
    • Fail error should show and none of the assets will be copied to dist folder.

    Observed behavior

    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.

    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:

    Schema validation failed with the following errors: Data path "" should NOT have additional properties(assets).

    When creating the following custom rule to copying the files on ng build:

     "assets": [
        "src/favicon.ico",
        "src/assets",
         { "glob": "**/*", "input": "src/assets", "output": "../acme/lib1/assets/" }
    ],
    

    I get the following error:

    An asset cannot be written to a location outside of the output path.

    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 within angular.json.
    Example -

    "@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.

    Mention any other details that might be useful (optional)

    原文地址:https://github.com/angular/angular-cli/issues/11071

  • 相关阅读:
    Springboot2.0之HikariCP 连接池
    Spring Kafka中关于Kafka的配置参数
    Spring @Async异步线程池 导致OOM报错的原因
    JDK 8 函数式编程入门
    Spring自定义argumentResolver参数解析器
    Kafka消费异常处理
    Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
    Mysql索引研究总结
    windows安装zookeeper
    JVM中的堆和栈
  • 原文地址:https://www.cnblogs.com/princesong/p/10812314.html
Copyright © 2011-2022 走看看