npmstart.
实践指南
开始一个项目

dependencies 和 devDependencies 应该怎么分?

先问一个问题:这个包是在应用运行时需要,还是只在开发、测试和构建阶段使用?这比“重要的放 dependencies,不重要的放 devDependencies”更可靠。

运行时需要的包,放 dependencies

例如 Node.js 服务运行时导入的 express、hono,或应用代码中使用的校验库 zod。这些依赖属于应用的一部分。默认的 npm install 包名会把它们保存到 dependencies。

命令或示例
npm install zod

对于前端应用,实际交付物可能是构建后的静态文件,依赖也可能被打包进产物;不能只凭浏览器里有没有 node_modules 来判断分类。

开发、测试、构建工具,放 devDependencies

TypeScript 编译器、代码检查工具和单元测试工具通常放在 devDependencies。-D 是 --save-dev 的简写。分类是项目约定,也会影响省略开发依赖时的安装结果。

命令或示例
npm install -D typescript vitest

不要因为构建服务器叫“生产环境”,就认为构建阶段不需要开发依赖。构建工具往往就在 devDependencies 中。

分清构建阶段和运行阶段

静态前端可以在构建阶段安装完整依赖、运行构建,再只发布生成的静态文件。Node.js 服务则可能在运行阶段继续需要生产依赖。应先确认部署平台的构建步骤,再决定是否省略 devDependencies。

命令或示例
npm ci
npm run build

对于确实不再需要构建工具的服务运行阶段,可以按部署设计使用 npm ci --omit=dev。不要在尚未构建时就省略构建所需的包。

发现分类不对时,明确重新安装

把包移到正确分类后,检查 package.json 和锁文件的变更,并跑一次真实的构建与启动流程。不要只以开发服务器能启动作为部署正确的证明。

命令或示例
npm install zod --save-prod
npm install -D typescript

参考资料

命令行为与框架要求会变化。使用前结合你的项目版本,核对相应官方文档。

把需求整理好,再交给 AI。

给下一次开工加上范围、命令和验收清单。

生成项目开工包

你可能接下来会用到

全部指南