Nodejs获取相对于process.cwd()的绝对路径

时间:2016-09-23 10:32:09

标签: node.js process relative-path absolute-path

所以我有以下代码块:

#!/usr/bin/env node

const path = require('path');
const yargs = require('yargs').argv;
const ghpages = require('gh-pages');
const randomstring = require("randomstring");

const dirName = randomstring.generate({
  length: 12,
  charset: 'alphabetic'
});

console.log(__dirname, dirName, process.cwd(), yargs.directory, yargs.branch);

ghpages.publish(path.join(process.cwd(), yargs.directory), {
  branch: yargs.branch,
  clone: `../../../../tmp/${dirName}`
}, () => {
  console.log('removing');
});

这需要clone位置的绝对路径。

显然我目前已对其进行硬编码以进行测试,但我想要做的是从/tmp/获取process.cwd()的绝对路径。

所以基本上我想要的是如果我在/home/otis ../../../../tmp/${dirName}中运行脚本将成为../../tmp/${dirName}所以我需要根据process.cwd()

有什么想法吗?

干杯/

2 个答案:

答案 0 :(得分:3)

使用相对路径,特别是系统文件夹的不良做法。如果项目位置将被更改,您还必须更新代码。 如果需要系统临时目录,可以使用以下命令:

require('os').tmpdir()

根据当前的操作系统,它将返回临时文件夹的正确绝对路径。

答案 1 :(得分:2)

您可以使用path.resolve获取绝对路径。

e.g。

path.resolve('../src/tmp')
// '/Users/yourusername/src/tmp'

或者您可以使用path.relative( from, to )来提供fromto之间的相对路径

所以在你的情况下,我猜是

path.relative( process.cwd(), "../../../../tmp/" )