2012-03-11 20 views
5

que estoy haciendo una operación de base donde comienzo de un directorio dado, y atravesar el sistema de archivos hasta que llegué a la raíz. En Linux/Mac, la raíz es obviamente / y en Windows puede ser C:\ u otra letra de unidad por supuesto. Mi pregunta es si Node.js puede o no identificar el directorio raíz del sistema de archivos.La identificación de la raíz del sistema de archivos con Node.js

Actualmente, estoy recurriendo simplemente comprobando el último directorio en contra path.normalize(dir + "/../") para ver si deja de cambiar. ¿Hay una propiedad/método process disponible? Tal vez un módulo?

+1

Si se ejecuta en Windows, ¿qué letra de unidad desea? La unidad del sistema? Unidad que contiene el script en ejecución? Unidad que contiene otro archivo? ¿Una letra de unidad codificada? – icktoofay

+0

Creo que "/" funciona en ambas plataformas. ¿Con qué propósito lo usarías? – Domenic

+0

En Windows: Inicio> Ejecutar> cmd.exe. 'C: \ Users \ Domenic> cd /'. Me lleva directamente a 'C: \>'. – Domenic

Respuesta

2

¿Esto no funcionaría?

var path = require("path"); 
var os = require("os"); 
var root = (os.platform == "win32") ? process.cwd().split(path.sep)[0] : "/" 
+1

Vale la pena mencionar que en el Nodo 0.12.4 (no sé sobre otras versiones) necesita hacer 'os.platform' es una función, entonces necesitas hacer 'os.platform()' – Tyblitz

+0

en v6.9.4 es os.platform() –

1

No hay nada especial que Node.js tiene que hacer, la respuesta es una expresión regular simple:

/^([^\\/]*[\\/]).*/.test(process.cwd()) 
var root = RegExp.$1; 

Eso ayudaría a la raíz de la caquexia crónica para Windows y Linux.

+2

[RegExp. $ X están en desuso] (https://developer.mozilla.org/en/JavaScript/Reference/Deprecated_Features#RegExp_Properties) – Saxoier

+0

/^([^\\/]*[\\/]).*/ .exec (process.cwd()) [1] es mucho más fácil de leer –

Cuestiones relacionadas