Piszę umiarkowanie złożony skrypt dla Grèsemonkey. Część tego jest generowanie dużego blobu HTML i CSS i wkuć go w stronę. Chciałbym zachować te blob HTML i CSS jako oddzielne pliki w moim drzewie źródłowym, ponieważ:

  • JavaScript nie ma ciągów wielowarstwowych, więc dostałem ogromną linię lub wiele kontatenacji lub kontynuacji linii. Brzydki.
  • Pliki ewoluują w różnych szybkościach, więc mając je jako oddzielne pliki w Git, jest na widocznie lepsze
  • Mój edytor tekstu może poprawnie ustawić tryb, gdy nie jest to jeden dokument osadzony w innym

Wśród wielu innych rzeczy.

Niestety, skrypty GrèsemeKey są tylko jednym skryptem, a nie pakietem, więc muszę w pewnym momencie inline HTML i CSS. Próbuję znaleźć dobry system budowy tego przepływu pracy. Budowa dystrybucji obejmuje kopiowanie z HTML i CSS do skryptu użytkownika.

Moim pierwszym instynktem było użycie Wykonaj preprocesor C i {x0}}, ale to działa tylko na liniach, więc robiąc coś w rodzaju:

var panel = document.createElement('div');
panel.innerHTML = '#include "panel.html"';

Nie działa.

Szukam, jest coś dokładnie takiego jak http://js-preprocessor.com/, ale to nie rzuć błąd "złą liczbę argumentów", gdy go uruchomię. : P.

3
nfirvine 28 listopad 2011, 22:12

4 odpowiedzi

Najlepsza odpowiedź

Zakończyłem się toczyć w Pythonie. To nie jest dokładnie trywialne (~ 50 Loc), THG435, ale wykonuje zadanie. Brock Adams 'CDATA Multiline Ciąg ułatwia.

0
nfirvine 6 grudzień 2011, 21:03

Hmm, to trudne pytanie. Myślę, że uważasz za @REQUIRE lub @ Resource-Wings, który obejmuje inne dokumenty jako denerwujące ( Ponieważ zostanie pobrany tylko podczas instalowania / aktualizacji skryptu).

Inną opcją byłoby przechowywanie plików w sieci i mieć do nich adresy URL i przyniesie je w razie potrzeby. Nie będzie to działać dla Chrome (polityka samego początku), ale działa dla Gryaseyy / Firefoksa. Prawdopodobnie używałbym prawdziwej wersji (1 plik z względnymi adresami URL i wersji) i Localstorage, więc pliki są buforowane.

1
Johan 28 listopad 2011, 22:29

Nie jestem świadomy takiego narzędzia, ale nie wydaje się, aby pisać w języku skryptowym. Na przykład w węzła.js

var fs = require('fs');

fs.readFile(process.argv[2], "utf-8", function(err, data) {
    console.log(data.toString().replace(/include\s+([\w.]+)/g, function($0, $1) {
        return fs.readFileSync($1).toString().replace(/\n/g, " ");
    }))
})

Możesz umieścić to w budownictwie lub cokolwiek i zadzwonić do tego w swoim makefile.

1
georg 28 listopad 2011, 22:43

Wypróbuj ten jeden - @Builder , który między innymi obsługuje obsługuje bezpośrednio od Githuba: HTTPS: //Github.com/electriMimp/builder.

Mały przykład

@include "localFile.js"
@include once "github:jquery/jquery/build/release.js@2.2.3"

@set ABC 123

@if ABC > 123
  //
@else
  //
@end
0
mym 25 kwiecień 2016, 09:22