tristanfrn / laravel-export
从Laravel应用创建静态站点捆绑包
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.4
- illuminate/console: ^8.73|^9.0|^10.0
- illuminate/contracts: ^8.73|^9.0|^10.0
- illuminate/http: ^8.73|^9.0|^10.0
- illuminate/support: ^8.73|^9.0|^10.0
- nyholm/psr7: ^1.4
- psr/http-message: ^1.0
- spatie/crawler: ^7.0.5
- symfony/console: ^5.3|^6.0
- symfony/dom-crawler: ^5.3|^6.0
- symfony/http-foundation: ^5.3|^6.0
- symfony/process: ^5.3|^6.0
- symfony/psr-http-message-bridge: ^2.1
Requires (Dev)
- orchestra/testbench: ^6.23|^7.0|^8.0
- pestphp/pest-plugin-laravel: ^1.3
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-12 19:34:57 UTC
README
从Laravel应用创建静态站点捆绑包
$ php artisan export
Exporting site...
Files were saved to disk `export`
使用你习惯的工具构建你的博客或网站,然后导出为静态网站以托管。
Laravel Export将扫描你的应用,并从它爬取的每个URL创建一个HTML页面。整个public
目录也被添加到捆绑包中,以便你的资源文件也处于合适的位置。
此包的一些示例用例
-
使用你习惯的所有工具在Laravel中构建自己的博客或网站。导出静态版本,然后上传到任何地方进行托管,不再需要管理完整的服务器。
-
使用Nova、Wink或任何其他管理面板来本地或远程服务器上管理你的网站,然后发布到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'), ], ], ];
钩子
before
和 after
钩子允许您在导出前后执行操作。钩子可以包含任何 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)。有关更多信息,请参阅 许可证文件。