有没有办法在gulpfile中设置Gulp的工作目录,这样我就可以从子目录运行gulp命令而不会遇到任何问题?我搜索了这个并没有找到我要找的东西.
为了澄清,我知道为我正在使用的文件添加前缀.但是,而不是这个 -
var gulp = require('gulp');
var jshint = require('gulp-jshint');
...
var paths = {
js: [__dirname + 'app/*/*.js', __dirname + '!app/lib/**'],
css: __dirname + 'app/*/*.styl',
img: __dirname + 'app/img/*',
index: __dirname + '*.html',
dist: __dirname + 'dist'
};
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
var gulp = require('gulp');
var jshint = require('gulp-jshint');
...
gulp.cwd(__dirname); // This would be much easier to understand, and would make future edits a bit safer.
var paths = {
js: ['app/*/*.js', '!app/lib/**'],
css: 'app/*/*.styl',
img: 'app/img/*',
index: '*.html',
dist: 'dist'
};
Run Code Online (Sandbox Code Playgroud)
我想知道Gulp是否公开了这个功能.也许节点本身允许这样做.
(我意识到在运行命令时可能有一种方法可以执行命令行,但是我想将它包含在gulp文件中,特别是出于分发目的.我希望gulp的工作目录与其中的目录相匹配gulpfile驻留.)
谢谢!
此外option.cwd,你也可以使用process.chdir(yourDir)
它可以在gulpfile中的任何地方使用.例如
process.chdir(yourDir);
var gulp = require('gulp');
Run Code Online (Sandbox Code Playgroud)
确保你的gulp是最新的(> 3.8.10),这可能不适用于旧的gulp.
您应该使用path.join ,而不是自己连接字符串,因为它会处理正确的斜杠,并且按照该路径您可以添加快捷方式:
var path = require('path'),
p = function () {
Array
.prototype
.unshift
.call(arguments, __dirname);
return path.join.apply(path, arguments);
};
console.log(p('a', 'b', 'c'));
Run Code Online (Sandbox Code Playgroud)
或者,你可以:
gulp.src(..., {cwd: __dirname})
gulp.dest(..., {cwd: __dirname})
Run Code Online (Sandbox Code Playgroud)
就像是:
var src = function (globs, options) {
options = options || {};
options.cwd = __dirname;
return gulp.src(globs, options);
};
var dest = function (folder, options) {
options = options || {};
options.cwd = __dirname;
return gulp.dest(folder, options);
};
Run Code Online (Sandbox Code Playgroud)