相关疑难解决方法(0)

使用Angular CLI延迟加载应用程序主题样式

我正在尝试切换href一个<link />用于主题目的,并且SCSS主题存在于我的monorepo的包文件夹中,这些文件夹是符号链接的node_modules.我需要能够编译和引用这些.

我遇到了以下固定问题:angular/angular-cli#3401并且一直试图实现类似的东西:

"styles": [
    "styles.scss",
    {
        "input": "../node_modules/@org/themes/dark.scss",
        "output": "dark",
        "lazy": true
    }
],
Run Code Online (Sandbox Code Playgroud)

我的理解(也许是不正确的)是这会将dark.scss文件编译成dist/dark.bundle.css我可以通过http:// localhost:4200/dist/dark.bundle.css加载它但是它没有按预期工作.我误解了某些事情或完全错误吗?

如何编译SCSS文件node_modules,然后我可以在应用程序中延迟加载?我可以尝试另一种/更好的方法吗?

补充说明:

  • 使用Angular版本 4.2.4
  • 使用Angular CLI版本 1.3.0
  • 这种方法文档
  • 我在monorepo工作,所以node_modules/@org/themes是一个符号链接
  • 我已尝试使用ng serve --preserve-symlinks选项,以防上述问题.它没有任何区别

我已经研究过Angular Material docs网站解决这个问题的方式,看起来他们有一个自定义构建脚本,assets在服务应用程序之前将SCSS文件编译成目录中的CSS文件.我认为上面修复的问题消除了对这一步的需要,但也许没有.这是唯一可行的方法吗?

解决了

感谢@Kuncevic.我错过了--extract-css国旗.

工作配置:

"styles": [
    "styles.scss",
    {
        "input": "../node_modules/@org/themes/src/dark.scss",
        "output": "themes/dark",
        "lazy": true
    }
],
Run Code Online (Sandbox Code Playgroud)

使用以下服务脚本,我可以通过http:// localhost:4200/themes/dark.bundle.css访问它:

ng …

sass angular-cli angular

15
推荐指数
2
解决办法
5914
查看次数

标签 统计

angular ×1

angular-cli ×1

sass ×1