mod: обновить сборку и документацию CodeMirror 6

This commit is contained in:
2026-04-11 19:57:43 +03:00
parent 80ea05dc07
commit b4b0fe5ea6
8 changed files with 1005 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
# frontend-assembly
Эта папка отвечает за сборку CodeMirror 6 для админки Django.
Идея здесь простая: код редактора собирается как готовый минифицированный бандл,
а в репозиторий и в `public/static` попадает только итоговый результат.
## Что здесь лежит
### `package.json`
Главный файл npm-проекта.
В нём описано:
- имя сборочного пакета;
- версия;
- зависимость от `esbuild` и пакетов CodeMirror 6;
- npm-скрипт `build`.
Скрипт `build` собирает `src/editor.js` в файл:
```bash
../public/static/codemirror/editor.js
```
При сборке используется `--minify`, потому что редактор нужен как готовый
чёрный ящик для админки, а не как объект для отладки.
### `package-lock.json`
Файл фиксации версий npm-зависимостей.
Он нужен, чтобы сборка была воспроизводимой:
- `npm ci` ставит ровно те версии, которые уже зафиксированы;
- одинаковый результат получается и на деве, и на любой другой машине;
- при повторной сборке не подтягиваются случайные новые версии пакетов.
### `build-codemirror6.sh`
Основной скрипт сборки.
Он делает всё сам:
1. проверяет наличие `npm`;
2. создаёт временную рабочую папку;
3. временно создаёт там `src/editor.js`;
4. устанавливает зависимости через `npm ci`;
5. запускает `npm run build`;
6. кладёт готовый бандл в `public/static/codemirror/editor.js`;
7. удаляет временные `src/` и `node_modules/` после завершения.
Это означает, что в рабочем дереве не остаётся мусора от сборки.
### `src/editor.js`
Временный исходник редактора.
Он **не хранится в репозитории** как постоянный файл: скрипт создаёт его во
временной директории только на время сборки.
Внутри этого файла живёт минимальная инициализация CodeMirror 6:
- HTML-режим;
- JavaScript-режим;
- CSS-режим;
- тема `oneDark`;
- перенос строк.
Если позже захочется менять поведение редактора, логика правится либо в шаблоне,
который выдаёт этот исходник, либо прямо в сборочном скрипте.
### `public/static/codemirror/editor.js`
Готовый результат сборки.
Именно этот файл должен подключаться в Django-админке. Он уже минифицирован и
готов к использованию как обычная статика.
## Как запускать сборку
Из корня проекта:
```bash
bash ./frontend-assembly/build-codemirror6.sh
```
После успешного запуска в проекте должен обновиться только один полезный артефакт:
```bash
public/static/codemirror/editor.js
```
## Коротко о логике работы
Смысл этой папки такой:
- собрать CodeMirror 6 один раз;
- не держать в репозитории и контейнере лишний фронтенд-мусор;
- оставить Django только готовый JS-бандл для подключения в админке.