2015-11-19 25 views
5

Ich würde gerne einen autoprefixer Pre-Prozessor für den Punch statischen Baustellengenerator implementieren.Wie implementiere ich einen Punch Autoprefixer Pre-Processor?

Allerdings bin ich im Punch-Sprachgebrauch nicht sicher, ob dies als Compiler, Minifier usw. geeignet wäre. Ich habe alle oben genannten ohne Erfolg versucht.

meine hier jüngste Versuch etwas Arbeiten am bekommen:

./autoprefixer.js

module.exports = { 
    input_extensions: [".css"], 
    force_compile: true, 
    compile: function(input, filename, callback){ 
     return callback(null, "*{color: red;}"); 
    } 
}; 

config.json

... 
    "plugins": { 
     "compilers": { 
      ".css": "punch-sass-compiler", 
      ".css": "autoprefixer" 
     } 
    } 
... 

result

/home/peter/projects/website/node_modules/punch/lib/asset_bundler.js:62 
         if (compiler && compiler.input_extensions.indexOf(template_extension) > -1) 
                   ^
TypeError: Cannot read property 'indexOf' of undefined 
    at /home/peter/projects/website/node_modules/punch/lib/asset_bundler.js:62:45 
    at /home/peter/projects/website/node_modules/punch/lib/template_handler.js:119:11 
    at fs.js:334:14 
    at /home/peter/projects/website/node_modules/punch/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js:42:10 
    at FSReqWrap.oncomplete (fs.js:95:15) 

Kann jemand mich in die richtige Richtung lenken?

Antwort

1

Es scheint, dass Punch Compiler im Moment nur von einer anderen Erweiterung kompilieren können (zB .mycss oder .less). Damit sind Sie fast da:

In module.exports, input_extensions: muss auf die gewünschte Erweiterung (nicht .css), z. [".mycss"].

ist wirklich seltsam, da Sie den gleichen Schlüssel zweimal definieren. Löschen Sie die punch-sass-compiler Zeile. Wenn Sie einen anderen Compiler, einfach require sein Modul in Ihrem Compiler-Code aufrufen möchten, rufen Sie den anderen Compiler auf und ändern Sie die gelieferte Ausgabe nach Ihren Wünschen.

Punch Minifiers sind nicht für Ihr Ziel geeignet, da sie nur in der Produktion beteiligt sind (mit punch g), nicht bei der Entwicklung.

+0

Danke! Diese Information ist sehr nützlich. (Ich kann nicht glauben, dass ich diesen duplizierten Schlüssel übersehen habe ...:!) Ich werde selbst einen Blick darauf werfen, aber wissen Sie, ob es möglich wäre, Unterstützung für gemeinsame Erweiterungen hinzuzufügen? Das vorhandene Verhalten ist unerwartet. Wenn es nicht zu viel Arbeit ist, könnte ich einen Patch einreichen. Allerdings scheint das Upstream-Projekt aufgegeben worden zu sein. – pdoherty926

+0

@ pdoherty926 Die Ausgabeerweiterung muss sich von der Ausgabe unterscheiden, nicht mehr. Wenn Ihre Eingabedateien sowieso sass sind, warum benennen Sie sie nicht ".scss"? – phihag