Optmize Stackblitz install times (#5968)

StackBlitz examples took **146+ seconds** to start due to heavy dev
dependencies

### Optimizations
 
- Eliminate heavy dev deps like `playwright (~200MB)` `@vitest/browser`
`vitest`
- Aggressive install flags: `--prefer-offline --reporter=silent
--ignore-scripts --no-optional`
- use pnpm 
- Results **React example: 146s → ~25s (83% faster)**
This commit is contained in:
Prakash 2025-09-16 19:34:52 +05:30 committed by GitHub
parent 6da212857c
commit 8cd3702104
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 5 additions and 3 deletions

View file

@ -1,6 +1,6 @@
{
"installDependencies": false,
"startCommand": "node -e \"const fs=require('fs'); const p='package.json'; const j=JSON.parse(fs.readFileSync(p,'utf8')); ['dependencies','devDependencies','peerDependencies'].forEach(k=>{ if(j[k]) for(const n in j[k]) if(typeof j[k][n]==='string' && j[k][n].startsWith('workspace:')) j[k][n]='latest'; }); fs.writeFileSync(p, JSON.stringify(j,null,2));\" && npm install && npm run dev",
"startCommand": "node -e \"const fs=require('fs'); const p='package.json'; const j=JSON.parse(fs.readFileSync(p,'utf8')); ['dependencies','devDependencies','peerDependencies'].forEach(k=>{ if(j[k]) for(const n in j[k]) if(typeof j[k][n]==='string' && j[k][n].startsWith('workspace:')) j[k][n]='latest'; }); if(j.devDependencies) { delete j.devDependencies.playwright; delete j.devDependencies['@vitest/browser']; delete j.devDependencies.vitest; delete j.devDependencies['vitest-browser-vue']; delete j.devDependencies.typescript; } j.scripts = { dev: j.scripts.dev }; fs.writeFileSync(p, JSON.stringify(j,null,2));\" && pnpm install --prefer-offline --reporter=silent --ignore-scripts && npm run dev",
"env": {
"NODE_ENV": "development"
}

View file

@ -1,6 +1,6 @@
{
"installDependencies": false,
"startCommand": "node -e \"const fs=require('fs'); const p='package.json'; const j=JSON.parse(fs.readFileSync(p,'utf8')); ['dependencies','devDependencies','peerDependencies'].forEach(k=>{ if(j[k]) for(const n in j[k]) if(typeof j[k][n]==='string' && j[k][n].startsWith('workspace:')) j[k][n]='latest'; }); fs.writeFileSync(p, JSON.stringify(j,null,2));\" && npm install && npm run dev",
"startCommand": "node -e \"const fs=require('fs'); const p='package.json'; const j=JSON.parse(fs.readFileSync(p,'utf8')); ['dependencies','devDependencies','peerDependencies'].forEach(k=>{ if(j[k]) for(const n in j[k]) if(typeof j[k][n]==='string' && j[k][n].startsWith('workspace:')) j[k][n]='latest'; }); if(j.devDependencies) { delete j.devDependencies.playwright; delete j.devDependencies['@vitest/browser']; delete j.devDependencies.vitest; delete j.devDependencies['vitest-browser-svelte']; delete j.devDependencies.typescript; } j.scripts = { dev: j.scripts.dev }; fs.writeFileSync(p, JSON.stringify(j,null,2));\" && pnpm install --prefer-offline --reporter=silent --ignore-scripts && npm run dev",
"env": {
"NODE_ENV": "development"
}

View file

@ -15,6 +15,7 @@
"dependencies": {
"@uppy/core": "workspace:*",
"@uppy/dashboard": "workspace:*",
"@uppy/remote-sources": "workspace:*",
"@uppy/screen-capture": "workspace:*",
"@uppy/svelte": "workspace:*",
"@uppy/tus": "workspace:*",

View file

@ -1,6 +1,6 @@
{
"installDependencies": false,
"startCommand": "node -e \"const fs=require('fs'); const p='package.json'; const j=JSON.parse(fs.readFileSync(p,'utf8')); ['dependencies','devDependencies','peerDependencies'].forEach(k=>{ if(j[k]) for(const n in j[k]) if(typeof j[k][n]==='string' && j[k][n].startsWith('workspace:')) j[k][n]='latest'; }); fs.writeFileSync(p, JSON.stringify(j,null,2));\" && npm install && npm run dev",
"startCommand": "node -e \"const fs=require('fs'); const p='package.json'; const j=JSON.parse(fs.readFileSync(p,'utf8')); ['dependencies','devDependencies','peerDependencies'].forEach(k=>{ if(j[k]) for(const n in j[k]) if(typeof j[k][n]==='string' && j[k][n].startsWith('workspace:')) j[k][n]='latest'; }); if(j.devDependencies) { delete j.devDependencies.playwright; delete j.devDependencies['@vitest/browser']; delete j.devDependencies.vitest; delete j.devDependencies['vitest-browser-vue']; delete j.devDependencies.typescript; } j.scripts = { dev: j.scripts.dev }; fs.writeFileSync(p, JSON.stringify(j,null,2));\" && pnpm install --prefer-offline --reporter=silent --ignore-scripts && npm run dev",
"env": {
"NODE_ENV": "development"
}

View file

@ -14463,6 +14463,7 @@ __metadata:
"@tailwindcss/vite": "npm:^4.0.0"
"@uppy/core": "workspace:*"
"@uppy/dashboard": "workspace:*"
"@uppy/remote-sources": "workspace:*"
"@uppy/screen-capture": "workspace:*"
"@uppy/svelte": "workspace:*"
"@uppy/tus": "workspace:*"