从 Angular 13 开始,SCSS @use 语句中的波浪线 ~ 不再解析为 node_modules

Nic*_*ton 33 sass angular angular13

将 Angular 12 项目升级到 Angular 13 后,我遇到了一个问题:SCSS 不再在库中查找共享样式表。波浪号 (~) 似乎不再解析为 node_modules。

破碎的: @use '~my-angular-lib' as lib;

作品: @use '../node_modules/my-angular-lib' as lib;

我注意到从 Angular 13 开始,角度材质只是直接引用“@angular/material”,但我不知道如何让它与我的库一起使用。node_modules每次都使用相对路径似乎有点老套。

当前在 node_modules 中引用样式表的最佳方法是什么,或者我在 ~ 不再指向 node_modules 时缺少什么?

Ale*_*ili 28

我遇到了同样的问题并找到了解决方案:

  1. 打开 angular.json 文件;

  2. 在每个应用程序配置集中:

     "stylePreprocessorOptions": {
       "includePaths": [
         "./node_modules"
       ]
     }  
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在每次导入中删除〜;

  • 需要注意的是在 angular.json 中插入的位置:`projects.PROJECT-NAME.architect.build.options` (12认同)
  • 这是真正的工作解决方案 (2认同)

小智 21

一段时间以来,Angular 一直反对使用~for Sass@use和语句。@import

正式地,从 Angular 版本 13 开始,将不再支持波浪线导入的使用

这里是关于为什么这在没有波形符的情况下工作的原因

  • 那么目前还不清楚,我应该使用什么来代替 `import "~@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css" 来引用我的 Angular 库中的第 3 方 css? (10认同)
  • 现在使用 `@use "node_modules/...";` 是唯一的选择吗? (4认同)
  • 仅供参考,如果您使用“~@your-library”,那么“@your-library”就可以正常工作;) (3认同)