代码之家  ›  专栏  ›  技术社区  ›  Jaroslaw K.

如何将全局样式添加到Angular 6/7库

  •  4
  • Jaroslaw K.  · 技术社区  · 6 年前

    我试着像在Angular应用程序中一样添加全局样式,但它完全不起作用。

    我的图书馆的名字是 实例库 所以我补充说 styles.css /projects/example-lib/ . 我在main中添加了样式 angular.json 文件:

    ...
    "example-lib": {
      "root": "projects/example-lib",
      "sourceRoot": "projects/example-lib/src",
      "projectType": "library",
      "prefix": "ngx",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-ng-packagr:build",
          "options": {
            "tsConfig": "projects/example-lib/tsconfig.lib.json",
            "project": "projects/example-lib/ng-package.json",
            "styles": [
              "projects/example-lib/styles.css" <!-- HERE 
            ],
          },
    ...
    

    但当我尝试使用命令构建库时:

    ng build example-lib

    我错了:

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

    我想这是在单独的库中添加全局样式的另一种方法。有人能帮我吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   yazantahhan    5 年前

    Compiling css in new Angular 6 libraries :

    1. 在我们的库中安装一些devdependencies以捆绑css:

      • NG PACKAGR
      • SSCS束
      • TS节点
    2. 创建一个 css-bundle.ts

    3. 将theme.scss添加到库的/src目录中,该目录实际上包含并导入我们要捆绑的所有css。

    4. 添加postbuild npm脚本以运行 css-bundle.ts :

    5. 将其包含在angular.json中应用程序的styles标记中
        2
  •  0
  •   Xpleria Dholu    5 年前

    我有办法解决这个问题。只需创建没有视图封装的库的根组件,它的所有样式都将是全局的。

    我的库.component.ts

    import { Component, OnInit, ViewEncapsulation } from '@angular/core';
    
    @Component({
      selector: 'lib-my-library',
      templateUrl: './my-library.component.html',
      styleUrls: ['./my-library.component.scss'],
      encapsulation: ViewEncapsulation.None
    })
    export class MyLibraryComponent implements OnInit {
    
      constructor() { }
    
      ngOnInit() {
      }
    
    }
    

    my-library.component.html网站

    <!-- html content -->
    

    我的库.component.scss

    @import './styles/core.scss';
    

    现在你 我的库.component.scss 科斯 是全球性的

    样式/核心.scss

    body {
        background: #333;
    }
    

    科斯 是可选的,我只是想保持根文件的干净。