2015-11-19 8 views
5

Vorrei implementare un pre-processore autoprefixer per il generatore di siti statici Punch.Come si implementa un Pre-Processore Puncher Autoprefixer?

Tuttavia, nel linguaggio di Punch, non sono sicuro se questo si qualificherebbe come un compilatore, un minificatore, ecc. Ho provato tutto quanto sopra senza alcun risultato.

Ecco il mio ultimo tentativo di ottenere nulla di lavoro:

./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) 

Qualcuno mi può guidare nella giusta direzione?

risposta

1

Sembra che al momento i compilatori di forzi possano compilare solo da un'estensione diversa (ad esempio .mycss o .less). Utilizzando che, ci sei quasi:

In module.exports, input_extensions: deve essere impostato per l'estensione che si desidera (non .css), ad esempio, [".mycss"].

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

è davvero strano, dal momento che si sta definendo la stessa chiave due volte. Elimina la riga punch-sass-compiler. Se vuoi invocare un altro compilatore, semplicemente il suo modulo nel codice del tuo compilatore, chiama il secondo compilatore e modifica l'output fornito a tuo piacimento, semplicemente require.

I minifattori di perforazione non sono adatti al tuo obiettivo, dal momento che vengono coinvolti nella produzione (con punch g), non durante lo sviluppo.

+0

Grazie! Questa informazione è molto utile. (Non posso credere di aver trascurato quella chiave duplicata ...:!) Darei un'occhiata da solo, ma sai se sarebbe possibile aggiungere supporto per estensioni comuni? Il comportamento esistente è inaspettato. Se non è troppo lavoro, potrei considerare di inviare una patch. Tuttavia, sembra che il progetto upstream sia stato abbandonato. – pdoherty926

+0

@ pdoherty926 L'estensione di output deve essere diversa dall'output, niente di più. Se i tuoi file di input sono in ogni caso, perché non li chiamo '.scss'? – phihag

Problemi correlati