在NodeJS中的path操作

我想通过修改现有path的副本来创build一些新的path。 节点path对象看起来非常基本。 我可以看到如何使用默认的path对象,但它似乎笨重。

什么是最好的方式来改变

a/path/to/file.json

进入另外两条path

a/path/to/file-original.json

a/path/to/file-comparand.json

path可以是相对的或绝对的,所以我希望能够让我改变名称而不必担心根目录或目录对象。

是否有高级path模块或其他我缺less的东西?

谢谢你的帮助

假设没有一个库会为你实现这个function,使用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); 

该代码片段使用解构 ,所以你需要一个最新版本的节点来运行它。 也就是说,你可以通过正常访问parsing的path对象来replace它:

 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"); 

除了@ 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}`; });