如何通过命令行将SASS/SCSS目录转换为CSS?

48

我尝试过:

sass-convert --from scss --to css --recursive app/assets/stylesheets temp

但这仅仅是将css转换成SASS,而我想要的是反过来。

然后我看了一下sass命令,但好像它不能传递一个目录。


1
是的,但我找不到一种方法可以使用一个sass命令转换整个目录。sass命令似乎只能一次处理一个文件,我错了吗?我知道sass --watch命令可以监视目录中的更改,但我需要一个单行命令条目,以便在需要时处理目录。先谢谢了。 - avian
当然可以。看起来你可以监视一个目录,但我无法让它工作,只是用一个命令转换一个目录(而不是监视更改)。你能给我展示一个单行命令字符串的例子,可以转换一个目录吗? - avian
2
非常简单:sass --update www/_src/sass:www/css/。参考资料:http://sass-lang.com/documentation/file.SASS_REFERENCE.html - Ricardo Pedroni
@Hawk,关于目录的问题,只有在我之前编译了单个文件后(至少在我的osx上)才能正常工作。Sass似乎依赖于.sass-cache或.map来知道文件的名称和位置。 - dval
6个回答

66

如果您想进行一次性的Sass编译而非实时监测,则可以在命令行中执行以下操作:

sass --update scss:css

为了让Sass导入一个文件(通常是一个部分文件,文件名以_开头),您可以在Sass文件中执行以下操作:

要让Sass导入一个文件(通常是一个部分文件,文件名以_开头),您可以在Sass文件中执行以下操作:

@import "_base.scss";

这样,Sass就知道你希望包含的位置在哪里

默认情况下,Sass无法导入整个目录。然而,Sass Globbing gem可以。你可以从命令行安装它:

gem install sass-globbing

然后与它一起观看:

sass -r sass-globbing --watch sass_dir:css_dir

请注意通配符会按字母顺序导入文件,所以如果出现这种情况,请确保您的 CSS 能够适当地层叠。


非常感谢您的帮助。顺便说一下,我的CSS文件输出与输入顺序相同。这些文件没有按字母顺序重新排列。 - Gray Spectrum

19

使用 sass 命令,后接输入文件名和路径,冒号 (:) 和所需的输出文件名和路径。如果输出文件不存在,则Sass将生成它。例如:

sass sass/main.scss:css/main.css

然而,这是一个一次性的命令,每次想要生成新的CSS文件都需要运行。更简单和方便的方法是使用Sass内置的--watch标志。它会监视你的Sass文件的更改并在每次保存更改时自动运行编译命令。

sass --watch sass/main.scss:css/main.css

如果您在一个目录中有多个Sass文件,可以监视该目录中任何文件的更改:

sass --watch sass:css

Sass也提供了四种CSS输出样式:nested(嵌套)、expanded(展开)、compact(紧凑)和compressed(压缩)。可以使用以下方式:

sass --watch sass:css --style compressed

请参考Sass文档了解更多信息。


12
为了做到这一点,只需进入你的项目目录并执行以下操作:
sass --update sass-dir:assets/css

使用sass-dir指定实际sass文件的目录,assets/css则是期望生成的输出目录。

希望这能有所帮助。


2
你可以使用compass将Sass文件转换为CSS。
要初始化config.rb,请尝试:
compass init --syntax=sass --css-dir=css --javascripts-dir=js

一旦您获得了配置文件,请尝试执行以下操作:

compass compile

或通过明确指定文件来编译:compass compile sass/foo.scss


安装它,请尝试:

sudo gem update
sudo gem install sass compass

OP并不是在询问Compass,这不是一个工具请求的问题(提示:如果是的话,这个问题会被关闭)。 - cimmanon
@cimmanon 这个答案回答了标题问题(如何通过cmd将sass转换为css),这也是我找到这个问题的主要原因,而在我的情况下,compass完成了工作,因为sass对我无效,因此我认为意识到替代方案对于更多读者可能会有用。 - kenorb
除非你的项目需要Compass,否则没有理由为什么Sass不能工作。 - cimmanon
是的,它需要Compass,因为该网站基于Zen主题,因此缺少了很多导入/引用。 - kenorb

1

https://sass-lang.com/guide

enter image description here

你可以使用。
sass --watch [input folder path]:[output folder path]

我尝试在新终端上运行它,之后Sass会监视文件夹并在任何更改时进行编译。

0
你可以使用以下代码:

sass --watch file.sass:file.css

或者

sass --watch folderSass:foldercss

如果你想要创建 css.main,你可以使用以下代码:

sass --watch sass:css --style compressed


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接