Gulp SASS-использовать @import без компиляции scss - > css
Я знаю, что это, вероятно, странный вопрос, но придерживайтесь меня. :)
можно ли использовать gulp sass (или другие плагины gulp) для чтения одного .файл scss с несколькими инструкциями @import и import /concat все эти @ import-ed файлы в один.файл scss что это не скомпилирован в CSS?
Справочная информация: я взял Bootstrap и FontAwesome базы .scss файлы и объединил их в один мастер .SCSS файл. Я теперь хотите получить все файлы в операторах @import в один .SCSS файл.
другой вариант, о котором я думал,-просто использовать инструмент concat, но тогда мне не пришлось бы вручную указывать каждый файл для конкат-ЭД в файле gulp? Поправь меня, если я ошибаюсь.
пример того, что я ищу:
//base.scss
@import foo;
@import bar;
импорт
//foo.scss
$my-font-size:20px;
и
//bar.scss
body {
div {
font-size:$my-font-size;
}
}
сделать
//final.scss
$my-font-size:20px;
body {
div {
font-size:$my-font-size;
}
}
обратите внимание, что @import
s включены в final.scss
файл, но нет никакой компиляции из SCSS - > CSS.
2 ответов
я наткнулся на ту же самую проблему. Этот поможет тебе. Хотя есть некоторые недостатки (забудьте о именах файлов с префиксом подчеркивания - это то, что я нашел до сих пор).
пакет npm, который строится специально для этой цели
отказ от ответственности: я не собираюсь объяснять, как работает npm, я предполагаю, что автор знает, что такое пакет npm, если он хочет использовать плагин gulp. Пожалуйста, не удаляйте мой ответ только потому, что я не без необходимости явно описывая то, что очевидно для человек, который задал вопрос. Чтобы предотвратить удаление этого ответа как отсутствующего контекста, я цитирую описание пакета.
импорт resolve
разрешить операторы @ import в таблицах стилейчто это значит
Что делать, если у вас есть меньше или стилус файлы, которые вы хотите разбить вместе в главный файл, без компиляции в css? Просто используйте import-resolve и все ваши мечты сбудутся. Все операторы @import будут разрешены, и вы останетесь с одним файлом, содержащим все ваши драгоценные миксины, переменные и объявления.использование import-resolve
npm install import-resolve // some-node-thing.js var importResolve = require('import-resolve'); // spits out a master dist file with all your wonderful stylesheet // things concatenated importResolve({ "ext": "less", "pathToMain": "path/to/main.less", "output": "path/to/output.less" }); // if you don't specify an output file, output accepts a callback parameter // and passes the concatenated file text var output = importResolve({ "ext": "styl", "pathToMain": "path/to/main.styl" }, function (output) { fs.writeFile('foo.styl', output, function (){ console.log('did it myself.'); }); });
Да, вы можете использовать gulp-scss для этого или gulp-ruby-sass. Есть несколько там сейчас, что Gulp был вокруг в течение некоторого времени.
gulp-sass для компиляции файлов sass https://www.npmjs.com/package/gulp-sass
gulp-переименовать, чтобы переименовать файлы для папки распространения https://www.npmjs.com/package/gulp-rename
в моем случае я в настоящее время использую gulp-scss. Вы можете просто запустить задачу для ваших нужд, как это. В пример ниже базы.scss будет вашим файлом scss со всеми вашими инструкциями @import.
var gulp = require('gulp'),
scss = require('gulp-scss'),
rename = require('gulp-rename');
gulp.task('sass', function () {
gulp.src('base.scss')
.pipe(scss())
.pipe(rename('final.scss'))
.pipe(gulp.dest('assets/css/'));
});
обновление:
Предположим, у вас уже есть база.scss создал, что уже имеет ваши операторы импорта. Вышеуказанный метод должен работать. Мы просто запускаем задачу scss в предоставленном файле, переименовываем его и перемещаем в любой каталог dest.
обновление 2
сохранение переменных потребует от вас использовать метод concat, поскольку все плагины Sass предназначены только для компиляции sass в css. Вам не нужно будет указывать все ваши файлы. Сначала только переменные, а затем вы можете запустить glob для всех ваших пользовательских sass. Просто убедитесь, что вы следуете аналогичной структуре папок, которая находится в массиве ниже для правильного разделения и организации активов.
вам не нужно будет беспокоиться о поддержании файла импорта. В этом не будет необходимости, и управлять будет меньше этот метод.
var gulp = require('gulp'),
concat = require('gulp-concat');
var sassConcat = [
'sass/variables.scss',
'sass/modules/**/*.scss'
];
gulp.task('sass', function () {
gulp.src(sassConcat)
.pipe(concat('final.scss'))
.pipe(gulp.dest('../assets/sass/'));
};