package.json 是项目的身份证:name/version/description 是元信息,dependencies(生产依赖)与 devDependencies(开发依赖)声明第三方包,scripts 定义命令别名(npm run dev → 实际命令)。npm install 时按 semver 版本范围(^1.2.3 允许 1.x.x、~1.2.3 允许 1.2.x)解析依赖并写回 package-lock.json 锁定完整依赖树。
dependencies vs devDependencies:前者打进生产包(如 vue、axios),后者只在开发/构建时需要(如 vite、eslint)。语义化版本(semver)分 主版本.次版本.补丁:主版本升级可能有破坏性变更,^ 默认只升到次版本。^ 会带来「.lock 文件不一致」问题——CI 与团队必须提交 lock 文件,禁止各自解析出不同的依赖树。
// package.json { "name": "my-app", "version": "1.0.0", "type": "module", // ★ ESM 项目标记 "scripts": { "dev": "vite", "build": "vite build", "lint": "eslint src" }, "dependencies": { "vue": "^3.4.0", // 生产依赖 "axios": "^1.6.0" }, "devDependencies": { "vite": "^5.0.0", // 构建依赖 "eslint": "^8.50.0" // 只在开发时用 }, "engines": { "node": ">=18" } } // 常用命令 // npm install lodash 装到 dependencies // npm i -D vitest 装到 devDependencies(-D) // npm run dev 执行 scripts.dev