npm.io
0.5.9 • Published yesterdayCLI

staklink

Licence
Version
0.5.9
Deps
19
Size
5.8 MB
Vulns
0
Weekly
0

VSCode extension for automating development and debugging in Codespaces.

CLI

npx -y staklink@latest start

local cli testing

pm2 stop all
pm2 delete all
pm2 flush
rm ~/.pm2/logs/*.log

yarn build:cli
yarn build:proxy

node bin/staklink.cjs start

processes

There are 2 ways to configure your dev processes (like your backend, frontend, db, etc)

pm2

In your .devcontainer folder, add a pm2.config.js file. This can be used to manage your dev processes using pm2.

For example:

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" command
  • INSTALL_COMMAND: a custom dependency installation step
  • POST_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
docker-compose.yml

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:

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).