98 lines
3.8 KiB
Plaintext
98 lines
3.8 KiB
Plaintext
# ===========================
|
||
# Tampermonkey – zasady ogólne
|
||
# ===========================
|
||
- file-type: "Zawsze generuj userscript jako plik .user.js"
|
||
- header-block: |
|
||
Każdy skrypt musi zaczynać się od pełnego bloku nagłówka Tampermonkey, np.:
|
||
|
||
// ==UserScript==
|
||
// @name Example Script
|
||
// @namespace http://tampermonkey.net/
|
||
// @version 1.0
|
||
// @description Krótki opis działania skryptu
|
||
// @author Adam
|
||
// @match https://example.com/*
|
||
// @icon https://example.com/favicon.ico
|
||
// @grant none
|
||
// @run-at document-end
|
||
// ==/UserScript==
|
||
|
||
- comments: "Dodawaj komentarze do głównych sekcji skryptu"
|
||
|
||
# ===========================
|
||
# Styl kodu
|
||
# ===========================
|
||
- naming:
|
||
variables: "camelCase"
|
||
functions: "camelCase"
|
||
classes: "PascalCase"
|
||
- prefer-use: "const i let zamiast var"
|
||
- async: "Preferuj async/await zamiast then()"
|
||
- strict-mode: "Zawsze używaj 'use strict'; na początku"
|
||
- formatting: "Stosuj ESLint/Prettier style (2 spacje, średnik na końcu)"
|
||
|
||
# ===========================
|
||
# Struktura userscriptu
|
||
# ===========================
|
||
- main-entry: "Opakuj kod w IIFE (() => { ... }) aby uniknąć globalnych kolizji"
|
||
- dom-ready: "Stosuj document-end lub waitForElement zamiast ręcznych timeoutów"
|
||
- logging: "Używaj console.log tylko w trybie debug, dodając [Tampermonkey] jako prefix"
|
||
|
||
# ===========================
|
||
# Najlepsze praktyki
|
||
# ===========================
|
||
- selectors: "Preferuj querySelector/querySelectorAll zamiast jQuery"
|
||
- mutation-observer: "Do dynamicznych stron używaj MutationObserver zamiast setInterval"
|
||
- storage: "Używaj GM_setValue i GM_getValue do przechowywania ustawień"
|
||
- security: "Unikaj eval() i dynamicznego wykonywania kodu"
|
||
- updates: "Dodaj @updateURL i @downloadURL jeśli skrypt ma być hostowany"
|
||
|
||
# ===========================
|
||
# Testy i debug
|
||
# ===========================
|
||
- debug-flag: "Dodaj stałą DEBUG = true/false i używaj jej w logach"
|
||
- error-handling: "Każdy główny blok async powinien mieć try/catch"
|
||
|
||
# ===========================
|
||
# Wersja i opisy
|
||
# ===========================
|
||
- po każdej zmianie podnieś numer wersji, np. z 3.0 na 3.1
|
||
- każda zmiana kodu (dodanie funkcji, poprawka błędu, refaktoryzacja) MUSI kończyć się zmianą wersji
|
||
- nawet najmniejsze poprawki wymagają podwyższenia numeru wersji
|
||
- po każdej dodanej funkcjonalności opisz to w sekcji OPIS
|
||
- po każdej zmienie dodaj to, co zostało zrobione w danej wersji
|
||
|
||
# ===========================
|
||
# Ustawienia dodatkowe
|
||
# ===========================
|
||
- odpowiadaj zawsze w języku polskim
|
||
- przy wyszukiwaniu kolumn w tabelach zawsze używać nazwy kolumny (atrybut title, data-name lub textContent) zamiast indeksu kolumny
|
||
- indeksy kolumn mogą się zmieniać, ale nazwy pozostają stabilne
|
||
- funkcja findColumnByName powinna sprawdzać kolejno: title, data-name, textContent
|
||
|
||
# ===========================
|
||
# Nagłówek userscriptu - wymagane pola
|
||
# ===========================
|
||
- icon: "Zawsze dodawaj @icon z favicon strony docelowej"
|
||
- downloadURL: "Dodaj @downloadURL dla automatycznych aktualizacji"
|
||
- updateURL: "Dodaj @updateURL dla automatycznych aktualizacji"
|
||
- grants: "Dodaj odpowiednie @grant dla używanych funkcji GM_*"
|
||
|
||
# ===========================
|
||
# Dokumentacja w skrypcie
|
||
# ===========================
|
||
- opis-sekcja: |
|
||
Każdy skrypt musi mieć sekcję OPIS z:
|
||
- Wymaganymi parametrami URL
|
||
- Wymaganymi kolumnami w tabeli
|
||
- Opisem działania skryptu
|
||
- Listą funkcji kopiowania/przetwarzania
|
||
- Informacjami o zapamiętywaniu ustawień
|
||
- Informacjami o automatycznych aktualizacjach
|
||
- changelog-sekcja: |
|
||
Każdy skrypt musi mieć sekcję CHANGELOG z:
|
||
- Numerem wersji i datą
|
||
- Szczegółowym opisem zmian
|
||
- Informacją o podwyższeniu numeru wersji
|
||
- Format: "vX.Y (YYYY) - NAZWA ZMIANY"
|