spatie / laravel-export
从Laravel应用创建静态网站包
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.8.1
- illuminate/console: ^10.0|^11.0
- illuminate/contracts: ^10.0|^11.0
- illuminate/http: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- nyholm/psr7: ^1.8.1
- psr/http-message: ^2.0
- spatie/crawler: ^8.1
- symfony/console: ^6.4.2|^7.0
- symfony/dom-crawler: ^6.0|^7.0
- symfony/http-foundation: ^6.4.2|^7.0
- symfony/process: ^6.4.2|^7.0
- symfony/psr-http-message-bridge: >=2.3.1
Requires (Dev)
- orchestra/testbench: ^8.20|^9.0
- pestphp/pest: ^2.30
- pestphp/pest-plugin-laravel: ^2
This package is auto-updated.
Last update: 2024-09-08 16:40:56 UTC
README
$ php artisan export
Exporting site...
Files were saved to disk `export`
使用Laravel构建博客或网站,就像使用您习惯的工具一样,然后将其导出以进行静态托管。
Laravel Export 将扫描您的应用,并将每个爬取的URL创建为HTML页面。整个 public
目录也添加到包中,因此您的资源也已就位。
此包的几个示例用例
-
使用您习惯使用的所有工具在Laravel中构建自己的博客或网站。导出静态版本并将其上传到任何地方进行托管,不再需要管理完整的服务器。
-
使用类似 Nova、Wink、Filament、Sharp 或任何其他管理面板在本地或远程服务器上管理您的网站,然后将其发布到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'), ], ], ];
钩子
before
和after
钩子允许您在导出前后执行操作。钩子可以包含任何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)。有关更多信息,请参阅许可证文件。