Tool zum automatischen Einfügen von CSS und Javascript in HTML

Kennen Sie ein Tool, um

automatisch externe CSS- und JavaScript-Ressourcen in eine HTML-Datei einfügen ?

Das Ziel ist es, eine einzige HTML-Datei zu haben, die offline richtig angezeigt werden kann.

Ähnlich wie bei einer alten Frage zu StackOverflow (aber die Antworten dort scheinen nur CSS zu unterstützen, nicht Javascript).

Jede der Plattformen: online (Webzugriff), Unix, Windows ist in Ordnung.

Ich dachte, das könnte erreicht werden, indem alle ersetzt werden:

<script type="text/javascript" src="x.js"></script>

mit

   <script type="text/javascript">
     And here goes the content of the x.js file
   </script>

und ebenso alle <link rel="stylesheet" type="text/css" href="theme.css">mit

<head>
 <style>
   Here goes the content of theme.css
 </style
</head>

(oder was auch immer die tatsächliche Syntax ist)

Könnten Sie bitte Ihre Frage bearbeiten und Ihre Anforderungen an das Betriebssystem nennen, auf dem sie ausgeführt werden soll?
Klarstellung hinzugefügt.
Wäre die Quelle eine Webseite online oder aus Quelldateien, die Sie auf Ihrem Computer haben?
@NickWilde - Ich werde die HTML-Datei auf meinem Computer haben, während die Links im Internet (http://) sein werden, zB zu den öffentlich gehosteten Javascript-Bibliotheken (zB JQuery). | Aber wenn es ein Problem ist, kann ich immer wgetalle Ressourcen.
Okay, dann denke ich, dass ich eine gute Option habe. Ich werde es nur testen, bevor ich es tatsächlich empfehle (ich habe es vor einiger Zeit heruntergeladen, bin aber noch nicht dazu gekommen, damit zu spielen)
@NickWilde - das würde mich freuen! Vielen Dank

Antworten (5)

Installation/Verwendung:

  • Installieren Sie Python 2.7xstellen Sie sicher, dass Sie die Option zum Hinzufügen zur PATH-Variable auswählen
  • Installieren Sie Node.js
  • Installieren Sie Windows-SDK 7.1 . Es funktioniert mit allem, was XP+ ist. Windows SDK 8 funktioniert nicht sofort nach dem Auspacken – enthält nicht alle Tools. Wenn Sie die VS 2010 Redistributables bereits installiert haben, versuchen Sie, sie im Installationsprogramm für das Windows SDK zu deaktivieren - andernfalls müssen Sie sie möglicherweise deinstallieren, um dies installieren zu können, und dann die neuere Version neu installieren, wenn dies irgendwann erforderlich ist.
  • Installieren Sie das WebCombiner Node.js-Paket. Am einfachsten ist es, die cmd-Zeile npm install -g web-combiner aus der SDK-Befehlszeile anstelle der normalen cmd-Zeile zu verwenden
  • Befehlszeile ausführeninliner path.html out.html true

Diese Anweisungen gehen von Windows aus - wenn nicht Windows, wird das SDK offensichtlich nicht benötigt, aber ein alternativer Compiler könnte erforderlich sein.

Jeder <link href=muss auf lokale Dateien verweisen oder es gefällt ihm nicht (dh schwerwiegender Fehler). Dies könnte wahrscheinlich ziemlich einfach behoben werden, aber es ist derzeit eine Schwäche. Das Schlimmste daran ist, dass nicht überprüft wird, ob es sich um einen CSS-Link handelt, sodass auch Atom-/Image-Referenzen <linkProbleme verursachen. Das bedeutet natürlich, dass die css/js lokal sein müssen, aber wenn Sie einfach als HTML-Seite von Firefox oder Chrome speichern, werden diese standardmäßig gespeichert, sodass dies kein ernsthaftes Problem sein sollte, wenn auch etwas ärgerlich.

Danke, dass du das geteilt hast. Es scheint ein ziemlich einfaches Tool zu sein und hat einige Probleme, zB github.com/newghost/web-combiner/issues/1

Die Antwort von Nick Wilde führte zu einer weiteren Antwort:

ein weiteres nodejs-Projekt namens Inliner .

(Ich habe gerade erst versucht, das zu verwenden, und habe mein Ziel noch nicht erreicht - da einige Fehler auftauchen.)

Der Quellcode für „Nick Wildes“ WebCombiner enthielt einen Kommentar, der auf das Inliner-Projekt hinwies: github.com/newghost/web-combiner/commit/…
Das Inliner-Tool hat auch einige Fehler. Ich bin auf dieses hier gestoßen: github.com/remy/inliner/issues/13 Aber ansonsten scheint es ziemlich gut zu funktionieren. Ergibt nodejs ./inliner.js -i "http://softwarerecs.stackexchange.com/questions/9983/tool-to-automatically-inline-both-css-and-javascript-into-html"zB eine große HTML-Datei mit JQuery und anderen Inline-Dateien.
Falls es jemanden interessiert, ich habe es geschafft, das Problem Nr. 13 zu beheben und eine Pull-Anfrage an das Repository gesendet. Funktioniert bei mir.
Ich habe dieses Inliner-Tool kürzlich verwendet und es funktioniert hervorragend. Derzeit wird bereits minimiertes Javascript (*.min.js) nicht eingebunden. Durch Bearbeiten der Quelle können Sie dies jedoch bei Bedarf umgehen.

Ihre Frage ist nicht sehr klar, aber je näher ich Ihrem Ziel (einer einzelnen HTML-Datei) sehen kann, ist das MHTML-Format . Ok, es ist keine einzelne HTML-Datei, sondern eine einzelne MHTML-Datei, aber Sie können JS, CSS und vieles mehr wie Bilder einfügen!

Microsoft IE kann eine Seite in einer einzigen MHT-Datei speichern.

Das Firefox-Plugin UnMHT ermöglicht es Ihnen, diese Datei auf jedem Betriebssystem zu rendern.

Hier ist eine interessante Seite dazu:

So öffnen Sie .mht-Dateien in Firefox unter Linux

Er sagte, wenn er das möchte, dann "eine einzige HTML-Datei haben, die offline richtig angezeigt werden kann". Das ist also ein weiterer Weg zum selben Ziel … IMHO, aber seine Frage ist nicht klar
OK, ich denke, dies hat das gleiche Endergebnis (offline anzeigen), aber das OP hat an eine andere Methode gedacht als das, was Sie gesagt haben
Ich weiß, und vielleicht liegt es daran, dass er nicht weiß, dass eine andere Methode verfügbar ist (ich weiß es nicht), deshalb schlage ich diese Methode vor.
@PascalQyy "IMHO, aber seine Frage ist nicht klar" - bitte helfen Sie mir, die Frage klarer zu machen. Welche Informationen fehlen Ihnen?
Wenn meine Antwort überhaupt nicht Ihren Anforderungen entspricht, wird sie klarer sein
Relevant: XY-Probleme – manchmal stellt der Fragesteller die falsche Frage. Diese Antwort könnte die richtige Antwort sein, wenn ja.

Ich füge dies hinzu, weil ich kürzlich genau die Aufgabe erledigen musste, aber diese Lösung scheint einfacher einzurichten zu sein ....

Sie können Python installieren und dann ausführen , um HTMLArkpip install htmlark[http,parsers] zu installieren .


usage: htmlark [-h] [-o OUTPUT] [-E] [-I] [-C] [-J]
               [-p {html.parser,lxml,html5lib,auto}] [-v] [--version]
               [webpage]

Converts a webpage including external resources into a single HTML file. Note
that resources loaded with JavaScript will not be handled by this program, it
will only work properly with static pages.

positional arguments:
  webpage               URL or path of webpage to convert. If not specified,
                        read from STDIN.

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        File to write output. Defaults to STDOUT.
  -E, --ignore-errors   Ignores unreadable resources
  -I, --ignore-images   Ignores images during conversion
  -C, --ignore-css      Ignores stylesheets during conversion
  -J, --ignore-js       Ignores external JavaScript during conversion
  -p {html.parser,lxml,html5lib,auto}, --parser {html.parser,lxml,html5lib,auto}
                        Select HTML parser. If not specifed, htmlark tries to
                        use lxml, html5lib, and html.parser in that order (the
                        'auto' option). See documentation for more
                        information.
  -v, --verbose         Prints information during conversion
  --version             Displays version information

Das resultierende HTML wird in die Standardausgabe gedruckt, sodass Sie die Ausgabeumleitung verwenden müssen, um es in einer Datei wie dieser zu speichern:htmlark http://example.com/ > inlined.html

Dieses Open-Source-Tool von Wildbit (Hersteller von Poststempeln) wurde gerade veröffentlicht und sieht vielversprechend aus ...

StyleMerge

Einfaches CSS-Inlining, für E-Mail, für C# und andere .net-basierte Sprachen.

https://github.com/wildbit/style-merge