Surge 部署的网站自带哪些功能?
更新时间
Surge 把静态项目发布到 CDN 后,每个项目都会自动获得一组基础能力:免费自定义域名支持、surge.sh 子域名的免费 SSL、单页应用所需的 pushState 支持、自定义 404.html 页面、跨域资源共享,以及通过 CLI 完成的无障碍部署。这些能力不需要额外配置,发布即生效,适合纯静态站点和客户端渲染的前端应用。
每个项目自带的默认能力
根据 Surge 官网列出的项目特性,部署完成后你会直接得到:
- 免费自定义域名支持:可以把项目绑定到自己的域名,而不是只能停留在
*.surge.sh子域名上。 - surge.sh 子域名的免费 SSL:使用 Surge 分配的子域名时,HTTPS 由平台提供。
- 单页应用的 pushState 支持:前端路由(如 React Router、Vue Router 的 history 模式)刷新页面不会直接 404。
- 自定义 404.html 页面:在项目根目录放一个
404.html,访问不存在的路径时会展示你自己的错误页。 - 跨域资源共享(CORS)支持:静态资源可以被其他域名的页面请求。
- 通过 CLI 的无障碍部署:不需要在网页后台点选配置,命令行即可完成发布。
部署本身有多简单
Surge 的定位是“六次击键完成部署”。在项目目录下输入 surge 并回车,就会进入发布流程:
$ surge
project: path/to/my-project
domain: my-project.surge.sh
upload: [ ============ ]
Success! Published and running at my-project.surge.sh
输入、动作与预期结果对应关系如下:
| 环节 | 你输入的内容 | 发生什么 | 预期结果 |
|---|---|---|---|
| 启动 | surge |
在当前目录发起部署 | 提示填写项目路径和域名 |
| 指定项目 | path/to/my-project |
指定要上传的静态文件目录 | 准备上传 |
| 指定域名 | my-project.surge.sh |
选择发布地址 | 上传完成后即可访问 |
| 完成 | 等待上传进度条 | 文件推送到 CDN | 显示 Success! 和访问地址 |
首次使用需要先安装 CLI,官网给出的方式是通过 npm 安装为开发依赖:
npm install --save-dev surge
和构建工具、工作流的配合
Surge 的设计是“增强你已经在用的工具”,而不是替换它们。官网明确列出以下集成方式:
- Grunt:安装
grunt-surge插件后,可直接使用grunt deploy。 - Gulp:把 surge 装为 devDependency,在 Gulpfile 中调用。
- npm run scripts:安装 CLI 后,在
package.json的 scripts 里加入部署命令。 - Git Hooks:每次推送到 GitHub 时自动部署,不需要来回切换分支。
- Jekyll:本地编译后发布到 Surge,不必担心分支管理或插件限制。
- 静态站点生成器:手写 HTML/CSS/JS 或使用高度定制的生成器,都可以通过 CLI 快速部署。
- Node.js:可以把 Surge 构建进自己的工具链。
适合谁、什么情况下选它
如果你的项目是纯静态站点或客户端渲染的前端应用,并且希望部署过程尽量少配置、少点击,Surge 的这套默认能力基本覆盖了上线所需的基础项。需要自定义域名、HTTPS、前端路由和错误页时,这些都不用额外开通。
反过来,如果项目依赖服务端渲染、数据库或运行时后端逻辑,Surge 的静态发布模型并不适用——它面向的是静态文件和客户端应用。
常见卡点
- 自定义域名和子域名 SSL 是两件事:官网列出的免费 SSL 明确对应 surge.sh 子域名;绑定自己的域名时,SSL 情况需要以 Surge 定价页或实际配置为准。
- pushState 支持不等于自动生成路由:它保证刷新不 404,但前端路由规则仍由你的应用代码决定。
- 404.html 要放在发布目录里:只有上传的文件中确实包含
404.html,自定义错误页才会生效。 - CLI 是主要入口:官网强调“通过 CLI 的无障碍部署”,网页端并不是主要操作方式。