Больше не актуально
!!! 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
Edited by N7 Molot
Edited by ScorpioT1000
Edited by ScorpioT1000
wlpm-package.json
Edited by ScorpioT1000
0.6.1-beta
Edited by ScorpioT1000
0.7-beta
Edited by ScorpioT1000
а watch как раз этого ждет и снова ребилдит
Edited by ScorpioT1000
Edited by ScorpioT1000
Edited by Koladik
Edited by Koladik
Edited by ScorpioT1000
Edited by Koladik
заметил еще, что если добавить еще подпапку, то ее вводов будет уже три
Edited by ScorpioT1000
Edited by ScorpioT1000
WLPM больше не поддерживается