Модуль 12 · Урок 46
package.json, lockfile і безпечні npm scripts
Manifest описує project intent і allowed commands; lockfile фіксує resolved dependency tree. Відтворюваність потребує обох файлів, documented runtime і review diff, а не committed node_modules.
Manifest і exact tree
| Artifact | Роль |
|---|---|
package.json | Name/private/type/engines, scripts і dependency intent/ranges |
package-lock.json | Resolved versions/integrity/tree для reproducible install |
node_modules | Generated local install; не source і не Git artifact |
npm ci | Clean 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 усередині нього.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.