Skip to content

Commit 8b4eafa

Browse files
committed
Merge branch 'minimist'
2 parents b59c30d + fb31c23 commit 8b4eafa

4 files changed

Lines changed: 34 additions & 26 deletions

File tree

bin/node-dev

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,31 @@
11
#!/usr/bin/env node
22

33
var dev = require('..')
4-
var program = require('commander')
5-
var resolveMain = require('../lib/resolveMain')
4+
var minimist = require('minimist')
65

6+
function getFirstNonOptionArgIndex(args) {
7+
for (var i=2; i < args.length; i++) {
8+
if (args[i][0] != '-') return i;
9+
}
10+
return args.length;
11+
}
712

8-
program
9-
.version(require('../package.json').version)
10-
.option('--all-deps', 'watch the whole dependency tree')
11-
.option('--no-deps', 'watch only the project’s own files and linked modules' +
12-
' (via `npm link`)')
13-
.option('--dedupe', 'dedupe modules dynamically')
14-
.arguments('<script> [arguments...]')
15-
.action(function (script, scriptArgs) {
16-
var wrapper = resolveMain(__dirname + '/../lib/wrap.js')
13+
var scriptIndex = getFirstNonOptionArgIndex(process.argv)
14+
var script = process.argv[scriptIndex]
15+
var scriptArgs = process.argv.slice(scriptIndex + 1)
16+
var devArgs = process.argv.slice(2, scriptIndex)
1717

18-
dev(wrapper, script, scriptArgs || [], {
19-
allDeps: program.allDeps || false,
20-
noDeps: program.noDeps || false,
21-
dedupe: program.dedupe || false,
22-
})
23-
})
18+
var nodeArgs = []
19+
var opts = minimist(devArgs, {
20+
boolean: ['all-deps', 'no-deps', 'dedupe'],
21+
unknown: function(arg) {
22+
nodeArgs.push(arg)
23+
}
24+
})
2425

25-
program.parse(process.argv)
26+
if (!script) {
27+
console.log('Usage: node-dev [options] script [arguments]\n')
28+
process.exit(1)
29+
}
30+
31+
dev(script, scriptArgs, nodeArgs, opts)

lib/index.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ var ipc = require('./ipc')
55
var resolveMain = require('./resolveMain')
66

77

8-
module.exports = function(wrapper, script, scriptArgs, opts) {
9-
if (typeof wrapper !== 'string' || wrapper.length === 0) {
10-
throw new TypeError('`wrapper` must be a string')
11-
}
8+
module.exports = function(script, scriptArgs, nodeArgs, opts) {
129

1310
if (typeof script !== 'string' || script.length === 0) {
1411
throw new TypeError('`script` must be a string')
@@ -18,9 +15,14 @@ module.exports = function(wrapper, script, scriptArgs, opts) {
1815
throw new TypeError('`scriptArgs` must be an array')
1916
}
2017

18+
if (!Array.isArray(nodeArgs)) {
19+
throw new TypeError('`nodeArgs` must be an array')
20+
}
21+
2122
// The child_process
2223
var child
2324

25+
var wrapper = resolveMain(__dirname + '/wrap.js')
2426
var main = resolveMain(script)
2527
var cfg = require('./cfg')(main, opts)
2628
var log = require('./log')(cfg)
@@ -57,8 +59,8 @@ module.exports = function(wrapper, script, scriptArgs, opts) {
5759
* Run the wrapped script.
5860
*/
5961
function start() {
60-
var wrapperArgs = [script].concat(scriptArgs)
61-
child = fork(wrapper, wrapperArgs, {
62+
var cmd = nodeArgs.concat(wrapper, script, scriptArgs)
63+
child = fork(cmd[0], cmd.slice(1), {
6264
cwd: process.cwd(),
6365
env: process.env
6466
})

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
"test": "tap test/*.js"
3131
},
3232
"dependencies": {
33-
"commander": "^2.8.1",
3433
"dateformat": "~1.0.4-1.2.3",
3534
"dynamic-dedupe": "^0.2.0",
3635
"filewatcher": "~1.1.1",
36+
"minimist": "^1.1.3",
3737
"node-notifier": "^4.0.2",
3838
"resolve": "^1.0.0"
3939
},

test/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ function run(cmd, done) {
7575

7676
test('should pass unknown args to node binary', function(t) {
7777
spawn('--expose_gc gc.js foo', function(out) {
78-
t.is(out, 'foo function')
78+
t.is(out.trim(), 'foo function')
7979
return { exit: t.end.bind(t) }
8080
})
8181
})

0 commit comments

Comments
 (0)