roblox-ts template
A roblox-ts template for fully managed rojo projects.
[![Production](https://img.shields.io/badge/production-000000?style=for-the-badge&logo=roblox&logoColor=d9e0ee)](https://www.roblox.com/games/17834656300)
[![Development](https://img.shields.io/badge/development-blue?style=for-the-badge&logo=robloxstudio&logoColor=d9e0ee)](https://www.roblox.com/games/17613681043)
[![Get
Support](https://img.shields.io/badge/support-ffffff?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNjMiIGhlaWdodD0iMjYzIiBmaWxsPSJub25lIj4KCTxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zOTUgLTIxMikgcm90YXRlKDE1IDQ1MSAyMTMpIj4KCQk8cmVjdCB4PSI0NTEiIHk9IjIxMyIgd2lkdGg9IjIxMyIgaGVpZ2h0PSIyMTMiIHJ4PSIwIiBmaWxsPSIjRTIyNDFBIi8+CgkJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01ODAuODM3IDM4MS43MTNWNDAzLjE5OEM1ODQuMzMyIDQwNC45ODkgNTg4LjQ2NCA0MDYuMzMyIDU5My4yMzUgNDA3LjIyN0M1OTguMDA2IDQwOC4xMjIgNjAzLjAzNCA0MDguNTcgNjA4LjMyIDQwOC41N0M2MTMuNDcyIDQwOC41NyA2MTguMzY2IDQwOC4wNzcgNjIzLjAwMyA0MDcuMDkyQzYyNy42MzkgNDA2LjEwOCA2MzEuNzA0IDQwNC40ODUgNjM1LjE5OSA0MDIuMjI1QzYzOC42OTMgMzk5Ljk2NCA2NDEuNDU5IDM5Ny4wMSA2NDMuNDk3IDM5My4zNjJDNjQ1LjUzNSAzODkuNzE0IDY0Ni41NTUgMzg1LjIwNSA2NDYuNTU1IDM3OS44MzNDNjQ2LjU1NSAzNzUuOTM5IDY0NS45NzIgMzcyLjUyNiA2NDQuODA3IDM2OS41OTRDNjQzLjY0MyAzNjYuNjYzIDY0MS45NjMgMzY0LjA1NSA2MzkuNzY4IDM2MS43NzNDNjM3LjU3MyAzNTkuNDkgNjM0Ljk0MSAzNTcuNDQyIDYzMS44NzIgMzU1LjYyOUM2MjguODA0IDM1My44MTYgNjI1LjM0MyAzNTIuMTA0IDYyMS40OTEgMzUwLjQ5M0M2MTguNjY4IDM0OS4zMjkgNjE2LjEzNyAzNDguMTk5IDYxMy44OTggMzQ3LjEwMkM2MTEuNjU4IDM0Ni4wMDYgNjA5Ljc1NCAzNDQuODg3IDYwOC4xODYgMzQzLjc0NUM2MDYuNjE4IDM0Mi42MDQgNjA1LjQwOSAzNDEuMzk1IDYwNC41NTcgMzQwLjEyQzYwMy43MDYgMzM4Ljg0NCA2MDMuMjgxIDMzNy40IDYwMy4yODEgMzM1Ljc4OUM2MDMuMjgxIDMzNC4zMTIgNjAzLjY2MSAzMzIuOTggNjA0LjQyMyAzMzEuNzk0QzYwNS4xODUgMzMwLjYwOCA2MDYuMjYgMzI5LjU5IDYwNy42NDggMzI4LjczOUM2MDkuMDM3IDMyNy44ODkgNjEwLjczOSAzMjcuMjI5IDYxMi43NTUgMzI2Ljc1OUM2MTQuNzcxIDMyNi4yODkgNjE3LjAxMSAzMjYuMDU0IDYxOS40NzUgMzI2LjA1NEM2MjEuMjY3IDMyNi4wNTQgNjIzLjE1OSAzMjYuMTg4IDYyNS4xNTMgMzI2LjQ1N0M2MjcuMTQ2IDMyNi43MjUgNjI5LjE1MSAzMjcuMTM5IDYzMS4xNjcgMzI3LjY5OUM2MzMuMTgzIDMyOC4yNTggNjM1LjE0MyAzMjguOTYzIDYzNy4wNDYgMzI5LjgxNEM2MzguOTUgMzMwLjY2NCA2NDAuNzA5IDMzMS42NDkgNjQyLjMyMSAzMzIuNzY4VjMxMi42OTNDNjM5LjA1MSAzMTEuNDM5IDYzNS40NzkgMzEwLjUxMSA2MzEuNjA0IDMwOS45MDZDNjI3LjcyOSAzMDkuMzAyIDYyMy4yODMgMzA5IDYxOC4yNjUgMzA5QzYxMy4xNTggMzA5IDYwOC4zMiAzMDkuNTQ4IDYwMy43NTEgMzEwLjY0NUM1OTkuMTgyIDMxMS43NDIgNTk1LjE2MSAzMTMuNDU0IDU5MS42ODkgMzE1Ljc4MUM1ODguMjE4IDMxOC4xMDkgNTg1LjQ3NCAzMjEuMDc0IDU4My40NTggMzI0LjY3N0M1ODEuNDQyIDMyOC4yODEgNTgwLjQzNCAzMzIuNTg5IDU4MC40MzQgMzM3LjYwMkM1ODAuNDM0IDM0NC4wMDMgNTgyLjI4MiAzNDkuNDYzIDU4NS45NzggMzUzLjk4NEM1ODkuNjc0IDM1OC41MDUgNTk1LjI4NCAzNjIuMzMyIDYwMi44MSAzNjUuNDY1QzYwNS43NjcgMzY2LjY3NCA2MDguNTIyIDM2Ny44NiA2MTEuMDc1IDM2OS4wMjRDNjEzLjYyOSAzNzAuMTg3IDYxNS44MzUgMzcxLjM5NiA2MTcuNjk0IDM3Mi42NDlDNjE5LjU1MyAzNzMuOTAzIDYyMS4wMiAzNzUuMjY4IDYyMi4wOTUgMzc2Ljc0NUM2MjMuMTcxIDM3OC4yMjIgNjIzLjcwOCAzNzkuOSA2MjMuNzA4IDM4MS43OEM2MjMuNzA4IDM4My4xNjggNjIzLjM3MiAzODQuNDU1IDYyMi43IDM4NS42NDFDNjIyLjAyOCAzODYuODI3IDYyMS4wMDkgMzg3Ljg1NyA2MTkuNjQzIDM4OC43MjlDNjE4LjI3NiAzODkuNjAyIDYxNi41NzQgMzkwLjI4NSA2MTQuNTM2IDM5MC43NzdDNjEyLjQ5OCAzOTEuMjcgNjEwLjExMiAzOTEuNTE2IDYwNy4zOCAzOTEuNTE2QzYwMi43MjEgMzkxLjUxNiA1OTguMTA3IDM5MC42OTkgNTkzLjUzNyAzODkuMDY1QzU4OC45NjggMzg3LjQzMSA1ODQuNzM1IDM4NC45ODEgNTgwLjgzNyAzODEuNzEzWk01NDUuMDI2IDMyOC4yNDZINTcyLjY1NVYzMTAuNTU2SDQ5NS42NDVWMzI4LjI0Nkg1MjMuMTM5VjQwNy4wMTRINTQ1LjAyNlYzMjguMjQ2WiIgZmlsbD0id2hpdGUiLz4KCTwvZz4KPC9zdmc+Cg==)](https://discord.com/invite/JFvZY5JSBT)
[!CAUTION]
You likely do not need a fully managed rojo project. For the vast majority of
projects, a more simple setup will suffice. If you are new to roblox-ts, I
would strongly advise against using the vast majority of the tooling in this
project. Instead, I would recommend starting with a more simple setup such as
the default flamework template, or the
roblox-ts-template by
MonzterDev.
This is my personal template for use in the roblox-ts ecosystem, utilizing
popular libraries and tools such as Flamework, React, and Reflex. For a
comprehensive list of packages, refer to the package.json
file.
The primary objective of this project is to provide a streamlined approach for
initiating new projects, complete with frequently used patterns that I adopt
already configured. Additionally, it integrates my own customized eslint-config,
which is a highly opinionated guide for writing clean and consistent code.
[!NOTE]
This aims to be a fully-fledged solution to fully managed rojo projects but does
not currently have any built-in support for handing models. Eventually this
functionality will exist. For now, you can investigate
Lune to figure out solutions that will work
for your use case.
How to use:
- Press the green
Use this template
button on the top right of the page to
create a new repository.
- Clone the repository to your local machine.
- Run
pnpm install
to install all the dependencies.
- Run
pnpm run dev:start
to start the development server.
- Start coding! 🎉
Resources
The following is a list of primary resources that are used in this project (in
alphabetical order):
Packages
Roblox Tools
Development Tools
Guide
The following is a guide to the tools of the project and how to typically use
them.
Developing
While in development, I would typically use the pnpm run dev:start
command to
compile the project and start the development server. This will compile the
code, build the project, and then automatically open the place file in Roblox
Studio.
To publish the project, I would use the pnpm run prod:build
command to build
the game project with the production configuration. This will delete your
current out
folder, replace it with the new build, and then automatically runs
darklua on the project (outputting the game project to the dist
folder). This
allows us to completely remove any development only code, such that it does not
exist in the final game project. This process is currently automated when you
merge a pull request into the main
branch.
Tip
All of the commands can be found in the package.json
file under the scripts
section. These can be accessed in VSCode through the NPM SCRIPTS
tab in the
sidebar, where you can run them by clicking the play button next to the command.
Contributing
As this is a personal template, I am not typically seeking contributions.
However, if you discover any bugs, feel free to create a pull request or an
issue, and I will address it. If you wish to suggest a feature or improvement,
please submit an issue first to initiate discussion!
Credits 🙏
Some of the code in this template has been taken from others and modified for my
usage, and I would like to give credit to the following people and projects: