【问题标题】:run node js scripts from gulp task从 gulp 任务运行节点 js 脚本
【发布时间】:2017-08-09 13:03:42
【问题描述】:

我在一个文件夹中有许多 js 脚本 (scripts/*.js)。 如何从 gulp 任务中全部执行(而不是多次使用“node script.js”)?

类似

gulp.task('exec_all_scripts', function () {
  gulp.src(path.join(__dirname, './scripts/*.js'))
})

【问题讨论】:

  • Gulp 并不是真正的脚本运行器。您为什么认为它是完成这项工作的正确工具?
  • 我不知道。我认为它可以用 gulp 做

标签: javascript node.js gulp task


【解决方案1】:

Gulp 是一个任务运行器,这意味着它旨在自动化命令序列;不运行整个脚本。相反,您可以为此使用 NPM。我认为没有办法将 glob 脚本一次性运行,但您可以将每个文件设置为自己的 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. 
})

【讨论】:

    【解决方案2】:

    你可以在你的 scripts/*.js 中导出函数,然后在 gulpfile.js 中导入它们,然后在 'exec_all_scripts' 任务中调用函数,很简单

    【讨论】:

      【解决方案3】:

      您可以将所有脚本连接成一个脚本,然后从同一个任务、不同的任务或使用不同的进程执行它。请参阅以下 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
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-17
        • 2022-01-21
        • 2016-07-23
        • 1970-01-01
        相关资源
        最近更新 更多