跳到主要内容

从某个目录开始向上查找,直到找到存在package.json的目录,并返回该目录。如果未找到则返回 null

源码解析

通过下面源码部分我们发现,pkg-dir 库 其实就是通过 findUp 库 来进行实现的

"use strict";
const path = require("path");
const findUp = require("find-up");

const pkgDir = async (cwd) => {
const filePath = await findUp("package.json", { cwd });
return filePath && path.dirname(filePath);
};

module.exports = pkgDir;

module.exports.sync = (cwd) => {
const filePath = findUp.sync("package.json", { cwd });
return filePath && path.dirname(filePath);
};
  • 整个库导出了两个方法,一个异步,一个同步 .sync 方法 均使用

1. 使用 findUp 库向上查找 package.json

const filePath = findUp.sync("package.json", { cwd });

通过当前文件夹路径 cwd 向上查找 package.json

2. 返回目录名

return filePath && path.dirname(filePath);

通过 path.dirname() 方法返回 filePath 的目录名