如果你用 Vue CLI 处理静态资源并和后端框架一起作为部署的一部分,那么你需要的仅仅是确保 Vue CLI 生成的构建文件在正确的位置,并遵循后端框架的发布方式即可。
如果你独立于后端部署前端应用——也就是说后端暴露一个前端可访问的 API,然后前端实际上是纯静态应用。那么你可以将 dist 目录里构建的内容部署到任何静态文件服务器中,但要确保正确的 publicPath。
dist 目录需要启动一个 HTTP 服务器来访问 (除非你已经将 publicPath 配置为了一个相对的值),所以以 file:// 协议直接打开 dist/index.html 是不会工作的。在本地预览生产环境构建最简单的方式就是使用一个 Node.js 静态文件服务器,例如 serve:
npm install -g serve
# -s 参数的意思是将其架设在 Single-Page Application 模式下
# 这个模式会处理即将提到的路由问题
serve -s dist
如果你在 history 模式下使用 Vue Router,是无法搭配简单的静态文件服务器的。例如,如果你使用 Vue Router 为 /todos/42/ 定义了一个路由,开发服务器已经配置了相应的 localhost:3000/todos/42 响应,但是一个为生产环境构建架设的简单的静态服务器会却会返回 404。
为了解决这个问题,你需要配置生产环境服务器,将任何没有匹配到静态文件的请求回退到 index.html。Vue Router 的文档提供了常用服务器配置指引。
如果前端静态内容是部署在与后端 API 不同的域名上,你需要适当地配置 CORS。
如果你使用了 PWA 插件,那么应用必须架设在 HTTPS 上,这样 Service Worker才能被正确注册。
在项目目录下,创建内容如下的 deploy.sh (可以适当地取消注释) 并运行它以进行部署: #!/usr/bin/env sh
# 当发生错误时中止脚本 set -e
# 构建 npm run build
# cd 到构建输出的目录下 cd dist
# 部署到自定义域域名 # echo 'www.example.com' > CNAME
git init git add -A git commit -m 'deploy'
# 部署到 https://<USERNAME>.github.io # git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git master
# 部署到 https://<USERNAME>.github.io/<REPO> # git push -f git@github.com:<USERNAME>/<REPO>.git master:gh-pages
cd -
在项目根目录下创建一个 .travis.yml 文件。language: node_js node_js: - "node"
cache: npm
script: npm run build
deploy: provider: pages skip_cleanup: true github_token: $GITHUB_TOKEN local_dir: dist on: branch: master
根据 GitLab Pages 文档的描述,所有的配置都在根目录中的.gitlab-ci.yml 文件中。下面的范例是一个很好的入门:
# .gitlab-ci.yml 文件应放在你仓库的根目录下
pages: # 必须定义一个名为 pages 的 job
image: node:latest
stage: deploy
script:
- npm ci
- npm run build
- mv public public-vue # GitLab Pages 的钩子设置在 public 文件夹
- mv dist public # 重命名 dist 文件夹 (npm run build 之后的输出位置)
artifacts:
paths:
- public # artifact path 一定要在 /public , 这样 GitLab Pages 才能获取
only:
- master
通常, 你的静态页面将托管在 https://yourUserName.gitlab.io/yourProjectName 上, 所以你可以创建一个 initial vue.config.js 文件去 更新 BASE_URL 要匹配的值 :
// vue.config.js 位于仓库的根目录下
// 确保用 GitLab 项目的名称替换了 `YourProjectName`
module.exports = {
publicPath: process.env.NODE_ENV === 'production'
? '/yourProjectName/'
: '/'
}
请阅读在 GitLab Pages domains的文档来学习更多关于页面部署 URL 的信息。注意,你也可以使用自定义域名。
在推送到仓库之前提交 .gitlab-ci.yml 和 vue.config.js 文件。GitLab CI 的管道将会被触发: 当成功时候, 到 Settings > Pages 查看关于网站的链接。
也可以查看 vue-cli-plugin-netlify-lambda。
如果使用 Vue Router 的 history 模式,你需要在 /public 目录下创建一个 _redirects 文件:
# 单页应用的 Netlify 设置
/* /index.html 200
详细信息请查看 Netlify 重定向文档。
Render提供带有全托管 SSL,全球 CDN 和 GitHub 持续自动部署的免费静态站点托管服务。
大功告成!构建结束时你的应用便会在你的 Render URL 上线。
如果使用 Vue Router 的 history 模式,你需要在站点的 Redirects/Rewrites 设置中添加以下改写规则:
详细信息请查看 Render 的重定向和改写及自定义域名文档。
参见 vue-cli-plugin-s3-deploy。
创建一个新的 Firebase 项目 Firebase console。 请参考文档。
确保已经全局安装了 firebase-tools :
npm install -g firebase-tools
在项目的根目录下, 用以下命令初始化 firebase :
firebase init
Firebase 将会询问有关初始化项目的一些问题。
// firebase.json
{
"hosting": {
"public": "dist"
}
}
// firebase.json
{
"hosting": {
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
执行 npm run build 去构建项目。
在 Firebase Hosting 部署项目,执行以下命令 :
firebase deploy --only hosting
如果需要在部署的项目中使用的其他 Firebase CLI 功能, 执行 firebase deploy 去掉 --only 参数。
现在可以到 https://<YOUR-PROJECT-ID>.firebaseapp.com 访问你的项目了。
请参考 Firebase 文档来获取更多细节。
ZEIT Now是一个网站和无服务器 (Serverless) API 云平台,你可以使用你的个人域名 (或是免费的 .now.sh URL) 部署你的 Vue 项目。
要使用 npm安装其命令行界面,运行以下命令:
npm install -g now
在项目根目录运行以下命令部署你的应用:
now
此外,你还可以使用他们的 GitHub或 GitLab集成服务。
大功告成!
你的站点会开始部署,你将获得一个形如 https://vue.now-examples.now.sh/的链接。
开箱即用地,请求会被自动改写到 index.html (除了自定义的静态文件) 并带有合适的缓存请求头。你可以改写这些规则。
未完成 | 欢迎参与贡献。
详细信息:https://gist.github.com/hone/24b06869b4c1eca701f9
要使用 Surge进行部署,步骤非常简单。
首先,通过运行 npm run build 来构建项目。如果还没有安装 Surge 的命令行工具,可以通过运行命令来执行此操作:
npm install --global surge
然后 cd 进入项目的 dist/ 文件夹,然后运行 surge 并按照屏幕提示操作 。如果是第一次使用 Surge,它会要求设置电子邮件和密码。确认项目文件夹以及输入首选域来查看正在部署的项目,如下所示。
project: /Users/user/Documents/myawesomeproject/dist/
domain: myawesomeproject.surge.sh
upload: [====================] 100% eta: 0.0s (31 files, 494256 bytes)
CDN: [====================] 100%
IP: **.**.***.***
Success! - Published to myawesomeproject.surge.sh
通过访问 myawesomeproject.surge.sh 来确保你的项目已经成功的用 Surge 发布,有关自定义域名等更多设置详细信息,可以到 Surge's help page查看。
在项目中, deploy.sh 使用以下内容创建并运行它以进行部署: #!/usr/bin/env sh
# 当发生错误时中止脚本 set -e
# 构建 npm run build
# cd 到构建输出的目录 cd dist
git init git add -A git commit -m 'deploy'
git push -f git@bitbucket.org:<USERNAME>/<USERNAME>.bitbucket.io.git master
cd -
在 Docker 容器中使用 Nginx 部署你的应用。
在项目根目录创建 Dockerfile 文件FROM node:10 COPY ./ /app WORKDIR /app RUN npm install && npm run build
FROM nginx RUN mkdir /app COPY --from=0 /app/dist /app COPY nginx.conf /etc/nginx/nginx.conf