Je suis nouveau sur nodejs. Le noeud peut-il résoudre un exemple (répertoire de départ unix) ~ foo, ~ bar En/home/foo,/home/bar
path.normalize ('~ mvaidya') '~ mvaidya' > path.resolve ('~ mvaidya') '/ home/mvaidya/~ mvaidya' >
Cette réponse est fausse. J'espère que ~ mvaidya doit résoudre/home/mvaidya
Comme QZ Support remarque, vous pouvez utiliser process.env.HOME
sous OSX/Linux. Voici une fonction simple sans dépendance.
const path = require('path');
function resolveHome(filepath) {
if (filepath[0] === '~') {
return path.join(process.env.HOME, filepath.slice(1));
}
return filepath;
}
La raison pour laquelle ceci n'est pas dans Node est parce que ~
expansion est une chose spécifique à bash
(ou Shell). On ne sait pas comment y échapper correctement. Voir ce commentaire pour plus de détails.
Il existe différentes bibliothèques offrant cela, la plupart quelques lignes de code ...
https://npm.im/untildify ; ne fait pas beaucoup plus que os.homedir()
, voir index.js # L10
https://npm.im/expand-tilde ; utilise fondamentalement os-homedir
pour obtenir le même résultat, voir index.js # L12
https://npm.im/tilde-expansion ; ceci utilise etc-passwd
et ne semble donc pas très multi-plateforme, voir index.js # L21
Donc, vous voulez probablement le faire vous-même.
Cette bibliothèque NodeJS prend en charge cette fonctionnalité via un rappel async. Il utilise la bibliothèque etc-passswd pour effectuer l’extension. Il n’est donc probablement pas portable vers Windows ou d’autres plates-formes autres que Unix/Linux.
Si vous souhaitez uniquement développer la page d'accueil de l'utilisateur actuel, cette API plus légère peut suffire. Il est également synchrone, donc plus simple à utiliser et fonctionne sur la plupart des plateformes.
Exemples:
expandHomeDir = require('expand-home-dir')
expandHomeDir('~')
// => /Users/azer
expandHomeDir('~/foo/bar/qux.corge')
// => /Users/azer/foo/bar/qux.corge
Une autre bibliothèque associée est home-dir, qui renvoie le répertoire de base d'un utilisateur sur n'importe quelle plate-forme:
https://www.npmjs.org/package/home-dir
J'en avais juste besoin aujourd'hui et la seule commande moins évasive était celle de os
.
$ node
> os.homedir()
'/Users/mdesales'
Je ne suis pas sûr que votre syntaxe soit correcte car ~ est déjà un résultat pour le répertoire d'accueil de l'utilisateur actuel
Aujourd'hui, j'ai utilisé https://github.com/sindresorhus/untildify
Je cours sur OSX, a bien fonctionné.