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
Fügen Sie dem el-form-Formular Regeln hinzu: Defi...
In diesem Artikel wird der spezifische JavaScript...
Ich bin heute auf ein Problem gestoßen: Kann ich ...
Vorwort Beim Installieren der ausführbaren Datei ...
Vorwort Die allgemeinen Methoden sind hier nicht ...
CSS-Schrifteigenschaften definieren die Schriftfa...
CSS-Kombinationsselektoren umfassen verschiedene ...
Inhaltsverzeichnis for-Schleife While-Schleife do...
Tutorial zur Installation und Kennworteinstellung...
Inhaltsverzeichnis Vorwort Erster Blick auf React...
NProgress ist der Fortschrittsbalken, der oben im...
Inhaltsverzeichnis Was ist nginx 1. Laden Sie die...
Einführung: Im Internet gibt es zahlreiche Inform...
Inhaltsverzeichnis 1. Was ist Dockerfile? 2. Anal...
Da die Kosten für die Erstellung von HTTPS-Websit...