在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}`; });