npm install staklinkVSCode extension for automating development and debugging in Codespaces.
npx -y staklink@latest start
``sh
pm2 stop all
pm2 delete all
pm2 flush
rm ~/.pm2/logs/*.log
yarn build:cli
yarn build:proxy
node bin/staklink.cjs start
`
There are 2 ways to configure your dev processes (like your backend, frontend, db, etc)
In your .devcontainer folder, add a pm2.config.js file. This can be used to manage your dev processes using pm2.
For example:
`js`
module.exports = {
apps: [
{
name: "sphinx-tribes-backend",
script: "./sphinx-tribes",
cwd: "/workspaces/sphinx-tribes",
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: "1G",
env: {
RESTART: "true",
REBUILD_COMMAND: "go build -o sphinx-tribes",
POST_RUN_COMMAND: "./seed-dummy-data.sh",
},
},
{
name: "sphinx-tribes-frontend",
script: "npm",
args: "run start:codespace",
cwd: "/workspaces/sphinx-tribes-frontend",
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: "1G",
env: {
NODE_ENV: "development",
INSTALL_COMMAND: "yarn install",
},
},
],
};
The above config runs the backend and the frontend. In the env section:
- RESTART: will make the service rebuild and restart if needed (when code is updated)REBUILD_COMMAND
- : a custom "rebuild" commandINSTALL_COMMAND
- : a custom dependency installation stepPOST_RUN_COMMAND
- : arbitrary command to run after a service starts (such as seeding DB with dummy data)PORT
- : port number, to let external workflows know which port maps to which service
In your .devcontainer folder, add a docker-compose.yml file. This can be used to manage long-running processes that don't need to be controlled, rebuilt, or customized (like a database)
For example:
`yml
version: "3.8"
volumes:
postgres-data:
services:
app:
build:
context: .
dockerfile: Dockerfile
env_file:
- .env
volumes:
- ../..:/workspaces:cached
# Overrides default command so things don't shut down after the process ends.
command: sleep infinity
db:
image: postgres:latest
restart: unless-stopped
volumes:
- postgres-data:/var/lib/postgresql/data
env_file:
- .env
``
This config runs the dev container (app), and the backend database (db).