2017-03-09 48 views
0

我正在使用Gulp來啓動Web應用程序。我有我的gulpfile.js以下基本代碼:如何安裝節點依賴項(如果它們不可用)Gulp + nodejs

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

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

使用咕嘟咕嘟,我要檢查相關性,如果他們是不可用,則安裝它們,然後運行「的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" 
} 
+0

您可以添加更多一飲而盡的依賴?有'gulp-install'聲明讓你自動安裝npm,bower,tsd和pip軟件包/依賴項,如果相關配置分別在gulp文件流中找到的話。我從來沒有用過它。 – aberkow

回答

0

您可以運行NPM從正在執行的任務使用節點的child_process因此可以獨立安裝

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' } 
       }) 

     } 

    }); 
}) 

鑑於您的要求:

使用咕嘟咕嘟,我要檢查相關性,如果他們不提供 然後安裝他們...

也就是說NPM安裝什麼一樣。它檢查當地的package.json並繼續安裝缺失的軟件包。

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' } 
    }) 
})