node.js - node - npm path
Expandir/Resolver ~ en node.js (5)
Esta biblioteca NodeJS es compatible con esta función a través de una devolución de llamada asíncrona. Utiliza la lib-passswd lib para realizar la expansión, por lo que probablemente no sea portátil para Windows u otras plataformas que no sean Unix / Linux.
Si solo desea expandir la página de inicio para el usuario actual, entonces esta API más liviana puede ser todo lo que necesita. También es sincrónico, es más fácil de usar y funciona en la mayoría de las plataformas.
Ejemplos:
expandHomeDir = require(''expand-home-dir'')
expandHomeDir(''~'')
// => /Users/azer
expandHomeDir(''~/foo/bar/qux.corge'')
// => /Users/azer/foo/bar/qux.corge
Otra lib relacionada es home-dir que devuelve el directorio de inicio de un usuario en cualquier plataforma:
https://www.npmjs.org/package/home-dir
Soy nuevo en nodejs. ¿Puede el nodo resolver ~ (directorio de inicio de Unix) ejemplo ~ foo, ~ barra de / home / foo, / home / bar
> path.normalize(''~mvaidya'') ''~mvaidya'' > path.resolve(''~mvaidya'') ''/home/mvaidya/~mvaidya'' >
Esta respuesta es incorrecta; Espero que ~ mvaidya deba resolv / home / mvaidya
Hoy he usado https://github.com/sindresorhus/untildify
Me ejecuto en OSX, funcionó bien.
La razón por la que esto no está en el nodo es porque ~
expansión es algo específico de bash
(o shell). No está claro cómo escapar adecuadamente. Ver este comentario para más detalles.
Hay varias bibliotecas que ofrecen esto, la mayoría de unas pocas líneas de código ...
https://npm.im/untildify ; no hace mucho más que
os.homedir()
, vea index.js#L10https://npm.im/expand-tilde ; básicamente usa
os-homedir
para lograr lo mismo, vea index.js#L12https://npm.im/tilde-expansion ; esto usa
etc-passwd
por lo que no parece muy cruzado, ver index.js#L21
Entonces probablemente quieras hacer esto tú mismo.
Solo lo necesitaba hoy y el único comando menos evasivo era el del os
.
$ node
> os.homedir()
''/Users/mdesales''
No estoy seguro si su sintaxis es correcta ya que ~ ya es un resultado para el directorio de inicio del usuario actual
Como notó QZ Support , puede usar process.env.HOME
en OSX / Linux. Aquí hay una función simple sin dependencias.
const path = require(''path'');
function resolveHome(filepath) {
if (filepath[0] === ''~'') {
return path.join(process.env.HOME, filepath.slice(1));
}
return filepath;
}