Базовая настройка окружения

Библиотека Validator.js распространяется через npm и используется как в браузере, так и в серверных приложениях на Node.js.

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

npm install validator

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

yarn add validator

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

pnpm add validator

После установки пакет появляется в каталоге node_modules, а информация о зависимости автоматически записывается в package.json.

Пример:

{
  "dependencies": {
    "validator": "^13.15.15"
  }
}

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

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

npm

npm list validator

yarn

yarn list validator

Подключение библиотеки в Node.js

Validator.js поддерживает несколько способов подключения в зависимости от используемого типа модулей.

CommonJS

Используется в классических Node.js-проектах.

const validator = require('validator');

После подключения становятся доступны методы библиотеки.

const validator = require('validator');

console.log(validator.isEmail('admin@example.com'));

Результат:

true

Подключение через ES Modules

Современный синтаксис JavaScript использует import.

package.json

{
  "type": "module"
}

Импорт библиотеки

import validator from 'validator';

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

import validator from 'validator';

const result = validator.isURL('https://example.com');

console.log(result);

Структура проекта

Типичная структура проекта с Validator.js:

project/
│
├── node_modules/
├── src/
│   ├── app.js
│   └── validators/
│       └── userValidator.js
├── package.json
└── package-lock.json

Создание первого файла

app.js

import validator from 'validator';

const email = 'user@mail.com';

if (validator.isEmail(email)) {
    console.log('Email корректен');
} else {
    console.log('Email некорректен');
}

Запуск:

node app.js

Подключение отдельных методов

Validator.js позволяет импортировать только необходимые функции. Это уменьшает размер итоговой сборки.

Импорт отдельного метода

import isEmail from 'validator/lib/isEmail.js';

Использование:

import isEmail from 'validator/lib/isEmail.js';

console.log(isEmail('admin@test.com'));

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

Validator.js можно подключать в frontend-проектах.

Пример для Vite

Установка:

npm install validator

Использование:

import validator from 'validator';

const value = 'https://google.com';

console.log(validator.isURL(value));

Использование с Webpack

Установка зависимостей

npm install validator webpack webpack-cli --save-dev

index.js

import validator from 'validator';

console.log(
    validator.isEmail('contact@example.com')
);

Сборка

npx webpack

Использование с TypeScript

Validator.js поддерживает TypeScript.

Установка

npm install validator
npm install --save-dev @types/validator

Настройка tsconfig.json

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "strict": true
  }
}

Пример TypeScript-кода

import validator from 'validator';

const email: string = 'user@example.com';

const valid: boolean = validator.isEmail(email);

console.log(valid);

Работа в среде Express

Validator.js часто используется в backend-приложениях.

Установка Express

npm install express validator

server.js

import express from 'express';
import validator from 'validator';

const app = express();

app.use(express.json());

app.post('/register', (req, res) => {

    const { email } = req.body;

    if (!validator.isEmail(email)) {
        return res.status(400).json({
            error: 'Некорректный email'
        });
    }

    res.json({
        success: true
    });
});

app.listen(3000);

Использование с формами

HTML

<form id="form">
    <input type="text" id="email">
    <button>Отправить</button>
</form>

JavaScript

import validator from 'validator';

const form = document.getElementById('form');

form.addEventListener('submit', (event) => {

    event.preventDefault();

    const email = document
        .getElementById('email')
        .value;

    if (!validator.isEmail(email)) {
        alert('Ошибка email');
        return;
    }

    alert('Форма отправлена');
});

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

Минимальный тест:

import validator from 'validator';

console.log(
    validator.isEmail('test@mail.com')
);

Ожидаемый результат:

true

Если выводится true, библиотека подключена корректно.


Типичные ошибки настройки

Ошибка Cannot find module 'validator'

Причины:

  • пакет не установлен;
  • повреждён каталог node_modules;
  • установка выполнена в другой директории.

Решение:

npm install validator

Ошибка SyntaxError: Cannot use import statement outside a module

Причина:

Node.js работает в режиме CommonJS.

Решение:

{
  "type": "module"
}

