elsayed85/nova-packages-tool

Laravel Nova 包开发工具

安装: 1

依赖者: 1

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 7

语言:JavaScript

1.x-dev 2023-01-14 10:42 UTC

This package is auto-updated.

Last update: 2024-09-14 14:26:23 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

此库为为 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.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"