npm、package.json 与 deno.json
理解 Deno 2 的依赖安装、锁文件与 node_modules 模式
Deno 2 可以同时读取 package.json 与 deno.json。迁移初期不必删掉 Node 配置;先让现有项目在 Deno 下通过安装、检查和测试。
| Node 工作流 | Deno 对应方式 |
|---|---|
npm install | deno install |
npm install lodash | deno install lodash |
npm run dev | deno task dev(也能执行 package scripts) |
package-lock.json | deno.lock;迁移期可并存 |
裸导入 lodash | package.json 项目可解析;Deno-first 也可用 npm:lodash |
node_modules 三种模式
| 模式 | 适用场景 |
|---|---|
none | 新 Deno 项目,默认使用全局缓存 |
auto | bundler、Node-API 或工具要求本地目录 |
manual | 既有 package.json 工作流,显式执行安装 |
{
"nodeModulesDir": "auto",
"tasks": {
"dev": "deno run --watch -N -E src/main.ts",
"verify": "deno fmt --check && deno lint && deno check src/main.ts && deno test"
}
}
生命周期脚本默认不会无条件执行。依赖确实需要 install script 时,运行 deno approve-scripts 交互式审查并批准(批准项持久化到 deno.json 的 allowScripts,Deno 2.6+ 首推);也可以用 deno install --allow-scripts=<package> 一次性精确批准。无论哪种方式,lockfile 变化后都要重新审计。