или использование require.


Ошибка типов в TypeScript

Could not find a declaration file for module 'validator'

Решение:

npm install --save-dev @types/validator

Рекомендуемая конфигурация проекта

package.json

{
  "name": "validator-project",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "start": "node src/app.js",
    "dev": "node --watch src/app.js"
  },
  "dependencies": {
    "validator": "^13.15.15"
  }
}

Использование nodemon

Для автоматического перезапуска сервера при изменениях файлов.

Установка

npm install --save-dev nodemon

package.json

{
  "scripts": {
    "dev": "nodemon src/app.js"
  }
}

Запуск

npm run dev

Изоляция логики валидаторов

Хорошей практикой считается вынос проверок в отдельные файлы.

validators/userValidator.js

import validator from 'validator';

export function validateEmail(email) {

    return validator.isEmail(email);
}

export function validatePassword(password) {

    return validator.isLength(password, {
        min: 8
    });
}

Использование собственных модулей валидаторов

app.js

import {
    validateEmail,
    validatePassword
} from './validators/userValidator.js';

console.log(
    validateEmail('admin@mail.com')
);

console.log(
    validatePassword('12345678')
);

Настройка ESLint

Validator.js часто используется в проектах с жёсткими стандартами качества кода.

Установка ESLint

npm install --save-dev eslint

Инициализация

npx eslint --init

Настройка Prettier

Установка

npm install --save-dev prettier

Форматирование проекта

npx prettier . --write

Проверка окружения Node.js

Validator.js требует установленного Node.js.

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

node -v

Проверка npm:

npm -v

Минимальные требования окружения

Рекомендуемая конфигурация:

Инструмент Версия
Node.js 18+
npm 9+
TypeScript 5+

Создание тестового проекта с нуля

Создание директории

mkdir validator-demo

Переход в проект

cd validator-demo

Инициализация npm

npm init -y

Установка Validator.js

npm install validator

Создание app.js

import validator from 'validator';

const phone = '+77001234567';

console.log(
    validator.isMobilePhone(phone, 'kk-KZ')
);

Запуск

node app.js

Использование Validator.js в монорепозиториях

В крупных проектах библиотека обычно устанавливается в корневом workspace.

Пример:

npm install validator -w backend

Настройка алиасов

Пример для TypeScript:

{
  "compilerOptions": {
    "baseUrl": "./src",
    "paths": {
      "@validators/*": ["validators/*"]
    }
  }
}

Использование:

import { validateEmail } from '@validators/userValidator';

Оптимизация импорта

Полный импорт:

import validator from 'validator';

Точечный импорт:

import isURL from 'validator/lib/isURL.js';

Точечный импорт уменьшает размер frontend-сборки и ускоряет tree shaking.


Проверка доступных методов

Вывод всех методов:

import validator from 'validator';

console.log(Object.keys(validator));

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

[
  'isEmail',
  'isURL',
  'isUUID',
  'isMobilePhone',
  'isDate'
]

Подготовка окружения для тестирования

Установка Jest

npm install --save-dev jest

Пример теста

import validator from 'validator';

test('email validation', () => {

    expect(
        validator.isEmail('admin@test.com')
    ).toBe(true);
});

Настройка среды разработки

Наиболее распространённые редакторы:

  • Visual Studio Code
  • WebStorm
  • Sublime Text

Полезные расширения:

  • ESLint
  • Prettier
  • Error Lens
  • npm Intellisense

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

Validator.js часто применяется вместе с dotenv.

Установка

npm install dotenv

.env

PORT=3000

app.js

import dotenv from 'dotenv';

dotenv.config();

console.log(process.env.PORT);

Проверка работоспособности окружения

Комплексная проверка:

import validator from 'validator';

const data = {
    email: 'admin@example.com',
    url: 'https://example.com',
    uuid: '550e8400-e29b-41d4-a716-446655440000'
};

console.log(
    validator.isEmail(data.email)
);

console.log(
    validator.isURL(data.url)
);

console.log(
    validator.isUUID(data.uuid)
);

Ожидаемый результат:

true
true
true