72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var _ = require('lodash'),
|
||
|
fs = require('fs-extra'),
|
||
|
glob = require('glob'),
|
||
|
path = require('path');
|
||
|
|
||
|
var minify = require('../common/minify.js');
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
/**
|
||
|
* Creates a [fs.copy](https://github.com/jprichardson/node-fs-extra#copy)
|
||
|
* function with `srcPath` and `destPath` partially applied.
|
||
|
*
|
||
|
* @memberOf file
|
||
|
* @param {string} srcPath The path of the file to copy.
|
||
|
* @param {string} destPath The path to copy the file to.
|
||
|
* @returns {Function} Returns the partially applied function.
|
||
|
*/
|
||
|
function copy(srcPath, destPath) {
|
||
|
return _.partial(fs.copy, srcPath, destPath);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates an object of compiled template and base name pairs that match `pattern`.
|
||
|
*
|
||
|
* @memberOf file
|
||
|
* @param {string} pattern The glob pattern to be match.
|
||
|
* @returns {Object} Returns the object of compiled templates.
|
||
|
*/
|
||
|
function globTemplate(pattern) {
|
||
|
return _.transform(glob.sync(pattern), function(result, filePath) {
|
||
|
var key = path.basename(filePath, path.extname(filePath));
|
||
|
result[key] = _.template(fs.readFileSync(filePath, 'utf8'));
|
||
|
}, {});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a `minify` function with `srcPath` and `destPath` partially applied.
|
||
|
*
|
||
|
* @memberOf file
|
||
|
* @param {string} srcPath The path of the file to minify.
|
||
|
* @param {string} destPath The path to write the file to.
|
||
|
* @returns {Function} Returns the partially applied function.
|
||
|
*/
|
||
|
function min(srcPath, destPath) {
|
||
|
return _.partial(minify, srcPath, destPath);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a [fs.writeFile](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback)
|
||
|
* function with `filePath` and `data` partially applied.
|
||
|
*
|
||
|
* @memberOf file
|
||
|
* @param {string} destPath The path to write the file to.
|
||
|
* @param {string} data The data to write to the file.
|
||
|
* @returns {Function} Returns the partially applied function.
|
||
|
*/
|
||
|
function write(destPath, data) {
|
||
|
return _.partial(fs.writeFile, destPath, data);
|
||
|
}
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
module.exports = {
|
||
|
'copy': copy,
|
||
|
'globTemplate': globTemplate,
|
||
|
'min': min,
|
||
|
'write': write
|
||
|
};
|