saber13812002 / nova-packages-tool
Laravel Nova Packages 开发工具
1.16
2024-06-02 20:24 UTC
Requires
- php: ^7.3 || ^8.0
- saber13812002/laravel-nova: ^4.0
Requires (Dev)
- nova-kit/nova-devtool: ^1.3
- orchestra/testbench: ^6.35 || ^7.29 || ^8.9 || ^9.0
README
这个库为Laravel Nova第三方包提供了版本控制的依赖项。
为什么?
laravel-nova
可能会不时引入破坏性和非破坏性的改进。为了保持兼容性,所有第三方包都应在Laravel Nova发布新版本时重新构建其包。
通过跳过此过程,并根据变更的严重性,可能会导致您的应用程序无法正常工作,并且您将被锁定在较旧版本,必须等待每个受影响的第三方包更新其代码。
优点
nova-kit/nova-packages-tool
降低了使用laravel-nova
的每个第三方包的维护难度。- 生成的
dist
文件将减少,因为第三方包不再需要构建laravel-nova
源代码。
缺点
- 每次Laravel Nova发布新版本时,您都需要等待
nova-kit/nova-packages-tool
发布一个新的兼容版本。
安装
要通过composer安装,请在终端运行以下命令
composer require "nova-kit/nova-packages-tool:^1.0"
接下来,请确保您的应用程序的composer.json
在script.post-autoload-dump
下包含以下命令
{ "script" : { "post-autoload-dump": [ "@php artisan vendor:publish --tag=laravel-assets --ansi --force" ] } }
用法
首先,您需要将webpack.external别名添加到laravel-nova
,并在nova.mix.js
下注释掉对vendor/laravel/nova/resources/js/mixins/js/packages.js
的现有引用
webpackConfig.externals = { vue: 'Vue', 'laravel-nova': 'LaravelNova' } // webpackConfig.resolve.alias = { // ...(webpackConfig.resolve.alias || {}), // 'laravel-nova': path.join( // __dirname, // 'vendor/laravel/nova/resources/js/mixins/packages.js' // ), // }
这将允许您的包从外部源依赖laravel-nova
,而不再本地编译它。
主题切换事件
现在,您可以通过监听单个nova-theme-switched
事件来代替在每个包上手动注册自定义的MutationObserver
。
Nova.$on('nova-theme-switched', ({ theme, element }) => { if (theme === 'dark') { element.add('package-dark') } else { element.remove('package-dark') } })
夜间构建
对于那些迫不及待想要兼容版本的人来说,您可以选择通过在您的Laravel Nova应用程序上运行以下命令来使用我们的夜间构建
composer require nova-kit/nova-packages-tool:"dev-next as 1.999.999"