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

Библиотека Js-joda представляет собой порт API java.time из Java для экосистемы JavaScript. Она предоставляет строгую и предсказуемую работу с датами и временем без типичных проблем встроенного объекта Date.

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

npm install @js-joda/core

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

yarn add @js-joda/core

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

Пример подключения в CommonJS:

const { LocalDate } = require('@js-joda/core');

Пример подключения в ES Modules:

import { LocalDate } from '@js-joda/core';

Поддержка различных окружений

Node.js

Js-joda полностью поддерживается в среде Node.js и не требует дополнительных зависимостей для базовой работы.

Минимальный пример:

import { LocalDate } from '@js-joda/core';

const date = LocalDate.now();

console.log(date.toString());

Запуск:

node app.js

При использовании ES-модулей необходимо указать соответствующий режим в package.json:

{
  "type": "module"
}

Browser

Библиотека может использоваться напрямую в браузере.

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

<script src="https://cdn.jsdelivr.net/npm/@js-joda/core/dist/js-joda.min.js"></script>

После подключения глобальный объект становится доступен через пространство имён JSJoda.

Пример:

<script>
    const date = JSJoda.LocalDate.now();

    console.log(date.toString());
</script>

TypeScript

Js-joda содержит встроенные типы TypeScript, поэтому отдельная установка @types не требуется.

Установка:

npm install @js-joda/core

Пример:

import { LocalDate } from '@js-joda/core';

const date: LocalDate = LocalDate.now();

console.log(date.toString());

Компиляция:

tsc app.ts

Структура пакетов Js-joda

Экосистема Js-joda разделена на несколько пакетов.

@js-joda/core

Основной пакет библиотеки.

Содержит:

  • LocalDate
  • LocalTime
  • LocalDateTime
  • ZonedDateTime
  • Duration
  • Period
  • Instant
  • ZoneId
  • DateTimeFormatter

Установка:

npm install @js-joda/core

@js-joda/timezone

Пакет с поддержкой временных зон IANA.

Установка:

npm install @js-joda/timezone

Подключение:

import '@js-joda/timezone';

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

import { ZonedDateTime, ZoneId } from '@js-joda/core';
import '@js-joda/timezone';

const date = ZonedDateTime.now(ZoneId.of('Europe/Moscow'));

console.log(date.toString());

@js-joda/locale

Пакет локализации и форматирования.

Установка:

npm install @js-joda/locale

Пример подключения:

import '@js-joda/locale_ru';

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

После установки необходимо убедиться, что библиотека работает корректно.

Пример тестового файла:

import { LocalDate } from '@js-joda/core';

const currentDate = LocalDate.now();

console.log(currentDate);

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

2026-05-24

Настройка проекта Node.js

Инициализация проекта

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

npm init -y

Установка библиотеки:

npm install @js-joda/core

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

project/
│
├── node_modules/
├── package.json
└── app.js

Содержимое app.js:

import { LocalDate } from '@js-joda/core';

const date = LocalDate.now();

console.log(date.toString());

Запуск:

node app.js

Настройка Babel

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

Установка Babel:

npm install --save-dev @babel/core @babel/cli @babel/preset-env

Создание .babelrc:

{
  "presets": ["@babel/preset-env"]
}

Компиляция:

npx babel src --out-dir dist

Настройка Webpack

Установка:

npm install --save-dev webpack webpack-cli

Создание webpack.config.js:

const path = require('path');

module.exports = {
    mode: 'development',
    entry: './src/index.js',
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
    }
};

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

import { LocalDate } from '@js-joda/core';

console.log(LocalDate.now().toString());

Сборка:

npx webpack

Настройка Vite

Vite обеспечивает более быструю разработку современных frontend-приложений.

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

npm create vite@latest

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

npm install
npm install @js-joda/core

Пример:

import { LocalDate } from '@js-joda/core';

document.body.innerHTML = LocalDate.now().toString();

Запуск:

npm run dev

Настройка ESLint

ESLint помогает поддерживать единый стиль кода.

Установка:

npm install --save-dev eslint

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

npx eslint --init

Пример конфигурации:

{
  "env": {
    "es2022": true,
    "node": true
  },
  "extends": "eslint:recommended"
}

Настройка TypeScript-конфигурации

Создание tsconfig.json:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "moduleResolution": "Node",
    "strict": true,
    "esModuleInterop": true
  }
}

Пример файла:

import { LocalDateTime } from '@js-joda/core';

const now = LocalDateTime.now();

console.log(now.toString());

Проверка работы временных зон

После подключения @js-joda/timezone необходимо проверить корректность обработки зон.

Пример:

import {
    ZonedDateTime,
    ZoneId
} from '@js-joda/core';

import '@js-joda/timezone';

const tokyo = ZonedDateTime.now(
    ZoneId.of('Asia/Tokyo')
);

const berlin = ZonedDateTime.now(
    ZoneId.of('Europe/Berlin')
);

console.log(tokyo.toString());
console.log(berlin.toString());

Использование Js-joda вместе с React

Установка:

npm install @js-joda/core

Пример компонента:

import { LocalDate } from '@js-joda/core';

function App() {
    const date = LocalDate.now();

    return (
        <div>
            {date.toString()}
        </div>
    );
}

export default App;

Использование Js-joda вместе с Vue

Пример компонента Vue:

<script setup>
import { LocalDate } from '@js-joda/core';

const date = LocalDate.now();
</script>

<template>
    <div>
        {{ date.toString() }}
    </div>
</template>

Использование Js-joda вместе с Express

Установка:

npm install express @js-joda/core

Пример сервера:

import express from 'express';
import { LocalDateTime } from '@js-joda/core';

const app = express();

app.get('/', (req, res) => {
    res.send(LocalDateTime.now().toString());
});

app.listen(3000);

Частые проблемы при настройке

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

Причина — Node.js работает в режиме CommonJS.

Решение:

{
  "type": "module"
}

Либо использовать require.


Ошибка временных зон

Пример ошибки:

unsupported ZoneId

Причина — не подключён пакет timezone.

Решение:

import '@js-joda/timezone';

Ошибка TypeScript при импорте

Некорректный импорт:

import LocalDate from '@js-joda/core';

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

import { LocalDate } from '@js-joda/core';

Проверка версий пакетов

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

npm list @js-joda/core

Просмотр доступных версий:

npm view @js-joda/core versions

Обновление библиотеки

Обновление до последней версии:

npm update @js-joda/core

Либо:

npm install @js-joda/core@latest

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

Удаление через npm:

npm uninstall @js-joda/core

Удаление через Yarn:

yarn remove @js-joda/core