This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
ScriptCraft/docs/ARCHITECTURE.md

34 lines
1.3 KiB
Markdown
Raw Permalink Normal View History

2020-05-31 17:51:21 +00:00
# Architecture
## JavaScript
Inside the JAR, JS source files are in ```<JAR Root>/scriptcraft```, and inside a typical Gradle project they are in ```src/main/resources/scriptcraft```.
### External Libraries
An external libraries API can be accessed using an ```import``` statement.
## TypeScript
2020-06-01 21:32:20 +00:00
TypeScript-based projects use the ```com.thebrokenrail.scriptcraft.plugin``` Gradle plugin, this plugin will handle installing TypeScript and download any API type declarations. The TypeScript root using this Gradle plugin is at ```src/main/ts```.
### Custom TypeScript Root
The root for the TypeScript sub-project can be changed with:
```groovy
scriptcraft {
root = new File(project.rootDir, "a/b/c")
}
```
2020-05-31 17:51:21 +00:00
### External Libraries
To access an external libraries' API in addition to an ```import``` statement, the TypeScript compiler must have access to the external libraries' type declarations. The ScriptCraft Gradle plugin generates and downloads these using JAR files called API JARs.
To generate an API JAr from your project, run ```./gradlew apiJar```, or add the ```apiJar``` task to your Maven publication.
To add an API JAR to your project, add it to the ```typescript``` configuration in your ```dependencies``` block.
#### API JAR File Structure
```
- API JAR Root
- src/
- Source Root
- types/
- File structure of node_modules/@types
```