UNPKG

1.25 kBJavaScriptView Raw
1const fs = require('fs');
2const path = require('path');
3
4const {
5 isString,
6 isArray,
7} = require('lodash');
8
9/**
10 * 获取 file 的权限信息(wrx)
11 */
12exports.getMode = (file) => {
13 const stat = fs.statSync(file);
14 return (stat.mode & 0o777).toString(8); // eslint-disable-line
15};
16
17/**
18 * dir 中含有 filesList 列出来的文件
19 */
20exports.hasFile = (dir, filesList) => {
21 if (!filesList) {
22 return false;
23 }
24
25 if (isString(filesList)) {
26 filesList = [filesList];
27 }
28
29 if (!isArray(filesList)) {
30 return false;
31 }
32
33 for (let i = 0, len = filesList.length; i < len; i++) {
34 if (!fs.existsSync(path.join(dir, filesList[i]))) {
35 return false;
36 }
37 }
38 return true;
39};
40
41function getExist(dir, fn, type) {
42 return fs
43 .readdirSync(dir)
44 .filter((file) => {
45 const fsStat = fs.statSync(path.join(dir, file));
46 return type === 'file' ? fsStat.isFile() : fsStat.isDirectory();
47 })
48 .filter(file => fn(file));
49}
50
51/**
52 * 获取 dir 目录下所有符合 fn 函数的文件名
53 */
54exports.getExistFiles = (dir, fn = () => 1) => getExist(dir, fn, 'file');
55
56/**
57 * 获取 dir 目录下所有符合 fn 函数的目录名
58 */
59exports.getExistDirs = (dir, fn = () => 1) => getExist(dir, fn, 'dir');