Warcraft 3 Lua Package Manager (WLPM) 0.7-beta

Добавлен , опубликован
Программы
Предназначение:
Работа с кодом
Современное решение для разработки Warcraft 3 карт!
Вносит менеджмент пакетов и 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 )

Быстрый Старт

  1. Установи WLPM
  2. Сохрани свою карту как директорию (пункт меню Сохранить как...)
  3. Открой любое окно терминала (нажать Win+R и ввести "cmd")
  4. ввести cd <директория твоей карты>
  5. после ввести 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\""
Работает только для корневых проектов.

Публикация Пакетов

Если ты хочешь опубликовать свой пакет, выполни следующие шаги:
  1. Создай git репозиторий на Github или Bitbucket
  2. Создай wlpm-package.json в корне репозитория
  3. Добавь параметры "dependencies" и "sources". Ориентируйся на пример конфига, описанного ниже.
  4. (опционально) добавь репозиторию git tag
  5. Теперь твой репозиторий - это пакет 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. Не поддерживает частичную подстановку версий типа 1.*, т.к. он не использует реестр пакетов
  2. Производит полное повторное скачивание при любом изменении требований в конфиге (планируется исправить в дальнейшем)
  3. Пока нет интеграции с 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
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
4
37
5 лет назад
Отредактирован ScorpioT1000
4
Обновил. Но тебе надо очистить war3map.lua (всё до строки gg_trg_ini, включая переносы строк), т.к. там были проблемы с символом переноса строки

0.6.1-beta

  • Исправлено подключение локальных файлов
3
37
5 лет назад
Отредактирован ScorpioT1000
3

0.7-beta

  • Поддержка выполнения команд (afterBuild)
  • Функция install ускорена, исправлена при выполнении из пустого проекта и при включении файлов
0
8
3 года назад
0
Похоже, я чего-то не понял, но когда я запускаю карту из редактора, все, что до этого добавилось в war3map.lua после команды WLPM build, все это исчезает.
1
37
3 года назад
Отредактирован ScorpioT1000
1
build, после сохранения
а watch как раз этого ждет и снова ребилдит
0
8
3 года назад
0
ScorpioT1000, вот да, я, кажется, забыл watch прописать. И еще, я этого не нашел в руководстве, а сам не разбираюсь в подобном: карта может быть запущена в редакторе, и работа с кодом и в РО выполняются независимо?
1
37
3 года назад
1
Ну, там нехитрый механизм ожидания закрытия файла war3map.lua редактором. А редактор его трогает только при сохранении. Остальные файлы не касаются самой карты.
0
37
2 года назад
Отредактирован ScorpioT1000
0
Последние новости!
На хайве полезная дискуссия появилась, нужна ли стандартизация зависимостей, где упоминали WLPM. Считаю, что не нужна
0
37
1 год назад
Отредактирован ScorpioT1000
0
Вмерджил PR от Newtonsoft.Json. Прикольно у них робот сам их создает.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.