无需登录 数据私有 本地保存

npm 脚本模拟运行器 - 测试 package.json scripts 逻辑

21
0
0
0
package.json
模拟环境变量
脚本列表
0 个脚本 0 组钩子
点击左侧 "解析脚本" 或直接编辑 JSON 后自动解析
模拟执行日志
等待模拟执行... 选择一个脚本并点击"模拟运行"。
常见问题与知识点

npm 会自动检测与脚本名称匹配的 pre<script>post<script> 钩子。当你运行 npm run build 时,npm 会按顺序执行:prebuildbuildpostbuild。如果 prebuild 失败(退出码非0),则不会执行后续步骤。钩子本身也可以有自己的 pre/post 钩子,形成嵌套链。

本工具会自动解析脚本内容中的 npm run xxxnpm run-script xxx 调用,构建依赖图并检测循环。例如:脚本A调用脚本B,脚本B又调用脚本A,就会形成循环依赖,导致无限递归。工具会在模拟运行时标记这些循环并发出警告。

在 npm scripts 执行时,npm 会自动注入以 npm_package_ 为前缀的环境变量,这些变量来源于 package.json 的字段。例如 $npm_package_name 获取包名,$npm_package_version 获取版本号,$npm_package_config_端口 可获取 config 字段下的自定义配置。本工具在模拟时会自动解析这些变量。

常见原因:① 钩子名称拼写必须完全匹配(区分大小写),格式为 pre<script>(如 prebuild 对应 build);② 确保 pre 钩子定义在 scripts 字段中且为有效命令;③ 如果使用了 --ignore-scripts 标志,pre/post 钩子会被跳过;④ 某些 npm 生命周期(如 prepublish)的行为在不同 npm 版本中可能不同。

&& 是串行执行:前一个命令成功(退出码0)后才执行下一个。例如 npm run clean && npm run build 先清理再构建。
& 是并行执行:两个命令同时启动。在跨平台兼容性方面,建议使用 npm-run-all 包来管理串行/并行任务,它在 Windows 和 Unix 上表现一致。

npm 有内置生命周期:preinstallinstallpostinstall(安装依赖时触发);prepublishprepare(发布前触发);pretesttestposttest 等。自定义脚本(如 dev、deploy)的 pre/post 钩子遵循相同模式。注意:prepare 会在 npm install 后自动执行,常用于构建或初始化。