TGViewer
artalog artalog @artalog · 4.21K subscribers
Post #1193 3.42K
Как же меня достало вручную чекать обновление зависимостей после git pull. Почему у npm / yarn / pnpm нет (или есть) флага под это? Написал скрипт, вставьте его себе перед стартом дева


{
"dev": "node deps_check.mjs && vite”,
}



import { execSync } from 'child_process';
import { createHash } from 'crypto';
import { readFile, writeFile, mkdir } from 'fs/promises';
import { resolve, dirname } from 'path';

await mkdir(resolve(dirname(''), './node_modules/.cache')).catch(() => {});
const cachePath = resolve(
dirname(''),
'./node_modules/.cache/deps_check_lock_hash.txt',
);
const lockFilePath = resolve(dirname(''), 'package-lock.json');

const lockHashCache = await readFile(cachePath, {
encoding: 'utf-8',
flag: 'a+',
}).catch(() => {});
const lockHash = createHash('sha256')
.update(await readFile(lockFilePath, { encoding: 'utf-8' }))
.digest('hex');

if (lockHashCache !== lockHash) {
execSync('npm i', { stdio: 'inherit' });
await writeFile(cachePath, lockHash);
}


Вопрос только, можно ли как-то весь выхлоп из execSync форвардить выше? спасибо, обновил.
  • 👍 18
  • ❤ 1
More from @artalog
  1. Oct 5, 2026В коментах к посту выше спорят а зачем это все надо... Я лишь напомню что антропик и опенэ…
  2. Oct 4, 2026Несколько дней исследований, почти десяток идей, и я таки смог с Опусом задизайнить хелпер…
  3. Oct 1, 2026Для меня главный приоритет в reatom.dev уже несколько лет - универсальность. Он должен реш…
  4. Sep 30, 2026https://t.me/synaptic_garden/1370 (уж извините за частый постинг, тем более про ИИ, но важ…
  5. Sep 30, 2026Post #2011
  6. Sep 30, 2026Очень круто! Композиты сильно упрощают работу с иммутабельными данными, точнее с их equali…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →