普通视图

发现新文章,点击刷新页面。
昨天 — 2025年12月20日首页

脚手架开发工具——dotenv

作者 code_YuJun
2025年12月20日 16:58

简介

dotenv 是一个轻量级的 Node.js 环境变量管理工具,其核心作用是:从项目根目录的 .env 文件中加载自定义的环境变量,并将它们注入到 Node.js 的 process.env 对象中,使得我们可以在项目代码中统一通过 process.env.XXX 的方式获取这些环境配置,无需手动在系统环境中配置临时变量或永久变量。

核心工作原理

  1. 当在项目中引入并执行 dotenv 时,它会自动查找项目根目录下的 .env 文件(该文件为纯文本格式,采用键值对配置);
  2. 它会解析 .env 文件中的每一行配置(格式通常为 KEY=VALUE);
  3. 将解析后的键值对逐一挂载到 Node.js 内置的 process.env 对象上(process.env 原本用于存储系统级环境变量,dotenv 为其扩展了项目自定义环境变量);
  4. 之后在项目的任意代码文件中,都可以通过 process.env.KEY 的形式获取对应的值。

使用示例

npm install dotenv --save
# .env 文件内容 当前用户路径下创建 `.env` 文件
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=123456
API_KEY=abcdefg123456
    const dotenv = require('dotenv');
    const dotenvPath = path.resolve(userHome, '.env'); // /Users/***/.env
    if (pathExists(dotenvPath)) {
        dotenv.config({
            path: dotenvPath,
        });
    }

脚手架开发工具——判断文件是否存在 path-exists

作者 code_YuJun
2025年12月20日 16:23

简介

path-exists 是一个轻量级的 Node.js npm 包,其核心作用是简便、高效地检查文件系统中指定的路径(文件或目录)是否存在,无需开发者手动封装原生文件操作的回调逻辑或错误处理,简化了 Node.js 中的路径存在性校验场景。

核心用法

npm install path-exists --save
  • 异步用法(推荐,非阻塞 I/O)
const pathExists = require('path-exists');

// 异步检查文件路径是否存在
async function checkFilePath() {
  // 传入要检查的文件/目录路径(相对路径或绝对路径均可)
  const isExist = await pathExists('./test.txt');
  console.log('文件是否存在:', isExist); // 返回 true 或 false
}

checkFilePath();

// 也可使用 Promise 链式调用(兼容旧版语法)
pathExists('./dist/').then((exists) => {
  console.log('目录是否存在:', exists);
});
  • 同步用法(适用于简单脚本,阻塞 I/O)
const pathExists = require('path-exists');

// 同步检查目录路径是否存在
const dirExists = pathExists.sync('./node_modules/');
console.log('node_modules 目录是否存在:', dirExists); // 返回 true 或 false

脚手架开发工具——root-check

作者 code_YuJun
2025年12月20日 16:02

简介

root-check 是一个 Node.js 工具包,核心作用是检测当前 Node.js 进程是否以 root(超级管理员)权限运行,并在检测到 root 权限时,自动降级为指定的普通用户权限运行,以此提升应用的安全性。

检测 root 权限

它会判断当前进程的 uid(用户 ID)是否为 0(Unix/Linux 系统中 root 用户的 uid 固定为 0),以此识别是否为 root 权限运行。

自动降级权限

如果检测到当前是 root 权限,它会尝试切换到一个非 root 普通用户的权限来运行后续代码。

  • 默认会尝试切换到 nobody 用户(Unix/Linux 系统中内置的无特权用户)。
  • 也可以手动指定要切换的用户(通过用户名或 uid)。

解决的核心问题

在 Unix/Linux 系统中,以 root 权限运行 Node.js 应用存在极高的安全风险:一旦应用存在漏洞被攻击,攻击者将直接获得系统的最高权限,可能导致服务器被完全控制。root-check 的存在就是为了避免这种风险,强制应用以低权限运行,即使被攻击,影响范围也会被大幅限制。

适用场景

  • 命令行工具(CLI)开发:很多 Node.js 命令行工具(如前端的构建工具、脚手架)会用到这个包,防止用户以 root 权限执行命令带来风险。
  • 服务端应用:Node.js 编写的后端服务,部署时需要避免 root 权限运行,可通过此包自动降级。

基本使用示例

npm install root-check --save
const rootCheck = require('root-check').default;
// 自动降级为 nobody 用户(如果当前是 root 权限)
rootCheck();
// 或者手动指定要切换的用户
// rootCheck('www-data'); // 切换到 www-data 用户

注意事项

  • 仅支持 Unix/Linux 系统:Windows 系统没有 root/uid 的概念,该包在 Windows 上会直接失效(无副作用)。
  • 降级失败会抛出错误:如果当前是 root 权限,但无法切换到目标用户(比如目标用户不存在),rootCheck 会抛出异常,需要手动捕获处理。
❌
❌