如何将 Node.js 制作的网站发布到 Github Pages?

我用 Node.js 做了一个网站作为服务器。据我所知,node.js 文件应该通过在终端中输入命令来开始工作,所以我不确定 Github Pages 是否支持 node.js 托管。那我该怎么办?

149549 次浏览

GitHub 页面只承载静态 HTML 页面。不支持服务器端技术,所以 Node.js 应用程序不能在 GitHub 页面上运行。有很多托管服务提供商,如 Node.js 维基所列。

应用程序雾似乎是最经济的,因为它提供了2GB 内存的项目免费托管(这是相当不错的,如果你问我)。
正如这里所说的,AppFog 删除了他们针对新用户的免费计划。

如果希望在 GitHub 上托管静态页面,请阅读 这本指南。如果您计划使用 Jekyll,那么 这本指南将非常有帮助。

我们这些 Javascript 爱好者不必使用 Ruby (Jekyll 或 Octopress)在 Github 页面中生成静态页面,我们可以使用 Node.js 和 竖琴,例如:

摘要:

  1. 创建一个新的存储库
  2. 克隆仓库

    git clone https://github.com/your-github-user-name/your-github-user-name.github.io.git
    
  3. Initialize a Harp app (locally):

    harp init _harp
    

make sure to name the folder with an underscore at the beginning; when you deploy to GitHub Pages, you don’t want your source files to be served.

  1. Compile your Harp app

    harp compile _harp ./
    
  2. Deploy to Gihub

    git add -A
    git commit -a -m "First Harp + Pages commit"
    git push origin master
    

And this is a cool tutorial with details about nice stuff like layouts, partials, Jade and Less.

将节点 js 应用程序从本地推送到 GitHub 是非常简单的步骤。

步骤:

  1. 首先在 GitHub 上创建一个新的存储库
  2. 打开安装到系统的 Git CMD (安装 GitHub 桌面)
  3. 使用以下命令将存储库克隆到系统中: git clone repo-url
  4. 现在复制所有的应用程序文件到这个克隆的库,如果它不在那里
  5. 准备提交所有内容: git add -A
  6. 提交所跟踪的更改并准备将它们推送到远程存储库: git commit -a -m "First Commit"
  7. 将本地存储库中的更改推送到 GitHub: git push origin master

我能够设置 Github 动作,以便每当有新的提交被推送到主服务器时,就能够自动将节点构建命令(在我的例子中是 yarn build,但它也应该与 npm 一起工作)的结果提交到 gh-pages分支。

虽然不是完全理想的,因为我想避免提交构建的文件,似乎这是目前唯一的方式发布到 github 页面,应该为任何前端 Node.js 应用程序(或应用程序构建的前端框架,如反应或 Vue) ,可以作为静态文件。

我的工作流程基于 这个指南,用于一个不同的反应库,并且必须进行以下更改才能让它为我工作:

  • 更新了“ setup node”步骤,使用发现的 给你版本,因为我基于的示例中的那个版本抛出了错误,因为它无法找到正确的操作。
  • 删除包含 yarn export的行,因为这个命令不存在,而且它似乎没有添加任何有用的东西(您可能还想更改它上面的构建行以满足您的需要)
  • 我还在 yarn build步骤中添加了一个 env指令,这样我就可以包含在我的应用程序中生成构建的提交的 SHA 散列,但是这是可选的

以下是我的全部动作:

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 的 医生还提供了设置 韦赛尔的说明,韦赛尔似乎是一个类似于 github 页面的 node.js 应用的托管服务。我还没有尝试过这种方法,所以不能说它的效果如何。

不,你不能在 Github 上发表。试试 Heroku 之类的。只能在 github 页面上部署静态站点。不能在 github 页面上部署服务器。

我想补充说,它 是的非常可能,因为我现在正在做它。我是这么做的:

(我假设您有一个包和/或目录可以发布。)

package.json的根目录中,添加

"homepage": "https://{pages-endpoint}/{repo}",

其中,pages-endpoint是在存储库的 设定-> 好几页部分中指定的 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。如果不一样,就改变它。

最后,确保在 设定-> 好几页部分中,选择 gh-pages作为主机分支,并将目录保留为 / (root)。一旦构建完成,您的站点应该可以在 github.io 端点上使用。

开发快乐!

GitHub 只允许托管静态网站(只有 HTML,CSS,javascript)。

动态网站(包括数据库、服务器等)不能作为 Github 页面托管。 而 node.js 应用是一个基于服务器的网站,我们不能把它放在 Github 上。 您可以尝试 你好开放式主机您的网站。

是的,正如大多数人回答的那样。 Github 页面只处理 html 和 css 以及一个前端 JS。

但是你可以使用像盖茨比这样的 JS 框架,它主要是生成静态的纯静态文件,它收集数据进行编译。

然后使用生成的文件夹作为站点的目录。