实战项目三步法:初始化结构→分层装依赖→模拟协作场景;需生成package.json并补"type":"module"等字段,按角色分装dependencies/devdependencies,用package-lock.json保障依赖一致性。

直接上手一个能跑起来、能验证逻辑、还能暴露常见问题的实战项目,比看十篇理论更管用。核心就三步:初始化结构 → 分层装依赖 → 模拟真实协作场景。
初始化标准项目结构
先确保有干净的 package.json,别靠记忆手写:
- 运行 npm init -y 生成基础文件,再手动补关键字段:把 "type": "module" 加进去(避免 import/export 报错),"main": "src/index.js" 指定入口,"name" 用小写字母+短横线(如 my-utils-demo)
- 创建目录:src/ 放业务代码,test/ 放测试用例,lib/ 预留将来抽离私有包的位置
- 别跳过 package-lock.json —— 它不是可选附件,是多人协作时依赖一致性的唯一凭证,必须提交到 Git
按角色装依赖,不混在一起
依赖写错字段,上线就报错。动手前先想清楚这个包“谁在什么时候用”:
- 运行时必需的(比如发 HTTP 请求、处理日期):用 npm install axios date-fns,自动进 dependencies
- 只在开发/测试时用(比如 ESLint、Vitest):用 npm install eslint vitest -D,进 devDependencies;部署时加 --production 就不会装它们
- 将来要封装成私有包的工具(比如统一日志模块):先在 lib/logger/ 写好代码,再用 npm link 或 npm install ../lib/logger 本地引用,验证接口是否稳定
模拟团队协作与升级场景
真实项目不是一个人从头写到尾,而是不断有人加功能、修 Bug、升版本:
- 让同事改个 package.json:把 axios 从 ^1.6.0 升到 ^1.7.0,然后你拉代码后执行 npm install —— npm 会比对 package-lock.json,只更新变动部分,而不是重装全部
- 故意删掉 node_modules 和 package-lock.json,再运行 npm install:观察是否还原出完全一样的依赖树;如果还原不了,说明 lock 文件没管住版本
- 用 npm outdated 查哪些包该升级,用 npm audit 查安全漏洞,再针对性运行 npm update lodash 或 npm install lodash@4.17.22
不复杂但容易忽略。重点不在命令多难,而在每个操作背后对应哪一层逻辑:package.json 是契约,package-lock.json 是快照,node_modules 是结果。练熟这三层关系,依赖问题就不再玄学。











