Я использую 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)
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
в корне, собрать все несвязанные части вместе, а затем подтвердить это?