【发布时间】:2015-08-04 19:17:32
【问题描述】:
我直接从命令行使用node-sass(实际上是一个 Makefile)来构建我的 CSS。
scss 文件位于不同的目录中,它们不相互引用。我想要的是将这些文件 sassify 到单个 CSS 输出,我可以从 HTML 中读取该输出 - 使用有效的源映射。
这是我在 Makefile 中的当前命令:
$(OUT_MAIN_CSS): $(SCSS) Makefile $(node-sass)
cat $(SCSS) > $(TMP_SCSS)
$(node-sass) --output-style compressed --source-map $(OUT_MAIN_CSS).map $(TMP_SCSS) $@
rm $(TMP_SCSS)
OUT_MAIN_CSS 是 out/bundle.css。 SCSS 是输入文件的列表。 node-sass 是 node_modules/.bin/node-sass。
我想要一个单行且不需要临时文件。另外,我希望我的源映射引用(用于调试)指向原始文件,而不是临时文件。
node-sass 语法 1
node-sass [options] <input.scss> [output.css]
在这里,node-sass 坚持只有一个输入文件。如果我有两个或更多,第二个将被视为输出,并覆盖其内容。
“输入目录”和“输出目录”有一些选项,但我不想通过这种相当随意的限制来限制我的构建过程(是的,最终我会弯曲......)。
node-sass 语法 2
cat <input.scss> | node-sass [options] > output.css
这更符合 Unix 的心态。问题是双重的。我的输出文件位于子目录 (out/bundle.css) 中,这会混淆源映射引用,因为 node-sass 不知道输出路径。
似乎有--source-map-root,但我没有让它工作......
我很明显在这里的圆孔中放置了一个方形螺栓,不是吗?你会怎么做呢?
最好的方法是在根目录中简单地添加一个ring.scss,将所有不相关的部分聚集在一起,然后将其sassify 吗?
【问题讨论】:
-
我解决它的方法:实际上在scss文件之间引入依赖关系(它们是组件,有些属于更大的)。这样,主(应用程序)scss 文件只需导入几个最顶层的文件就足够了。源映射是正确的,以这种方式。我是一致的。