Библиотека MapLibre GL JS устанавливается как стандартный npm-пакет и полностью поддерживается пакетным менеджером Yarn. Основной пакет содержит движок рендеринга векторных тайлов, работу со стилями Mapbox Style Specification, управление слоями и источниками данных.
Команда установки:
yarn add maplibre-gl
После выполнения команда добавляет пакет в зависимости проекта и
фиксирует его версию в package.json.
После установки в node_modules/maplibre-gl содержатся
ключевые компоненты:
Файл входа пакета определяется через поле module или
main, в зависимости от сборщика.
MapLibre GL JS требует подключения базового CSS-файла, без которого карта будет отображаться некорректно (отсутствие позиционирования контролов, некорректные размеры canvas).
Импорт в модульной системе:
import 'maplibre-gl/dist/maplibre-gl.css';
При использовании Yarn и сборщиков (Vite, Webpack, Rollup) CSS автоматически обрабатывается соответствующим loader’ом или встроенной поддержкой.
После установки пакет подключается стандартным ES-модулем:
import maplibregl from 'maplibre-gl';
Инициализация объекта карты:
const map = new maplibregl.Map({
container: 'map',
style: 'https://demotiles.maplibre.org/style.json',
center: [30.3, 59.9],
zoom: 10
});
Пакет содержит встроенные TypeScript-типы, поэтому дополнительная
установка @types/maplibre-gl не требуется в большинстве
версий.
Пример типизированной инициализации:
import maplibregl from 'maplibre-gl';
const map: maplibregl.Map = new maplibregl.Map({
container: 'map',
style: 'https://demotiles.maplibre.org/style.json',
center: [30.3, 59.9],
zoom: 10
});
Типы включают:
MapMapOptionsGeoJSONSourceLayerStyleSpecificationВ монорепозиториях Yarn Workspaces пакет добавляется в конкретный workspace:
yarn workspace frontend add maplibre-gl
или через корневую установку с указанием workspace-пакета.
Важно учитывать единый lock-файл yarn.lock, который
фиксирует версию WebGL-библиотеки во всех пакетах монорепозитория.
При использовании Yarn Plug’n’Play (PnP) отсутствует
node_modules как физическая директория. MapLibre GL JS
корректно работает в PnP-режиме при условии поддержки сборщика:
В некоторых конфигурациях требуется явное разрешение на использование зависимости:
packageExtensions:
maplibre-gl@*:
dependencies:
tslib: "*"
Vite автоматически обрабатывает ES-модули MapLibre GL JS без дополнительной конфигурации.
Пример использования:
import 'maplibre-gl/dist/maplibre-gl.css';
import maplibregl from 'maplibre-gl';
const map = new maplibregl.Map({
container: document.getElementById('map'),
style: 'https://demotiles.maplibre.org/style.json'
});
При необходимости можно оптимизировать сборку через
optimizeDeps:
export default {
optimizeDeps: {
include: ['maplibre-gl']
}
};
При использовании Webpack требуется корректная обработка CSS и возможная настройка alias для совместимости с ESM.
Установка loader’ов:
yarn add css-loader style-loader --dev
Конфигурация:
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
}
};
MapLibre GL JS активно развивается, поэтому фиксирование версии важно для стабильности:
yarn add maplibre-gl@^3.0.0
В package.json:
{
"dependencies": {
"maplibre-gl": "^3.0.0"
}
}
Изменения между мажорными версиями могут затрагивать:
При использовании кастомных стилей JSON рекомендуется хранить их локально:
import style from './style.json';
const map = new maplibregl.Map({
container: 'map',
style
});
Yarn и сборщик обеспечивают загрузку JSON как модуля при соответствующей конфигурации.
Некоторые проекты могут содержать старые версии
gl-matrix или earcut. Yarn автоматически
дедуплицирует зависимости, но в редких случаях требуется принудительное
обновление:
yarn dedupe
При отсутствии импорта CSS карта отображается без интерфейсных элементов. Решение:
import 'maplibre-gl/dist/maplibre-gl.css';
В средах без GPU-ускорения или с отключённым WebGL возможны ошибки инициализации контекста. Это не связано с Yarn, но проявляется на этапе запуска после установки.
После установки через Yarn часто подключаются расширения:
Пример установки плагина:
yarn add @maplibre/maplibre-gl-geocoder
И подключение:
import MaplibreGeocoder from '@maplibre/maplibre-gl-geocoder';