使用Travis在S3上压缩资产?

时间:2016-08-25 16:11:26

标签: amazon-s3 deployment travis-ci

我们正在尝试使用travis将缩小和压缩的js和css部署到s3。 Gulp创建了一个文件main.bundle.js.gz,该文件已正确上传到s3,但该网站在main.bundle.js上显示了404.

除了“内容编码”之外,特拉维斯似乎没有多少选择。还有什么我们需要照顾才能使这项工作? html中的源代码仍然是.css和.js,而不是.js.gz?

https://docs.travis-ci.com/user/deployment/s3/#Setting-Content-Encoding-header

1 个答案:

答案 0 :(得分:2)

我自己花了很多时间研究这个问题,最后想出了一个解决方案。这很简单,但互联网上有很多旧信息让它看起来更加混乱。

这对我有用:

  • 在Travis构建步骤中构建和缩小我的网站文件,但不要压缩它们。就我而言,这只是在npm run build步骤中运行script
  • 使用Travis S3部署插件将缩小的文件上传到我的S3存储桶。
  • 使用compression turned on将CloudFront分配放置在S3存储桶前面。
  • 使用Accept-Encoding: gzip请求的任何客户端都将获得gzip压缩版本。

这基本上是让CloudFront处理为您压缩文件的问题。它运作良好!

这是我.travis.yml的相关部分:

script: npm run build
deploy:
  provider: s3
  access_key_id: <id>
  bucket: s3-bucket
  skip_cleanup: true
  local_dir: staging