Gulp 生成动态文件名
Gulp generates dynamic filenames
我正在尝试一周解决我的问题。我想实现 gulp 使用 scss 的父文件夹名称将 scss 文件生成到 css。
结构是:
assets
|____css
| | example1.css
| | example2.css
| | example3.css
| |____components
| | test.css
|____sass
| |____folder
| |____components
| | | test.scss
| |____layout
| | |____example1
| | | | style.scss
| | |____example2
| | | | style.scss
| | |____example3
| | | | style.scss
我试过这个 glob action in Gulp 但是同步已被弃用并且无法正常工作。但是我找到了 gulp-folders,这有点解决了我的问题。
这是我的作品 gulpfile.js:
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var path = require('path');
var folders = require('gulp-folders');
var pathToFolder = 'assets/sass/layout';
gulp.task('minify-features', folders(pathToFolder, function(folder){
return gulp.src(path.join(pathToFolder, folder, '*.scss'))
.pipe(sass())
.pipe(concat(folder + '.css'))
.pipe(gulp.dest('assets/css'))
.pipe(browserSync.stream());
}));
// Static Server + watching scss files
gulp.task('serve', ['minify-features'], function() {
browserSync.init({
proxy: "mysite.dev"
});
gulp.watch("assets/sass/**/*.scss", ['minify-features']).on('change', browserSync.reload);
});
gulp.task('default', ['serve']);
如果将 pathToFolder 设置为文件夹之一(在本例中为布局),则此 gulp 文件可以正常工作。但是不会生成组件文件夹。
问题:有没有人知道我如何用 gulp-文件夹解决这个问题?或者一些不同的解决方案?
我终于完成了我的想法。我非常接近我的结果,我在 OverZealous answer 哪里使用了 glob。但是我在 foreach 循环中做了更改,其中 gulp 带有名称的任务函数,我插入了简单的 javascript if 条件,我在其中检查从文件夹名称数组中获得的名称。
if ( name === "components") {
return gulp.src(projectPath + "/sass/components/*.scss")
.pipe(sass())
.pipe(gulp.dest(projectPath + "/css/components"))
} else {
return gulp.src(projectPath + "/sass/layout/" + name + "/*.scss")
.pipe(sass())
.pipe(rename(name + ".css"))
.pipe(gulp.dest(projectPath + "/css"))
}
解决方案有点乱,但工作正常。
我正在尝试一周解决我的问题。我想实现 gulp 使用 scss 的父文件夹名称将 scss 文件生成到 css。 结构是:
assets
|____css
| | example1.css
| | example2.css
| | example3.css
| |____components
| | test.css
|____sass
| |____folder
| |____components
| | | test.scss
| |____layout
| | |____example1
| | | | style.scss
| | |____example2
| | | | style.scss
| | |____example3
| | | | style.scss
我试过这个 glob action in Gulp 但是同步已被弃用并且无法正常工作。但是我找到了 gulp-folders,这有点解决了我的问题。 这是我的作品 gulpfile.js:
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var path = require('path');
var folders = require('gulp-folders');
var pathToFolder = 'assets/sass/layout';
gulp.task('minify-features', folders(pathToFolder, function(folder){
return gulp.src(path.join(pathToFolder, folder, '*.scss'))
.pipe(sass())
.pipe(concat(folder + '.css'))
.pipe(gulp.dest('assets/css'))
.pipe(browserSync.stream());
}));
// Static Server + watching scss files
gulp.task('serve', ['minify-features'], function() {
browserSync.init({
proxy: "mysite.dev"
});
gulp.watch("assets/sass/**/*.scss", ['minify-features']).on('change', browserSync.reload);
});
gulp.task('default', ['serve']);
如果将 pathToFolder 设置为文件夹之一(在本例中为布局),则此 gulp 文件可以正常工作。但是不会生成组件文件夹。
问题:有没有人知道我如何用 gulp-文件夹解决这个问题?或者一些不同的解决方案?
我终于完成了我的想法。我非常接近我的结果,我在 OverZealous answer 哪里使用了 glob。但是我在 foreach 循环中做了更改,其中 gulp 带有名称的任务函数,我插入了简单的 javascript if 条件,我在其中检查从文件夹名称数组中获得的名称。
if ( name === "components") {
return gulp.src(projectPath + "/sass/components/*.scss")
.pipe(sass())
.pipe(gulp.dest(projectPath + "/css/components"))
} else {
return gulp.src(projectPath + "/sass/layout/" + name + "/*.scss")
.pipe(sass())
.pipe(rename(name + ".css"))
.pipe(gulp.dest(projectPath + "/css"))
}
解决方案有点乱,但工作正常。