2012-05-30 7 views
76

¿Cuál es la diferencia (si existe) entre path.normalize(your_path) y path.resolve(your_path)?Diferencia entre path.normalize y path.resolve en Node.js

path.resolve(...) Puedo aceptar múltiples argumentos, pero ¿el comportamiento con un solo argumento es el mismo que llamar path.normalize()?

EDIT: Si se supone que deben comportarse de la misma manera, no entiendo el propósito de exponer la función path.normalize(...) cuando se puede simplemente pasar el camino hacia path.resolve(...) O, tal vez, es para fines de documentación. Por ejemplo, se dice en la documentación de path.resolve(...):

... La trayectoria resultante se normaliza, y ...

La exposición de la path.normalize(...) hace que sea más fácil de explicar lo que significa "normalizados"? ?? No se.

Respuesta

164

path.normalize Elimina el . adicional, .., etc. en la ruta. path.resolve resuelve una ruta en una ruta absoluta. Ejemplo (mi directorio de trabajo actual era /Users/mtilley/src/testing):

> path.normalize('../../src/../src/node') 
'../../src/node' 
> path.resolve('../../src/../src/node') 
'/Users/mtilley/src/node' 

En otras palabras, path.normalize es "¿Cuál es el camino más corto que puedo tomar que me llevará al mismo lugar que la entrada", mientras que path.resolve es "¿Qué es mi destino si tomo este camino ".

+0

Agradable. ¡Gracias por la respuesta! Esto me ha estado molestando por un tiempo. Los documentos del nodo, aunque son bastante agradables, me dejaron un poco perplejo en este caso. – BMiner

+13

También tenga en cuenta que path.normalize puede manejar cualquier ruta que desee normalizar y significa solo la manipulación de cadena de la ruta, mientras que path.resolve usará el sistema de archivos y el directorio actual para resolver la ruta a una ruta absoluta. Esto hace que se comporten de forma bastante diferente ya que path.normalize se puede usar en una ruta dentro de un archivo tar, en un sistema de archivos remoto, o algo completamente abstracto. – Nakedible

+0

¿En qué se diferencian de path.join? – Vijey

4

A partir de los documentos:

Otra forma de pensar de la determinación es como una secuencia de comandos cd en una cáscara.

Enlaces a path.resolve y path.normalize en la documentación. En general, no quiero solo proporcionar enlaces en una respuesta, pero los documentos de Node.js son muy decentes.

+0

Supongo que no entiendo el propósito de exponer la función normalizar (...) cuando simplemente puede pasar la ruta a path.resolve (...) – BMiner

+6

La ruta que está normalizando podría no existir realmente en el sistema de archivos, por ejemplo es posible que esté normalizando una ruta a un archivo que va a crear, o puede que esté normalizando rutas de URL relativas. – lanzz

+0

En realidad, tampoco sé por qué usaría normalizar por sobre resolución. – Pickels