在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://npm.im/untildify ; 没有比
os.homedir()
做得多,见index.js#L10 -
https://npm.im/expand-tilde ; 基本上使用
os-homedir
来实现,见index.js#L12 -
https://npm.im/tilde-expansion ; 这个使用
etc-passwd
所以看起来不是很跨平台,见index.js#L21
所以你可能想自己做这个。
今天我使用了https://github.com/sindresorhus/untildify
我在OSX上运行,运行良好。