Перейти к содержимому

Результат сборки

KILLSCRIPT загружает папку модуля или упакованный .KillScript, но не сам TypeScript-проект. Поэтому CLI создаёт из одних исходников две формы:

  • папочную сборку для установки и hot reload;
  • упакованную сборку для распространения.

Компилятор записывает .killscript/build/<ModuleName>/:

ModuleName/
├── module.json
├── config.json
├── inputs.json
├── scripts/
│ ├── main.lua
│ └── server.lua # Только Reflex-модуль
├── images/ # Если существуют в public/
├── sounds/
├── ui/
└── localization.csv
ПутьИсточник
module.jsonМетаданные проекта из killscript.config.json
config.jsonВерхнеуровневые объявления defineSettings()
inputs.jsonВерхнеуровневые объявления defineControls()
scripts/main.luaВсё, достижимое из src/client/main.ts
scripts/server.luaВсё, достижимое из src/server/main.ts
Остальные файлыКопия public/ с сохранением относительных путей

Вложенные TypeScript-файлы статически объединяются в два entry script. Они не превращаются в runtime-файлы для require(), поэтому ограниченный поиск путей игры не мешает структуре исходников.

killscript install и killscript dev синхронизируют папочную сборку сюда:

<игровая папка Modules>/<ModuleName>/

Установленная папка сохраняет UUID проекта и marker владельца. CLI обновляет только отсутствующую папку, собственную управляемую папку или модуль с тем же UUID. Чужой модуль не будет молча перезаписан.

Во время разработки используется папка, чтобы при сохранении менять только нужные файлы. Повторно импортировать .KillScript после каждого изменения не нужно.

Окно терминала
npm run build

создаёт:

dist/ModuleName.KillScript

Это архив с той же внутренней структурой папки, а не одиночный текстовый скрипт. Пользователям передаётся этот файл; сам TypeScript-проект и временная .killscript/ в пакет не входят.

Используйте killscript build --no-pack, если другому инструменту нужна только сгенерированная папка.