Skip to content

Add dev builds to speed up dev iteration #30865

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,10 @@
"build": "rollup -c utils/build/rollup.config.js",
"build-module": "rollup -c utils/build/rollup.config.js --configOnlyModule",
"build-docs": "jsdoc -c utils/docs/jsdoc.config.json",
"dev": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080\"",
"dev-ssl": "concurrently --names \"ROLLUP,HTTPS\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080 --ssl\"",
"dev": "node utils/build/dev.js && servez -p 8080",
"dev-ssl": "node utils/build/dev.js && servez -p 8080 --ssl",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to not change npm run dev and npm run dev-ssl so npm start stays as it is? I personally don't have any issues with build times and I would prefer if the existing workflows are unaffected.

I'm okay with adding two additional scripts for the new server.

Copy link
Collaborator

@gkjohnson gkjohnson Apr 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you explain what your concerns are? The current workflows from a user-perspective will only be improved. npm start is how users (new and old) are told to run and develop for the project and with the build process becoming slower and slower it's become more and more error prone. The default dev workflow should be be as simple and as hiccup-free as possible - especially for new contributors to the project.

If anything I'd prefer to move the current dev process to another script like "preview" if we really feel it's required.

"preview": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080\"",
"preview-ssl": "concurrently --names \"ROLLUP,HTTPS\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080 --ssl\"",
"lint-core": "eslint src",
"lint-addons": "eslint examples/jsm --ext .js --ignore-pattern libs --ignore-pattern ifc",
"lint-examples": "eslint examples --ext .html",
Expand Down
17 changes: 17 additions & 0 deletions utils/build/dev.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { rm, mkdir, writeFile } from 'node:fs/promises';

await rm( './build', { recursive: true, force: true } );

await mkdir( './build' );

const contents = {
'three.core.js': `export * from '../src/Three.Core.js';`,
'three.module.js': `export * from '../src/Three.js';`,
'three.tsl.js': `export * from '../src/Three.TSL.js';`,
'three.webgpu.js': `export * from '../src/Three.WebGPU.js';`,
'three.webgpu.nodes.js': `export * from '../src/Three.WebGPU.Nodes.js';`,
}

await Promise.all( Object.entries( contents ).map( ( [ filename, content ] ) =>
writeFile( `./build/${ filename }`, '// dev build\n' + content + '\n' )
) );