具有多个输入文件的Node-sass

aka*_*ppi 7 sass npm node-sass

node-sass直接从命令行(一个Makefile,真的)使用来构建我的CSS.

scss文件位于不同的目录中,并且它们不相互引用.我想要的是将这些文件分类为单个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)
Run Code Online (Sandbox Code Playgroud)

OUT_MAIN_CSSout/bundle.css.SCSS是输入文件的列表.node-sassnode_modules/.bin/node-sass.

我想要一个单行,不需要临时文件.另外,我希望我的源映射引用(用于调试)导致原始文件,而不是临时文件.

node-sass语法1

node-sass [options] <input.scss> [output.css]
Run Code Online (Sandbox Code Playgroud)

在这里,node-sass坚持只有一个输入文件.如果我有两个或更多,第二个被视为输出,其内容被覆盖.

"输入目录"和"输出目录"有一些选项,但我不想通过这种相当任意的限制约束我的构建过程(是的,最终我会弯曲......).

node-sass语法2

cat <input.scss> | node-sass [options] > output.css
Run Code Online (Sandbox Code Playgroud)

这更符合Unix的心态.问题是双重的.我的输出文件位于子目录(out/bundle.css)中,这会混淆源映射引用,因为node-sass它不知道输出路径.

似乎有--source-map-root这个,但我没有让它工作......

显然在这里把一个方形螺栓放在一个圆孔里,不是吗?你会怎么做?

最简单的方法就是ring.scss在根中简单地收集一个,将所有不相关的部分收集在一起,然后对此进行分类?

Rob*_*obW 9

为什么不创建单个mainSass文件,将所有文件导入其中,并main使用node-sass 编译该文件?这应该会产生一个包含正确源映射的文件.

  • 我之所以无法这样做,是因为我需要在不同的页面上使用不同的CSS,但是有些文件我不想被编译,因为它们本身无法执行任何操作 (2认同)