Требования: Node.js и npm

Библиотека Password-hash работает в среде Node.js, поэтому первым обязательным требованием является установленный runtime JavaScript вне браузера.

Проверка установленного Node.js

После установки необходимо убедиться, что Node.js доступен в системе:

node -v

Пример результата:

v22.3.0

Версия Node.js имеет значение, поскольку современные библиотеки используют:

  • ES-модули;
  • async/await;
  • встроенный криптографический API;
  • современные алгоритмы хеширования;
  • новые возможности V8.

Для большинства современных библиотек рекомендуется:

Node.js 18+

Оптимально использовать:

Node.js 20 LTS

или новее.


Установка npm

npm устанавливается автоматически вместе с Node.js.

Проверка доступности npm:

npm -v

Пример:

10.8.1

npm используется для:

  • установки Password-hash;
  • управления зависимостями;
  • обновления пакетов;
  • фиксации версий;
  • запуска скриптов.

Проверка окружения

Минимальная проверка рабочего окружения:

node -v
npm -v

Если обе команды выводят версии — среда готова.


Создание проекта Node.js

Перед установкой библиотеки создаётся отдельный проект.

Создание директории

mkdir password-hash-project

Переход в каталог:

cd password-hash-project

Инициализация npm-проекта

Создание файла package.json:

npm init -y

После выполнения появляется базовая конфигурация проекта:

{
  "name": "password-hash-project",
  "version": "1.0.0",
  "main": "index.js",
  "license": "ISC"
}

Назначение package.json

Файл package.json содержит:

  • имя проекта;
  • версию;
  • зависимости;
  • npm-скрипты;
  • настройки модулей;
  • информацию о сборке.

Без него npm не сможет корректно управлять пакетами.


Структура проекта

После инициализации структура выглядит следующим образом:

password-hash-project/
│
├── package.json
└── package-lock.json

После установки зависимостей появится:

node_modules/

Установка библиотеки Password-hash

Установка выполняется через npm:

npm install password-hash

После установки npm:

  • скачивает пакет;
  • создаёт каталог node_modules;
  • обновляет package.json;
  • фиксирует версии в package-lock.json.

Как npm хранит зависимости

После установки в package.json появляется раздел:

{
  "dependencies": {
    "password-hash": "^1.2.2"
  }
}

Значение символа ^

Символ ^ означает:

разрешены минорные обновления

Например:

1.2.2 → 1.3.0

Но не:

2.0.0

package-lock.json

npm автоматически создаёт файл:

package-lock.json

Он фиксирует:

  • точные версии;
  • дерево зависимостей;
  • вложенные пакеты;
  • контроль целостности.

Это обеспечивает одинаковое окружение на разных машинах.


Установка определённой версии

Иногда требуется зафиксировать конкретную версию библиотеки:

npm install password-hash@1.2.2

Локальная и глобальная установка

Password-hash устанавливается локально:

npm install password-hash

Локальная установка означает:

  • пакет доступен только внутри проекта;
  • зависимости не конфликтуют между проектами;
  • версии изолированы.

Глобальная установка для библиотек не рекомендуется:

npm install -g password-hash

Проверка установленного пакета

Проверка списка зависимостей:

npm list

Проверка конкретного пакета:

npm list password-hash

Пример:

password-hash-project
└── password-hash@1.2.2

CommonJS и ES Modules

Node.js поддерживает два типа модулей:

  • CommonJS;
  • ES Modules.

Password-hash чаще используется через CommonJS.

CommonJS

const passwordHash = require('password-hash');

Включение ES Modules

Для использования import в package.json добавляется:

{
  "type": "module"
}

После этого можно писать:

import passwordHash from 'password-hash';

Создание первого файла

Создание файла:

index.js

Минимальная проверка библиотеки:

const passwordHash = require('password-hash');

console.log(passwordHash);

Запуск:

node index.js

Принцип работы npm install

Команда:

npm install

выполняет несколько действий:

  1. Читает package.json;
  2. Определяет зависимости;
  3. Загружает пакеты из npm registry;
  4. Проверяет совместимость;
  5. Создаёт node_modules;
  6. Обновляет lock-файл.

npm registry

По умолчанию npm использует официальный registry:

https://registry.npmjs.org/

Именно оттуда загружается Password-hash.


node_modules

Каталог node_modules содержит:

  • установленную библиотеку;
  • вложенные зависимости;
  • служебные файлы пакетов.

Пример структуры:

node_modules/
└── password-hash/

Почему node_modules не добавляют в Git

Каталог может содержать тысячи файлов.

Поэтому обычно добавляют .gitignore:

node_modules/

Зависимости восстанавливаются командой:

npm install

Использование npx

npx позволяет запускать пакеты без глобальной установки.

Проверка версии:

npx --version

Хотя Password-hash обычно не используется через CLI, понимание npx важно для работы с экосистемой npm.


