go0sedev / lasso
Lasso - 简化Laravel的资产管理。
Requires
- php: ^7.0 || ^8.0
- ext-json: *
- ext-zip: *
- illuminate/console: ^7.0 || ^8.0 || ^9.0
- illuminate/filesystem: 7.0 || ^8.0 || ^9.0
- illuminate/support: 7.0 || ^8.0 || ^9.0
- symfony/finder: ^5.0 || ^6.0
- symfony/process: ^5.0 || ^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.1.0
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.3
- spatie/ray: ^1.33
- dev-master
- 2.0.0
- 1.4.0
- 1.3.0
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.3
- 1.1.2
- 1.1.0
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.3
- v1.0
- v0.1.99
- v0.1.98
- v0.1.97
- v0.1.96
- v0.1.95
- v0.1.94
- v0.1.93
- v0.1.92
- v0.1.91
- v0.1.9
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-feature-use-commit
- dev-feature-prefix-bundle-files
This package is not auto-updated.
Last update: 2024-09-22 21:46:28 UTC
README
Lasso
简化Laravel的资产管理。
简介
在Laravel中部署Webpack资产可能是一个噩梦。开发者面临的一个问题是处理他们的构建资产(由Webpack/Laravel Mix创建)。你将它们存储在版本控制中吗?你将它们部署到服务器上吗?如果我与一个团队合作呢?这些资产解决方案中的每一个都可能给开发者带来麻烦,包括合并冲突和减慢服务器速度。
Lasso是一个旨在消除将资产部署到服务器上带来的烦恼的Laravel包。它在负载均衡环境中也能很好地工作。
Lasso做什么?
Lasso在您的本地机器上或在持续集成(例如GitHub Actions)中编译您的资产,然后将资产上传到您的Laravel文件系统之一。这利用了您本地机器的强大功能,这通常比服务器更强大。
在部署期间,Lasso将然后从文件系统中下载您的资产。它使用Git来跟踪最后创建的资产包,以及自动清理旧包。
安装
Lasso需要Laravel 6+和PHP 7.3或更高版本。要安装Lasso,只需运行以下composer require命令
composer require sammyjo20/lasso
之后,运行以下命令创建lasso.php配置文件
php artisan vendor:publish --tag=lasso-config
配置
现在请确保在您的app/config目录中配置lasso.php配置文件。请确保指定Lasso要使用的文件系统磁盘。
如果您有多个项目,请确保更改"upload_to"路径,否则您可能在应用程序中遇到资产冲突。
设置
请确保将所有由Webpack/Laravel Mix创建的公共资产添加到您的.gitignore文件中。同时,请确保将".lasso"目录添加到您的.gitignore文件中。
示例
mix-manifest.json
public/css/*
public/js/*
.lasso
.lasso文件夹是由Lasso创建的临时目录,用于在压缩资产时存储资产。此文件夹会自动创建和删除,但最好忽略此目录,以防Lasso在清理阶段之前崩溃。
推荐使用
Lasso附带两个命令,应在您的项目/部署过程中使用。推荐的做法是在您的本地机器上运行"publish"命令,这通常比持续集成或服务器编译更强大。
发布
当您希望将新资产上传/发布到应用程序时,应执行publish命令。Lasso将运行提供的脚本(例如npm run production),然后将编译器(例如Webpack)创建的文件压缩。
php artisan lasso:publish
运行此命令后,Lasso将在应用程序的根目录中创建一个"lasso-bundle.json"文件。这是一个推荐的方法,因为当您提交文件时,Lasso将使用此文件下载与您的提交相关的最新包。如果您不使用Git,例如如果您在持续集成中编译资产,您可以在命令中添加--no-git标志。
警告:当使用--no-git标志时,版本控制将受到限制,因为lasso-bundle.json存储在您的文件系统中,而不是您的存储库中。使用Git是推荐的方法。
如果您使用git,并且想要轻松跟踪哪个包文件对应哪个提交,请使用--use-commit标志。这将确保包zip文件名是提交哈希的前12个字符。这也增加了在CI管道中发布包的优势,无需创建新提交,同时提供了使用git的版本控制优势。
拉取
然后应在您的部署脚本或需要资产的服务器上执行拉取命令。只需运行以下命令。如果您使用的是 Laravel Forge,请将此命令添加到您的部署脚本中。如果您使用的是 Laravel Envoyer,请将其添加到部署期间的钩子列表中。应在 每个服务器 上运行。
在拉取时使用 --use-commit
标志,如果您使用 --use-commit
标志发布捆绑包。
php artisan lasso:pull
在持续集成(CI)中的使用,例如 Github Actions
要在持续集成期间使用 Lasso,建议运行 php artisan lasso:publish
命令,然后提交创建的 "lasso-bundle.json" 文件。如果在 CI 过程中无法提交文件,请在命令中使用 --no-git
标志,例如:php artisan lasso:publish --no-git
阅读 Alex Justesen 的这篇优秀的博客文章,了解如何将 Lasso 集成到您的 CI/CD 管道中:https://dev.to/alexjustesen/laravel-cicd-pipeline-w-lasso-and-github-actions-53gm
多环境
默认情况下,Lasso 支持多环境应用程序。如果您的应用程序有一个预发布环境,例如 - 您可以使用 LASSO_ENV
环境变量来设置当前环境。在您的 Web 服务器上
LASSO_ENV=staging
Webhooks
Lasso 还可以在命令执行成功时触发 Webhooks。只需在 lasso.php 配置文件中的 "webhooks" 数组中列出 URL 即可。
/* * Lasso will can also trigger Webhooks after its commands have been * successfully executed. You may specify URLs that Lasso will POST * to, for each of the commands. */ 'webhooks' => [ /* * Specify which webhooks should be triggered after a successful * "php artisan lasso:publish" command execution. */ 'publish' => [ // ], /* * Specify which webhooks should be triggered after a successful * "php artisan lasso:pull" command execution. */ 'pull' => [ // ] ],
清理
Lasso 会自动尝试保持您的文件系统清洁,并会自动删除旧的捆绑包。您可以通过在 config/lasso.php 文件中设置 max_bundles
配置变量来增加/减少 Lasso 为每个环境保留的捆绑包数量。
/* * Lasso will automatically version the assets. This is useful if you * suddenly need to roll-back a deployment and use an older version * of built files. You can set the maximum amount of files stored here. */ 'max_bundles' => 5,
排除的文件/目录
Lasso 在发布过程中会复制公共目录。如果您有任何希望在过程中被 Lasso 忽略的文件或目录,请在 config/lasso.php 文件中的 excluded_files
和 excluded_directories
配置变量中指定它们。
/* * If there any directories/files you would like to Lasso to * exclude when uploading to the Filesystem, specify them below. */ 'excluded_files' => [], 'excluded_directories' => [],
感谢
特别感谢 @codepotato 为标志设计! ❤️
安全
如果您发现任何安全相关的问题,请通过以下邮箱地址联系我:import.lorises_0c@icloud.com。
就这么多! ✨
这是我第一个 Laravel 包,我真心希望它对您有所帮助。如果您喜欢我的工作并想表达一下喜爱,考虑买我一些编码燃料(咖啡)❤