Библиотека Password-hash работает в среде Node.js, поэтому первым обязательным требованием является установленный runtime JavaScript вне браузера.
После установки необходимо убедиться, что Node.js доступен в системе:
node -v
Пример результата:
v22.3.0
Версия Node.js имеет значение, поскольку современные библиотеки используют:
Для большинства современных библиотек рекомендуется:
Node.js 18+
Оптимально использовать:
Node.js 20 LTS
или новее.
npm устанавливается автоматически вместе с Node.js.
Проверка доступности npm:
npm -v
Пример:
10.8.1
npm используется для:
Минимальная проверка рабочего окружения:
node -v
npm -v
Если обе команды выводят версии — среда готова.
Перед установкой библиотеки создаётся отдельный проект.
mkdir password-hash-project
Переход в каталог:
cd password-hash-project
Создание файла package.json:
npm init -y
После выполнения появляется базовая конфигурация проекта:
{
"name": "password-hash-project",
"version": "1.0.0",
"main": "index.js",
"license": "ISC"
}
Файл package.json содержит:
Без него npm не сможет корректно управлять пакетами.
После инициализации структура выглядит следующим образом:
password-hash-project/
│
├── package.json
└── package-lock.json
После установки зависимостей появится:
node_modules/
Установка выполняется через npm:
npm install password-hash
После установки npm:
node_modules;package.json;package-lock.json.После установки в package.json появляется раздел:
{
"dependencies": {
"password-hash": "^1.2.2"
}
}
^Символ ^ означает:
разрешены минорные обновления
Например:
1.2.2 → 1.3.0
Но не:
2.0.0
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
Node.js поддерживает два типа модулей:
Password-hash чаще используется через CommonJS.
const passwordHash = require('password-hash');
Для использования 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
выполняет несколько действий:
package.json;node_modules;По умолчанию npm использует официальный registry:
https://registry.npmjs.org/
Именно оттуда загружается Password-hash.
Каталог node_modules содержит:
Пример структуры:
node_modules/
└── password-hash/
Каталог может содержать тысячи файлов.
Поэтому обычно добавляют .gitignore:
node_modules/
Зависимости восстанавливаются командой:
npm install
npx позволяет запускать пакеты без глобальной
установки.
Проверка версии:
npx --version
Хотя Password-hash обычно не используется через CLI, понимание
npx важно для работы с экосистемой npm.
Иногда возникают проблемы с повреждённым кэшем.
Очистка:
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
Во многих проектах используется разделение зависимостей:
Password-hash относится к production-зависимостям, поскольку используется в рабочем коде приложения.
Используются в production:
{
"dependencies": {
"password-hash": "^1.2.2"
}
}
Используются только при разработке:
{
"devDependencies": {
"nodemon": "^3.0.0"
}
}
Для автоматического перезапуска Node.js-приложения:
npm install --save-dev nodemon
Запуск:
npx nodemon index.js
В package.json можно добавить:
{
"scripts": {
"start": "node index.js"
}
}
Запуск:
npm start
После установки Node.js команды node и npm
должны быть доступны глобально.
Если терминал выводит:
command not found
или:
'node' is not recognized
это означает проблему с PATH.
Linux/macOS:
which node
Windows:
where node
Для переключения между версиями Node.js используются:
Проверка установленных версий:
nvm list
Установка новой версии:
nvm install 20
Использование версии:
nvm use 20
Старые версии Node.js могут не поддерживать:
Password-hash тесно связан с криптографией.
Проверка встроенного модуля:
const crypto = require('crypto');
console.log(crypto);
Особенности:
Часто используется:
Имеет Unix-подобное окружение и хорошую совместимость с Node.js.
На Windows иногда блокируются npm-скрипты.
Ошибка:
running scripts is disabled
Исправление:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Диагностика:
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 config list
Основной файл:
.npmrc
Он может содержать:
Минимальный тест:
const passwordHash = require('password-hash');
const hash = passwordHash.generate('secret');
console.log(hash);
const passwordHash = require('password-hash');
const password = 'secret';
const hash = passwordHash.generate(password);
const result = passwordHash.verify(password, hash);
console.log(result);
Ожидаемый результат:
true
Ошибка прав доступа:
EACCES: permission denied
Часто возникает в Linux/macOS при глобальной установке.
Использование nvm устраняет большинство проблем с
правами.
Причины:
Проверка:
npm install
Некоторые пакеты требуют определённую версию Node.js:
Expected version >=18
Решение:
node -v
и обновление Node.js.
npm ls
Иногда помогает полная переустановка зависимостей.
Linux/macOS:
rm -rf node_modules
Windows PowerShell:
Remove-Item -Recurse -Force node_modules
После этого:
npm install
Файл:
.nvmrc
позволяет зафиксировать версию Node.js:
20
Активация:
nvm use
project/
│
├── node_modules/
├── package.json
├── package-lock.json
├── .gitignore
└── index.js
node_modules/
.env
Полный чек-лист:
Node.js установлен
npm установлен
package.json создан
password-hash установлен
index.js создан
node index.js выполняется без ошибок