.less文件中的Angular 4导入在更改时不会更新

时间:2018-05-28 14:43:16

标签: css angular typescript import less

我目前正在构建一个小型的Angular项目,我在其中使用较少的样式。

我想将样式分解为远离组件的单独文件夹,而是有一个主要的导入文件:main.less,它只包含从它周围的样式表导入。 例如:

ggplot(data=data_melt[!is.na(data_melt$value),], aes(x=variable, y=value, group = Groups, color = Groups)) + 
  geom_point(size = 1) +
  geom_line(size = 1) +
  facet_wrap( ~ Groups) +
  theme(axis.text.x = element_text(angle = 90))

这些是在main.less中导入的。 这意味着我的组件不使用styleURL属性,而是依赖于全局样式表。

在我的angular.json中,我指出了它的风格,如下:

buttons/buttons.less

header/header.less

hero/hero.less

当我运行服务时,它工作得很好,但是当我在按钮中更改某些内容时,它会刷新页面(如预期的那样),但不会应用更改。这适用于main.less中的每个导入文件。 但是,如果我直接在" styles"中添加button.less文件。在angular.json中,它就像一个魅力。 另外,如果我直接在main.less文件中添加样式,例如添加它,那么该行有效:

"styles": [ 
    "src/app/less/main.less" 
]

我做错了什么,为什么不能处理我的进口?如果我重新启动角度服务器,它会重新编译文件和tada.wav,添加更改。 没有记录错误。

3 个答案:

答案 0 :(得分:1)

这似乎与less-loader 4.x.x有关,已在Angulars github页面上报告。

降级到较少的加载器3.x.x解决了这个问题。 只需使用:

npm install --save-dev less-loader@3.0.0

Tada.wav

答案 1 :(得分:0)

您必须告诉服务器注意更改。

ng serve --watch

答案 2 :(得分:0)

似乎less的一个版本中存在问题。这个问题已经在这里讨论:

https://github.com/webpack-contrib/less-loader/issues/252

有两种选择:

  • 更新为less@2.7.3
  • 更新为less@3.7.1

我已经尝试了这两个版本,并且它们可以与less-loader": "4.1.0"一起使用。以前我有less@3.0.4,并且导入的.less模块​​的更新不会触发页面热重装。