elsayed85 / nova-packages-tool
Laravel Nova 包开发工具
1.x-dev
2023-01-14 10:42 UTC
Requires
- php: ^7.3 || ^8.0
Requires (Dev)
- orchestra/testbench: ^6.24 || ^7.0
This package is auto-updated.
Last update: 2024-09-14 14:26:23 UTC
README
此库为为 Laravel Nova 定制的第三方包提供版本控制 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"