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

Библиотека распространяется через npm-пакет sjcl и устанавливается стандартным способом через менеджер пакетов Node.js.

npm install sjcl

После установки пакет добавляется в node_modules, а также фиксируется в package.json в разделе зависимостей:

{
  "dependencies": {
    "sjcl": "^1.0.8"
  }
}

В большинстве современных проектов пакет подтягивается автоматически системой сборки и доступен для импорта как обычная зависимость.


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

При использовании Yarn процесс эквивалентен npm-установке, но выполняется через команду:

yarn add sjcl

После выполнения зависимости фиксируются в package.json, а также обновляется файл yarn.lock, обеспечивающий детерминированную сборку зависимостей в разных окружениях.


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

После установки библиотека становится доступной для импорта в JavaScript-коде.

CommonJS (Node.js)

const sjcl = require("sjcl");

В таком варианте подключается весь набор криптографических функций библиотеки.


ES Modules

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

import sjcl from "sjcl";

В зависимости от сборщика и конфигурации окружения импорт может работать как с полным объектом библиотеки, так и с обёрткой совместимости CommonJS.


Использование в браузерных сборках

SJCL изначально разрабатывалась как библиотека для браузера, поэтому в современных сборках через Webpack, Vite или Rollup она подключается как обычный npm-модуль.

Пример использования в модульном коде:

import sjcl from "sjcl";

const hash = sjcl.hash.sha256.hash("data");
console.log(hash);

Особенности интеграции с bundler’ами

Webpack

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

module.exports = {
  resolve: {
    fallback: {
      crypto: false
    }
  }
};

В некоторых конфигурациях может потребоваться отключение Node.js-полифиллов, если проект ориентирован только на браузер.


Vite

Vite обрабатывает пакет как CommonJS-зависимость, автоматически преобразуя его в ESM:

import sjcl from "sjcl";

Дополнительная настройка обычно не требуется.


Rollup

При использовании Rollup может потребоваться подключение плагина для CommonJS:

import commonjs from "@rollup/plugin-commonjs";

И добавление его в конфигурацию:

export default {
  plugins: [commonjs()]
};

Форматы модулей и совместимость

SJCL распространяется в формате, ориентированном на CommonJS, поэтому при ESM-импорте может происходить обёртка всего объекта библиотеки в default.

Типичный случай:

import sjcl from "sjcl";

const encrypted = sjcl.encrypt("password", "data");

При необходимости можно использовать деструктуризацию:

const { encrypt, decrypt } = sjcl;

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

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

import sjcl from "sjcl";

console.log(typeof sjcl.hash.sha256); // function
console.log(typeof sjcl.encrypt);     // function

Если вывод соответствует ожидаемым типам, библиотека подключена корректно и готова к использованию в криптографических операциях.


Особенности версионирования

Пакет sjcl на npm часто обновляется незначительно, поскольку библиотека считается стабильной. Поэтому диапазон версий обычно фиксируется как:

"sjcl": "^1.0.8"

Обновления в пределах minor-версий редко затрагивают API, что упрощает сопровождение проектов.