【问题标题】:Compiling watch SCSS Many-to-One CSS编译 watch SCSS 多对一 CSS
【发布时间】:2020-05-19 14:30:25
【问题描述】:

我正在尝试找到一种方法将我的多个 scss 文件编译成一个 css 文件。

脚本在 package.json 中使用 node-sass

目前我发现的最好的是:sass --watch .assets/css/scss/:assets/css

问题是它为每个 scss 文件和一个 css 映射文件创建一个 css 文件。 我以前在没有手表node-sass --include-path scss .assets/css/scss/style.scss assets/css/style.css 的情况下工作,但每次保存时都必须运行该命令。

像这样使用sass --watch .assets/css/scss/style.scss:assets/css/style.css 和 style.scss:

@import 'test1.scss'; @import 'test2.scss'

不工作,但控制台说:

将 style.scss 编译为 style.css。 将test1.scss编译成test1.css

我错过了什么吗?

编辑:由于某些原因,在子系统 linux 上只运行没有节点的 sass 会导致一些蓝屏。使用 node-sass --watch ./assets/css/scss/style.scss:assets/css/style.cssnode-sass --watch ./assets/css/scss:assets/css 返回 npm 错误:code ELIFECYCLE errno 1

【问题讨论】:

  • 可能是错字? assets/css/scss/style.scss 之前的点是正确的还是引用了实际的文件夹?
  • 使用下划线通常可以避免包含被单独编译。所以,照原样调用@imports,但实际的SCSS文件重命名为_test1.scss等。
  • @deelde 它正在使用节点但试图运行 sass --watch .assets/css/scss/:assets/css 我只是连续出现 2 个蓝屏... @disinfor 我应该使用哪个命令(考虑到没有节点的 sass 会导致一些蓝色屏幕)?我是否还必须重命名文件 test1 还是只是导入到 style.scss 中?
  • 您需要用下划线重命名实际的 SCSS 文件。在您的 @import 中删除下划线(这样您就可以保留当前拥有的内容)。您的--watch 应该在您保存包含文件并重新编译到您的styles.css 时选择

标签: css sass


【解决方案1】:

我尝试了不同的解决方案,其中一个适合我想要的解决方案是:Using node sass watch with npm

删除依赖项和目录,因为我只需要写一个文件。

必须运行这个才能使其工作

"css-watch: node-sass --include-path scss ./assets/css/scss/style.scss -w /assets/css/style.css"

在 style.scss 中包含名称中不带 _ 的文件可以通过简单的导入正常工作,并检测导入文件中的所有更新。

【讨论】:

  • 嘿,我需要为几个项目创建一个样式指南。您是否知道创建导出“.scss”文件的 NPM 包的方法,以便我可以在我的消费者项目中包含它们。所以,我的 NPM 包将像这样使用:import '@mystuff/styles/_colors.scss '.. 或导入 '@mystuff/styles/_typography.scss'.... 并在我的“样式指南项目”中。我可以修改它们等等。然后再次构建到 npm ......然后在我的各种项目中修改我的版本..这是你知道该怎么做的事情吗?
【解决方案2】:

您的所有 SASS 部分都应重命名为以下划线字符开头:_

来自SASS Basics 指南:

partial 是一个以下划线开头的 Sass 文件。您可以将其命名为 _partial.scss。下划线让 Sass 知道该文件只是部分文件,不应将其生成为 CSS 文件。

您可以继续以相同的方式将部分文件导入主 styles.scss 文件,使用它们的正常名称并省略下划线字符。如果您愿意,也可以省略“.scss”。要遵循新的 SASS 语法版本,您应该使用 @useimport partial SASS files as a module,而不是 @import

然后您只需转换该主构建文件,它应该可以正常工作。

【讨论】:

  • 我真正想要的是在对 scss 文件夹中的文件进行更新时触发手表。我使脚本正常工作的唯一方法是将 style.scss 和 style.css 作为输入作为输出,但不能使用 --watch,因为 style.scss 没有更新。如果我的帖子不清楚,我很抱歉
  • 不,它应该与 --watch 完美配合。如果您将文件导入 style.scss 并转译 style.scss,它将在 style.scss 更改或导入到 style.scss 的任何文件更改时重新编译。我每天都这样做。
  • 好吧,我的脚本可能有问题:"build-css": "node-sass --include-path --watch scss ./assets/css/scss/style.scss assets/css/style.css"
猜你喜欢
  • 1970-01-01
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 2018-03-13
  • 2016-09-22
  • 2018-07-01
相关资源
最近更新 更多