[英]Have gulp dynamically write css in the same directory as the processed scss file
我希望编写我的gulpfile.js扫描style.scss文件的themes目录,其目的是读取style.scss文件并在同一目录中写入相应的style.css和.min文件。 我遇到的问题是我找不到编写css文件的方法而不知道目录是什么...我不会。
这可能与gulp.dest()有关吗?
tl; dr:基本上......如何确定正在处理的* .scss文件的当前路径,以便我可以将* .css文件放在同一目录中
// GULP variable declarations
var gulp = require('gulp'),
gutil = require('gulp-util'),
sass = require('gulp-ruby-sass'),
prefix = require('gulp-autoprefixer'),
minifycss = require('gulp-minify-css'),
rename = require('gulp-rename'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify');
// Paths array
var path = {
scss: [
'docroot/profile/theme/**/*/style.scss',
],
watch_scss: [
'docroot/profile/theme/**/*.scss',
],
};
// Process SASS functionality
gulp.task('process-scss', function() {
return gulp.src(path.scss)
.pipe(sass({
compass: true,
style: 'expanded',
}))
.pipe(prefix(['last 2 versions']))
.pipe(concat('style.css'))
.pipe(gulp.dest('./relative/dir')
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('./relative/dir')
.on('error', gutil.log);
});
// Setup the gulp WATCH functionality
gulp.task('default', function() {
gulp.start('process-scss');
gulp.watch(path.watch_scss, ['process-scss']);
});
只是要添加,事实证明你可以使用gulp.dest()来提供文件的基本URL以及以下代码段。
https://github.com/gulpjs/gulp/blob/master/docs/API.md#path
gulp.dest(function(file) {
return file.base;
}
编辑:我的最终gulp任务看起来像这样:
// File path variable declarations
var stylePath = "";
var scriptPath = "";
// Paths array
var path = {
scss: [
'docroot/profile/theme/**/style/scss/style.scss',
],
watch_scss: [
'docroot/profile/theme/**/style/scss/**/*.scss',
],
theme_base: [
'docroot/profile/theme/',
],
};
// Process SASS functionality
gulp.task('process-scss', function() {
return gulp.src(path.scss)
.pipe(gulp.dest(function(file) {
var relative = file.relative.split("/");
stylePath = path.theme_base + relative[0] + '/style/';
return file.base;
}))
.pipe(sass({
compass: true,
style: 'expanded',
}))
.pipe(prefix(['last 2 versions']))
.pipe(concat('style.css'))
.pipe(gulp.dest(function() { return stylePath; }))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest(function() { return stylePath; }))
.on('error', gutil.log);
});
gulp.dest
将写入保留其文件夹结构的文件。 给gulp.dest
一个基本文件夹,它会写入它。
所以你有这个
gulp.src('docroot/profile/theme/**/*/style.scss')
和gulp.dest('dist/profile/theme')
你得到docroot/profile/theme/sample/style.scss
转到dist/profile/theme/sample/style.scss
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.