gulp: 从输出目标路径中删除一个目录
gulp: remove a directory from the output destination path
请帮我 Gulp 配置
我有两个 src scss
文件夹:
styles1/
styles2/
在每个文件夹中,我都有各种站点页面的下一个结构:
styles1/front_page/front.page.scss - root file for front page
styles1/front_page/sections/ - front page sections that are impoted in root file(front.page.scss)
我的 gulp 任务如下所示:
gulp.task('sass-dev', function(done) {
return gulp.src(['src/scss/**/*.page.scss'])
.pipe(sass({outputStyle:'expanded'}).on('error',sass.logError))
.pipe(gulp.dest('./frontend/css/temp/'))
});
通过这种方式,我得到了下一个路径的输出文件:
./frontend/css/temp/styles1/front_page/front.page.css
但我需要
./frontend/css/temp/styles1/front.page.css
预期结果的更多示例:
./frontend/css/temp/styles1/about.page.css
./frontend/css/temp/styles1/contact.page.css
./frontend/css/temp/styles2/front.page.css
./frontend/css/temp/styles2/profile.page.css
是否可以这样配置输出?
谢谢!
有多种方法可以实现这一点。这是三个:
gulp.task('sass-dev', function (done) {
return gulp.src(['src/scss/**/*.page.scss'], {base: 'src/scss/styles1/front_page' })
.pipe(sass({ outputStyle: 'expanded' }).on('error', sass.logError))
.pipe(gulp.dest('./frontend/css/temp/styles1')) // use with base option, works
});
使用 base
选项 - 这基本上设置了您 不想要 的最终目的地,这就是为什么 gulp.dest
添加 styles1
回来。所以你消除 "src/scss/styles1/front_page
并发送到 `'./frontend/css/temp/styles1'.
我认为 os 使用 gulp-flatten 插件更好。它允许您在选择ose 时剥离或展平目录。你的情况:
const flatten = require("gulp-flatten");
gulp.task('sass-dev', function (done) {
return gulp.src(['src/scss/**/*.page.scss'])
.pipe(sass({ outputStyle: 'expanded' }).on('error', sass.logError)
.pipe(flatten({ subPath: [0, -1] }))
.pipe(gulp.dest('./frontend/css/temp'))
});
flatten({ subPath[0, -1] })
将删除最后一个文件夹,即 'front_page'.
const rename = require("gulp-rename");
const path = require("path");
gulp.task('sass-dev', function (done) {
return gulp.src(['src/scss/**/*.page.scss'])
.pipe(sass({ outputStyle: 'expanded' }).on('error', sass.logError))
.pipe(rename(function (file) {
let temp = path.dirname(file.dirname);
file.dirname = temp;
}))
.pipe(gulp.dest('./frontend/css/temp'))
});
请帮我 Gulp 配置
我有两个 src scss
文件夹:
styles1/
styles2/
在每个文件夹中,我都有各种站点页面的下一个结构:
styles1/front_page/front.page.scss - root file for front page
styles1/front_page/sections/ - front page sections that are impoted in root file(front.page.scss)
我的 gulp 任务如下所示:
gulp.task('sass-dev', function(done) {
return gulp.src(['src/scss/**/*.page.scss'])
.pipe(sass({outputStyle:'expanded'}).on('error',sass.logError))
.pipe(gulp.dest('./frontend/css/temp/'))
});
通过这种方式,我得到了下一个路径的输出文件:
./frontend/css/temp/styles1/front_page/front.page.css
但我需要
./frontend/css/temp/styles1/front.page.css
预期结果的更多示例:
./frontend/css/temp/styles1/about.page.css
./frontend/css/temp/styles1/contact.page.css
./frontend/css/temp/styles2/front.page.css
./frontend/css/temp/styles2/profile.page.css
是否可以这样配置输出?
谢谢!
有多种方法可以实现这一点。这是三个:
gulp.task('sass-dev', function (done) {
return gulp.src(['src/scss/**/*.page.scss'], {base: 'src/scss/styles1/front_page' })
.pipe(sass({ outputStyle: 'expanded' }).on('error', sass.logError))
.pipe(gulp.dest('./frontend/css/temp/styles1')) // use with base option, works
});
使用 base
选项 - 这基本上设置了您 不想要 的最终目的地,这就是为什么 gulp.dest
添加 styles1
回来。所以你消除 "src/scss/styles1/front_page
并发送到 `'./frontend/css/temp/styles1'.
我认为 os 使用 gulp-flatten 插件更好。它允许您在选择ose 时剥离或展平目录。你的情况:
const flatten = require("gulp-flatten");
gulp.task('sass-dev', function (done) {
return gulp.src(['src/scss/**/*.page.scss'])
.pipe(sass({ outputStyle: 'expanded' }).on('error', sass.logError)
.pipe(flatten({ subPath: [0, -1] }))
.pipe(gulp.dest('./frontend/css/temp'))
});
flatten({ subPath[0, -1] })
将删除最后一个文件夹,即 'front_page'.
const rename = require("gulp-rename");
const path = require("path");
gulp.task('sass-dev', function (done) {
return gulp.src(['src/scss/**/*.page.scss'])
.pipe(sass({ outputStyle: 'expanded' }).on('error', sass.logError))
.pipe(rename(function (file) {
let temp = path.dirname(file.dirname);
file.dirname = temp;
}))
.pipe(gulp.dest('./frontend/css/temp'))
});