如何在我的库中声明/包含一个导入的scss文件夹,以便可以在应用程序的scss文件中调用@import?

问题描述

目标:

我正在尝试从库中包含路径,因此我可以使用@import语句在应用程序中包含scss文件,如下所示:

@import "some-scss-in-my-lib"

问题:

不幸的是,每次我尝试为应用程序提供服务时,都会出现以下编译器错误

SassError: Can't find stylesheet to import.

我已经尝试过的:

  • 在Stackoverflow上查找搜索给我带来了this thread,它描述了与我现在面临的问题相同的问题。而且,我尝试像建议的Zainu一样,将路径包含在styleIncludePaths属性中,但是当尝试为应用程序提供服务时,我遇到了问题-以上部分。

  • 我尝试在第一篇文章中设置GreatHawkeye之类的stylePreprocessorOptions属性,并且在使用@import之后可以ng build的scss文件,但是无法理解{@ 1}}如何工作,为什么stylePreprocessorOptions不起作用?

  • 我还尝试在Google上进行搜索,将其引至主题Unable to get styles bundled using styleIncludePaths option的线程Alan Aguis,但不幸的是,并没有真正的解释styleIncludePaths的真正含义。 Alan Aguis唯一说的是:

这是因为styleIncludePaths缩进了其他内容

但是,正如他所说,他没有说出styleIncludePaths到底是什么,这让我更加困惑。

我还尝试在线程ng-packagr github page上查找有关Add Style Include Paths的文档的How to use "styleIncludePaths",但结果仍然相同,我找不到解决问题的明确答案

有关此问题的问题:

  1. 何时使用ng-package.json中的styleIncludePaths?它仅用于已发布的软件包吗?

  2. 何时使用angular.json中的stylePreprocessorOptions?它仅在运行ng build之后用于 dist 版本吗?

  3. 通常,ng-package.json中的styleIncludePaths与angular.json中的stylePreprocessorOptions有什么区别?

  4. 如何在我的库中声明/包含一个导入的scss文件夹,以便可以在应用程序的scss文件调用@import?

我非常确定我的建议是错误的,但是我想知道正在发生什么以及如何解决我的问题。

对此,任何帮助都一如既往地受到赞赏! ??

解决方法

根据githubI quote alan-agius4的回答:

CSS处理器在库构建期间使用include路径来解析处理scss / less / stylus文件时的导入。 在您的船上未处理的scss文件中,这些路径将需要 包含在应用程序级别而不是库级别,因为 此类文件不会由库构建管道处理,但 应用程序的。它们只是作为静态文件复制。 如果您不想在应用程序级别包含此类路径,则可以 可以利用webpack的波浪符号导入语法,例如:

@import "~/my-lib/scss/mixins”.

注意:Angular工具团队未正式支持Webpack的特定功能,并且可能会在没有警告的情况下中断。