【问题标题】:Change stylesheet using npm command使用 npm 命令更改样式表
【发布时间】:2019-01-18 17:59:53
【问题描述】:

我有 2 个样式表,Example、S1.scss 和 S2.scss。我需要对客户端 1 使用 S1.scss,对客户端 2 使用其他。如何在构建应用程序时使用 npm 命令或使用 npm start 来实现?我有 Webpack 2 来构建应用程序。

【问题讨论】:

  • 您可能会使用configuration 标志:https://angular.io/cli/build
  • 我不认为你可以用 npm 命令来实现。您所有的样式都导入到 styles.scss 中,然后在 angular.json 中导入 "styles": [ "src/styles.scss" ], 。我认为解决方案比运行 npm 命令更复杂。也许您会在这里找到答案:github.com/angular/angular-cli/issues/4202。或者可能使用configuration,如上述评论中所述
  • @TheParam afaik,您不能在 angular.json 中使用 cmets,因为 JSON 必须完全有效,并且 JSON 中没有 comment 这样的东西。

标签: angular npm sass webpack-2


【解决方案1】:

Angular CLI

在angular.json 文件中,您可以为此添加额外的配置。此配置将对特定文件(在您的情况下为样式表文件)进行文件替换。

这是一个示例配置,可以添加到angular.json 文件的build/configurations 节点中:

                        "productionForClient1": {
                            "fileReplacements": [
                                {
                                    "replace": "src/styles.less",
                                    "with": "src/client1_styles.less"
                                }
                            ]
                        }

然后在控制台中,您应该能够使用特定于客户端的样式来构建它,方法是使用该客户的配置文件运行它: ng build -c productionForClient1。如果您想通过 npm 运行它,请将其作为任务添加到您的 package.json 文件中


Webpack

直接使用 Webpack 构建您的 Angular 应用程序,您应该能够使用NormalModuleReplacementPlugin 采取类似的方法。

【讨论】:

  • 知道如何在 webpack V2 中使用相同的解决方案吗?
  • 您是否通过旧版本的 angular cli 使用 webpack v2(如果是,是哪个版本)。还是你直接使用 webpack v2 来构建你的 Angular 应用?
  • 我直接使用 webpack 构建应用,而不是使用 cli。
  • 我添加了一些关于仅使用 Webpack 的解决方案的信息。希望对你有帮助,祝你好运!
猜你喜欢
  • 1970-01-01
  • 2014-02-24
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 2021-06-16
相关资源
最近更新 更多