Для установки библиотеки password-hash через npm
используется стандартная команда:
npm install password-hash
После завершения установки пакет автоматически добавляется в раздел
dependencies файла package.json.
Пример:
{
"dependencies": {
"password-hash": "^1.2.2"
}
}
Проверка успешной установки выполняется через содержимое директории
node_modules либо командой:
npm list password-hash
Результат:
└── password-hash@1.2.2
Если проект ещё не содержит файла package.json,
предварительно выполняется инициализация:
npm init -y
После этого структура проекта обычно выглядит следующим образом:
project/
├── node_modules/
├── package.json
├── package-lock.json
└── index.js
Библиотека поддерживает подключение через require.
Пример:
const passwordHash = require('password-hash');
После импорта становятся доступны основные методы:
generate()verify()isHashed()Проверка работоспособности библиотеки обычно начинается с создания хеша пароля.
const passwordHash = require('password-hash');
const hashedPassword = passwordHash.generate('myPassword');
console.log(hashedPassword);
Пример результата:
sha1$3fA1x$8d0f2a0f2f3d5c1e2f6f...
Структура строки включает:
алгоритм$salt$hash
После установки библиотеки выполняется сравнение введённого пароля с сохранённым хешем.
const passwordHash = require('password-hash');
const hashedPassword = passwordHash.generate('myPassword');
const isValid = passwordHash.verify(
'myPassword',
hashedPassword
);
console.log(isValid);
Результат:
true
При неверном пароле:
false
Аналогичная установка через Yarn выполняется командой:
yarn add password-hash
После установки зависимость записывается в
package.json.
Пример:
{
"dependencies": {
"password-hash": "^1.2.2"
}
}
Проверка версии:
yarn list password-hash
Либо:
yarn why password-hash
Пример результата:
=> Found "password-hash@1.2.2"
Способ подключения библиотеки не зависит от пакетного менеджера.
const passwordHash = require('password-hash');
Создание хеша:
const hash = passwordHash.generate('secret');
Проверка:
const verified = passwordHash.verify(
'secret',
hash
);
npm install password-hash@1.2.2
yarn add password-hash@1.2.2
Фиксация версии особенно важна:
Глобальная установка для password-hash практически не
используется, поскольку библиотека предназначена для подключения внутри
приложения.
Тем не менее технически она возможна.
npm install -g password-hash
yarn global add password-hash
Библиотека изначально ориентирована на JavaScript и не содержит встроенных TypeScript-типов.
Подключение в TypeScript:
const passwordHash = require('password-hash');
Либо:
import passwordHash = require('password-hash');
При необходимости создаётся собственное описание типов.
Пример файла password-hash.d.ts:
declare module 'password-hash' {
export function generate(
password: string,
options?: object
): string;
export function verify(
password: string,
hashedPassword: string
): boolean;
export function isHashed(
password: string
): boolean;
}
Если проект уже содержит множество зависимостей, установка выполняется стандартным способом:
npm install password-hash
или:
yarn add password-hash
После этого пакет автоматически подключается к общей системе зависимостей приложения.
После клонирования репозитория установка всех пакетов выполняется одной командой.
npm install
yarn install
При наличии password-hash в package.json
библиотека будет установлена автоматически.
npm uninstall password-hash
yarn remove password-hash
После удаления пакет исчезает:
node_modules;package.json;Иногда требуется убедиться, что пакет установлен корректно и доступен для выполнения.
Пример:
try {
const passwordHash = require('password-hash');
console.log('Библиотека подключена');
} catch (error) {
console.log('Пакет не установлен');
}
Некоторые проекты используют режим ESM.
Файл package.json:
{
"type": "module"
}
В подобных проектах возможны ограничения при импорте CommonJS-библиотеки.
Один из вариантов подключения:
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const passwordHash = require('password-hash');
Пример Dockerfile:
FROM node:20
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "index.js"]
Если библиотека указана в package.json, она будет
установлена внутри контейнера автоматически.
При установке через npm создаётся файл:
package-lock.json
Он фиксирует:
Это обеспечивает одинаковую установку на всех машинах.
Yarn создаёт собственный lock-файл:
yarn.lock
Он выполняет аналогичную задачу:
Cannot find module 'password-hash'Причины:
node_modules;Решение:
npm install password-hash
или:
yarn add password-hash
Linux/macOS:
sudo npm install password-hash
Либо настройка локального npm-кэша без sudo.
Нежелательно одновременно использовать:
package-lock.json
и
yarn.lock
Обычно выбирается один менеджер пакетов на весь проект.
Для корректной работы среды:
node -v
Проверка npm:
npm -v
Проверка Yarn:
yarn -v
const passwordHash = require('password-hash');
const password = 'admin123';
const hashedPassword = passwordHash.generate(password);
console.log('Хеш:', hashedPassword);
const result = passwordHash.verify(
password,
hashedPassword
);
console.log('Проверка:', result);
Пример вывода:
Хеш: sha1$5ddA1$8fcbf7d1d52...
Проверка: true