【问题标题】:custom targets / running arbitrary code自定义目标/运行任意代码
【发布时间】:2015-01-06 15:52:24
【问题描述】:

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 模块来用coffeelint 对我的coffeescript 进行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 */
});

【问题讨论】:

标签: javascript makefile gulp


【解决方案1】:

我使用vinyl-source-streambrowserify 做这种事情——基本上允许您按原样使用库,而不是使用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 或黑胶唱片的开头使用传统的文本流 管道,与现有的 npm 具有更好的互操作性 流生态系统。

也许对你有帮助?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多