|
1 | 1 | 'use strict'; |
2 | 2 |
|
3 | | -var assign = require('object-assign'), |
4 | | - fs = require('fs'), |
5 | | - minify = require('./minify'), |
6 | | - q = require('q'), |
7 | | - through2 = require('through2'), |
8 | | - vfs = require('vinyl-fs'); |
9 | | - |
10 | | -var createVariables = function( src, options ) { |
11 | | - |
12 | | - var deferred = q.defer(); |
13 | | - |
14 | | - if ( !src ) { |
15 | | - deferred.reject( new Error( 'The src argument is required.' ) ); |
16 | | - return deferred.promise; |
17 | | - } |
18 | | - |
19 | | - options = assign( { optimize: true, minify: { log: true } }, options || {} ); |
20 | | - |
21 | | - var variableStream; |
22 | | - if ( options.dest && options.dest.length > 0 ) { |
23 | | - variableStream = fs.createWriteStream( options.dest ); |
24 | | - } |
25 | | - |
26 | | - var format = options.formatter; |
27 | | - if ( !format ) { |
28 | | - format = require('./less-formatter'); |
29 | | - } |
30 | | - |
31 | | - var variables = []; |
32 | | - |
33 | | - vfs.src( src, { base: './' } ).pipe( |
34 | | - |
35 | | - through2.obj( function( file, enc, done ) { |
36 | | - |
37 | | - var writeVariable = function( tempFile ) { |
38 | | - |
39 | | - var fileName = file.path.replace( /^.*[\\\/]/, '' ); |
40 | | - |
41 | | - var variableName = ''; |
42 | | - if ( options.prefix ) { |
43 | | - variableName += options.prefix; |
44 | | - } |
45 | | - variableName += fileName.substr( 0, fileName.lastIndexOf( '.' ) ); |
46 | | - |
47 | | - var value = 'url("data:image/png;base64,' + tempFile.contents.toString( 'base64' ) + '")'; |
48 | | - |
49 | | - if ( variableStream ) { |
50 | | - variableStream.write( format( variableName, value ) + '\n' ); |
51 | | - } |
52 | | - |
53 | | - variables.push( { |
54 | | - name: variableName, |
55 | | - value: value, |
56 | | - length: tempFile.contents.length |
57 | | - } ); |
58 | | - |
59 | | - }; |
60 | | - |
61 | | - if ( options.optimize ) { |
62 | | - minify( file, options.minify ).then( function( minified ) { |
63 | | - writeVariable( minified ); |
64 | | - done(); |
65 | | - } ).catch( function() { |
66 | | - deferred.reject( new Error( 'Minify failed.' ) ); |
67 | | - done(); |
68 | | - } ); |
69 | | - } else { |
70 | | - writeVariable( file ); |
71 | | - done(); |
72 | | - } |
73 | | - |
74 | | - }, function() { |
75 | | - |
76 | | - if ( variableStream ) { |
77 | | - variableStream.end(); |
78 | | - } |
79 | | - |
80 | | - deferred.resolve( variables ); |
81 | | - |
82 | | - } ) |
83 | | - |
84 | | - ); |
85 | | - |
86 | | - return deferred.promise; |
87 | | - |
88 | | -}; |
89 | | - |
90 | | -module.exports = createVariables; |
| 3 | +module.exports.create = require('./create'); |
| 4 | +module.exports.lessFormatter = require('./formatters/less'); |
| 5 | +module.exports.scssFormatter = require('./formatters/scss'); |
0 commit comments