3591 individual conflicts
Update build.js
Update install_node.sh
Update byond.js
oh my fucking god
hat
slow
huh
holy shit
we all fall down
2 more I missed
2900 individual conflicts
2700 Individual conflicts
replaces yarn file with tg version, bumping us down to 2200-ish
Down to 2000 individual conflicts
140 down
mmm
aaaaaaaaaaaaaaaaaaa
not yt
575
soon
900 individual conflicts
600 individual conflicts, 121 file conflicts
im not okay
160 across 19 files
29 in 4 files
0 conflicts, compiletime fix time
some minor incap stuff
missed ticks
weird dupe definition stuff
missed ticks 2
incap fixes
undefs and pie fix
Radio update and some extra minor stuff
returns a single override
no more dupe definitions, 175 compiletime errors
Unticked file fix
sound and emote stuff
honk and more radio stuff
## About The Pull Request
Puts a switch inside our build tools that will download the appropriate
node version based on your OS.
#82334
## Why It's Good For The Game
Closes#83076
Allows players to play the game
Add Common Build Tooling
## Information for Developers
On Windows, the build scripts will automatically install Node. Other
platforms should use their package manager or download it from
https://nodejs.org/en/download/
Pick one:
- VSCode: `Ctrl+Shift+B`
- VSCode: `F5` (build & run with debugger) or `Ctrl+F5` (build & run
without debugger)
- Windows: double-click root `Build.bat` (pause to see output) or
`tools/build/build.bat` (no pause)
- Git Bash and non-Windows: `tools/build/build`
## Information for Server Admins
- TGS scripts will automatically install the version of Node specified
in `dependencies.sh`
- Either use this build script, or compile tgui by running any script
in `tgui/bin` folder.
## Details
Both dm and tgui are now built with a single script. It's pretty easy
to launch: just press `Ctrl+Shift+B` in VSCode, and tada! 🎉
**It's smart.** It will skip certain steps if source files were
untouched for that step. So, if you're only touching dm code, it will
only rebuild dm code, and will skip tgui.
**Syntax is fairly readable and maintainable.**
```js
const { Task, runTasks, exec } = require('./cbt');
const taskTgui = new Task('tgui')
.depends('tgui/yarn.lock')
.depends('tgui/packages/**/*.js')
.provides('tgui/public/*.bundle.*')
.provides('tgui/public/*.chunk.*')
.build(async () => {
await exec('tgui/bin/tgui');
});
runTasks([taskTgui]);
```
**This is a long term solution to the js bundle hell.** Now that we
have a single script to build everything, bundles have been excluded
from the repo, and they will no longer cause conflicts in PRs. This
results in quicker PR turnaround time and less time wasted on
rebuilding tgui for PRs.
**CI pipelines have been updated.** They're not coded in the most
optimal way, just making them green for now.
## Possible future work
- Support compiling with DM defines by passing them as an argument,
like `-D LOWMEMORYMODE`.
- Instead of explicitly listing the task sequence in `runTasks()`,
support specifying tasks in `.depends()`, which in turn will allow
building a graph of dependencies and running things in parallel.
Co-authored-by: Tad Hardesty <tad@platymuus.com>
- Add root Build.bat
- Add trio of tools/bootstrap/ scripts for Node
- Add tools/build/README.md
- Ensure build script and VSC configuration works properly on Linux
- Update TGS4 PreCompile scripts
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
- Keep PreCompile scripts compatible with TGS3 as well
- Update LinuxOneShot PreCompile scripts
- Update TGS4 configuration