12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 'use strict';
- var Stream = require('stream');
- var Path = require('path');
- function gulpRename(obj, options) {
- options = options || {};
- var stream = new Stream.Transform({ objectMode: true });
- function parsePath(path) {
- var extname = options.multiExt
- ? Path.basename(path).slice(Path.basename(path).indexOf('.'))
- : Path.extname(path);
- return {
- dirname: Path.dirname(path),
- basename: Path.basename(path, extname),
- extname: extname
- };
- }
- stream._transform = function(originalFile, unused, callback) {
- var file = originalFile.clone({ contents: false });
- var parsedPath = parsePath(file.relative);
- var path;
- var type = typeof obj;
- if (type === 'string' && obj !== '') {
- path = obj;
- } else if (type === 'function') {
- let newParsedPath = obj(parsedPath, file);
- if (typeof newParsedPath === 'object' && newParsedPath !== null) {
- parsedPath = newParsedPath;
- }
- path = Path.join(
- parsedPath.dirname,
- parsedPath.basename + parsedPath.extname
- );
- } else if (type === 'object' && obj !== undefined && obj !== null) {
- var dirname = 'dirname' in obj ? obj.dirname : parsedPath.dirname,
- prefix = obj.prefix || '',
- suffix = obj.suffix || '',
- basename = 'basename' in obj ? obj.basename : parsedPath.basename,
- extname = 'extname' in obj ? obj.extname : parsedPath.extname;
- path = Path.join(dirname, prefix + basename + suffix + extname);
- } else {
- callback(
- new Error('Unsupported renaming parameter type supplied'),
- undefined
- );
- return;
- }
- file.path = Path.join(file.base, path);
- // Rename sourcemap if present
- if (file.sourceMap) {
- file.sourceMap.file = file.relative;
- }
- callback(null, file);
- };
- return stream;
- }
- module.exports = gulpRename;
|