在node.js中展开/parsing〜

我是nodejs的新手。 节点可以parsing〜(unix主目录)example〜foo,〜bar到/ home / foo,/ home / bar

 > path.normalize('〜mvaidya') 
 '〜mvaidya'
 > path.resolve('〜mvaidya') 
 '/家/ mvaidya /〜mvaidya'
 > 

这个回应是错误的; 我希望〜mvaidya必须解除/ home / mvaidya

正如QZ Support所述,您可以在OSX / Linux上使用process.env.HOME 。 这是一个简单的函数,没有依赖关系。

 const path = require('path'); function resolveHome(filepath) { if (filepath[0] === '~') { return path.join(process.env.HOME, filepath.slice(1)); } return filepath; } 

这个NodeJS库通过asynchronouscallback来支持这个function。 它使用etc-passswd lib来执行扩展,因此可能不能移植到Windows或其他非Unix / Linux平台。

如果你只想扩展当前用户的主页,那么这个轻量级的API可能是你所需要的。 这也是同步在大多数平台上使用和工作的简单方法。

例子:

  expandHomeDir = require('expand-home-dir') expandHomeDir('~') // => /Users/azer expandHomeDir('~/foo/bar/qux.corge') // => /Users/azer/foo/bar/qux.corge 

另一个相关的lib是home-dir,它在任何平台上返回一个用户的主目录:

 https://www.npmjs.org/package/home-dir 

这是不是在节点的原因是因为~扩展是一个bash (或壳)具体的事情。 目前还不清楚如何正确地逃避。 看到这个评论的细节。

有各种图书馆提供这个,大多数只是几行代码…

所以你可能想自己做这个。

今天我使用了https://github.com/sindresorhus/untildify

我在OSX上运行,运行良好。