对多个 angular 8 个项目使用相同的样式文件 (.SCSS)

Use same Styling files (.SCSS) for multiple angular 8 projects

我在 angular 8 开发了不同的项目并且具有相同的样式。

我想使用相同的 SCSS 文件,以便将来可以在一个地方进行更改。

我已经在下面尝试过,但这对我不起作用。

Compiling css in new Angular 6 libraries

请指正方向

例如您可以:

  1. 创建带有样式的 npmyarn 包(它可以是私有的)。
  2. 将它作为 package.json 对不同项目的依赖
  3. 利润)

有用的链接:

https://docs.npmjs.com/creating-and-publishing-private-packages

https://docs.npmjs.com/creating-and-publishing-an-org-scoped-package

其他选项可以是:

  1. 使用一个 package.jsonangular.json
  2. 创建单个 angular 项目
  3. 在不同的文件夹中有不同的项目
  4. 在每个项目中插入通用样式
  5. package.json 到 运行 不同的项目中有不同的命令(如果你需要它在不同的端口上同时 运行)
  6. angular.json 中针对不同的项目有不同的配置

我的问题在@qiAlex 的回答的帮助下得到了解决,但我在这里发布了解决此类问题的完整过程。

我从 https://github.com/linnenschmidt/build-ng-packagr 得到了以下解决方案。

这类问题可以通过创建 angular 库来解决,但是默认 angular build architect @angular-devkit/build-ng-packagr for ng- packagr 不会复制库的资产。

@linnenschmidt/build-ng-packagr可用于复制库的资源。 Angular Build Architect 将复制库构建中的所有资产。

如何安装

@linnenschmidt/build-ng-packagr 安装到您的 angular 项目中。

npm install @linnenschmidt/build-ng-packagr --save-dev

纱线添加@linnenschmidt/build-ng-packagr --dev

如何使用

我)。用@linnenschmidt/build-ng-packagr:build.

替换你的库的构建架构师
 "architect": {
        "build": {
          "builder": "@linnenschmidt/build-ng-packagr:build",

二)。将您的资产 glob 规则添加到选项部分,就像您通常对应用所做的那样。

 "options": {
            "tsConfig": "projects/weave-styles/tsconfig.lib.json",
            "project": "projects/weave-styles/ng-package.json",
            "assets": [
              "src/assets"
            ]
          }

最终的 angular.json 文件可能如下例所示:

"weave-styles": {
      "projectType": "library",
      "root": "projects/weave-styles",
      "sourceRoot": "projects/weave-styles/src",
      "prefix": "lib",
      "architect": {
        "build": {
          "builder": "@linnenschmidt/build-ng-packagr:build",
          "options": {
            "tsConfig": "projects/weave-styles/tsconfig.lib.json",
            "project": "projects/weave-styles/ng-package.json",
            "assets": [
              "src/assets"
            ]
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "projects/weave-styles/src/test.ts",
            "tsConfig": "projects/weave-styles/tsconfig.spec.json",
            "karmaConfig": "projects/weave-styles/karma.conf.js"
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "projects/weave-styles/tsconfig.lib.json",
              "projects/weave-styles/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    }