0

Разработка скриптов Tampermonkey в полноценной IDE с автоматическим деплоем в репозиторий OpenUserJs

12

Описание проблемы:

Я недавно начал разработку скрипта для Tampermonkey, который размещен на OpenUserJs. Поскольку я планирую в будущем потратить больше времени на его обновление и расширение функциональности, я начал редактировать его в встроенном редакторе Tampermonkey для Chrome (кнопка редактировать скрипт).

Однако меня это не устраивает, потому что я остро ощущаю нехватку функции автозаполнения/интеллисенса. В Visual Studio эти возможности значительно лучше, поэтому я принял решение вернуться к редактору VS. Проблема: после любых изменений мне приходится копировать весь код и вставлять его в редактор Tampermonkey (Google Chrome). Это очень раздражает и не даёт нужной гибкости, поскольку я не могу разбить свой код на несколько файлов .js по мере роста скрипта.

Есть ли способ автоматизировать этот процесс? Я представил себе следующую схему: я сохраняю файл .js в VS (ctrl + s), и затем скрипт автоматически загружается в мою локальную разработческую среду Google Chrome для тестирования.

Дополнение:

Я хочу публиковать альфа/бета версии как размещенные версии на OpenUserJs, чтобы легко тестировать релизы на различных системах. У меня также есть по крайней мере одна система, на которой я провожу реальный процесс обновления через репозиторий OpenUserJs, так же, как это делают мои конечные пользователи. Я считаю это важным, поскольку уже заметил некоторые отличия в сравнении с моим ручным рабочего процессом (копирование и вставка в редактор OpenUserJs).

Мое предпочтительное решение — что-то вроде веток, как в git. То есть я устанавливал бы скрипт из OpenUserJs так же, как это делают пользователи с продуктивной версией, но у меня была бы возможность выбирать, например, ветку development вместо master. OpenUserJs, похоже, поддерживает GitHub как исходную базу, но не какие-либо ветки. Я не могу поверить, что нет какого-либо решения для таких вопросов, с которыми, по крайней мере, каждый разработчик с большими скриптами сталкивается...

2 ответ(ов)

0

Вы можете использовать тег @updateURL в пользовательском скрипте, чтобы указать веб-URL [1] и использовать его вместе с git для достижения вашей цели.


Вот как я это реализовал:

  • На моем экземпляре Gitlab URL https://foo.com/user/project/raw/develop/main.user.js указывает на сырой файл пользовательского скрипта из ветки develop.
  • Ссылки на ветку develop и другие важные фичи доступны в описании проекта, чтобы пользователи могли выбрать версию разработки вместо основной [2].
  • Для совместного использования я использую следующий шаблон:
// ==UserScript==
// @name         Новый пользовательский скрипт
// @namespace    foo.com
// @version      0.3
// @description  попытка захватить мир!
// @author       пользователь
// @match        https://bar.org/*
// @grant        none
// @updateURL    https://foo.com/user/project/raw/develop/main.user.js
// ==/UserScript==

(function() {
    'use strict';

    // Ваш код здесь...
})();
  • Затем, при нажатии на кнопку Проверить обновления пользовательского скрипта в Greasemonkey или Tampermonkey, они установят скрипт, доступный по этому URL.

[1] URL должен быть доступен из того места, откуда вы хотите установить его, например, публичный репозиторий на Github с вашего личного компьютера или приватный экземпляр Gitlab вашей компании с рабочего компьютера.

[2] Обратите внимание, что для установки по клику на ссылку имя файла должно заканчиваться на .user.js.

0

Проблема с использованием file:/// у меня не сработала. Я нашел способ получить значение для тега @require: просто перетащил свой .user.js файл в Chrome с отключенным Tampermonkey. Это заставило Chrome скачать файл, после чего я проверил адрес, откуда он был загружен. Путь к этому файлу начинался с file:///c%3A/Users/.../<script>.user.js, что означает, что в пути также необходима буква диска.

Также убедитесь, что в вашем редакторе не присутствует тег @require, так как в противном случае может возникнуть петля самоподключения, и это вряд ли будет приятным опытом.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь