mondorepo
Version:
Management for collections of packages across teams
68 lines (55 loc) • 1.43 kB
JavaScript
;
const Path = require('path');
const fs = require("fs");
const mkdirp = require('mkdirp');
const cwd = process.cwd();
class FileUtil {
static absolute(filepath) {
if (!Path.isAbsolute(filepath)) {
return Path.resolve(cwd, filepath);
}
return filepath;
}
static findClosestPackage(dir) {
let testDir = Path.resolve(dir, 'package.json');
if (FileUtil.exists(testDir)) {
return testDir;
} else {
let parent = Path.resolve(dir, '..');
if (dir !== parent) {
return FileUtil.findClosestPackage(parent);
}
}
}
/**
* @param file
* @returns {boolean}
*/
static exists(file) {
try {
fs.accessSync(file, fs.F_OK);
return true;
} catch (e) {
return false;
}
}
static isFile(path) {
if (FileUtil.exists(path)) {
return fs.lstatSync(path).isFile();
}
}
static mkdirp (path) {
mkdirp.sync(path);
}
static getFileContents (path) {
return fs.readFileSync(path, 'UTF-8');
}
static writeFile (path, contents) {
const dir = Path.dirname(path);
if (!fs.existsSync(dir)) {
FileUtil.mkdirp(dir);
}
return fs.writeFileSync(path, contents);
}
}
module.exports = FileUtil;