NodeJS中的路径操作

时间:2017-02-24 09:49:55

标签: node.js path

我想通过修改现有路径的副本来创建一些新路径。 Node路径对象看起来非常基本。我可以看到默认路径对象的可能性,但看起来很笨拙。

改变的最佳方式是什么

a/path/to/file.json

进入另外两条路径

a/path/to/file-original.json

a/path/to/file-comparand.json

路径可能是相对的或绝对的,所以我希望能够让我更改name而不必担心rootdir个对象。< / p>

是否有高级路径模块或其他我错过的东西?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

假设没有一个库可以为您实现此功能,使用path.parse并不一定要笨重 - 我实际上认为使用它可能是最干净的方法:

let { dir, name, ext } = path.parse("a/path/to/file.json");
let path1 = path.join(dir, name + "-original" + ext);
let path2 = path.join(dir, name + "-comarand" + ext);

该代码段使用destructuring,因此您需要最新版本的Node才能运行它。也就是说,您可以通过正常访问解析的路径对象来替换它:

let p = path.parse("a/path/to/file.json");
let path1 = path.join(p.dir, p.name + "-original" + p.ext);
let path2 = path.join(p.dir, p.name + "-comarand" + p.ext);

没那么糟糕!

如果这是您在项目中经常进行的事情,那么将其提升为实用功能就不会太难了,如下所示:

function suffixFilename(path, suffix) {
    let { dir, name, ext } = path.parse(path);
    return path.join(dir, name + "-" + suffix + ext);
}

let path1 = suffixFilename("a/path/to/file.json", "original");
let path2 = suffixFilename("a/path/to/file.json", "comparand");

答案 1 :(得分:0)

除了@ joe的回答,这里还有一个更简单的版本需要modify-filename包。

var modifyFilename = require('modify-filename');
const originalPath = "a/path/to/file.json";

const originalFilename = modifyFilename(originalPath, (name, ext) => {
    return `${name}-original${ext}`;
});

const comparandFilename = modifyFilename(originalPath, (name, ext) => {
    return `${name}-comparand${ext}`;
});