Sign In

@complex-suite/utils

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@complex-suite/utils - npm Package Compare versions

Comparing version
3.0.19
to
3.0.20
+37
src/env/isDev.ts
/**
* import.meta.env 类型补充(供本模块与主项目统一使用)。
* DEV 声明与 vite/client 完全一致(DEV: boolean,非 readonly;修饰符必须一致否则 TS2687),
* interface 合并无冲突;utils 包自身不依赖 vite/client 类型,故在此声明。
*/
declare global {
interface ImportMetaEnv {
DEV: boolean
}
interface ImportMeta {
readonly env: ImportMetaEnv
}
}
/**
* 开发环境探测(无依赖独立模块,供 env/index 与 locale/Locale 复用)。
*
* 兼容策略(两段独立 try/catch,互不影响):
* 1. Vite:import.meta.env.DEV 在编译期被静态替换为布尔字面量(dev=true / prod=false);
* 必须书写精确的 import.meta.env.DEV——构建工具只做文本级静态替换,
* 写成 import.meta.env?.DEV 等可选链形式会导致替换失效。
* 2. webpack(DefinePlugin 编译期替换)/ Node(真实 process):
* 同样必须书写精确的 process.env.NODE_ENV,外层 try/catch 兜底无构建环境。
*/
export default function isDev(): boolean {
try {
if (import.meta.env.DEV === true) return true
} catch (err) {
// 非 ESM / 非 Vite 环境(import.meta.env 不存在):忽略
}
try {
return process.env.NODE_ENV !== 'production'
} catch (err) {
// 无 process(纯浏览器无构建):兜底为非开发环境
return false
}
}
+4
-0

@@ -10,2 +10,6 @@ <!--

### 3.0.20
- feat(env): 新增 `isDev` 统一开发环境探测(无依赖独立模块 `env/isDev.ts`),兼容 Vite(`import.meta.env.DEV` 编译期替换)与 webpack DefinePlugin / Node(`process.env.NODE_ENV`),探测结果缓存到 env 变量供 `Locale.isDev` 复用
- fix(env): 修复原 `typeof process !== 'undefined'` 拦截导致 Vite/webpack5 浏览器环境下 `isDev` 恒为 false 的问题——构建工具仅对精确表达式做文本级静态替换,typeof 判断短路使编译期替换值不可达;改为 try/catch 兜底无构建环境
### 3.0.19

@@ -12,0 +16,0 @@ - chore: 小版本升级,保持与套件其他子包版本同步

+1
-1
{
"name": "@complex-suite/utils",
"version": "3.0.19",
"version": "3.0.20",
"description": "a complex utils",

@@ -5,0 +5,0 @@ "type": "module",

@@ -6,4 +6,7 @@ import { LifeList } from "../class/LifeData"

import Locale from '../locale/Locale'
import isDev from './isDev'
const option = {
/** 模块加载时缓存的构建环境开发探测结果(Vite / webpack / Node),供 Locale.isDev 等复用 */
$isDev: isDev(),
env: {

@@ -18,4 +21,5 @@ data: '',

* 设置环境变量
* @param {*} data 环境变量
* @param {string} prop 环境变量属性值,data为当前环境变量,real为当前真实的环境变量
* @param prop 环境变量属性名(data 为当前环境值,real 为当前真实环境值)
* @param data 环境变量值
* @param unTriggerChange 为 true 时仅写入,不触发 onChange 通知
*/

@@ -31,3 +35,3 @@ export function setEnv(prop: string, data: any, unTriggerChange?: boolean) {

* 获取环境变量
* @param {string} prop 环境变量属性值,data为当前环境变量,real为当前真实的环境变量
* @param prop 环境变量属性名(data 为当前环境值,real 为当前真实环境值)
*/

@@ -53,4 +57,5 @@ export function getEnv(prop: string) {

// 自动设置 locale 的开发环境判断逻辑(引用 env 模块时自动生效)
// real 未设置时回退到 process.env.NODE_ENV 判断,避免初始状态下 dev 日志被静默
// 自动覆盖 locale 的开发环境判断逻辑(引用 env 模块时自动生效)
// 优先级:应用自定义的真实环境(real)> 构建环境探测缓存(option.isDev)
// real 未设置时回退到构建环境探测结果,避免初始状态下 dev 日志被静默
Locale.isDev = () => {

@@ -61,6 +66,3 @@ const real = getEnv('real')

}
if (typeof process !== 'undefined' && process.env) {
return process.env.NODE_ENV !== 'production'
}
return false
return option.$isDev === true
}
import type { FlatMessages, MessageValue, LocalePack, LocaleOptions, ChangeFrom } from './types'
import hasOwnKey from '../object/hasOwnKey'
import isDev from '../env/isDev'

@@ -18,9 +19,6 @@ /**

* 需自定义时直接复写:Locale.isDev = () => yourChecker()
* 默认实现委托独立的 isDev(env/isDev.ts,无依赖),
* 兼容 Vite(import.meta.env.DEV)/ webpack DefinePlugin、Node(process.env.NODE_ENV)。
*/
static isDev: () => boolean = () => {
if (typeof process !== 'undefined' && process.env) {
return process.env.NODE_ENV !== 'production'
}
return false
}
static isDev: () => boolean = () => isDev()

@@ -27,0 +25,0 @@ /**