saber13812002/nova-packages-tool

Laravel Nova Packages 开发工具

1.16 2024-06-02 20:24 UTC

This package is auto-updated.

Last update: 2024-10-02 21:22:04 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.jsonscript.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"