【问题标题】:How can i manage frontend assets with laravel mix and git?如何使用 laravel mix 和 git 管理前端资产?
【发布时间】:2017-03-16 14:28:26
【问题描述】:

我正在使用 Mix(我猜这也适用于 Elixir)来管理我的前端资产。我已将 Mix 配置为生产中的版本文件,但没有在开发中。因此,当我更新资产时,我会更新开发中的 app.jsapp.css 文件以及生产中的 app.{hash}.jsapp.{hash}.css 文件。

您对如何利用版本控制有什么建议?

  1. 将文件放入版本控制?如果是这样,我如何管理开发过程中的不断变化?继续添加新的散列文件?我是否将 app.js 和 app.css 留在生产服务器上?
  2. .gitignore js 和 css 文件并在生产服务器上运行 npm 以在本地编译资产?
  3. 其他解决方案?

您对此有何看法?

提前致谢。

【问题讨论】:

    标签: laravel git assets laravel-mix


    【解决方案1】:

    在我的工作场所,我们已经为不同的项目对 css/js 文件夹进行了 .gitignore 处理,几乎没有问题,只是让服务器处理 npm 作为其构建步骤的一部分。

    如果你使用 yarn,它会创建一个锁文件,确保你在生产环境中获得完全相同的 js 依赖。

    当使用版本控制时,只需在你的 script/css 标签上使用 mix() 助手,它就会通过公共目录中的 mix-manifest.json 文件处理指向正确的文件。

    例如:

    layout/app.blade.php 有

    <script src="{{ mix('js/app.js') }}"></script>

    当你运行 npm mix 时,会像这样创建 public/mix-manifest.json 文件

    { "/js/app.js": "/js/app.{hash-example}.js" }

    我看到的唯一问题是使用 mix 和使用 mix() 帮助器,它似乎只在运行 npm watch 时才有效,这是以前处理得很好的长生不老药,但 mix 相对较新,所以它可能会得到解决,我自己并没有生气到去研究它,因为在开发过程中我总是运行npm run hot,它会在任何 js 文件更改时进行热重载。 -- 编辑:这似乎已经修复了

    【讨论】:

    • 感谢您的回答,它有帮助。想知道一件事,mix-manifest.json 应该致力于 git 吗?
    • 可以,但如果您是 .gitignore'ing /js 和 /css 文件夹,则没有多大意义。请注意,如果找不到 mix-manifest.json 文件,它会快速抛出异常,并让它作为运行 npm 的提醒。它总是让我们的一些团队成员绊倒。
    • 我正在考虑完全按照您在生产中运行 mix() 所做的事情。不过,我很困惑为什么 laravel-mix 总是作为 dev-dependency 放在 package.json 文件中。
    【解决方案2】:

    用 nginx 将 app.{hash}.js 重写为 app.js 并将其添加到 gitignore

    【讨论】:

    • 我的问题不在于网络服务器级别,而在于如何使用 git 在本地管理文件。我的直觉告诉我在生产环境中编译资产是个坏主意,但在编译资产后必须删除/添加新文件是一个皮塔饼。
    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 2020-08-05
    • 2020-02-14
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    相关资源
    最近更新 更多