Разница между path.normalize и path.resolve в Node.js

В чем разница (если есть) между path.normalize(your_path) и path.resolve(your_path)?

Я знаю, что path.resolve(...) может принимать несколько аргументов, но поведение с одним аргументом такое же, как вызов path.normalize()?

EDIT: Если они должны вести себя одинаково, я не понимаю цели раскрытия функции path.normalize(...), когда вы можете просто пройти путь в path.resolve(...) Или, может быть, это для целей документации. Например, они говорят в документации для path.resolve(...):

... Результирующий путь нормализуется и...

Воздействие path.normalize(...) упрощает объяснение того, что означает "нормализованный"? Я не знаю.

Ответ 1

path.normalize Возвращает лишние ., .. и т.д. в пути. path.resolve разрешает путь в абсолютный путь. Пример (мой текущий рабочий каталог был /Users/mtilley/src/testing):

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

Другими словами, path.normalize: "Каков самый короткий путь, который я могу принять, который приведет меня к тому же месту, что и вход", а path.resolve - "Каков мой пункт назначения, если я возьму этот путь".

Ответ 2

Из документов:

Другой способ думать о решении - это последовательность команд cd в оболочке.

Ссылки на path.resolve и path.normalize в документации. В основном я не хочу просто предоставлять ссылки в ответе, но документы Node.js очень приличные.