我使用Grunt自动转换我的玉文件。为此我使用这个脚本:
jade: {
compile: {
options: {
client: false,
pretty: true
},
files: [{
cwd: "_/components/jade",
src: "**/*.jade",
dest: "_/html",
expand: true,
ext: ".html"
}]
}
}
我也有这个监视脚本运行:
watch: {
jade: {
files: ['_/components/jade/**/*.jade'],
tasks: ['jade']
}
}
这很好用。但是,当我删除玉文件时,html文件仍然存在。有没有办法在删除玉文件时让grunt删除相应的html文件?
答案 0 :(得分:3)
如果我理解正确,如果您删除foo.jade
,还要删除foo.html
正确吗?以下是使用grunt-contrib-clean
和grunt-contrib-watch
的完整示例:
首先观看.jade
扩展名为grunt watch
的所有文件。以某种方式修改监视文件时,会发出watch
事件。如果事件为deleted
,我们会采用文件路径,将扩展名更改为.html
,将其设置为src
任务的clean:jade
值并运行任务。< / p>
module.exports = function(grunt) {
grunt.initConfig({
clean: {
jade: {
src: null
}
},
watch: {
jade: {
files: ['*.jade'],
options: {
spawn: false
}
},
}
});
grunt.loadNpmTasks("grunt-contrib-watch");
grunt.loadNpmTasks("grunt-contrib-clean");
grunt.event.on('watch', function(action, filepath) {
if (action === "deleted") {
var file = filepath.slice(0, -5) + ".html";
grunt.config.set('clean.jade.src', [file]);
grunt.task.run("clean:jade");
}
});
};
有关详细信息,请参阅Using the watch event @ grunt-contrib-watch。请注意,spawn
选项必须为false
如果您需要动态修改配置,则必须禁用spawn选项以使监视在相同的上下文中运行。
答案 1 :(得分:0)
你需要grunt-contrib-clean。但是这段代码清除了所有相同类型的文件并且缓慢地发出咕噜声,并且需要为每个任务配置特定的配置。因此,当grunt开始时,通常只使用干净的单次时间:
module.exports = function (grunt){
grunt.initConfig({
pckg: grunt.file.readJSON('package.json'),
clean: { // Grun-contrib-clean tasks
jade: ["dist/*.html"],
all: ["dist"]
},
jade: {
dist: {
files: [{
expand: true,
cwd: 'src/templates',
src: ['**/*.jade'],
dest: 'dist',
filter: 'isFile',
ext: '.html'
}]
}
},
watch: {
jade: {
files: ['src/templates/**/*.jade'],
tasks: ['clean:jade','jade']
},
}
});
require('load-grunt-tasks')(grunt);
grunt.registerTask('default', ['clean:all', 'jade', 'watch']);
};