2015-05-29 10 views
6

Ich versuche, einige Platzhalter in verschiedenen Dateien zu ersetzen, wie ich es kopiere. Mein gruntfile funktioniert gut, aber fügt in der Prozessoption hinzu, um die Ersetzungen zu tun, es funktioniert einfach nicht. Unten ist der entsprechende Abschnitt meines gruntfile: https://github.com/pilau/starter (das öffentliche Verzeichnis verpflichtet ist nicht auf den Repo, weil es ein Starter Thema ist):grunt-contrib-copy Syntax für Prozess Option Verwirrung

grunt.initConfig({ 

    copy: { 
     js: { 
      files: [{ 
       expand: true, 
       cwd: 'src/wp-content/themes/pilau-starter/', 
       src: ['**/*.js'], 
       dest: 'public/wp-content/themes/pilau-starter/' 
      }], 
      options: { 
       process: function (content) { 
        console.log(content); 
        content = content.replace(/pilauBreakpointLarge/g, breakpoints.large); 
        content = content.replace(/pilauBreakpointMedium/g, breakpoints.medium); 
        return content; 
       } 
      } 
     }, 
    } 

}); 

Die Wege können im Rahmen des Codes auf GitHub zu verstehen. Diese Pfade sind Variablen in meiner ursprünglichen Gruntdatei und funktionieren in allen anderen Aufgaben gut.

Alle vars sind in Ordnung. Ich habe die console.log(content) eingeschlossen, um zu überprüfen, ob die Prozessfunktion tatsächlich läuft - es scheint nicht zu sein, also denke ich, dass es grundlegende Syntax ist.

Es gibt eine Antwort (https://stackoverflow.com/a/28600474/1087660), die dies zu adressieren scheint, aber soweit ich das beurteilen kann, ist diese Art, es zu tun, einfach schlechte JS Syntax - nicht sicher, wie es als richtig markiert wurde.

--verbose Ausgang für den Betrieb der Kopieraufgabe:

Running "copy:js" (copy) task 
Verifying property copy.js exists in config...OK 
Files: src/wp-content/themes/pilau-starter/js/admin.js -> public/wp-content/themes/pilau-starter/js/admin.js 
Files: src/wp-content/themes/pilau-starter/js/flickity.js -> public/wp-content/themes/pilau-starter/js/flickity.js 
Files: src/wp-content/themes/pilau-starter/js/global.js -> public/wp-content/themes/pilau-starter/js/global.js 
Files: src/wp-content/themes/pilau-starter/js/modernizr.js -> public/wp-content/themes/pilau-starter/js/modernizr.js 
Files: src/wp-content/themes/pilau-starter/js/picturefill.js -> public/wp-content/themes/pilau-starter/js/picturefill.js 
Files: src/wp-content/themes/pilau-starter/js/respond.js -> public/wp-content/themes/pilau-starter/js/respond.js 
Options: processContent=false, processContentExclude=[], process=undefined 
Options: processContent=false, processContentExclude=[], process=undefined 
Copying src/wp-content/themes/pilau-starter/js/admin.js -> public/wp-content/themes/pilau-starter/js/admin.js 
Reading src/wp-content/themes/pilau-starter/js/admin.js...OK 
Writing public/wp-content/themes/pilau-starter/js/admin.js...OK 
+1

Was ist der Ausgang, wenn Sie die Aufgabe mit der '--verbose' Flagge laufen? Auch die 'nonull'-Option kann beim Debuggen hilfreich sein. – steveax

+0

Welche Version des 'grunt-contrib-copy' verwenden Sie? Sie können versuchen, 'processContent' anstelle von' process' zu verwenden, da es in v0.4.1 und früher verwendet wurde. Sie können auch versuchen, Ihre 'breakpoints.large' und' breakpoints.medium 'zu loggen, wenn sie nicht korrekt in Ihrer Konfiguration eingestellt sind. – nemesv

+0

Werden Dateien auf die Ausgabe kopiert, wenn diese ausgeführt wird? +1 auf den Vorschlag "--verbose". – James

Antwort

2

Ihre Version grunt-contrib-copy ist 0.4.0. Wie richtig @Nemesv über den Namen der Eigenschaft in dieser Version zu verwenden wäre processContent nicht process.

Ich klonte Ihr Repo und wechselte zu json-breakpoints Zweig. Und lief grunt copy:js und ersetzte den Inhalt.

original-content replaced-content

Wenn Sie jetzt grunt copy:js --verbose führen Sie es noch dieses

cli

processContent zeigen ist nicht definiert protokolliert, da Grunzen JSON.stringify verwendet einen Wert zu protokollieren. Und JSON.stringify gibt undefined zurück, wenn Sie eine Funktionsdefinition übergeben.


Wenn Sie interessiert sind, hier ist die reponsible Methode für die Anmeldung alle Option

Log.prototype.writeflags = function(obj, prefix) { 
     var wordlist; 
     if (Array.isArray(obj)) { 
      wordlist = this.wordlist(obj); 
     } else if (typeof obj === 'object' && obj) { 
      wordlist = this.wordlist(Object.keys(obj).map(function(key) { 
       var val = obj[key]; 
       return key + (val === true ? '' : '=' + JSON.stringify(val)); 
      })); 
     } 
     this._writeln((prefix || 'Flags') + ': ' + (wordlist || '(none)'.cyan)); 
     return this; 
    }; 
0

Dies scheint nicht ein Problem mit der process Option überhaupt zu sein, aber mehr ein Problem mit srcThemeDir. Ich würde es protokollieren, um sicherzustellen, dass Sie genau wissen, was es ist, da es scheint, dass es die copy Aufgabe verursacht, keine Dateien zu finden (und daher die Prozessfunktion nicht aufzurufen).

+0

Tut mir leid, ich habe vergessen, das auszuwechseln. Ich habe es mit dem Wert ersetzt, auf den es eingestellt ist. Die Var funktioniert gut für alles andere. Siehe auch '--verbose' Ausgabe in der obigen Bearbeitung - Dateien werden gefunden OK, wie es scheint. Alle Änderungen, die ich mache, werden kopiert - nur der Austausch findet nicht statt. –