5

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

您对如何通过版本控制利用这一点有什么建议?

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

您对此有何看法?

提前致谢。

4

2 回答 2

6

在我的工作场所,我们已经为不同的项目对 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()helper,它似乎只npm watch在运行时才起作用,这是以前处理得很好的长生不老药,但 mix 相对较新,所以它可能会得到解决,我自己还没有足够恼火研究它,因为在开发过程中我总是运行npm run hot它对任何 js 文件更改进行热重载。- 编辑:这似乎现在已修复

于 2017-03-16T19:15:03.240 回答
0

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

于 2017-03-16T15:00:21.827 回答