如何在 Laravel 测试时跳过 Webpack

Laravel

让我们谈谈如何在 CI 管道中摆脱 NodeJS。

我运行 Chipper CI(Laravel 的持续集成)。 我一直很恼火的是,Webpack 构建比 CI 管道的实际 有价值 部分花费更多时间并导致更多问题。

我们中的大多数人只需要运行我们的测试并可能开始部署。 节点构建任务会增加大量时间,并且需要更多的 CPU/RAM 使用率。

如果我们只是在管道中不需要 Node 怎么办? 我们能不能……不能?

答案是:当然,也许!

功能测试

很多时候,在 CI 管道中构建静态资产的唯一原因是生成 mix-manifest.json 文件。

这允许在运行 Laravel Feature 测试时使用 mix() 助手函数。 功能测试会向你的应用程序发出 HTTP 调用,因此通常会呈现使用 mix() 助手函数的 blade 模板。

如果你没有 manifest 文件,则会引发错误!

生成此清单文件涉及构建你的静态资源 - 换句话说,使用 npm(或 yarn)安装依赖项并运行 Webpack 任务:

# Build static assets

npm ci --no-audit
npm run dev

旁注:你肯定应该提交了你的 package-lock.json 文件并运行npm ci -- no-audit 而不是npm install!

如果查看你的 public/mix-manifest.json 文件,它可能看起来像这样(有或没有哈希,取决于您是否启用了版本控制)

{
    "/js/app.js": "/js/app.js",
    "/js/foo.js": "/js/foo.js",
    "/css/app.css": "/css/app.css"
}

事实上你不一定需要此文件来进行测试!

在你测试的 setUp() 方法中,可以添加以下魔法:

protected function setUp(): void
{
    parent::setUp();

    $this->withoutMix();
}

有了这些,mix() 助手将不会返回任何缺少清单文件的错误。 您的测试无需运行 NodeJS 任务即可通过!

你可以做的另一件事是复制的 CI 管道创建一个清单文件以进行测试。

假设我们的 Mix 配置生成了上面的 mix-manifest.json 文件。 我们可以将一个虚拟清单文件提交到tests/mix-manifest.json,它总是可用的!

然后,在我们的 CI 管道脚本中,我们可以使用该文件而不是安装/构建我们的 Node 依赖项:

  • 如果我们创建一个 mix-manifest.json 文件只是为了测试呢?
  • 在 CI 中,我们可以将它移动到需要的地方去
cp tests/mix-manifest.json public/mix-manifest.json

然后运行你的测试,不需要 NodeJS!

php artisan test

有了这个文件,mix() 助手函数就可以工作了,并且您的功能测试可以顺利通过!
创建正确的 manifest 文件可以帮助您在 CI 管道中节省大量时间和服务器资源

当您向根目录下的 manifest 文件添加新文件的同时也应更新 tests 目录下的 manifest 文件

什么时候需要构建前端资源?

有时,您需要在 CI 管道中构建前端资源!以下是您需要注意的最常见情况:

  1. 当您构建生产环境的前端资源时将它们打包到可部署的 “artifact” (zip 文件、容器镜像等)
  2. 当您在测试中运行其他 node 命令时,例如 eslint
  3. 当你使用 Laravel Dusk 进行浏览器测试时

如果我需要构建静态资源怎么办?

即使你需要在 CI 脚本中构建静态资源,你仍然可以节省宝贵的时间!

我最喜欢的包是 Airdrop(作者 Aaron Francis)。 它可以帮助您构建静态资源 仅 如果它们在提交之间发生了更改。 如果它们没有更改,您可以从 S3 等文件系统驱动程序下载它们。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/skip-webpack-wh...

译文地址:https://learnku.com/laravel/t/69480

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!