diff --git a/README.md b/README.md index 1f720990..3a739368 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,9 @@ model.id = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT" - [Benchmark](#benchmark) - [Security](#security) - [Install](#install) + - [ESM](#esm) + - [CommonJS](#commonjs) + - [CDN](#cdn) - [API](#api) - [Blocking](#blocking) - [Non-Secure](#non-secure) @@ -128,40 +131,47 @@ Test configuration: Framework 13 7840U, Fedora 39, Node.js 21.6. ## Install -```bash -npm install nanoid -``` - ### ESM -Nano ID 5 works with ESM projects (with `import`) in tests or Node.js scripts. -For quick hacks, you can load Nano ID from CDN. Though, it is not recommended -to be used in production because of the lower loading performance. +Nano ID 5 works with ESM projects (with `import`) in tests or Node.js scripts. -```js -import { nanoid } from 'https://cdn.jsdelivr.net/npm/nanoid/nanoid.js' +```bash +npm install nanoid ``` ### CommonJS -Nano ID 5 can be used with CommonJS in one of the following ways: -- You can use `require()` to import Nano ID. You need to use latest Node.js 22.12 (works out-of-the-box) or Node.js 20 (with `--experimental-require-module`) +Nano ID can be used with CommonJS in one of the following ways: + +- You can use `require()` to import Nano ID. You need to use latest Node.js + 22.12 (works out-of-the-box) or Node.js 20 + (with `--experimental-require-module`). + +- For Node.js 18 you can dynamically import Nano ID as follows: -- For Node.js 16 or newer you can dynamically import Nano ID as follows: ```js - let nanoid; - + let nanoid module.exports.createID = async () => { - if (!nanoid) ({ nanoid } = await import('nanoid')); - const id = nanoid() // => "V1StGXR8_Z5jdHi6B-myT" + if (!nanoid) ({ nanoid } = await import('nanoid')) + return nanoid() // => "V1StGXR8_Z5jdHi6B-myT" } ``` - You can use Nano ID 3.x (we still support it): + ```bash npm install nanoid@3 ``` +### CDN + +For quick hacks, you can load Nano ID from CDN. Though, it is not recommended +to be used in production because of the lower loading performance. + +```js +import { nanoid } from 'https://cdn.jsdelivr.net/npm/nanoid/nanoid.js' +``` + ## API Nano ID has 2 APIs: normal and non-secure. diff --git a/README.ru.md b/README.ru.md index e8b89c9b..4070237b 100644 --- a/README.ru.md +++ b/README.ru.md @@ -45,6 +45,9 @@ model.id = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT" - [Сравнение производительности](#сравнение-производительности) - [Безопасность](#безопасность) - [Подключение](#подключение) + - [ESM](#esm) + - [CommonJS](#commonjs) + - [CDN](#cdn) - [API](#api) - [Блокирующий](#блокирующий) - [Небезопасный](#небезопасный) @@ -135,19 +138,38 @@ _См. также хорошую статью о теориях генерато ## Подключение +### ESM + +Nano ID 5 работает с ESM-проектами (`import`) в тестах или скриптах для Node.js. + ```bash npm install nanoid ``` -Nano ID 5 работает с ESM-проектами (`import`) в тестах или скриптах для Node.js. -Для CommonJS `require()` вам нужна последняя версия Node.js 22.12 -(работает из коробки) или Node.js 20 (с флагом `--experimental-require-module`): +### CommonJS -Для Node.js 18 возьмите Nano ID 3.x (мы его всё ещё поддерживаем): +На проектах с CommonJS вы можете использовать: -```bash -npm install nanoid@3 -``` +- `require()` будет работать в последней версия Node.js 22.12 (из коробки) + или Node.js 20 (с флагом `--experimental-require-module`). + +- В более старых версиях Node.js можно использовать динамический импорт: + + ```js + let nanoid + module.exports.createID = async () => { + if (!nanoid) ({ nanoid } = await import('nanoid')) + return nanoid() // => "V1StGXR8_Z5jdHi6B-myT" + } + ``` + +- Или можно просто взять Nano ID 3.x (мы его всё ещё поддерживаем): + + ```bash + npm install nanoid@3 + ``` + +### CDN Для быстрого прототипирования вы можете подключить Nano ID с CDN без установки. Не используйте этот способ на реальном сайте, так как он сильно бьёт