问题描述
目标:
我正在尝试从库中包含路径,因此我可以使用@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",但结果仍然相同,我找不到解决问题的明确答案
有关此问题的问题:
-
何时使用ng-package.json中的styleIncludePaths?它仅用于已发布的软件包吗?
-
何时使用angular.json中的stylePreprocessorOptions?它仅在运行ng build之后用于 dist 版本吗?
-
通常,ng-package.json中的styleIncludePaths与angular.json中的stylePreprocessorOptions有什么区别?
我非常确定我的建议是错误的,但是我想知道正在发生什么以及如何解决我的问题。
对此,任何帮助都一如既往地受到赞赏! ??
解决方法
根据github,I quote alan-agius4的回答:
CSS处理器在库构建期间使用include路径来解析处理scss / less / stylus文件时的导入。 在您的船上未处理的scss文件中,这些路径将需要 包含在应用程序级别而不是库级别,因为 此类文件不会由库构建管道处理,但 应用程序的。它们只是作为静态文件复制。 如果您不想在应用程序级别包含此类路径,则可以 可以利用webpack的波浪符号导入语法,例如:
@import "~/my-lib/scss/mixins”.
注意:Angular工具团队未正式支持Webpack的特定功能,并且可能会在没有警告的情况下中断。