Установка через npm и yarn

Подключение пакета в проект

Для установки библиотеки 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

Подключение библиотеки в CommonJS

Библиотека поддерживает подключение через 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 выполняется командой:

yarn add password-hash

После установки зависимость записывается в package.json.

Пример:

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

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

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

yarn list password-hash

Либо:

yarn why password-hash

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

=> Found "password-hash@1.2.2"

Использование после установки через Yarn

Способ подключения библиотеки не зависит от пакетного менеджера.

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

Создание хеша:

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

Проверка:

const verified = passwordHash.verify(
    'secret',
    hash
);

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

npm

npm install password-hash@1.2.2

Yarn

yarn add password-hash@1.2.2

Фиксация версии особенно важна:

  • при поддержке старых проектов;
  • для воспроизводимых сборок;
  • при командной разработке;
  • во время CI/CD-сборки.

Глобальная установка

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

Тем не менее технически она возможна.

npm

npm install -g password-hash

Yarn

yarn global add password-hash

Установка в TypeScript-проект

Библиотека изначально ориентирована на 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;
}

Установка в существующий Node.js-проект

Если проект уже содержит множество зависимостей, установка выполняется стандартным способом:

npm install password-hash

или:

yarn add password-hash

После этого пакет автоматически подключается к общей системе зависимостей приложения.


Автоматическая установка зависимостей проекта

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

npm

npm install

Yarn

yarn install

При наличии password-hash в package.json библиотека будет установлена автоматически.


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

npm

npm uninstall password-hash

Yarn

yarn remove password-hash

После удаления пакет исчезает:

  • из node_modules;
  • из package.json;
  • из lock-файла.

Проверка наличия библиотеки в коде

Иногда требуется убедиться, что пакет установлен корректно и доступен для выполнения.

Пример:

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

    console.log('Библиотека подключена');
} catch (error) {
    console.log('Пакет не установлен');
}

Использование в ES-модулях

Некоторые проекты используют режим ESM.

Файл package.json:

{
  "type": "module"
}

В подобных проектах возможны ограничения при импорте CommonJS-библиотеки.

Один из вариантов подключения:

import { createRequire } from 'module';

const require = createRequire(import.meta.url);

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

Установка в Docker-контейнере

Пример Dockerfile:

FROM node:20

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

CMD ["node", "index.js"]

Если библиотека указана в package.json, она будет установлена внутри контейнера автоматически.


Использование с package-lock.json

При установке через npm создаётся файл:

package-lock.json

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

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

Это обеспечивает одинаковую установку на всех машинах.


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

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.


Конфликт lock-файлов

Нежелательно одновременно использовать:

package-lock.json

и

yarn.lock

Обычно выбирается один менеджер пакетов на весь проект.


Проверка версии Node.js

Для корректной работы среды:

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