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

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

我有以下代码块:

#!/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()

生成路径

有什么想法吗?

node.js process relative-path absolute-path
2个回答
6
投票

您可以使用

path.resolve
来获取绝对路径。

例如

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

或者您可以使用

path.relative( from, to )
给出
from
to

之间的相对路径

所以就你的情况而言,我想是的

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


3
投票

使用相对路径是不好的做法,尤其是对于系统文件夹。如果项目位置发生更改,您也必须更新代码。 如果您需要系统临时目录,可以使用以下内容:

require('os').tmpdir()

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

© www.soinside.com 2019 - 2024. All rights reserved.