EXEC的NodeJS()用于Windows和Ubuntu两个命令

问题描述 投票:2回答:3

使用的NodeJS,NPM和咕嘟咕嘟。

我想建立一个一口任务运行JSDoc是在Ubuntu和Windows的作品。

这适用于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);
  });
};

不用说,对其他既不作品。如何解决等这类问题?

node.js windows ubuntu npm gulp
3个回答
4
投票

尝试使用path.resolve,这应该为您提供完整的文件路径,与平台无关。


3
投票

节点process.platform,这......“返回一个字符串,对在其Node.js的进程正在运行的操作系统平台,例如darwinfreebsdlinuxsunoswin32

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

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

return function(cb) {
  if (process.platform === 'win32') {
    // Windows OS
  } else {
    // everything else
  }
};

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);
  });
};
© www.soinside.com 2019 - 2024. All rights reserved.