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

cdmah0mi  于 5个月前  发布在  Node.js
关注(0)|答案(2)|浏览(45)

我有以下代码块:

#!/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位置的绝对路径。
显然,为了测试,我已经硬编码了它,但我想做的是从process.cwd()获取到/tmp/的绝对路径。
所以,我想要的是,如果我在/home/otis中运行脚本,../../../../tmp/${dirName}将变成../../tmp/${dirName},所以我需要基于process.cwd()生成路径
有什么想法吗?

hs1rzwqc

hs1rzwqc1#

你可以使用path.resolve来获取绝对路径。
例如

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

字符串
或者可以使用path.relative( from, to ),它给出了fromto之间的相对路径
对你来说,我想是的
path.relative( process.cwd(), "../../../../tmp/" )

uqcuzwp8

uqcuzwp82#

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

require('os').tmpdir()

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

相关问题