Очистка npm cache

Иногда возникают проблемы с повреждённым кэшем.

Очистка:

npm cache clean --force

Обновление зависимостей

Проверка устаревших пакетов:

npm outdated

Обновление:

npm update

Удаление библиотеки

Удаление Password-hash:

npm uninstall password-hash

npm автоматически:

  • удаляет пакет;
  • обновляет package.json;
  • обновляет package-lock.json.

Проверка безопасности зависимостей

npm умеет анализировать уязвимости.

Проверка:

npm audit

Автоматическое исправление:

npm audit fix

Режим разработки

Во многих проектах используется разделение зависимостей:

  • production dependencies;
  • dev dependencies.

Password-hash относится к production-зависимостям, поскольку используется в рабочем коде приложения.


Разница между dependencies и devDependencies

dependencies

Используются в production:

{
  "dependencies": {
    "password-hash": "^1.2.2"
  }
}

devDependencies

Используются только при разработке:

{
  "devDependencies": {
    "nodemon": "^3.0.0"
  }
}

Использование nodemon

Для автоматического перезапуска Node.js-приложения:

npm install --save-dev nodemon

Запуск:

npx nodemon index.js

Настройка npm scripts

В package.json можно добавить:

{
  "scripts": {
    "start": "node index.js"
  }
}

Запуск:

npm start

Переменная PATH

После установки Node.js команды node и npm должны быть доступны глобально.

Если терминал выводит:

command not found

или:

'node' is not recognized

это означает проблему с PATH.


Проверка расположения Node.js

Linux/macOS:

which node

Windows:

where node

Менеджеры версий Node.js

Для переключения между версиями Node.js используются:

  • nvm;
  • fnm;
  • Volta.

Использование nvm

Проверка установленных версий:

nvm list

Установка новой версии:

nvm install 20

Использование версии:

nvm use 20

Почему версия Node.js критически важна

Старые версии Node.js могут не поддерживать:

  • современные алгоритмы;
  • криптографические API;
  • новые синтаксические конструкции;
  • актуальные стандарты безопасности.

Проверка поддержки crypto

Password-hash тесно связан с криптографией.

Проверка встроенного модуля:

const crypto = require('crypto');

console.log(crypto);

Различия платформ

Windows

Особенности:

  • PowerShell;
  • CMD;
  • возможные проблемы с правами доступа.

Linux

Часто используется:

  • bash;
  • zsh;
  • пакетные менеджеры.

macOS

Имеет Unix-подобное окружение и хорошую совместимость с Node.js.


Использование PowerShell Execution Policy

На Windows иногда блокируются npm-скрипты.

Ошибка:

running scripts is disabled

Исправление:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Проверка доступа к npm registry

Диагностика:

npm ping

Успешный ответ:

pong

Работа через прокси

Для корпоративных сетей иногда требуется настройка proxy:

npm config set proxy http://proxy.company.com:8080

HTTPS:

npm config set https-proxy http://proxy.company.com:8080

Просмотр npm-конфигурации

npm config list

Где npm хранит конфигурацию

Основной файл:

.npmrc

Он может содержать:

  • registry;
  • proxy;
  • токены доступа;
  • настройки кэша.

Проверка установленной библиотеки в коде

Минимальный тест:

const passwordHash = require('password-hash');

const hash = passwordHash.generate('secret');

console.log(hash);

Проверка работоспособности hash verify

const passwordHash = require('password-hash');

const password = 'secret';

const hash = passwordHash.generate(password);

const result = passwordHash.verify(password, hash);

console.log(result);

Ожидаемый результат:

true

Типичные проблемы установки

EACCES

Ошибка прав доступа:

EACCES: permission denied

Часто возникает в Linux/macOS при глобальной установке.


Решение через nvm

Использование nvm устраняет большинство проблем с правами.


Ошибка MODULE_NOT_FOUND

Причины:

  • пакет не установлен;
  • неправильный путь;
  • запуск вне директории проекта.

Проверка:

npm install

Ошибка incompatible engine

Некоторые пакеты требуют определённую версию Node.js:

Expected version >=18

Решение:

node -v

и обновление Node.js.


Проверка дерева зависимостей

npm ls

Удаление node_modules

Иногда помогает полная переустановка зависимостей.

Linux/macOS:

rm -rf node_modules

Windows PowerShell:

Remove-Item -Recurse -Force node_modules

После этого:

npm install

Использование .nvmrc

Файл:

.nvmrc

позволяет зафиксировать версию Node.js:

20

Активация:

nvm use

Рекомендованная структура проекта

project/
│
├── node_modules/
├── package.json
├── package-lock.json
├── .gitignore
└── index.js

Минимальный .gitignore

node_modules/
.env

Проверка готовности окружения

Полный чек-лист:

Node.js установлен
npm установлен
package.json создан
password-hash установлен
index.js создан
node index.js выполняется без ошибок