自动编译带有节点的* .jison文件

时间:2015-12-17 09:20:47

标签: node.js

我在文件夹中有两个.jison扩展名的文件。我每次保存时都喜欢运行命令jison [the_file].jison。如何使用节点执行此操作? Nodemon和gulp似乎是有效的解决方案,但我没有任何经验,并且喜欢保持简单

2 个答案:

答案 0 :(得分:1)

通过gulp,这将非常简单。关键是设置watch,每次文件更改时都会触发任务:

这样的事情应该让你开始:

var exec = require('gulp-exec');

gulp.task('jison', function() {
  return gulp.src(['**/*.jison'])
    .pipe(exec('jison <%= file.path %>.jison'));
});

gulp.task('watch', function() {
  gulp.watch(['**/*.jison'], ['jison']);
});

gulp.task('default', ['watch', 'jison']);

因此,上面我们定义了一个名为jison的任务,观察.jison个文件的任何更改,并设置default任务。引入gulp-exec来运行bash命令。

答案 1 :(得分:0)

如果你想使用Grunt,只需安装npm“grunt”“grunt-shell”“grunt-contrib-watch” 以下是Gruntfile.js

的示例
module.exports = function(grunt) {
  // Define tasks
  grunt.initConfig({
    watch:{
      scripts:{
        files: ['<path-to>/<jison-file>.jison'],
        tasks: ['shell:jison_compile'],
        options: {
          interrupt : true
        }
      }
    },
    shell: {
      jison_compile:{
        command: 'jison <path-to>/<jison-file>.jison'
      }
    },
  });

  // Load the plugin that provides the "uglify" task.
  grunt.loadNpmTasks('grunt-shell');
  grunt.loadNpmTasks('grunt-contrib-watch');

  // Default task(s).
  grunt.registerTask('default', ['shell:jison_compile']);

};

然后您可以使用grunt运行它的默认任务(编译jison文件)或使用grunt watch使其等待指定文件中的更改