1. Einleitung Ich habe vor Kurzem die Prinzipien von Die von diesem Plugin implementierten Funktionen sind relativ einfach:
2. Webpack-Konstruktionsprozess und Plugin-Prinzip2.1 Webpack-Build-Prozess Der Hauptkonstruktionsprozess von
Wenn 2.2 Plugin-Prinzip Ein // Definiere eine Plugin-Klasse MyPlugin { // Konstruktor zum Empfangen von Plugin-Konfigurationsoptionen Konstruktor(Optionen) { // Konfigurationselemente abrufen und Plugin initialisieren} // Wenn das Plugin installiert ist, wird apply aufgerufen und an den Compiler übergeben anwenden(Compiler) { // Erhalten Sie exklusiven Zugriff auf Comolier, Sie können Event-Hooks anhören // Funktionsentwicklung … } } 2.3 Compiler und Kompilierungsobjekte Die beiden am häufigsten verwendeten Objekte bei der Entwicklung von
3. Plugin-Entwicklung3.1 Projektverzeichnis Die von diesem Plug-In implementierten Funktionen sind relativ einfach und das Dateiverzeichnis ist nicht kompliziert. Erstellen Sie zunächst einen leeren Ordner // entferne das Konsolen-Webpack-Plugin ├─Quelle │ └─index.js ├─.gitignore ├─paket.json └─README.md 3.2 Plugin-CodeDie Codelogik des Plug-Ins ist nicht kompliziert. Es gibt mehrere Hauptpunkte:
Klasse RemoveConsoleWebpackPlugin { // Der Konstruktor akzeptiert Konfigurationsparameter Konstruktor(Optionen) { let include = Optionen und Optionen.include; let removed = ['log']; // Standard-Löschmethodeif (include) { wenn (!Array.isArray(include)) { console.error('options.include muss ein Array sein.'); } sonst wenn (include.includes('*')) { // Die Übergabe von * bedeutet das Löschen aller Konsolen removed = Object.keys(console).filter(fn => { Rückgabetyp der Konsole [fn] === 'Funktion'; }) } anders { entfernt = einschließen; // Überschreiben entsprechend der eingehenden Konfiguration} } this.removed = entfernt; } // Webpack ruft die Apply-Methode der Plugin-Instanz auf und übergibt das Compilerobjekt apply(compiler) { // JS-Ressourcencode-Verarbeitungsfunktion let assetHandler = (assets, compilation) => { let removedStr = this.removed.reduce((a, b) => (a + '|' + b)); lass reDict = { 1: [RegExp(`\\.console\\.(${removedStr})\\(\\)`, 'g'), ''], 2: [RegExp(`\\.console\\.(${removedStr})\\(`, 'g'), ';('], 3: [RegExp(`console\\.(${removedStr})\\(\\)`, 'g'), ''], 4: [RegExp(`Konsole\\.(${removedStr})\\(`, 'g'), '('] } Object.entries(assets).forEach(([Dateiname, Quelle]) => { // JS-Datei abgleichen, wenn (/\.js$/.test(Dateiname)) { // Dateiinhalt vor der Verarbeitung let outputContent = source.source(); Objekt.Schlüssel(reDict).forEach(i => { sei [re, s] = reDict[i]; Ausgabeinhalt = Ausgabeinhalt.replace(re, s); }) Zusammenstellung.assets[Dateiname] = { // Dateiinhaltsquelle zurückgeben: () => { Ausgabeinhalt zurückgeben }, // Dateigröße zurückgeben size: () => { gibt Buffer.byteLength(Ausgabeinhalt, 'utf8') zurück } } } }) } /** * Hören Sie sich das Ereignis über compiler.hooks.compilation.tap an. * Holen Sie sich das Kompilierungsobjekt in der Rückrufmethode. */ compiler.hooks.compilation.tap('RemoveConsoleWebpackPlugin', Kompilierung => { // Webpack 5 wenn (Kompilierung.hooks.processAssets) { Kompilierung.hooks.processAssets.tap( { Name: 'RemoveConsoleWebpackPlugin' }, Vermögenswerte => VermögenswerteHandler(Vermögenswerte, Zusammenstellung) ); } sonst wenn (Kompilierung.hooks.optimizeAssets) { // Webpack 4 Kompilierung.hooks.optimizeAssets.tap( "ConsoleWebpackPlugin entfernen", Vermögenswerte => VermögenswerteHandler(Vermögenswerte, Zusammenstellung) ); } }) } } // Plugin exportieren module.exports = RemoveConsoleWebpackPlugin; 4. Auf npm veröffentlichen Wenn Sie möchten, dass andere Ihr Plugin verwenden, müssen Sie es in Registrieren Sie zunächst ein Konto auf Nach der Anmeldung können Sie mit Überprüfen Sie vor der Veröffentlichung, ob die Datei
Wenn alles bereit ist, wechseln Sie in das Verzeichnis, in dem sich das Plugin befindet, und führen Sie Suchen Sie nach dem erfolgreichen Hochladen auf 5. FazitDamit ist der Artikel über das Schreiben eines Webpack-Plugins in 80 Codezeilen und dessen Veröffentlichung auf npm abgeschlossen. Weitere Informationen zum Veröffentlichen von Webpack-Plugins auf npm finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: So installieren Sie die Odoo12-Entwicklungsumgebung unter Windows 10
>>: Zusammenfassung der allgemeinen MySQL-Benchmark-Befehle
Cockpit ist ein webbasiertes Serververwaltungstoo...
Die vier Eigenschaftswerte von Position sind: 1.V...
Erstens: Stellen Sie zunächst sicher, dass die Ser...
Wirkung html <div Klasse="sp-container&qu...
Inhaltsverzeichnis 0. Der mit dem System geliefer...
Heute werde ich diese Anfängerfragen beantworten: ...
Datenbank MySQL Version 8.0.18 Laden Sie eine DBe...
<iframe src=”URL Ihrer Seite” width=”100″ heigh...
1. Laden Sie die VMware Workstation 64-Version he...
Vorwort Swap ist eine spezielle Datei (oder Parti...
In diesem Artikel wird der spezifische Prozess zu...
Bei MySQL-Datenbankoperationen hoffen wir immer, ...
1. Analytisches Denken 1. Beseitigen Sie die eige...
In den meisten Anwendungsszenarien müssen wir wic...
Vorwort Projektanforderungen: Installieren Sie da...