tristanfrn/laravel-export

从Laravel应用创建静态站点捆绑包

dev-main 2023-10-12 17:37 UTC

This package is auto-updated.

Last update: 2024-09-12 19:34:57 UTC


README

从Laravel应用创建静态站点捆绑包

Latest Version on Packagist Total Downloads

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

使用你习惯的工具构建你的博客或网站,然后导出为静态网站以托管。

Laravel Export将扫描你的应用,并从它爬取的每个URL创建一个HTML页面。整个public目录也被添加到捆绑包中,以便你的资源文件也处于合适的位置。

此包的一些示例用例

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

  • 使用NovaWink或任何其他管理面板来本地或远程服务器上管理你的网站,然后发布到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是一个URL路径数组,这些路径将被导出为HTML。使用此功能可以手动确定哪些页面应该被导出。

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 钩子,在导出后,我们将使用他们的 CLI 工具 将静态捆绑包部署到 Netlify。

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

如果您想运行不包含某些钩子的导出,请使用 --skip-{hook} 标志。

php artisan export --skip-deploy

要跳过所有钩子,包括 before、after,请分别使用 --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

变更日志

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

贡献

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

安全性

如果您发现与安全相关的错误,请通过 security@spatie.be 邮件联系,而不是使用问题跟踪器。

Postcardware

您可以使用此包,但如果它进入您的生产环境,我们非常感谢您从家乡寄给我们一张明信片,并提及您正在使用我们哪个包。

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

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

致谢

许可证

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