In the last couple of years, I have seen a few new hosting services enter the market place focused on Static Site Hosting.
The Big Three, AWS, GCP and Azure all offer Static Web hosting options.
So I wanted to see what the developer experience was like for taking a static site written in Nuxt.js and deploy it from Gitlab to one of these services.
I am going to start with Surge.sh
Surge.sh offers a very basic service to host static sites.
- Front End only. There is no back end suport so you cannot host any serverless function or Backend Api.
- Basic SSL
- Custom domain names
The professional version offers extra features for a monthly subscription. Check out their pricing
The Surge.sh website has a simple video that takes you through the basics.
Go watch it now !!
Once you have setup an account and defined a Domain, you can request a Token.
Using a Token allows for authentication without having to pass a username and password.
You only get one token with your free account.
So all projects you have under account can be accessed with the same token.
The easiest way to get you token is from your local command prompt. Type :-
Copy the token value returned and save it to Gitlab as a Variable.
Using Surge from Gitlab
Define another protected variable in your Gitlab Repo for the Domain.
Your Gitlab Yaml needs to look similar to this. For this app, the nuxt.js source is in a folder call app
# .gitlab-ci.yml image: node:latest before_script: - yarn install --cache-folder .yarn - npm install -g surge stages: - build - deploy build: stage: build cache: paths: - app/node_modules/ - app/.yarn script: - echo "Building" - cd app - yarn install - yarn generate artifacts: paths: - app/dist deploy: stage: deploy script: - echo "Deploy" - cd app - surge --project ./dist -d $SURGE_DOMAIN --token $SURGE_TOKEN
as you can see calling surge is a one line command
I like Surge.sh. If you have a simple site you want to demo to a client you can quickly deploy it there with no hosting fees. Wait for client feedback and leave the site on Surge.sh until the client is happy and more importantly they have paid you.
If your site has more complex functionality e.g. Server Side Api or Database Content. You will need to look at something else.