Больше не актуально
!!! WLPM УСТАРЕЛ - ТЕПЕРЬ ИСПОЛЬЗУЕМ IMP
Вносит менеджмент пакетов и es6-подобные Lua модули в проект твоей карты.
Возможности
WLPM состоит из менеджера пакетов (Package Manager) и менеджера модулей (Module Manager) с собственной частью кода на Lua.
Мы вводим новый способ работы с зависимостями - WLPM Module Manager.
Возможности Package Manager
- Работает с картами в режиме карта-как-директория
- Свой формат файла конфигурации в JSON
- Устанавливает пакеты с зависимостями из Github и Bitbucket
- Устанавливает Lua файлы напрямую из Github, Bitbucket или заданных хостов в конфиге
- Отслеживание изменений (watcher) файлов и директорий (war3map.lua, sources, конфиг)
- Разрешение версий зависимостей
Возможности Module Manager
- Включение заданных пользователем директорий как зависимостей
- Верный порядок зависимостей в целевом (target) файле
- ES6-подобный импорт и экспорт в скриптах Lua
- Реально быстрая компиляция target файла на ходу (C# watcher)
Скачать
WLPM для Windows 10 x64
WLPM для любой Windows (совместимость)
WLPM для macOS (планируется, ждём фиксов Warcraft 3 )
WLPM для любой Windows (совместимость)
WLPM для macOS (планируется, ждём фиксов Warcraft 3 )
Быстрый Старт
- Установи WLPM
- Сохрани свою карту как директорию (пункт меню Сохранить как...)
- Открой любое окно терминала (нажать Win+R и ввести "cmd")
- ввести cd <директория твоей карты>
- после ввести wlpm - он покажет применимые команды
Чтобы инициализировать свой проект, ввести wlpm update. Он создаст wlpm-package.json и директорию .wlpm с зависимостями. Если ты используешь git (mercurial/svn/...), добавь .wlpm в свой игнор-файл (.gitignore).
Чтобы добавить новую зависимость, нужно ввести wlpm install <пакет> <версия>
Пример:
wlpm install https://github.com/Indaxia/wlpm-wc3-demo-hello
Мы не рекомендуем использовать "любую" версию в публичных проектах. Некоторые злоумышленники или краденные аккаунты могут обновить код и сделать его вредоносным.
Пример с конкретной версией (загружается из git tag):
wlpm install https://github.com/Indaxia/wlpm-wc3-demo-hello 1.1
Используй wlpm watch, чтобы вотчер уведомлял PM и MM, если что-то изменилось и производил загрузку новых пакетов и/или пересобирал модули.
Подробная помощь по менеджеру модулей находится в документации MM.
Расширенное Использование
Включение Файлов
Ты можешь включать файлы напрямую (пример с Big Integer):
wlpm install https://raw.githubusercontent.com/DeBos99/lua-bigint/master/bigint.lua * file
Выключение скрипта менеджера модулей (MM)
Если ты не хочешь использовать MM на стороне клиента (Lua), его можно отключить, добавив новую опцию в свой wlpm-package.json:
"insertModuleLoader": false
С этой опцией MM просто включает код зависимостей без скрипта MM.
Выполнение команд после сборки
Можно выполнить команду терминала после окончания процесса сборки:
"afterBuild": "echo \"hello world\""
Работает только для корневых проектов.
Публикация Пакетов
Если ты хочешь опубликовать свой пакет, выполни следующие шаги:
- Создай git репозиторий на Github или Bitbucket
- Создай wlpm-package.json в корне репозитория
- Добавь параметры "dependencies" и "sources". Ориентируйся на пример конфига, описанного ниже.
- (опционально) добавь репозиторию git tag
- Теперь твой репозиторий - это пакет WLPM!
Пример полного конфига (wlpm-package.json)
{
"title": "WLPM - Demo Map Package", // (необязательно) название вашего пакета или корневого проекта
"author": "ScorpioT1000 / scorpiot1000@yandex.ru", // (необязательно) информация об авторе
"license": "MIT", // (необязательно) лицензия исходного кода
"dependencies": { // список пакетов и файлов, требуемых вашим исходным кодом
// github репозиторий из master ветки
"https://github.com/123/456": "*",
// github репозиторий из релиза, отмеченного тагом "1.1.1"
"https://github.com/123/456": "1.1.1",
// bitbucket репозиторий из релиза, отмеченного тагом "1.0.0" в формате объекта
"https://bitbucket.org/123/789": { "type": "package", "version": "1.0.0" },
// вставляет файл напрямую
"https://github.com/123/456/blob/master/somefile.lua": {
"type": "file",
"topOrder": true // опустите этот параметр или установите значение false для вставки файла после кода репозиториев
}
},
// (необязательно для корневого проекта) где хранятся ваши исходники. Это важно для пакета, но может быть опущено для корневого проекта (он смотрит "target")
"sources": [
"src"
],
// (опционально) где хранить скомпилированную сборку lua. Работает только для корневого проекта.
"target": "war3map.lua",
// (необязательно) выполнить эту команду после сборки, например, "echo \"Hello!\""
"afterBuild": "",
// (необязательно) установить false, если требуется заменить встроенный менеджер модулей собственным
"insertModuleLoader": true,
// (необязательно) разрешить больше хостов для подключения файлов напрямую (по умолчанию разрешает github.com и bitbucket.org). Работает только для корневого проекта.
"allowHosts": []
// (необязательно) задать своё расширение файлов из "sources"
"sourceExtensions": "*.lua"
}
Ограничения
- Не поддерживает частичную подстановку версий типа 1.*, т.к. он не использует реестр пакетов
- Производит полное повторное скачивание при любом изменении требований в конфиге (планируется исправить в дальнейшем)
- Пока нет интеграции с VSCode, но планируется
Для C# разработчиков
Вы можете делать форки и создавать свои собственные модификации! Мое требование заключается в том, что любые поля "автор" в коде C# могут быть только дополнены(!).
Как скомпилировать
$version = git describe --tags --abbrev=0
dotnet publish -c Release --self-contained --runtime win10-x64 /property:Version=$version
dotnet publish -c Release --self-contained --runtime win-x86 /property:Version=$version
Ред. N7 Molot
Ред. ScorpioT1000
Ред. ScorpioT1000
wlpm-package.json