a comparison of tools within the JavaScript ecosystem

ci: migrate GitHub Actions CI to Spindle CI

+150 -104
-22
.github/dependabot.yml
··· 1 - # To get started with Dependabot version updates, you'll need to specify which 2 - # package ecosystems to update and where the package manifests are located. 3 - # Please see the documentation for all configuration options: 4 - # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 - 6 - version: 2 7 - updates: 8 - - package-ecosystem: 'devcontainers' 9 - directory: '/' 10 - schedule: 11 - interval: weekly 12 - commit-message: 13 - prefix: 'chore(deps/devcon):' 14 - open-pull-requests-limit: 4 15 - 16 - - package-ecosystem: 'github-actions' 17 - directory: '/' 18 - schedule: 19 - interval: daily 20 - commit-message: 21 - prefix: 'chore(deps/actions):' 22 - open-pull-requests-limit: 4
-81
.github/workflows/node.yml
··· 1 - name: Node.js CI 2 - 3 - on: 4 - push: 5 - branches: [main] 6 - paths: 7 - - .github/workflows/node.yml 8 - - libs/* 9 - - package.json 10 - - package-lock.json 11 - pull_request: 12 - branches: [main] 13 - paths: 14 - - .github/workflows/node.yml 15 - - libs/* 16 - - package.json 17 - - package-lock.json 18 - workflow_dispatch: 19 - 20 - jobs: 21 - lint: 22 - runs-on: ubuntu-latest 23 - steps: 24 - - name: Checkout repository 25 - uses: actions/checkout@v6 26 - - name: Install pnpm 27 - uses: pnpm/action-setup@v4 28 - with: 29 - version: 10 30 - - name: Install Node.js (latest) 31 - uses: actions/setup-node@v6 32 - with: 33 - node-version: latest 34 - cache: 'pnpm' 35 - - name: Install dependencies 36 - run: pnpm install --frozen-lockfile 37 - - name: Lint 38 - run: pnpm run lint 39 - 40 - build-library: 41 - name: build (${{ matrix.workspace }}) 42 - runs-on: ubuntu-latest 43 - strategy: 44 - matrix: 45 - workspace: 46 - - node-esbuild-js-cjs 47 - - node-esbuild-js-esm 48 - - node-esbuild-ts-esm 49 - - node-parcel-js-cjs 50 - - node-parcel-ts-esm 51 - - node-parcel-ts-esm 52 - - node-rollup-js-cjs 53 - - node-rollup-ts-esm 54 - - node-rollup-js-esm 55 - - node-tsc-js-cjs 56 - - node-tsc-js-esm 57 - - node-tsc-ts-esm 58 - - node-tsup-ts-esm 59 - - node-vite-js-cjs 60 - - node-vite-ts-esm 61 - - node-vite-js-esm 62 - - node-webpack-js-cjs 63 - - node-webpack-js-esm 64 - - node-webpack-ts-esm 65 - steps: 66 - - name: Checkout repository 67 - uses: actions/checkout@v6 68 - - name: Install pnpm 69 - uses: pnpm/action-setup@v4 70 - with: 71 - version: 10 72 - - name: Install Node.js (latest) 73 - uses: actions/setup-node@v6 74 - with: 75 - node-version: latest 76 - cache: 'pnpm' 77 - - name: Install dependencies 78 - run: pnpm install --frozen-lockfile 79 - - name: Build library, run publint 80 - working-directory: ./libs/${{ matrix.workspace }} 81 - run: pnpm run publint
+18
.tangled/workflows/build-esbuild.yml
··· 1 + when: 2 + - event: ['push', 'pull_request'] 3 + branch: ['main'] 4 + 5 + engine: 'nixery' 6 + 7 + dependencies: 8 + nixpkgs: 9 + - coreutils 10 + - gnused 11 + - nodejs_24 12 + - pnpm 13 + 14 + steps: 15 + - name: Install dependencies 16 + command: pnpm install --frozen-lockfile 17 + - name: Build packages 18 + command: pnpm run build-esbuild
+18
.tangled/workflows/build-parcel.yml
··· 1 + when: 2 + - event: ['push', 'pull_request'] 3 + branch: ['main'] 4 + 5 + engine: 'nixery' 6 + 7 + dependencies: 8 + nixpkgs: 9 + - coreutils 10 + - gnused 11 + - nodejs_24 12 + - pnpm 13 + 14 + steps: 15 + - name: Install dependencies 16 + command: pnpm install --frozen-lockfile 17 + - name: Build packages 18 + command: pnpm run build-parcel
+18
.tangled/workflows/build-rollup.yml
··· 1 + when: 2 + - event: ['push', 'pull_request'] 3 + branch: ['main'] 4 + 5 + engine: 'nixery' 6 + 7 + dependencies: 8 + nixpkgs: 9 + - coreutils 10 + - gnused 11 + - nodejs_24 12 + - pnpm 13 + 14 + steps: 15 + - name: Install dependencies 16 + command: pnpm install --frozen-lockfile 17 + - name: Build packages 18 + command: pnpm run build-rollup
+18
.tangled/workflows/build-tsc.yml
··· 1 + when: 2 + - event: ['push', 'pull_request'] 3 + branch: ['main'] 4 + 5 + engine: 'nixery' 6 + 7 + dependencies: 8 + nixpkgs: 9 + - coreutils 10 + - gnused 11 + - nodejs_24 12 + - pnpm 13 + 14 + steps: 15 + - name: Install dependencies 16 + command: pnpm install --frozen-lockfile 17 + - name: Build packages, run publint 18 + command:
+18
.tangled/workflows/build-vite.yml
··· 1 + when: 2 + - event: ['push', 'pull_request'] 3 + branch: ['main'] 4 + 5 + engine: 'nixery' 6 + 7 + dependencies: 8 + nixpkgs: 9 + - coreutils 10 + - gnused 11 + - nodejs_24 12 + - pnpm 13 + 14 + steps: 15 + - name: Install dependencies 16 + command: pnpm install --frozen-lockfile 17 + - name: Build packages 18 + command: pnpm run build-vite
+18
.tangled/workflows/build-webpack.yml
··· 1 + when: 2 + - event: ['push', 'pull_request'] 3 + branch: ['main'] 4 + 5 + engine: 'nixery' 6 + 7 + dependencies: 8 + nixpkgs: 9 + - coreutils 10 + - gnused 11 + - nodejs_24 12 + - pnpm 13 + 14 + steps: 15 + - name: Install dependencies 16 + command: pnpm install --frozen-lockfile 17 + - name: Build packages 18 + command: pnpm run build-webpack
+18
.tangled/workflows/codeqa-fmt.yml
··· 1 + when: 2 + - event: ['push', 'pull_request'] 3 + branch: ['main'] 4 + 5 + engine: 'nixery' 6 + 7 + dependencies: 8 + nixpkgs: 9 + - coreutils 10 + - gnused 11 + - nodejs_24 12 + - pnpm 13 + 14 + steps: 15 + - name: Install dependencies 16 + command: pnpm install --frozen-lockfile 17 + - name: Run formatter checks 18 + command: pnpm run fmt-ci
+18
.tangled/workflows/codeqa-lint.yml
··· 1 + when: 2 + - event: ['push', 'pull_request'] 3 + branch: ['main'] 4 + 5 + engine: 'nixery' 6 + 7 + dependencies: 8 + nixpkgs: 9 + - coreutils 10 + - gnused 11 + - nodejs_24 12 + - pnpm 13 + 14 + steps: 15 + - name: Install dependencies 16 + command: pnpm install --frozen-lockfile 17 + - name: Run linter checks 18 + command: pnpm run lint
-1
README.md
··· 38 38 - `{{language}}`: JavaScript language. Choices: `ts`, `js` 39 39 - `{{module-system}}`: JavaScript module resolution strategy. Choices: `esm`, `cjs`. (This intentionally does not include AMD, UMD, or IIFE) 40 40 41 - 42 41 ## Q&A and Notes 43 42 44 43 - **Why do pure JS libraries still include TypeScript as a developer dependency?**: While the source code may not be written in TypeScript, TypeScript is responsible for generating [declaration files](https://www.typescriptlang.org/docs/handbook/declaration-files/introduction) (`.d.ts`) during the build process to provide types.
+6
package.json
··· 8 8 "type": "module", 9 9 "scripts": { 10 10 "build": "pnpm run --r --if-present build", 11 + "build-esbuild": "pnpm --filter './libs/node-esbuild-*' build", 12 + "build-parcel": "pnpm --filter './libs/node-parcel-*' build", 13 + "build-rollup": "pnpm --filter './libs/node-rollup-*' build", 14 + "build-tsc": "pnpm --filter './libs/node-tsc-*' build", 15 + "build-vite": "pnpm --filter './libs/node-vite-*' build", 16 + "build-webpack": "pnpm --filter './libs/node-webpack-*' build", 11 17 "fmt": "oxfmt", 12 18 "fmt-ci": "oxfmt --check", 13 19 "lint": "oxlint --type-aware --type-check",