Skip to content

Commit bde4303

Browse files
mokevninclaude
andcommitted
build(pnpm): перевести JS-тулинг на pnpm 12 и поднять зависимости
package-lock.json заменён на pnpm-lock.yaml, в манифесте packageManager pnpm@12.6.0. Свой pnpm-workspace.yaml нужен клону внутри кита: без него pnpm поднимается до воркспейса кита и пишет в его лок. В python-ci и contract pnpm ставится до setup-node, node 26. JS поднят ncu (typespec 1.16), python uv lock --upgrade: prometheus-fastapi- instrumentator 8, secure 2. Сгенерированные модели и OpenAPI не изменились, тесты, контракт-тесты и smoke в образе зелёные. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent bde062c commit bde4303

9 files changed

Lines changed: 1907 additions & 2402 deletions

File tree

‎.github/workflows/contract.yml‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,15 @@ jobs:
3030

3131
- uses: astral-sh/setup-uv@v10.0.1
3232

33+
# pnpm ставится до setup-node: тот с cache: pnpm ищет уже существующий
34+
# бинарь, чтобы вычислить путь к store, и иначе падает с
35+
# «Unable to locate executable file: pnpm».
36+
- uses: pnpm/action-setup@v6
37+
3338
- uses: actions/setup-node@v7
3439
with:
35-
node-version: 22.x
36-
cache: npm
40+
node-version: 26.x
41+
cache: pnpm
3742

3843
- name: Install
3944
run: make install

‎.github/workflows/python-ci.yml‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,17 @@ jobs:
2626
- uses: astral-sh/setup-uv@v10.0.1
2727

2828
# Node нужен инструментам контракта: компилятор TypeSpec и
29-
# генератор python-моделей из OpenAPI — оба npm-пакеты. Само
29+
# генератор python-моделей из OpenAPI — оба пакеты из npm. Само
3030
# приложение о node не знает.
31+
# pnpm ставится до setup-node: тот с cache: pnpm ищет уже существующий
32+
# бинарь, чтобы вычислить путь к store, и иначе падает с
33+
# «Unable to locate executable file: pnpm».
34+
- uses: pnpm/action-setup@v6
35+
3136
- uses: actions/setup-node@v7
3237
with:
33-
node-version: 22.x
34-
cache: npm
38+
node-version: 26.x
39+
cache: pnpm
3540

3641
- name: Install
3742
run: make install

‎Makefile‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ PORT ?= 8000
22

33
install:
44
uv sync
5-
npm ci
5+
pnpm install --frozen-lockfile
66

77
# Первичная настройка: зависимости и .env из шаблона.
88
setup: install env
@@ -46,13 +46,13 @@ routes:
4646
# порождённый из него артефакт, который коммитится: по нему генерируются
4747
# модели, его же отдаёт приложение и по нему идут контрактные тесты.
4848
generate-openapi:
49-
npx tsp compile .
49+
pnpm exec tsp compile .
5050

5151
# Модели из спеки. Путь начинается с ./ намеренно: без этого генератор
5252
# принимает его за адрес проекта в реестре Hey API и падает на разборе.
5353
generate-models:
54-
npx openapi-python -i ./openapi/openapi.v1.json -o ./app/types/handlers/v1 -p pydantic
55-
npx openapi-python -i ./openapi/openapi.v2.json -o ./app/types/handlers/v2 -p pydantic
54+
pnpm exec openapi-python -i ./openapi/openapi.v1.json -o ./app/types/handlers/v1 -p pydantic
55+
pnpm exec openapi-python -i ./openapi/openapi.v2.json -o ./app/types/handlers/v2 -p pydantic
5656

5757
generate-types: generate-openapi generate-models
5858

@@ -101,7 +101,7 @@ smoke-test:
101101
# обновиться сразу и локально.
102102
deps-update:
103103
uv lock --upgrade
104-
npx npm-check-updates -u
104+
pnpm dlx npm-check-updates -u
105105

106106
.PHONY: install setup env dev start test test-coverage lint lint-fix routes \
107107
generate-openapi generate-models generate-types generate-check \

0 commit comments

Comments
 (0)