繁体   English   中英

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

[英]How to install node dependencies if they are not available Gulp + nodejs

我正在使用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"
}

您可以使用节点的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并继续安装缺少的软件包。

因此,我通过使用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' }
  })
}) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM