spatie/laravel-export

从Laravel应用创建静态网站包

1.1.1 2024-04-16 07:59 UTC

README

Latest Version on Packagist Total Downloads

$ php artisan export
Exporting site...
Files were saved to disk `export`

使用Laravel构建博客或网站,就像使用您习惯的工具一样,然后将其导出以进行静态托管。

Laravel Export 将扫描您的应用,并将每个爬取的URL创建为HTML页面。整个 public 目录也添加到包中,因此您的资源也已就位。

此包的几个示例用例

  • 使用您习惯使用的所有工具在Laravel中构建自己的博客或网站。导出静态版本并将其上传到任何地方进行托管,不再需要管理完整的服务器。

  • 使用类似 NovaWinkFilamentSharp 或任何其他管理面板在本地或远程服务器上管理您的网站,然后将其发布到Netlify等服务。这样,您就可以享受到静态网站的所有好处(速度、简单的托管、可扩展性),同时仍然拥有某种类型的动态后端。

支持我们

我们投入了大量资源来创建 一流的开放源代码包。您可以通过 购买我们的付费产品之一 来支持我们。

我们非常感谢您从家乡寄来明信片,说明您正在使用我们的哪个包。您可以在 我们的联系页面 上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上 我们的虚拟明信片墙

安装

您可以通过composer安装此包

composer require spatie/laravel-export

安装包后,您可以可选地发布配置文件。

php artisan vendor:publish --provider=Spatie\\Export\\ExportServiceProvider

配置

Laravel Export 不需要配置即可开始使用,但您可以根据需要调整一些设置。

// config/export.php

return [
    'disk' => 'export',
];

这意味着您还可以使用其他文件系统驱动程序,因此您可以将网站直接导出到类似S3的东西。

确定导出内容

爬取

默认配置下,Laravel Export 将爬取您的网站并将每个页面导出为静态网站。如果您想禁用此行为,请禁用 crawl 选项。

return [
    'crawl' => true,
];

路径

paths 是一个数组,包含将被导出为HTML的URL路径。使用此功能可手动确定哪些页面应被导出。

return [
    'paths' => [
        '/',
        '/rss.xml',
    ],
];

包含文件

include_files 允许您指定应添加到导出的相对于应用根目录的文件和文件夹。默认情况下,我们将包括整个 public 文件夹。

return [
    'include_files' => [
        'public' => '',
    ],
];

exclude_file_patterns 将检查包含文件的源路径,如果它们与 exclude_file_patterns 中的模式匹配,则排除它们。默认情况下,所有PHP文件都将被排除,主要是为了防止 index.php 出现在您的导出中。由于 mix-manifest.json 在编译后不再需要,它也被默认排除。

return [
    'exclude_file_patterns' => [
        '/\.php$/',
        '/mix-manifest\.json$/',
    ],
];

通过代码进行配置

所有影响导出内容的配置选项也在Exporter类中公开。您可以通过代码注入此类来修改导出设置。

use Illuminate\Support\ServiceProvider;
use Spatie\Export\Exporter;

class AppServiceProvider extends ServiceProvider
{
    public function boot(Exporter $exporter)
    {
        $exporter->crawl(false);

        $exporter->paths(['', 'about', 'contact', 'posts']);
        $exporter->paths(Post::all()->pluck('slug'));
    }
}

自定义磁盘

默认情况下,Laravel 导出会将静态包保存到应用根目录下的dist文件夹中。如果您想将站点存储在不同的文件夹中,请在config/filesystem.php配置新的磁盘

// config/filesystem.php

return [
    'disks' => [
        //

        'export' => [
            'driver' => 'local',
            'root' => base_path('out'),
        ],
    ],
];

钩子

beforeafter钩子允许您在导出前后执行操作。钩子可以包含任何shell命令。

默认配置没有配置任何钩子,但显示了两个示例。

使用这个before钩子,我们将在每次导出前使用Yarn构建我们的资源

return [
    'before' => [
        'assets' => '/usr/local/bin/yarn production',
    ],
];

使用这个after钩子,导出后我们将使用Netlify的CLI工具将静态包部署到Netlify。

return [
    'after' => [
        'deploy' => '/usr/local/bin/netlify deploy --prod',
    ],
];

如果您想在导出时跳过某些钩子,请使用--skip-{hook}标志。

php artisan export --skip-deploy

要跳过所有钩子,请分别使用--skip-before--skip-after--skip-all标志。

php artisan export --skip-before
php artisan export --skip-after
php artisan export --skip-all

用法

要构建一个包,运行export命令

php artisan export

测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全

如果您发现有关安全性的bug,请通过邮件security@spatie.be联系我们,而不是使用问题跟踪器。

Postcardware

您可以使用这个包,但如果它进入您的生产环境,我们非常希望您能从家乡寄给我们一张明信片,注明您正在使用我们哪个包。

我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。

我们将发布所有收到的明信片在我们的公司网站上

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件