【发布时间】:2014-12-23 02:09:44
【问题描述】:
我使用 Grunt 已经有一段时间了,最近决定尝试 Gulp。我不得不说,从我目前看到的情况来看,它看起来很有希望。然而,似乎有一些在 Grunt 中很容易的事情在 Gulp 中是困难或不可能的(就像任何 2 个类似的事情一样,我想)。
其中之一是重命名目标的源文件。我承认,这是一个小众案例,但它可能非常强大。就我而言,我使用的是 g(r?)u(nt|lp)-sass。我将我的 SCSS 文件放在名称中带有“scss”的文件夹中,并且我想将它们放在以“css”作为文件夹之一的路径中,在“scss”文件夹所在的路径中的相同位置。
使用 Grunt,这可以通过 rename 方法在 files 对象中完成。例如:
grunt.initConfig ({
sass: {
move: {
options: {
lineNumbers: true,
compass: true,
cacheLocation: 'app/.cache/sass'
},
files: [{
expand: true,
cwd: 'app/modules/',
src: '**/*.scss',
dest: '',
ext: '.css',
rename: function (dest, src) {
return 'app/modules/' + src.replace ('scss', 'css');
}
}]
}
}
});
require ('load-grunt-tasks')(grunt);
到目前为止,使用 Gulp,我有:
var gulp = require ('gulp');
var sourcemaps = require ('gulp-sourcemaps');
var scss = require ('gulp-sass');
gulp.task('scss:move', function () {
return gulp.src ('app/modules/**/scss/**/*.scss')
.pipe(sourcemaps.init())
.pipe (scss())
.pipe (sourcemaps.write())
.pipe(gulp.dest(**?**));
});
如何将 Gulp 中的源路径转换为目标路径,如 Grunt 中的方法 files.rename? 我更喜欢相对简单的解决方案,如单一方法,但涉及 Gulp 的解决方案插件也不错。
【问题讨论】:
-
您是否尝试将文件复制到目标目录并在此过程中重命名它们,而将原始
scss文件夹留在源目录中?或者您是否尝试将scss目录移动到源目录中的css目录?无论哪种方式,您都希望保留目录结构,但将scss目录重命名为css,对吗? -
我想保留
scss文件夹,并在每个scss文件夹所在的位置创建新的css文件夹。例如,如果有一个app/scss/app.scss文件,我想用原始Sass 编译的CSS 创建一个app/css/app.css文件。