Update and migrations
General update guide
TSCord is a template-kind of project, so updating it can really be harsh.
However, here is an update guide that you can (quite) follow for each migration:
cd
into your project directorygit remote add tscord https://github.com/barthofu/tscord
git fetch origin
- Now, get the tag of the release you want to update to (ex:
v2.1
) git merge v2.1
(replacev2.1
with the tag you want to)- Resolve the conflicts (we highly recommend you to use the new merge editor of VSCode)
- Once you've resolved all the conflict, commit the changes
git remote rm tscord
Migrations
This section contains useful information about some version migration.
v2.0 to v2.1
Custom events
Events and Custom events, which used to both relay the @On()
decorator of discordx
, are now split.
Indeed, we've implemented our own event manager so custom events are split from the discord ones, so they don't have to execute the whole guards pipeline.
You'll have to replace all your custom events by the new @OnCustom()
decorators, and emit them via the emit()
method of the EventManager
service.
configs
alias
The src/config
folder has been renamed to src/configs
, and so for its path alias: @config
-> @configs
.
v2.2 to v2.3
This migration is quite heavy, and you should be careful when updating to this version. It is mainly due to the fact that we've auto-formatted the code on nearly all the files.
You should check changes commit-per-commit on the associated Github PR to see what has changed and adapt your code accordingly.
Sorry for the inconvenience.
Path aliases
All the internal tsconfig
path aliases have changed from @<module_name>
to @/<module_name>
(e.g: @services
-> @/services
).
You should replace all the old path aliases by the new ones (quite fast to do with the global research/replace feature of your IDE).
Environment variables
We now use envalid
to validate the environment variables upon startup.
You shouldn't import them from process.env
anymore. Use the env
object from the @/env
module instead.
Service and Injectable
Three tsyringe decorators have been replaced by custom wrappers importable from @/decorators
:
@singleton()
->@Service()
@injectable()
->@Injectable()
@autoInjectable()
->@AutoInjectable()