a comparison of tools within the JavaScript ecosystem

feat: add vanilla JS/ESM library stacks for esbuild + parcel (#38)

authored by samanthanguyen.me and committed by

GitHub c1208714 7f95243d

+131
+2
.github/workflows/node.yml
··· 30 30 - node-js-cjs-tsc 31 31 - node-js-cjs-vite 32 32 - node-js-cjs-webpack 33 + - node-js-esm-esbuild 34 + - node-js-esm-parcel 33 35 - node-ts-esm-esbuild 34 36 - node-ts-esm-parcel 35 37 - node-ts-esm-rollup
+9
libs/node-js-esm-esbuild/build.js
··· 1 + import { build } from 'esbuild'; 2 + 3 + build({ 4 + entryPoints: ['src/index.js'], 5 + outdir: 'dist', 6 + format: 'esm', 7 + external: [], 8 + sourcemap: true, 9 + });
+33
libs/node-js-esm-esbuild/package.json
··· 1 + { 2 + "private": true, 3 + "version": "1.0.0", 4 + "name": "node-js-esm-esbuild", 5 + "description": "Node, JavaScript (ESM), esbuild", 6 + "keywords": [ 7 + "node", 8 + "javascript", 9 + "esm", 10 + "esbuild" 11 + ], 12 + "type": "module", 13 + "types": "./dist/index.d.ts", 14 + "exports": { 15 + ".": { 16 + "types": "./dist/index.d.ts", 17 + "import": "./dist/index.js" 18 + } 19 + }, 20 + "files": [ 21 + "dist" 22 + ], 23 + "scripts": { 24 + "build": "npm run dts && node build.js", 25 + "dts": "tsc", 26 + "prepublint": "npm run build", 27 + "publint": "publint ." 28 + }, 29 + "devDependencies": { 30 + "esbuild": "0.19.11", 31 + "typescript": "^5.3.3" 32 + } 33 + }
+3
libs/node-js-esm-esbuild/src/index.js
··· 1 + export function greet(name) { 2 + return `Hello ${name}` 3 + }
+10
libs/node-js-esm-esbuild/tsconfig.json
··· 1 + { 2 + "include": ["src"], 3 + "compilerOptions": { 4 + "allowJs": true, 5 + "declaration": true, 6 + "emitDeclarationOnly": true, 7 + "outDir": "dist", 8 + "declarationMap": true 9 + } 10 + }
+39
libs/node-js-esm-parcel/package.json
··· 1 + { 2 + "private": true, 3 + "version": "1.0.0", 4 + "name": "node-js-esm-parcel", 5 + "description": "Node, JavaScript (ESM), Parcel", 6 + "keywords": [ 7 + "node", 8 + "javascript", 9 + "esm", 10 + "parcel" 11 + ], 12 + "type": "module", 13 + "types": "dist/index.d.ts", 14 + "source": "src/index.js", 15 + "module": "dist/module.js", 16 + "targets": { 17 + "types": false 18 + }, 19 + "exports": { 20 + ".": { 21 + "types": "./dist/index.d.ts", 22 + "import": "./dist/module.js" 23 + } 24 + }, 25 + "files": [ 26 + "dist" 27 + ], 28 + "scripts": { 29 + "build": "parcel build --cache-dir ./.parcel-cache && npm run dts", 30 + "dev": "parcel watch --cache-dir ./.parcel-cache && npm run dts", 31 + "dts": "tsc", 32 + "prepublint": "npm run build", 33 + "publint": "publint ." 34 + }, 35 + "devDependencies": { 36 + "parcel": "^2.11.0", 37 + "typescript": "^5.3.3" 38 + } 39 + }
+3
libs/node-js-esm-parcel/src/index.js
··· 1 + export function greet(name) { 2 + return `Hello ${name}` 3 + }
+10
libs/node-js-esm-parcel/tsconfig.json
··· 1 + { 2 + "include": ["src"], 3 + "compilerOptions": { 4 + "allowJs": true, 5 + "declaration": true, 6 + "emitDeclarationOnly": true, 7 + "outDir": "dist", 8 + "declarationMap": true 9 + } 10 + }
+22
package-lock.json
··· 63 63 "webpack-cli": "^5.1.4" 64 64 } 65 65 }, 66 + "libs/node-js-esm-esbuild": { 67 + "version": "1.0.0", 68 + "devDependencies": { 69 + "esbuild": "0.19.11", 70 + "typescript": "^5.3.3" 71 + } 72 + }, 73 + "libs/node-js-esm-parcel": { 74 + "version": "1.0.0", 75 + "devDependencies": { 76 + "parcel": "^2.11.0", 77 + "typescript": "^5.3.3" 78 + } 79 + }, 66 80 "libs/node-js-esm-tsc": { 67 81 "version": "1.0.0", 68 82 "extraneous": true, ··· 5811 5825 }, 5812 5826 "node_modules/node-js-cjs-webpack": { 5813 5827 "resolved": "libs/node-js-cjs-webpack", 5828 + "link": true 5829 + }, 5830 + "node_modules/node-js-esm-esbuild": { 5831 + "resolved": "libs/node-js-esm-esbuild", 5832 + "link": true 5833 + }, 5834 + "node_modules/node-js-esm-parcel": { 5835 + "resolved": "libs/node-js-esm-parcel", 5814 5836 "link": true 5815 5837 }, 5816 5838 "node_modules/node-releases": {