我使用 Node.js 作为服务器创建了一个网站。据我所知,node.js 文件应该通过在终端中输入命令开始工作,所以我不确定 Github Pages 是否支持 node.js-hosting。所以我该怎么做?
8 回答
GitHub 页面仅托管静态 HTML 页面。不支持服务器端技术,因此 Node.js 应用程序不会在 GitHub 页面上运行。Node.js wiki上列出了许多托管服务提供商。
应用程序雾似乎是最经济的,因为它为具有 2GB RAM 的项目提供免费托管(如果你问我,这非常好)。
如此处所述,AppFog 删除了针对新用户的免费计划。
我们这些 Javascript 爱好者,不必使用 Ruby(Jekyll 或 Octopress)在 Github 页面中生成静态页面,我们可以使用 Node.js 和Harp,例如:
这些是步骤。抽象的:
- 创建新存储库
克隆存储库
git clone https://github.com/your-github-user-name/your-github-user-name.github.io.git
初始化 Harp 应用程序(本地):
harp init _harp
确保在开头使用下划线命名文件夹;当您部署到 GitHub Pages 时,您不希望提供源文件。
编译你的 Harp 应用程序
harp compile _harp ./
部署到 Gihub
git add -A git commit -a -m "First Harp + Pages commit" git push origin master
这是一个很酷的教程,详细介绍了布局、局部、Jade 和 Less 等好东西。
我能够设置github 操作,以在将新提交推送到 master 时自动将节点构建命令的结果(yarn build
在我的情况下,但它也应该与 npm 一起使用)提交到分支。gh-pages
虽然不完全理想,因为我想避免提交构建的文件,但这似乎是目前发布到 github 页面的唯一方法,并且应该适用于任何前端 Node.js 应用程序(或使用 React 等前端框架构建的应用程序或 Vue) 可以用作静态文件。
我将我的工作流程基于本指南用于不同的反应库,并且必须进行以下更改才能使其为我工作:
- 更新了“设置节点”步骤以使用此处找到的版本,因为我基于它的示例中的版本抛出错误,因为它找不到正确的操作。
- 删除包含的行,
yarn export
因为该命令不存在并且它似乎没有添加任何有用的东西(您可能还想更改它上面的构建行以满足您的需要) - 我还在
env
该步骤中添加了一个指令,yarn build
以便我可以在我的应用程序中包含生成构建的提交的 SHA 哈希,但这是可选的
这是我完整的 github 操作:
name: github pages
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v2-beta
with:
node-version: '12'
- name: Get yarn cache
id: yarn-cache
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.yarn-cache.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- run: yarn install --frozen-lockfile
- run: yarn build
env:
REACT_APP_GIT_SHA: ${{ github.SHA }}
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build
替代解决方案
next.js的文档还提供了使用Vercel进行设置的说明,这似乎是类似于 github 页面的 node.js 应用程序的托管服务。不过我还没有尝试过,所以不能说它的效果如何。
不,您不能在 Github 页面上发布。试试 Heroku 或类似的东西。您只能在 github 页面上部署静态站点。您不能在 github 页面上部署服务器。
我想补充一点,这很有可能,因为我现在正在这样做。这是我的做法:
(我假设你有一个准备发布的包和/或目录。)
在你的根目录下package.json
,添加
"homepage": "https://{pages-endpoint}/{repo}",
其中pages-endpoint
是您在存储库的Settings -> Pages部分中blah.github.io
指定的端点,并且是存储库的名称。repo
然后确定你npm install --global gh-pages --save-dev
。您需要--global
确保 bin 文件位于您的 PATH 中,并且--save-dev
应将其作为依赖项添加到您的package.json
之后,只是npm run build && gh-pages -d build
。指定您的-d
输出构建目录。标准是build
,但我的是public
。如果它不同,只需更改它。
最后,确保在Settings -> Pages部分中,选择gh-pages
要托管的分支并将目录保留为/ (root)
. 构建完成后,您的站点应该在您的 github.io 端点上可用。
快乐的开发!
不,GitHub 只允许托管静态网站(只有 HTML、CSS、javascript)。
动态网站(具有数据库、服务器等)不能作为 Github 页面托管。而 node.js 应用程序是基于服务器的网站,我们无法将其托管在 Github 上。您可以尝试Heroku、Openshift来托管您的网站。
嗯。是的,正如大多数答案所说。Github Pages 只处理 html 和 css 以及一个前端 JS。
但是你可以使用像 Gatsby 这样的 JS 框架,将它连接到你的 Graphql 作为数据库。然后它会给你一个生成的静态文件。然后就是不断更新您的存储库并使用静态文件夹作为您的页面的根目录。
现在你有一个动态静态页面。
我会做一些,因为这是个好主意。
将您的 node js 应用程序从本地推送到 GitHub 是非常简单的步骤。
脚步:
- 首先在 GitHub 上新建一个仓库
- 打开安装到系统的 Git CMD(安装GitHub Desktop)
- 使用以下命令将存储库克隆到您的系统:
git clone repo-url
- 现在将所有应用程序文件复制到这个克隆的库中(如果它不存在)
- 准备好一切准备提交:
git add -A
- 提交跟踪的更改并准备将它们推送到远程存储库:
git commit -a -m "First Commit"
- 将本地存储库中的更改推送到 GitHub:
git push origin master