Использование CoffeeScript с Tampermonkey

Поскольку я предпочитаю CoffeeScript, это лучший метод, который я нашел для его использования с Tampermonkey.

См. Ответ ниже.

3 ответа

Я предпочитаю иметь свой CoffeeScript в отдельном файле. Преимуществом такого подхода является правильное выделение синтаксиса, меньшее количество шума и возможность иметь отдельные файлы модулей для больших проектов.

Таким образом, у вас есть реальный пользовательский скрипт, например main.user.js:

// ==UserScript==
// …
// @grant GM_getResourceText
// @require http://coffeescript.org/extras/coffee-script.js
// @resource coffee main.coffee
// ==/UserScript==

eval(CoffeeScript.compile(GM_getResourceText('coffee')));

А рядом с ним у вас есть файл кофе (или файлы), в данном случае main.coffee.

Теперь вам просто нужно установить пользовательский скрипт по URI. Обычно я просто создаю для этого несколько файлов. Если вам не нравится, когда ваш скрипт сидит на каком-то сервере, вы также можете использовать URI файлов.


Шаг 1: Требовать CoffeeScript

В определении ==UserScript== добавьте:

// @require http://coffeescript.org/extras/coffee-script.js

Шаг 2: Определите функцию оценщика и напишите CS

Источник использует JS "встроенную строку", затем компилирует его.

Полный пример:

// ==UserScript==
// @name _Coffeescript test
// @include http://stackoverflow.com/questions/*
// @require http://coffeescript.org/extras/coffee-script.js
// ==/UserScript==

function evalCS(source) {
 // Compile source to Coffeescript (Array)
 var coffeescript = CoffeeScript.compile(source.toString()).split("\n");

 // Prepend 'debugger'
 coffeescript[1] = "debugger;" + coffeescript[1];

 // Join and eval
 eval(coffeescript.join("\n"));
}

// Script Source
// -------------
evalCS(<><!--[CDATA[

# CoffeeScript here...
# --------------------
foo = "Foo"
alert foo

]]-->);

Основано на этом сообщении форума


Важно: перейдите на страницу расширений Chrome и проверьте, включен ли параметр "Разрешить доступ к файлам" для Tampermonkey.

Затем напишите код CoffeScript в отдельном файле и укажите его как ресурс в вашем сценарии Tampermonkey:

// ==UserScript==
// @name Tampermonkey CoffeeScript Test
// @namespace http://your.namespace
// @version 0.1
// @author [removed_email]
// @match http://*/*
// @grant GM_getResourceText
// @require http://coffeescript.org/extras/coffee-script.js
// @resource coffee file:///home/path/to/script.coffee
// ==/UserScript==

eval(CoffeeScript.compile(GM_getResourceText('coffee')));

licensed under cc by-sa 3.0 with attribution.