35 lines
		
	
	
		
			662 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			662 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| const path = require('path');
 | |
| const commonDir = require('commondir');
 | |
| const pkgDir = require('pkg-dir');
 | |
| const makeDir = require('make-dir');
 | |
| 
 | |
| module.exports = options => {
 | |
| 	const name = options.name;
 | |
| 	let dir = options.cwd;
 | |
| 
 | |
| 	if (options.files) {
 | |
| 		dir = commonDir(dir, options.files);
 | |
| 	} else {
 | |
| 		dir = dir || process.cwd();
 | |
| 	}
 | |
| 
 | |
| 	dir = pkgDir.sync(dir);
 | |
| 
 | |
| 	if (dir) {
 | |
| 		dir = path.join(dir, 'node_modules', '.cache', name);
 | |
| 
 | |
| 		if (dir && options.create) {
 | |
| 			makeDir.sync(dir);
 | |
| 		}
 | |
| 
 | |
| 		if (options.thunk) {
 | |
| 			return function () {
 | |
| 				return path.join.apply(path, [dir].concat(Array.prototype.slice.call(arguments)));
 | |
| 			};
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return dir;
 | |
| };
 |