Laravel 如果 composer.json 上的符号链接设置为 true,Nova 工具将不会更新
Laravel Nova tool wouldn't update if symlink is set to true on composer.json
所以我 运行 遇到了一个奇怪的问题。我用Laravelnova(2)命令生成了一个工具。它位于 ./nova-components/CustomNovaDashboard
。为了让部署在 Laravel Vapor 上运行,我必须将以下内容添加到我的父 composer.json
.
{
"type": "path",
"url": "./nova-components/CustomNovaDashboard",
"options": {
"symlink": false
}
}
以上允许部署代码,因为 options
中缺少 symlink
否则会引发以下错误:
include(/tmp/vendor/composer/../acme/custom-nova-dashboard/src/ToolServiceProvider.php): failed to open stream: No such file or directory
但现在的问题是,当我在 ./nova-components/CustomNovaDashboard
中 运行 npm run watch
时,开发中的代码永远不会更新,因为不知何故有一份代码副本位于 vendor/acme/custom-nova-dashboard
没有接受更改。
我该如何解决这个问题?
我找到了解决办法,很简单。
在我的 vapor.yml
中,我必须在 composer install
之前添加 COMPOSER_MIRROR_PATH_REPOS=1
。
build:
- 'COMPOSER_MIRROR_PATH_REPOS=1 composer install'
- 'php artisan event:cache'
- 'npm ci && npm run dev && rm -rf node_modules'
这确保了 nova:tool
生成的符号 link 对 dev
和 prod
的作用类似。
只是不要忘记在 composer.json
中设置 "symlink": true
。或者保留它最初由 nova:tool
命令生成的内容。
所以我 运行 遇到了一个奇怪的问题。我用Laravelnova(2)命令生成了一个工具。它位于 ./nova-components/CustomNovaDashboard
。为了让部署在 Laravel Vapor 上运行,我必须将以下内容添加到我的父 composer.json
.
{
"type": "path",
"url": "./nova-components/CustomNovaDashboard",
"options": {
"symlink": false
}
}
以上允许部署代码,因为 options
中缺少 symlink
否则会引发以下错误:
include(/tmp/vendor/composer/../acme/custom-nova-dashboard/src/ToolServiceProvider.php): failed to open stream: No such file or directory
但现在的问题是,当我在 ./nova-components/CustomNovaDashboard
中 运行 npm run watch
时,开发中的代码永远不会更新,因为不知何故有一份代码副本位于 vendor/acme/custom-nova-dashboard
没有接受更改。
我该如何解决这个问题?
我找到了解决办法,很简单。
在我的 vapor.yml
中,我必须在 composer install
之前添加 COMPOSER_MIRROR_PATH_REPOS=1
。
build:
- 'COMPOSER_MIRROR_PATH_REPOS=1 composer install'
- 'php artisan event:cache'
- 'npm ci && npm run dev && rm -rf node_modules'
这确保了 nova:tool
生成的符号 link 对 dev
和 prod
的作用类似。
只是不要忘记在 composer.json
中设置 "symlink": true
。或者保留它最初由 nova:tool
命令生成的内容。