nova-kit/nova-packages-tool

Laravel Nova 包开发工具

v1.17.1 2024-09-02 14:50 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

此库为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',
  'laravel-nova-ui': 'LaravelNovaUi'
}

// 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"