Commit c8c8b3cf authored by Яков's avatar Яков
Browse files

Воспроизводимость сборки: точные версии toolchain и README



dist в репозиторий не коммитится и собирается на установке, значит результат
зависит от того, какие версии сборщика разрешились в этот момент. Версии всего,
что влияет на содержимое сборки, закреплены точно, без диапазонов; линтеры
и прочее, на результат не влияющее, оставлены как были.

engines.node приведён к реальности: было >=10, собирается на 22.

В README — порядок сборки, способ проверить воспроизводимость хешами
и предупреждение про yarn add из каталога самого пакета.
Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
parent b3f43541
......@@ -28,3 +28,48 @@ class Example extends Component {
## License
MIT © [atma](https://github.com/atma)
## Сборка пакета
Собранный `dist/` в репозиторий не коммитится — он появляется на установке
через `prepare``microbundle-crl`. Отсюда требование к воспроизводимости:
у двух разработчиков должен получаться один и тот же файл.
```
node >= 18 (проверено на 22)
yarn 1.x
```
```sh
yarn install --frozen-lockfile
yarn build # microbundle-crl --no-compress --format modern,cjs --css-modules false
```
Версии всего, что влияет на СОДЕРЖИМОЕ сборки — `microbundle-crl`, `@babel/core`,
`@babel/preset-env`, `@babel/plugin-syntax-object-rest-spread`, `npm-run-all`
закреплены точно, без `^`. Остальные devDependencies (линтеры, gh-pages)
на результат не влияют и оставлены диапазонами.
**Проверка воспроизводимости** — сравнить хеши после чистой установки:
```sh
shasum -a 256 dist/index.css dist/index.js
```
28.08.2026 сборка, выполненная yarn при установке в AtmaGuru, и локальная
сборка дали побайтово одинаковые `index.css` и `index.js`.
## Грабли
**Никогда не запускайте `yarn add` с рабочим каталогом внутри ЭТОГО
репозитория.** Пакет пропишется в собственные `dependencies`, и установка
в проект начнёт зависать: yarn при разрешении дерева тянет пакет, находит его
же в его зависимостях и уходит по кругу. Двадцать минут на 95% CPU, потом
убитый процесс. Так уже было 28.08.2026, коммит 073acec.
Признак — строка с собственным именем в `dependencies`. Проверка после
установки в проекте:
```sh
grep -o 'resolved "git+[^"]*"' yarn.lock | grep qeditor
```
......@@ -12,7 +12,7 @@
"module": "dist/index.modern.js",
"source": "src/index.js",
"engines": {
"node": ">=10"
"node": ">=18"
},
"scripts": {
"build": "microbundle-crl --no-compress --format modern,cjs --css-modules false",
......@@ -35,9 +35,9 @@
"react-dom": "^17.0.2"
},
"devDependencies": {
"@babel/core": "^7.27.1",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/preset-env": "^7.27.1",
"@babel/core": "7.27.1",
"@babel/plugin-syntax-object-rest-spread": "7.8.3",
"@babel/preset-env": "7.27.1",
"babel-eslint": "^10.0.3",
"babel-loader": "^10.0.0",
"concurrently": "^8.2.1",
......@@ -53,8 +53,8 @@
"eslint-plugin-react": "^7.17.0",
"eslint-plugin-standard": "^4.0.1",
"gh-pages": "^2.2.0",
"microbundle-crl": "^0.13.10",
"npm-run-all": "^4.1.5",
"microbundle-crl": "0.13.11",
"npm-run-all": "4.1.5",
"prettier": "^2.0.4",
"prosemirror-history": "^1.4.1",
"prosemirror-model": "^1.25.1",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment