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

custom targets / running arbitrary code

本文关键字:任意 代码 运行 目标 自定义      更新时间:2023-09-26

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)。


有没有办法在不使用可用于 gulp 的插件的情况下处理 javascript/<INSERT-NAME>script 文件? 例如,我可以通过直接调用 coffeelint 模块来用 coffeelint 来检查我的咖啡脚本:

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 */
});

我使用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 的互操作性更好 流生态系统。

也许这会对你有所帮助?