假设我有一个 LESS CSS 目录结构,如下所示:
less/
core/
_main.less
header.less
body.less
footer.less
contact/
_main.less
form.less
details.less
我想编写一个 Gulp 任务来查找_main.less
每个子目录下的文件less/
dir,将其传递给 gulp-less 并将输出写入css/
像这样的目录:
css/
core.css
contact.css
Because _main.less
包括其目录中的其他文件,仅_main.less
文件必须被解析,但我希望输出文件具有其所在目录的名称。
到目前为止我有这个:
gulp.src('less/*/*/_main.less')
.pipe(less())
.pipe(gulp.dest('css'));
但这将创建一个像这样的目录结构:
css/
core/
_main.css
contact/
_main.css
但这不是我想要的。我正在考虑使用正则表达式来匹配目录名称,将其返回到matches
var,并相应地重命名该文件。像这样的事情:
gulp.src(/less\/[^\/]+\/([^\/]+)\/_main.less/)
.pipe(less())
.pipe(rename(function(context) {
context.src.matches[1] + '.css'
}))
.pipe(gulp.dest('css'));
这段代码只是一个例子。我不知道如何做这样的事情,或者是否可能。
这可能吗?如果是这样,怎么办?
你看起来已经有了这个,但也许没有看到the gulp-rename plugin https://www.npmjs.org/package/gulp-rename#usage?
我什至不认为你需要使用RegExp
,这样的事情应该有效:
var rename = require('gulp-rename'),
path = require('path'); // node Path
//...
gulp.src('less/**/_main.less')
.pipe(less())
.pipe(rename(function(filepath) {
// replace file name to that of the parent directory
filepath.basename = path.basename(filepath.dirname);
// remove parent directory from relative path
filepath.dirname = path.dirname(filepath.dirname);
// leave extension as-is
}))
.pipe(gulp.dest('css'));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)