go0sedev/lasso

Lasso - 简化Laravel的资产管理。

维护者

详细信息

github.com/go0sedev/Lasso

来源

安装: 111

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 16

2.0.0 2022-02-26 11:09 UTC

README

Lasso

Lasso

简化Laravel的资产管理。

Latest Stable Version Total Downloads License Code style

官方网站

简介

在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_filesexcluded_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 包,我真心希望它对您有所帮助。如果您喜欢我的工作并想表达一下喜爱,考虑买我一些编码燃料(咖啡)❤

捐赠咖啡(不是编程语言)