如何配置根目录composer.json,在install时执行子目录npm脚本?
Laravel Nova自定义工具自动构建资源配置方案
问题根源
你之前的命令写法不符合shell语法规则:cd nova-components/TeamDashboard npm run production 中cd命令与后续npm命令未正确分隔,必须用&&连接,确保目录切换成功后再执行npm指令。另外还需确认路径准确性及跨系统兼容性问题。
正确配置步骤
1. 验证目录路径
先确认自定义工具的实际目录为 nova-components/TeamDashboard(注意大小写与空格:如果工具名是“Team Dashboard”,目录名可能带空格,路径需写成nova-components/Team\ Dashboard或用引号包裹)。
2. 修改根目录composer.json的post-install-cmd
根据你的运行环境选择对应写法:
类Unix系统(Linux/macOS/WSL)
"post-install-cmd": [ // 保留原有其他命令 "if [ -d \"nova-components/TeamDashboard\" ]; then cd nova-components/TeamDashboard && npm run production; fi", "@php artisan package:discover --ansi", "@php artisan vendor:publish --force --tag=laravel-assets --ansi" ]
Windows CMD环境
"post-install-cmd": [ // 保留原有其他命令 "if exist nova-components\\TeamDashboard (cd nova-components\\TeamDashboard && npm run production)", "@php artisan package:discover --ansi", "@php artisan vendor:publish --force --tag=laravel-assets --ansi" ]
跨平台兼容写法(推荐)
如果项目需要同时支持多系统,可借助bash执行兼容命令:
"post-install-cmd": [ // 保留原有其他命令 "bash -c 'if [ -d \"nova-components/TeamDashboard\" ]; then cd nova-components/TeamDashboard && npm run production; fi'", "@php artisan package:discover --ansi", "@php artisan vendor:publish --force --tag=laravel-assets --ansi" ]
3. 额外检查项
- 确保
npm已全局安装,或工具目录下通过npm install完成了依赖安装。 - 手动执行
cd nova-components/TeamDashboard && npm run production,验证命令本身可正常运行,排除工具配置问题。
内容的提问来源于stack exchange,提问作者Kasun Sampath Weligamage
相关产品推荐
相关产品推荐

