Gulp: 如何读取文件夹名称?
Gulp: How to read folder name?
我正在重构我的 Gulp 构建过程,这样用户就不必输入 V=1.2.88
等
我希望用户只键入 major gulp build
、minor gulp build
或 patch gulp build
。这当然会迭代版本号。
为此,我需要 gulp 读取上次创建的文件夹名称:
我当前的Gulp生成版本号的任务:
var version = '';
var env = process.env.V; // V={version number} ie: V=1.0.1 gulp build
gulp.task('version', function() {
return printOut(env);
});
function errorlog(err) {
console.log(err.message);
this.emit('end');
}
function printOut(ver) {
gutil.log(gutil.colors.blue.bold('Last build: '+paths.last));
version = ver;
if (version === undefined) {
version = '0.0.0';
}
gutil.log(gutil.colors.blue.bold('##################################################'));
gutil.log(gutil.colors.blue.bold(' Building Dashboard version '+version));
gutil.log(gutil.colors.green.bold('~~ All change is detectable ~~'));
gutil.log(gutil.colors.blue.bold('##################################################'));
}
有人知道如何在 Gulp 中完成此操作吗?
这是我目前发现的 Gulp-folders
因此,我使用 Gulp-folders
插件创建了以下任务,其中 运行 首先是:
gulp.task('build:getLastBuild', folders(paths.lastBuild, function(folder) {
console.log( 'Last version number is: '+folder);
return lastVersion = folder;
//This will loop over all folders inside pathToFolder main, secondary
//Return stream so gulp-folders can concatenate all of them
//so you still can use safely use gulp multitasking
// return gutil.colors.blue.bold('Last build folder: '+folder);
// return gulp.src(path.join(paths.lastBuild, folder))
// .pipe(console.log(' Getting last version number: '+folder))
// .pipe(lastVersion = folder);
}));
现在,当我 运行 我的构建时,请在下面查看!我在 console.log 中获取文件夹的名称,但是我的过程出错了 :(
TypeError: e.pipe is not a function
我不太了解关于辅修/专业的部分,但是关于目录列表,您可以执行以下操作:
var fs = require('fs'),
gulp = require('gulp');
gulp.task('default', function() {
var dirs = fs.readdirSync('./build/assets');
console.log(dirs);
// do something with your directories
})
// and the async version:
gulp.task('async', function() {
var dirs = [];
var print = function(err, files) {
// do something with your directories
console.log(files)
};
fs.readdir('./build/assets', print);
})
知道了!虽然我承认它有点粗糙,但我用 google 搜索了 node readdir 并找到了 __dirname
console.log(__dirname);
因此,我创建了以下变量和任务:
var fs = require('fs'),
path = require('path');
gulp.task('build:getLastBuild', function() {
return fs.readdirSync(paths.lastBuild).filter(function(file) {
console.log(' build:getLastBuild: '+file);
if (file != 'static') {
lastVersion = file;
}
else {
console.log(' lastVersion: '+lastVersion);
}
});
});
所以现在明白了!现在我有一个字符串,当用户 运行 构建过程时,我可以操纵它来增加版本号。
我正在重构我的 Gulp 构建过程,这样用户就不必输入 V=1.2.88
等
我希望用户只键入 major gulp build
、minor gulp build
或 patch gulp build
。这当然会迭代版本号。
为此,我需要 gulp 读取上次创建的文件夹名称:
我当前的Gulp生成版本号的任务:
var version = '';
var env = process.env.V; // V={version number} ie: V=1.0.1 gulp build
gulp.task('version', function() {
return printOut(env);
});
function errorlog(err) {
console.log(err.message);
this.emit('end');
}
function printOut(ver) {
gutil.log(gutil.colors.blue.bold('Last build: '+paths.last));
version = ver;
if (version === undefined) {
version = '0.0.0';
}
gutil.log(gutil.colors.blue.bold('##################################################'));
gutil.log(gutil.colors.blue.bold(' Building Dashboard version '+version));
gutil.log(gutil.colors.green.bold('~~ All change is detectable ~~'));
gutil.log(gutil.colors.blue.bold('##################################################'));
}
有人知道如何在 Gulp 中完成此操作吗?
这是我目前发现的 Gulp-folders
因此,我使用 Gulp-folders
插件创建了以下任务,其中 运行 首先是:
gulp.task('build:getLastBuild', folders(paths.lastBuild, function(folder) {
console.log( 'Last version number is: '+folder);
return lastVersion = folder;
//This will loop over all folders inside pathToFolder main, secondary
//Return stream so gulp-folders can concatenate all of them
//so you still can use safely use gulp multitasking
// return gutil.colors.blue.bold('Last build folder: '+folder);
// return gulp.src(path.join(paths.lastBuild, folder))
// .pipe(console.log(' Getting last version number: '+folder))
// .pipe(lastVersion = folder);
}));
现在,当我 运行 我的构建时,请在下面查看!我在 console.log 中获取文件夹的名称,但是我的过程出错了 :(
TypeError: e.pipe is not a function
我不太了解关于辅修/专业的部分,但是关于目录列表,您可以执行以下操作:
var fs = require('fs'),
gulp = require('gulp');
gulp.task('default', function() {
var dirs = fs.readdirSync('./build/assets');
console.log(dirs);
// do something with your directories
})
// and the async version:
gulp.task('async', function() {
var dirs = [];
var print = function(err, files) {
// do something with your directories
console.log(files)
};
fs.readdir('./build/assets', print);
})
知道了!虽然我承认它有点粗糙,但我用 google 搜索了 node readdir 并找到了 __dirname
console.log(__dirname);
因此,我创建了以下变量和任务:
var fs = require('fs'),
path = require('path');
gulp.task('build:getLastBuild', function() {
return fs.readdirSync(paths.lastBuild).filter(function(file) {
console.log(' build:getLastBuild: '+file);
if (file != 'static') {
lastVersion = file;
}
else {
console.log(' lastVersion: '+lastVersion);
}
});
});
所以现在明白了!现在我有一个字符串,当用户 运行 构建过程时,我可以操纵它来增加版本号。