@@ -3,6 +3,7 @@ import fs from 'fs-extra';
33import postcss from 'postcss' ;
44import Promise from 'bluebird' ;
55import _ from 'lodash' ;
6+ import debug from 'debug' ;
67import RasterFactory from './factories/raster' ;
78import VectorFactory from './factories/vector' ;
89
@@ -69,7 +70,8 @@ export const defaults = {
6970 svg : {
7071 precision : 5
7172 }
72- }
73+ } ,
74+ verbose : false
7375} ;
7476
7577/**
@@ -87,8 +89,11 @@ export function prepareFilterBy(opts, result) {
8789 opts . filterBy . unshift ( image => {
8890 return fs . statAsync ( image . path )
8991 . catch ( ( ) => {
90- result . warn ( `skip ${ image . url } because doesn't exist.` ) ;
91- throw new Error ( `Skip ${ image . url } because doesn't exist.` ) ;
92+ const message = `Skip ${ image . url } because doesn't exist.` ;
93+
94+ opts . logger ( message ) ;
95+
96+ throw new Error ( message ) ;
9297 } ) ;
9398 } ) ;
9499}
@@ -135,6 +140,8 @@ export function prepareGroupBy(opts) {
135140export function extractImages ( root , opts , result ) {
136141 let images = [ ] ;
137142
143+ opts . logger ( 'Extracting the images...' ) ;
144+
138145 // Search for background & background image declartions
139146 root . walkRules ( ( rule ) => {
140147 const styleFilePath = opts . relativeTo === RELATIVE_TO_RULE ? rule . source . input . file : root . source . input . file ;
@@ -175,7 +182,7 @@ export function extractImages(root, opts, result) {
175182
176183 images . push ( image ) ;
177184 } else {
178- result . warn ( `skip ${ image . url } because isn't supported.`) ;
185+ opts . logger ( `Skip ${ image . url } because isn't supported.`)
179186 }
180187 }
181188 } ) ;
@@ -193,6 +200,8 @@ export function extractImages(root, opts, result) {
193200 * @return {Promise }
194201 */
195202export function applyFilterBy ( opts , images ) {
203+ opts . logger ( 'Applying the filters...' ) ;
204+
196205 return Promise . reduce ( opts . filterBy , ( images , filterFn ) => {
197206 return Promise . filter ( images , ( image ) => {
198207 return filterFn ( image )
@@ -209,6 +218,8 @@ export function applyFilterBy(opts, images) {
209218 * @return {Promise }
210219 */
211220export function applyGroupBy ( opts , images ) {
221+ opts . logger ( 'Applying the groups...' ) ;
222+
212223 return Promise . reduce ( opts . groupBy , ( images , groupFn ) => {
213224 return Promise . map ( images , ( image ) => {
214225 return groupFn ( image )
@@ -286,6 +297,8 @@ export function setTokens(root, opts, images) {
286297 * @return {Promise }
287298 */
288299export function runSpritesmith ( opts , images ) {
300+ opts . logger ( 'Generating the spritesheets...' ) ;
301+
289302 return new Promise ( ( resolve , reject ) => {
290303 const promises = _ . chain ( images )
291304 . groupBy ( ( image ) => {
@@ -327,24 +340,25 @@ export function runSpritesmith(opts, images) {
327340 * @return {Promise }
328341 */
329342export function saveSpritesheets ( opts , images , spritesheets ) {
343+ opts . logger ( 'Saving the spritesheets...' ) ;
344+
330345 return Promise . each ( spritesheets , ( spritesheet ) => {
331346 return (
332347 _ . isFunction ( opts . hooks . onSaveSpritesheet ) ?
333348 Promise . resolve ( opts . hooks . onSaveSpritesheet ( opts , spritesheet ) ) :
334349 Promise . resolve ( makeSpritesheetPath ( opts , spritesheet ) )
335350 )
336351 . then ( ( res ) => {
352+ if ( ! res ) {
353+ throw new Error ( 'postcss-sprites: Spritesheet requires a relative path.' ) ;
354+ }
337355
338356 if ( _ . isString ( res ) ) {
339357 spritesheet . path = res ;
340358 } else {
341359 _ . assign ( spritesheet , res ) ;
342360 }
343361
344- if ( ! spritesheet . path ) {
345- throw new Error ( 'postcss-sprites: Spritesheet requires a relative path.' ) ;
346- }
347-
348362 spritesheet . path = spritesheet . path . replace ( / \\ / g, '/' ) ;
349363
350364 return fs . outputFileAsync ( spritesheet . path , spritesheet . image ) ;
@@ -392,6 +406,8 @@ export function mapSpritesheetProps(opts, images, spritesheets) {
392406 * @return {Promise }
393407 */
394408export function updateReferences ( root , opts , images , spritesheets ) {
409+ opts . logger ( 'Replacing the references...' ) ;
410+
395411 root . walkComments ( ( comment ) => {
396412 let rule , image ;
397413
@@ -577,3 +593,17 @@ export function makeSpritesheetPath(opts, { groups, extension }) {
577593export function isToken ( commentValue ) {
578594 return commentValue . indexOf ( COMMENT_TOKEN_PREFIX ) > - 1 ;
579595}
596+
597+ /**
598+ * Create a logger that can be disabled in runtime.
599+ *
600+ * @param {Boolean } enabled
601+ * @return {Function }
602+ */
603+ export function createLogger ( enabled ) {
604+ if ( enabled ) {
605+ debug . enable ( 'postcss-sprites' ) ;
606+ }
607+
608+ return debug ( 'postcss-sprites' ) ;
609+ }
0 commit comments