【问题标题】:Nodejs get absolute path relative to process.cwd()Nodejs 获取相对于 process.cwd() 的绝对路径
【发布时间】:2016-09-23 10:32:09
【问题描述】:

所以我有以下代码块:

#!/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() 生成路径

有什么想法吗?

干杯/

【问题讨论】:

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


    【解决方案1】:

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

    例如

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

    或者你可以使用path.relative( from, to ),它给出了fromto之间的相对路径

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

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

    【讨论】:

    • 你能举个例子来自process.cwd()/tmp是系统tmp文件夹。
    • @OtisWright absolute path relative 是什么意思?既然你有绝对 url(process.cwd 已经给出了绝对路径)为什么你需要一个相对的?
    • 示例添加到我的意思的问题。
    【解决方案2】:

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

    require('os').tmpdir()
    

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

    【讨论】:

    • 我明白,但 clone 参数需要一个相对路径,这意味着绝对路径不起作用。
    • 然后,正如@AvraamMavridis 建议的那样,您可以使用require('path').relative(process.cwd(), require('os').tmpdir())
    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 2015-03-03
    • 2011-08-11
    • 2010-09-21
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多