当前位置: 首页 > news >正文

使用 netlify 部署你的前端应用

我前几天写了一篇文章, 如果你想搭建一个博客 ,其中提到了使用 netlify 做博客托管服务。

netlify 可以为你的静态资源做托管,就是说它可以托管你的前端应用,就像 github page 那样。不过,它不又只像 github page 那么功能单一,它可以做更多的事情

  1. CI/CD : 当你 push 代码到仓库的特定分支会自动部署
  2. http headers : 你可以定制资源的 http header ,从而可以做 缓存优化 等
  3. http redirect/rewrite : 如果一个 nginx ,这样可以配置 /api ,解决跨域问题
  4. 二级域名 : 你如果没有自己的域名,可以使用它的任意二级域名-只要没有被占用,这比 github page 多仓库只能用 /path 要好很多
  5. CDN : 把你的静态资源推到 CDN,虽然是国外的
  6. https : 为你准备证书,当然使用的是 lets encrypt
  7. Prerender : 结合 SPA ,做预渲染

它做的是整个前端部署工作流的事情,而且很多事情都是自动完成的。

年初(2019/03) 我写过一篇文章: 如何使用 docker 高效部署前端应用 。其中讲了如何使用一个 nginx 镜像优化构建前端静态资源的过程,而这只是前端部署工作流的一小部分,这种方案更加适合小型公司。

而在大型公司,基础设施更加健全,对于前端部署很有可能有一个部署平台,如同 netlify 一样: 你根本不需要构建镜像,你只需要写一个极其简单的配置文件。

本篇文章讲解如何结合 netlify 去部署你 github 上的前端应用。将以我的个人仓库 cheat-sheets 部署到 cheatsheeets.netlify.com/git 作为示例进行演示。

当然 gitlab 也可以结合 netlify 使用

  • 本文地址: 使用 netlify 部署你的前端应用
  • 系列文章: 个人服务器运维指南

新建站点

新建站点

使用 github 授权登录 netlify 。在主页点击 New site from git 按钮,新建站点

选择一个仓库

构建选项

  • build command : 如何生成静态文件,一般会是 npm run build
  • publish directory : 静态文件目录,一般会是 public/dist 等

另外也可以作为配置文件,参考下一节

部署成功

配置二级域名

此时通过 cheatsheeets.netlify.com/git 访问页面,成功部署

配置文件

配置文件可以配置你的 http 的 header , rewrite , redirect 等,可以参考 官方文档

以下我是的博客 shfshanyue/blog 的配置文件

[build]
  base = ""
  publish = ".vuepress/dist"
  command = "npm run build"

[[headers]]
  for = "/*"

  [headers.values]
    cache-control = "max-age=7200"

[[headers]]
  for = "/assets/*"

  [headers.values]
    cache-control = "max-age=31536000"
//前端学习裙:950919261
build.publish
build.command

另外,我把 /assets/* 做了永久缓存,因为里边都是带了 hash 值的静态文件

配置 api 解决跨域问题

另外,如果你的前端应用需要配置代理服务器,比如 /api 与 /graphql ,可以设置 redirects 。算是替代了一部分 nginx 的功能

[[redirects]]
  from = "/graphql/"
  to = "https://graphql.shanyue.tech"
  status = 200
  force = true
  headers = {X-From = "Netlify"}

 

相关文章:

  • 腾讯CDC团队:前端异常监控解决方案
  • 403- JavaScript 工具函数大全(新)
  • vue学习之深入响应式原理
  • 使用proxy实现一个双向绑定
  • 最全的 Vue 性能优化指南,经典收藏
  • web前端开发不可不知的十个小妙招,让工作更有效率,快收藏吧
  • 翻译:原型继承是如何工作的
  • 35岁并不是程序员的坎,只是你没有真的认清事实
  • Web安全的重要性(面试必备),被黑无数次还不怕吗?
  • 学前端,css与javascript是重难点,基础不好一切白费!
  • Web前端开发应该必备的编码原则
  • vue全家桶开发 去哪儿 项目总结
  • 这「五类人」最适合转Web前端,必须要了解的前端工程师
  • 每周分享,前端自学「书籍推荐」
  • 「程序员之路」年轻,总得做些什么吧(致那些还未定型的程序员)
  • JavaScript 如何正确处理 Unicode 编码问题!
  • python3.6+scrapy+mysql 爬虫实战
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【EOS】Cleos基础
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 3.7、@ResponseBody 和 @RestController
  • angular2开源库收集
  • CentOS从零开始部署Nodejs项目
  • Computed property XXX was assigned to but it has no setter
  • ES6核心特性
  • ESLint简单操作
  • JavaScript 奇技淫巧
  • JavaScript设计模式系列一:工厂模式
  • java小心机(3)| 浅析finalize()
  • Promise面试题,控制异步流程
  • Python学习笔记 字符串拼接
  • Python语法速览与机器学习开发环境搭建
  • React16时代,该用什么姿势写 React ?
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Webpack 4 学习01(基础配置)
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 大型网站性能监测、分析与优化常见问题QA
  • 聊聊sentinel的DegradeSlot
  • 微信小程序设置上一页数据
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • # C++之functional库用法整理
  • #if和#ifdef区别
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (二)Linux——Linux常用指令
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (算法)Game
  • .cfg\.dat\.mak(持续补充)
  • .NET Core 2.1路线图
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .Net6 Api Swagger配置
  • .net的socket示例
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • /boot 内存空间不够