diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..d39bf62 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,37 @@ +name: Build + +on: + push: + branches: + - "**" + pull_request: + branches: + - "**" + +permissions: + contents: read + +jobs: + build: + name: build + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '22' + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + run_install: false + - name: Install dependencies with pnpm + working-directory: ./src + run: pnpm install + - name: Build + working-directory: ./src + run: pnpm run build + diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index c1040fe..9d4f7d4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,4 +1,4 @@ -name: Build & Linter +name: Linter on: push: @@ -12,8 +12,8 @@ permissions: contents: read jobs: - build: - name: Build & Typecheck + linter: + name: Linter runs-on: ubuntu-latest steps: @@ -34,7 +34,3 @@ jobs: - name: Check linting working-directory: ./src run: pnpm exec eslint . --max-warnings=0 - - name: Build - working-directory: ./src - run: pnpm run build - diff --git a/.husky/pre-commit b/.husky/pre-commit index 9e21c98..e506909 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,2 +1,2 @@ #!/usr/bin/env sh -pnpm --prefix=./src/ lint-staged +pnpm lint-staged diff --git a/flake.nix b/flake.nix index 50be788..3f42f62 100644 --- a/flake.nix +++ b/flake.nix @@ -50,6 +50,7 @@ sqlite-interactive clang tmux-setup + act ]; shellHook = '' export PODMAN_COMPOSE_WARNING_LOGS="false"; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7e2acd7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,32 @@ +{ + "name": "trans", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "trans", + "version": "0.0.0", + "license": "ISC", + "devDependencies": { + "husky": "^9.1.7" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7dcc6d6 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "trans", + "version": "0.0.0", + "description": "", + "main": "", + "lint-staged": { + "*.{js,ts,jsx,tsx}": [ + "eslint --fix" + ] + }, + "scripts": { + "dev:prepare": "husky" + }, + "keywords": [], + "author": "", + "license": "ISC", + "packageManager": "pnpm@10", + "devDependencies": { + "husky": "^9.1.7" + } +} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..a97444d --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,10 @@ +packages: + - ./src/* + +nodeLinker: hoisted + +onlyBuiltDependencies: + - better-sqlite3 + - esbuild + - sharp + - bcrypt diff --git a/src/.dockerignore b/src/.dockerignore index 20cec97..fd08952 100644 --- a/src/.dockerignore +++ b/src/.dockerignore @@ -1,5 +1,5 @@ -**/node_modules -**/dist -**/Dockerfile +*/node_modules +*/dist +*/Dockerfile .gitkeep .dockerignore diff --git a/src/Dockerfile b/src/Dockerfile index be9dc06..b0f1b96 100644 --- a/src/Dockerfile +++ b/src/Dockerfile @@ -1,7 +1,7 @@ -FROM node:22-alpine as pnpm_base +FROM node:22-alpine AS pnpm_base RUN npm install --global pnpm@10.14.0; -FROM pnpm_base as builder +FROM pnpm_base AS builder ARG SERVICE diff --git a/src/eslint.config.js b/src/eslint.config.js index 5b8cab6..a3942a9 100644 --- a/src/eslint.config.js +++ b/src/eslint.config.js @@ -1,7 +1,9 @@ import js from '@eslint/js'; +import { globalIgnores } from 'eslint/config'; import ts from 'typescript-eslint'; export default [ + globalIgnores(['*/dist/'], 'dist files'), js.configs.recommended, ...ts.configs.recommended, { diff --git a/src/package.json b/src/package.json index 37b53cf..eb21f12 100644 --- a/src/package.json +++ b/src/package.json @@ -15,8 +15,7 @@ }, "scripts": { "build": "npm run build --workspaces --if-present", - "fclean": "rimraf \"**/dist\"", - "clean": "rimraf \"**/node_modules\"", + "distclean": "rimraf -v -g \"*/dist\"", "install-all": "npm install", "dev:prepare": "husky" },