从Gulp任务中运行Node.js脚本

3
我有一个文件夹里有很多JavaScript脚本 (scripts/*.js)。如何在gulp任务中执行它们所有,而不是多次使用'node script.js'命令? 类似下面这样的代码:
gulp.task('exec_all_scripts', function () {
  gulp.src(path.join(__dirname, './scripts/*.js'))
})

Gulp并不是一个脚本运行器。你为什么会期望它是这个工作的正确工具呢? - Mark Adelsberger
我不知道。我以为可以用gulp完成。 - user8439944
3个回答

10

Gulp是一个任务运行器,也就是说它的作用是自动化命令序列,而不是运行整个脚本。相反,你可以使用npm来运行整个脚本。我不认为有一种方法可以对脚本进行全局运行,但是你可以将每个文件设置为其自己的npm脚本,并使用npm-run-all 来运行它们:

{
    "name": "sample",
    "version": "0.0.1",
    "scripts": {
        "script:foo": "node foo.js",
        "script:bar": "node bar.js",
        "script:baz": "node baz.js",
        "start": "npm-run-all --parallel script:*",
    },
    "dependencies": {
        "npm-run-all": "^4.0.2"
    }
}

然后您可以使用npm start一次性运行所有脚本。

如果您确实需要使用gulp来运行脚本,您可以使用相同的策略,然后使用gulp-run在gulp中运行npm脚本。

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

// use gulp-run to start a pipeline 
gulp.task('exec_all_scripts', function() {
    return run('npm start').exec()    // run "npm start". 
        .pipe(gulp.dest('output'));      // writes results to output/echo. 
})

0

您可以将所有脚本连接成一个单独的脚本,然后从同一任务、不同任务或使用不同进程执行它。请参见以下 NPM 包: https://www.npmjs.com/package/gulp-concat

这是一个示例:

var concat = require('gulp-concat');   // include package

gulp.task('exec_all_scripts', function() {
  return gulp.src(path.join(__dirname, './scripts/*.js')
    .pipe(concat('all_scripts.js'))
    .pipe(gulp.dest('./dist/'));  // assuming you had a dist folder but this could be anything
});

0

你可以在你的 scripts/*.js 文件中导出函数,然后在 gulpfile.js 中导入并在 'exec_all_scripts' 任务中调用这些函数,非常简单。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接