开场白
开始使用
API
- API: The <client-only> Component
- API: <nuxt-child> 组件
- API: <nuxt-link> 组件
- API: <nuxt> 组件
- API: 构建配置
- API: buildDir 属性
- API: 缓存配置
- API: CSS 配置
- API: dev 属性配置
- API: dir 属性
- API: 环境变量配置
- API: generate 属性配置
- API: globalName 属性
- API: head 属性配置
- API: The hooks Property
- API: ignore 属性
- API: The loading indicator Property
- API: loading 属性配置
- API: The mode Property
- API: modern 属性
- API: modules 属性
- API: modulesDir 属性
- API: performance 属性
- API: plugins 属性配置
- API: The render Property
- API: rootDir 属性配置
- API: router 属性配置
- API: server 属性
- API: serverMiddleware 属性
- API: srcDir 属性配置
- API: transition 属性配置
- API: vue.config 属性
- API: watch 属性
- API: watchers 属性
- API: 上下文对象
- API: asyncData 方法
- API: The Builder Class
- API: The Generator Class
- API: The ModuleContainer Class
- API: The Nuxt Class
- API: The Renderer Class
- API: Nuxt Modules Intro
- API: nuxt.renderAndGetWindow(url, options)
- API: nuxt.renderRoute(route, context)
- API: nuxt.render(req, res)
- API: Nuxt(options)
- API: fetch 方法
- API: head 方法
- API: key 属性
- API: layout 属性
- API: loading 属性
- API: middleware 属性
- API: scrollToTop 属性
- API: transition 属性
- API: validate 方法
- API: The watchQuery Property
配置
- 外部资源
- 预处理器
- JSX
- Postcss 插件
- 如何扩展 Webpack 的配置
- Webpack 插件
- Caching Components
- 如何更改应用的主机和端口配置?
- 如何集成 Google 统计分析服务?
- 如何发起跨域资源请求?
- How to extend Webpack to load audio files?
部署
- 如何使用 Now.sh 进行部署?
- 使用 Surge.sh 部署
- 在 Google App Engine 上部署
- Netlify 部署
- AWS: S3+Cloudfront 部署
- Dokku 部署
- nginx 代理
- 如何部署至 GitHub Pages?
- 部署至 Heroku
其他
如何部署至 GitHub Pages?
Nuxt.js 允许你将静态化后的站点部署至任何静态站点托管服务中,例如 GitHub Pages。
部署至 GitHub Pages,首先需要将应用静态化:
npm run generate
上述的命令会生成一个 dist
目录,该目录包含了待部署的所有资源文件。 如果是项目站点,可以将 dist
的内容提交至项目的 gh-pages
分支;如果是用户(github.com/user/user.github.io)或组织(github.com/org/org.github.io)站点,需提交至对应 GitHub 项目的 master
分支。
提示: 如果你的 GitHub Pages 使用了自定义域名,建议将 CNAME
放在 Nuxt.js 应用的 static
目录。 可以移步 static
了解更多信息。
部署到 GitHub 页面并获取仓库
如果您要为一个特定的存储库创建 GitHub 页面,并且您没有任何自定义域,则该页面的 URL 将采用以下格式: http://<username>.github.io/<repository-name>
。
如果您在没有添加 router base 的情况下部署了 dist
文件夹,那么当您访问已部署的站点时,您会发现该站点因缺失 assets
而无法正常工作。这是因为我们假设网站根目录是 /
,但在这种情况下它是 /<repository-name>
。
要解决此问题,我们需要在 nuxt.config.js
中添加 router base 配置:
export default {
router: {
base: '/<repository-name>/'
}
}
这样,所有生成的路径 assets 都将以 /<repository-name>/
为前缀,下次将代码部署到存储库 GitHub Pages 时,该站点会正常工作。
将 router.base
添加为 nuxt.config.js
中的默认设置有一个缺点,但是当你运行 npm run dev
时,由于基本路径改变,它将无法正常工作。要解决这个问题,我们为 router.base
创建一个条件是否包含 <repository-name>
:
/* nuxt.config.js */
// only add `router.base = '/<repository-name>/'` if `DEPLOY_ENV` is `GH_PAGES`
const routerBase = process.env.DEPLOY_ENV === 'GH_PAGES' ? {
router: {
base: '/<repository-name>/'
}
} : {}
export default {
...routerBase
}
现在我们只需要设置 DEPLOY_ENV='GH_PAGES'
:
/* package.json */
"scripts": {
"build:gh-pages": "DEPLOY_ENV=GH_PAGES nuxt build",
"generate:gh-pages": "DEPLOY_ENV=GH_PAGES nuxt generate"
},
对于 Windows 用户,如果您不使用 bash
,则可能需要安装 cross-env。
npm install cross-env --save-dev
然后以这种方式使用它:
"build:gh-pages": "cross-env DEPLOY_ENV=GH_PAGES nuxt build",
"generate:gh-pages": "cross-env DEPLOY_ENV=GH_PAGES nuxt generate"
使用命令行进行部署
你也可以利用 push-dir npm 包来部署:
首先安装 push-dir
:
npm install push-dir --save-dev
然后在 package.json
中添加一个 deploy
的命令如下:
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate",
"deploy": "push-dir --dir=dist --branch=gh-pages --cleanup"
},
注:如果是个人或组织站点,需将上面
deploy
命令中的--branch
设置成master
。
最后,我们可以通过以下命令来部署应用:
npm run generate
npm run deploy
构建服务器部署
您可以进一步部署,而不必手动编译和部署本地安装中的文件,您可以使用构建服务器来监视 GitHub 仓库以进行新提交,然后自动检出仓库,编译和部署所有内容。
在配置构建服务器之前,首先需要 生成 GitHub 个人访问令牌 以授予构建服务器代表您执行任务的权限。 一旦您创建了令牌,请保留其安全副本,以便稍后使用。
Travis CI
使用 Travis CI 进行部署,免费开源项目构建服务器,通过您的 GitHub 帐户登录,授予 Travis 访问权限以查看您的存储库,然后启用构建服务器 通过在显示的列表中切换存储库名称旁边的开关来为您的存储库。
接下来,单击存储库名称旁边的 cog 图标以配置构建服务器的常规设置,并通过切换开关启用 'Build only if .travis.yml is present' 功能。
在同一屏幕上,向下滚动到 Environment Variables 部分并创建一个名为 GITHUB_ACCESS_TOKEN
的新变量,并在值字段中粘贴您之前创建的 GitHub 个人访问令牌的副本,然后单击 'Add' 按钮。
最后,使用以下内容在存储库的根目录中创建 .travis.yml
配置文件
language: node_js
node_js:
- "8"
cache:
directories:
- "node_modules"
branches:
only:
- master
install:
- npm install
- npm run generate
script:
- echo "Skipping tests"
deploy:
provider: pages
skip-cleanup: true
github-token: $GITHUB_ACCESS_TOKEN # Set in travis-ci.org dashboard, marked secure https://docs.travis-ci.com/user/deployment/pages/#Setting-the-GitHub-token
target-branch: gh-pages
local-dir: dist
on:
branch: master
然后将其提交到您的存储库
git add .travis.yml
git commit -m "Adding travis deploy configuration"
git push origin
现在,无论何时从 Travis 中提交对存储库的任何更改,您都会看到新的构建打包并重新启动
完成后,您将看到您的 GitHub 页面站点自动更新。
Appveyor
要通过 Appveyor 进行部署,另一个免费的开源项目构建服务器,注册一个新帐户,选择 GitHub 身份验证选项来使用您的 GitHub 帐户登录。
登录后,单击 'New project' 链接,然后单击显示的列表中存储库名称旁边的 'Add' 按钮,以在存储库中启用构建服务器。
接下来,在存储库的根目录中,创建一个包含以下内容的 appveyor.yml
配置文件
environment:
# Nuxt requires node v8 minimum
nodejs_version: "8"
# Encrypt sensitive data (https://ci.appveyor.com/tools/encrypt)
github_access_token:
secure: ENCRYPTED_GITHUB_ACCESS_TOKEN
github_email:
secure: ENCRYPTED_GITHUB_EMAIL
# Only run on master branch
branches:
only:
- master
# Install scripts. (runs after repo cloning)
install:
# switch nodejs version
- ps: Install-Product node $env:nodejs_version
# install modules
- npm install
# generate static files
- npm run generate
# configure global git credentials store (https://www.appveyor.com/docs/how-to/git-push/)
- git config --global credential.helper store
- ps: Add-Content "$env:USERPROFILE\.git-credentials" "https://$($env:github_access_token):x-oauth-basic@github.com`n"
- git config --global user.email $env:github_email
# deploy to GitHub pages
- npm run deploy
# No tests to run
test: off
# Don't actually build.
build: off
注意此配置假设您已根据 命令行部署 说明配置了 package.json
文件
但是,在提交此文件之前,您需要使用之前的 GitHub 个人访问令牌和使用 Appveyor 加密工具 加密的 GitHub 电子邮件地址更改 ENCRYPTED_GITHUB_ACCESS_TOKEN
和 ENCRYPTED_GITHUB_EMAIL
变量
更新后,将文件提交到您的存储库
git add appveyor.yml
git commit -m "Adding appveyor deploy configuration"
git push origin
现在,每当您从 Appveyor 中提交对存储库的任何更改时,您都会看到新的构建打包并重新启动
完成后,您将看到您的 GitHub 页面站点自动更新。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论