Powerful console tool for cooking your swifweb apps
macOS 10.15 and Xcode 11.4 or later.
or
any ubuntu supported on swift.org
On macOS webber
can be installed with Homebrew. Make sure you have Homebrew installed and then run:
brew install swifweb/tap/webber
to update already installed version run
brew upgrade webber
binaryen
apt-get install binaryen
wasmer
curl https://get.wasmer.io -sSfL | sh
npm
apt-get install npm
webber
cd /opt
git clone https://github.com/swifweb/webber
cd /opt/webber
swift build -c release
ln -s /opt/webber/.build/release/Webber /usr/bin/webber
exec bash
To update webber
to latest version just do
cd /opt/webber && git pull && swift build -c release
If you already have a project then just go to its folder in console
If you don't then manually git clone
a template and then go to its directory
You can either simply execute webber new
or clone one of templates manually
git clone https://github.com/swifweb/spa-template myspawebsite
cd myspawebsite
open Package.swift # to work with code
webber serve # to launch in browser
progressive web app
git clone https://github.com/swifweb/pwa-template mypwawebsite
cd mypwawebsite
open Package.swift # to work with code
webber serve -t pwa -s Service # to launch in browser
if your project is single page application
then this command will be enough to start working
webber serve
This command do:
.webber
hidden folder inside project directoryif you clone the pwa
template then you should additionally provide the following arguments:
-t pwa
to say webber
that your project should be cooked as PWA-s Service
so in the end serve
command for pwa
template could look like this
webber serve -t pwa -s Service -p 443 --browser chrome --browser-self-signed --browser-incognito
-v
or --verbose
to show more info in console for debugging purposes
-d
or --debug-verbose
to show even more details about each step of webber execution
-p 443
or --port 443
to start webber server on 443
port instead of default 8888
--browser chrome/safari
to automatically open desired browser, by default it doesn't open any
--browser-self-signed
needed to debug service workers locally, otherwise they doesn't work
--browser-incognito
to open additional instance of browser in incognito mode, works only with chrome
--toolchain
to set custom toolchain e.g. webber serve --toolchain 5.9-SNAPSHOT-2023-08-06-a
for SPA just run
webber release
for PWA execute it this way
webber release -t pwa -s Service
and then grub your files from .webber/release/
nginx
/etc/nginx/mime.types
add application/wasm wasm;
in order to serve wasm
files correctlyDeclare your server like this
server {
server_name yourdomain.com;
listen [::]:443 ssl;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
ssl_stapling on;
ssl_stapling_verify on;
root /app/yourdomain.com/.webber/release;
location / {
try_files $uri $uri/ /index.html;
}
location ~* \.(js|jpg|png|css|wasm)$ {
root /app/yourdomain.com/.webber/release;
expires 30d;
add_header Cache-Control "public, no-transform";
}
}
Infinite thanks to the swiftwasm organization for their
web
packagewebber
to cover all the needs