第四十八章-完善build的utils.ts

1.说明

本节我们完善build\utils.ts文件。

2.第一部分

除了这个process,应该也没有要解释的吧。

Node中文文档-process

export function isDevFn(mode: string): boolean {
  return mode === 'development';
}

export function isProdFn(mode: string): boolean {
  return mode === 'production';
}

/**
 * Whether to generate package preview
 */
export function isReportMode(): boolean {
  return process.env.REPORT === 'true';
}

3.安装dotenv

dotenv依赖的作用:从.evn文件流Buffer中读取属性输出一个对象。

那么和我们之前的加载环境变量的区别:

  • ViteloadEnv():这个方法Vite的官网上貌似没有开放,而且获取的文件是指定的,获取的对象需要我们自己格式化一下。
  • VbenwrapperEnv():这是一个格式化环境变量的方法。
  • dotenv:是一个依赖,其功能不仅仅是获取环境变量,当然我们目前只用它来获取指定的.env文件。

dotenv的npm首页

yarn add dotenv --dev

4.第二部分

import fs from 'fs';
import path from 'path';
import dotenv from 'dotenv';

/**
 * Get the environment variables starting with the specified prefix
 * @param match prefix
 * @param confFiles ext
 */
export function getEnvConfig(match = 'VITE_GLOB_', confFiles = ['.env', '.env.production']) {
  let envConfig = {};
  // ↓循环文件名
  confFiles.forEach((item) => {
    try {
      // ↓同步读取根目录下指定的文件,将读取的六传入dotenv输出对象
      const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item)));
      // ↓将新获取的对象追加到结果中,相同的覆盖
      envConfig = { ...envConfig, ...env };
    } catch (error) {}
  });

  // ↓检查输出结果
  Object.keys(envConfig).forEach((key) => {
    // ↓如果不是以传入的match变量开的就直接删除
    const reg = new RegExp(`^(${match})`);
    if (!reg.test(key)) {
      Reflect.deleteProperty(envConfig, key);
    }
  });
  return envConfig;
}

/**
 * Get user root directory
 * @param dir file path
 */
export function getRootPath(...dir: string[]) {
  return path.resolve(process.cwd(), ...dir);
}

上一章

第四十七章-Vite插件-vite-plugin-html

下一章

第四十九章-Vben的获取配置文件名的方法

# vben 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×