File tree 1 file changed +9
-3
lines changed
1 file changed +9
-3
lines changed Original file line number Diff line number Diff line change @@ -78,21 +78,27 @@ exports.setup = function() {
78
78
// find out which modules are missing
79
79
var pkg = require ( path . join ( __dirname , ".." , "package.json" ) ) ;
80
80
var install = [ ] ;
81
+ var semver ;
81
82
pkg . cliDependencies . forEach ( function ( name ) {
83
+ var version = pkg . dependencies [ name ] || pkg . devDependencies [ name ] ;
82
84
try {
83
- require . resolve ( name + "/package.json" ) ; // jsdoc has no main file
85
+ var mPath = require . resolve ( name + "/package.json" ) ; // jsdoc has no main file
86
+ var mPkg = JSON . parse ( fs . readFileSync ( mPath ) ) ;
87
+ if ( semver && ! semver . satisfies ( mPkg . version , version ) )
88
+ throw Error ( mPkg . version + " is outdated" ) ;
84
89
} catch ( e ) {
85
- var version = pkg . dependencies [ name ] || pkg . devDependencies [ name ] ;
90
+ process . stderr . write ( "installing " + name + "@" + version + " (" + e . message + ")\n" ) ;
86
91
install . push ( version ? name + "@" + version : name ) ;
87
92
}
93
+ if ( name === "semver" )
94
+ semver = require ( "semver" ) ;
88
95
} ) ;
89
96
if ( ! install . length ) {
90
97
try { fs . rmdirSync ( path . join ( __dirname , "node_modules" ) ) ; } catch ( e ) { }
91
98
return ;
92
99
}
93
100
94
101
// if any are missing, install them. this relies on an empty package.json in cli/.
95
- process . stderr . write ( "installing CLI dependencies: " + install . join ( ", " ) + "\n" ) ;
96
102
child_process . execSync ( "npm --silent install " + install . join ( " " ) , {
97
103
cwd : __dirname ,
98
104
stdio : "ignore"
You can’t perform that action at this time.
0 commit comments