在学习如何使用grunt时,我正在尝试制作一个简单的咖啡脚本观察器/编译器.问题是,如果我告诉watch任务看几个文件,一个更改,它将把所有文件传递给coffee命令.这意味着当您更改1个文件时,它将重新编译与该模式匹配的所有文件src.相反,我只想重新编译与src模式匹配的单个文件.
这是grunt.js:
module.exports = function(grunt) {
grunt.initConfig({
coffee: {
app: {
src: ['test/cases/controller/*.coffee'],
dest: 'tmp',
options: {
bare: true,
preserve_dirs: true
}
}
},
watch: {
files: ['<config:coffee.app.src>'],
tasks: ['coffee:app']
}
});
grunt.loadNpmTasks('grunt-coffee');
grunt.registerTask('default', 'coffee');
};
Run Code Online (Sandbox Code Playgroud)
这是使用grunt-coffee,基本上是这样的:https://gist.github.com/2373159.
当我运行grunt watch并保存文件时test/cases/controller/*.coffee,它会编译所有匹配的文件(将它们放入tmp/*).
你如何只使用grunt 编译更改的文件?
我目前正在使用nodeJS中的一个脚本来监视一个目录(以及它的子目录),并在文件被放置到那里后执行一些功能.实际上,这将是一个FTP,用户上传文件,处理,然后删除.
显然,我已经看到脚本的CPU使用量很高,因为它遍历目录,等待文件可见.但令我担心的是,脚本运行的时间越长,内存使用率就越高(它只是呈指数级增长).是否有一些轻量级的方法来监控目录的变化?
谢谢!
编辑:我目前正在使用手表树,这是伟大的,但仍然有增加内存的问题.
https://nodejs.org/api/fs.html#fs_caveats表示,fs.watch(filename[, options][, listener])递归选项仅适用于OS X和Windows.
那么,怎样才能在Linux上实现呢?