自定义目标/运行任意代码

时间:2015-01-06 15:52:24

标签: javascript makefile gulp

make中,可以定义与他们所处理的实际代码无关的自定义目标,因为它们与语言无关。

release_sortof:
         @echo packaging release...
         tar czf release.tar.gz file1 file2 file3
         ls /dev/null
         ls /dev/stderr
         ls /dev/stdout

我知道上面的例子太可怕了,但我想说明的一点是release_sortof目标中的代码并不依赖于我的项目使用用C编写的代码这一事实,例如;它也不依赖于我使用Make内置函数,例如foreach


有没有办法使用javascript / <INSERT-NAME>script文件没有使用可用于gulp的插件?如同,我可以通过直接调用coffeelint模块将{coffeescript'与coffeelint lint:

var gulp = require('gulp')
  , coffeelint = require('coffeelint')
  ;

gulp.task('lint', function() {
   /* run coffeelint on source files */
});

或者这只能使用插件来完成吗?


另一个例子是像这样运行任意代码:

var spawn = require('child_process').spawn;
gulp.task('blue', function() {
  var child = spawn('ls');
  /* do stuff with spawned child process */
});

1 个答案:

答案 0 :(得分:0)

我使用browserifyvinyl-source-stream执行此类操作 - 基本上允许您按原样使用库,而不是使用gulp-*插件。

var browserify = require('browserify'),
    gulp = require('gulp'),
    source = require('vinyl-source-stream'),
    stringify = require('stringify'),
    plumber = require('gulp-plumber'),
    config = require('../config').scripts;

gulp.task('browserify', function () {
    return browserify(config.app)
        .transform(stringify(['.html']))
        .bundle()
        .pipe(plumber())
        .pipe(source('bundle.js'))
        .pipe(gulp.dest(config.dest));
});

继承人npm - https://www.npmjs.com/package/vinyl-source-stream

  

在gulp或vinyl的开头使用传统的文本流   管道,与现有的npm实现更好的互操作性   流生态系统。

也许这会对你有帮助吗?