如果节点依赖项不可用,如何安装Gulp + nodejs

时间:2017-03-09 19:15:43

标签: javascript node.js gulp dependencies package.json

我正在使用Gulp启动Web应用程序。我的gulpfile.js有以下基本代码:

var gulp = require('gulp'),
nodemon = require('gulp-nodemon');

gulp.task('default', function () {
  nodemon({
    script: 'server.js'
  , ext: 'js html'
  , env: { 'NODE_ENV': 'development' }
  })
})

使用Gulp,我想检查依赖项,如果它们不可用,则安装它们然后运行' script.js'。怎么办呢?

我有以下package.json:

{
"name": "sample-project",
"version": "1.0.0",
"description": "Displays users and user details",
"main": "server.js",
"dependencies": {
"jquery"  : “>=1.5.1",
“bootstrap”: ">= 3.0.0”
}
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "Arihant Jain",
"license": "ISC"
}

2 个答案:

答案 0 :(得分:0)

您可以使用节点child_process独立于正在执行的任务中运行 npm install

var gulp = require('gulp');
var nodemon = require('gulp-nodemon');
var child_process = require('child_process');

gulp.task('default', function () {

    // Run npm install from the child process
    child_process.exe('npm install', function(err, stdout, stderr){

        // if everything goes well
        if(!err){

             // run nodemon
              nodemon({
                script: 'server.js'
              , ext: 'js html'
              , env: { 'NODE_ENV': 'development' }
              })

        }

    });
})

鉴于您的要求:

  

使用Gulp,我想检查依赖项,如果不是   可用然后安装它们......

这正是 npm install 所做的。它会检查本地 package.json 并继续安装缺少的软件包。

答案 1 :(得分:0)

所以,我通过使用gulp-run以某种方式解决了这个问题。我实际上运行命令 npm install

gulpfile看起来像这样:

        var gulp = require('gulp'),
        nodemon = require('gulp-nodemon')
        run = require('gulp-run')
        runSequence = require('run-sequence')
        open = require('gulp-open');

gulp.task('default', function() {
  runSequence('dependencies',
              'start',
              'uri');
});


      gulp.task('dependencies', function() {
  return run('npm install').exec();
})

    gulp.task('uri', function(){
  gulp.src(__filename)
  .pipe(open({uri: 'http://localhost:3000/index.html'}));
});



    gulp.task('start', function () {
  nodemon({
    script: 'server.js'
  , ext: 'js html'
  , env: { 'NODE_ENV': 'development' }
  })
})