核心是建规则、控入口、保一致:强制 save-exact 写精确版本,提交 package-lock.json 并用 npm ci 安装,严格分离 dependencies 与 devdependencies,跨组件逻辑封装为私有 npm 包统一管理。

团队落地 npm 依赖管理,核心不是选工具,而是建规则、控入口、保一致。关键动作要落在代码提交前、CI 流程中、部署环节里,而不是靠人提醒或事后补救。
统一版本写法:用 .npmrc 强制 save-exact
避免 package.json 中出现 ^ 或 ~ 是最基础也最有效的防线。在项目根目录放一个 .npmrc 文件,内容只有一行:
save-exact:true
这样所有成员执行 npm install xxx 或 npm update 时,都会写入精确版本(如 "lodash": "4.17.21"),不再引入隐式升级风险。这个配置应纳入项目模板,新项目初始化即自带。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
锁文件必须提交:package-lock.json 不可忽略
即使用了 save-exact,间接依赖仍可能漂移。npm 5+ 自动生成的 package-lock.json 是唯一能固化整棵依赖树的文件。它必须:
- 和 package.json 一起提交到 Git 主干分支
- 禁止手动编辑或生成后删掉
- CI 和生产环境统一使用
npm ci安装(而非 npm install),确保完全按 lock 文件还原,跳过解析过程
依赖分层明确:devDependencies 和 dependencies 严格分离
不区分环境的依赖声明,会让部署包膨胀、安全扫描失真、CI 构建变慢。团队需约定:
- 运行时必需的库(如 express、axios)进 dependencies
- 仅构建、测试、本地开发用的(如 jest、eslint、webpack)进 devDependencies
- CI 脚本中加检查:部署前运行
npm ls --production --depth=0,确认无 dev 依赖混入
跨组件共享逻辑:封装为私有 npm 包,而非复制粘贴
当多个服务都用同一套日志、加密、请求拦截逻辑时,直接拷贝代码会迅速失控。正确做法是:
- 新建一个独立仓库,用你自己的代码包装第三方库(例如封装 Winston,暴露统一的
logger.info()) - 发布到私有 registry(如 Nexus)或用 npm private modules
- 各业务项目通过
"@myorg/logger": "^1.2.0"声明依赖,享受语义化版本 + lock 文件双重保障
这种方式把“改一处、全更新”从人工操作变成 npm 自动行为,也天然支持灰度升级和回滚。










