Модуль 12 · Урок 46

package.json, lockfile і безпечні npm scripts

Manifest описує project intent і allowed commands; lockfile фіксує resolved dependency tree. Відтворюваність потребує обох файлів, documented runtime і review diff, а не committed node_modules.

package.jsonpackage-lock.jsonnpm ciScript review

Manifest і exact tree

ArtifactРоль
package.jsonName/private/type/engines, scripts і dependency intent/ranges
package-lock.jsonResolved versions/integrity/tree для reproducible install
node_modulesGenerated local install; не source і не Git artifact
npm ciClean install, що вимагає узгодженого lockfile

dependencies потрібні runtime application, devDependencies — build/test/tooling. Exact pin і semver range мають різні update policies; lockfile diff показує також transitive зміни.

Scripts як executable boundary

"scripts": {
  "dev": "vite",
  "build": "vite build",
  "preview": "vite preview"
}

До запуску перевірте command, target, lifecycle hooks і package provenance. --ignore-scripts може зменшити exposure під час inspect/install, але здатен зламати package, що легітимно потребує build step; це policy decision, не універсальна кнопка безпеки.

Практика

Перевірте manifest/lockfile, engines і script-safety worksheet. Зафіксуйте fresh install, не комітьте node_modules, не редагуйте dependency files усередині нього.

Офіційні джерела

Практична перевірка · урок 46 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що описує package.json?
2. Що фіксує package-lock.json?
3. Чи комітити node_modules?