Windows和Ubuntu的NodeJS exec()命令

时间:2016-06-30 22:57:07

标签: node.js windows ubuntu npm gulp

使用NodeJS,NPM和Gulp。

我想构建一个gulp任务来运行适用于Ubuntu和Windows的JSDoc。

这适用于Ubuntu ......

var exec = require('child_process').exec;

return function(cb) {
  exec('node node_modules/.bin/jsdoc -c jsdoc-conf.json', function(err, stdout, stderr) {
    cb(err);
  });
};

这适用于Windows ...

var exec = require('child_process').exec;

return function(cb) {
  exec('node_modules\\.bin\\jsdoc -c jsdoc-conf.json', function(err, stdout, stderr) {
    cb(err);
  });
};

毋庸置疑,两者都不起作用。其他人如何解决这类问题?

3 个答案:

答案 0 :(得分:4)

尝试使用path.resolve,无论平台如何,都应为您提供文件的完整路径。

答案 1 :(得分:2)

节点有process.platform,其中......“返回一个字符串,用于标识正在运行Node.js进程的操作系统平台。例如darwinfreebsd,{{ 1}},linuxsunos

https://nodejs.org/api/process.html#process_process_platform

win32

答案 2 :(得分:1)

使用path.resolve

const exec = require('child_process').exec;
const path = require('path');

return function(cb) {
  let command = `node ${path.resolve('node_modules/.bin/jsdoc')} -c jsdoc-conf.json`;

  exec(command, function(err, stdout, stderr) {
    cb(err);
  });
};