Vite学习之模式

server/2024/11/29 1:54:44/

在安装了 Vite 的项目中,可以在 npm scripts 中使用 vite 可执行文件,下面是通过脚手架创建的 Vite 项目中默认的 npm scripts:

启动开发服务器(dev命令)——vite

package.json

{"scripts": {"dev": "vite --mode env.local","dev-server": "vite --mode dev", "serve:dev": "vite preview --mode dev","serve:prod": "vite preview --mode prod",}
}

构建命令(build命令)——vite build

使用 Node.js 运行 Vite 的构建命令,并手动设置 Node.js 的老生代内存限制为 8 GB,以确保在构建大型项目时有足够的内存可用。
其中“./node_modules/vite/bin/vite.js build”相当于vite build
–max_old_space_size=8192 指定了 Node.js 的老生代(old space)内存限制为 8192 MB(即 8 GB)。

"build:local": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build",
"build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode dev",
"build:test": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode test",
"build:stage": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode stage",
"build:prod": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode prod",
"preview": "pnpm build:local && vite preview",

下面是对这条命令的详细解释:

node:这是启动 Node.js 应用程序的命令。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,允许你在服务器端运行 JavaScript 代码。
–max_old_space_size=8192:这是一个传递给 Node.js 的命令行参数,用于设置老生代(old space)内存的最大限制。老生代是 V8 引擎内存管理中的一个区域,用于存储长期存活的对象。默认情况下,Node.js 会根据可用系统内存自动调整这个限制,但在某些情况下,你可能需要手动设置它,以避免因内存不足而导致的构建失败。这里的 8192 表示将老生代的最大内存限制设置为 8192 MB(8 GB)。
./node_modules/vite/bin/vite.js:这是 Vite 构建工具的入口文件路径。node_modules 是 Node.js 项目中用于存放所有依赖包的文件夹。这里指定了 Vite 包的 bin 文件夹下的 vite.js 文件作为执行文件。这意味着你正在运行 Vite 的命令行界面(CLI)。
build:这是传递给 Vite CLI 的命令,用于触发项目的构建过程。Vite 是一个前端构建工具和开发服务器,专注于提供极快的冷启动和即时热模块更新(HMR)。build 命令会根据项目的配置文件(如 vite.config.js)来打包和优化你的项目代码,使其更适合在生产环境中使用。

其他命令

"i": "pnpm install",
// typescript语法检查
"ts:check": "vue-tsc --noEmit",
//删除node_modules文件
"clean": "npx rimraf node_modules",
"clean:cache": "npx rimraf node_modules/.cache",
//格式相关
"lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src",
"lint:format": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
"lint:style": "stylelint --fix \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
"lint:lint-staged": "lint-staged -c "

clean命令
npx rimraf node_modules 这个命令是在使用 Node.js 开发时,用于删除项目中的 node_modules 文件夹的命令。这个命令结合了 npx 和 rimraf 两个工具。

npx:npx 是 npm 包执行器的一个工具,它允许你执行 npm 包中的命令,而不需要全局安装这个包。这意味着你可以临时使用某个包,而不需要在你的系统中全局安装它。
rimraf:rimraf 是一个 UNIX 命令 rm -rf 的跨平台实现,用于递归地删除文件和文件夹,且不会询问确认。rm -rf 命令在 UNIX/Linux 系统中非常强大,能够强制删除指定文件或目录及其内容,而 rimraf 则是这个命令在 Windows 和其他操作系统上的一个安全替代品。
结合起来,npx rimraf node_modules 命令的作用是:使用 npx 临时调用 rimraf 工具,来删除当前项目目录下的 node_modules 文件夹及其所有内容。这个操作通常在你需要重新安装项目依赖,或者清理项目环境时非常有用。

简单来说,这个命令的目的是为了快速、安全地删除项目中的 node_modules 文件夹,以便进行后续的依赖安装或其他操作。

dev 命令 & build 命令

默认情况下,dev 命令 (开发服务器) 运行在 development (开发) 模式,而 build 命令则运行在 production (生产) 模式。
这意味着当执行 vite build 时,它会自动加载 .env.production 中可能存在的环境变量:

  • dev命令对应development模式
  • build命令对应production模式
# .env.production
VITE_APP_TITLE=My App

在你的应用中,你可以使用 import.meta.env.VITE_APP_TITLE 渲染标题。

在某些情况下,若想在 vite build 时运行不同的模式来渲染不同的标题,你可以通过传递 --mode 选项标志来覆盖命令使用的默认模式。例如,如果你想在 staging (预发布)模式下构建应用:

vite build --mode staging

还需要新建一个 .env.staging 文件:

# .env.staging
VITE_APP_TITLE=My App (staging)

由于 vite build 默认运行生产模式构建,你也可以通过使用不同的模式和对应的 .env 文件配置来改变它,用以运行开发模式的构建:

# .env.testing
NODE_ENV=development

NODE_ENV 和 模式

需要注意的是,NODE_ENV(process.env.NODE_ENV)和模式是两个不同的概念。
以下是不同命令如何影响 NODE_ENV 和模式:

CommandNODE_ENVMode
vite build“production”“production”
vite build --mode development“production”“development”
NODE_ENV=development vite build“development”“production”
NODE_ENV=development vite build --mode development“development”“development”

NODE_ENV 和模式的不同值也会反映在相应的 import.meta.env 属性上:

Commandimport.meta.env.PRODimport.meta.env.PROD
NODE_ENV=productiontruefalse
NODE_ENV=developmentfalsetrue
NODE_ENV=otherfalsetrue
Commandimport.meta.env.MODE
–mode production“production”
–mode development“development”
–mode staging“staging”

.env 文件中的 NODE_ENV

NODE_ENV=… 可以在命令中设置,也可以在 .env 文件中设置。如果在 .env.[mode] 文件中指定了 NODE_ENV,则可以使用模式来控制其值。不过,NODE_ENV 和模式仍然是两个不同的概念。

命令中使用 NODE_ENV=… 的主要好处是,它允许 Vite 提前检测到该值。这也使你能够在 Vite 配置中读取 process.env.NODE_ENV,因为 Vite 只有在解析配置之后才能加载环境变量文件。


http://www.ppmy.cn/server/137661.html

相关文章

vue.set主要是干啥的,有啥作用

Vue.set 是 Vue.js 提供的一个全局方法,它主要用于向响应式对象中添加一个新的响应式属性,并确保这个属性的变化能够被 Vue 的响应式系统检测到,从而触发视图的更新 举例说明 当然可以。以下是几个使用 Vue.set 的示例: 示例 1&a…

Python中的字符串“不可改变。/可以改变?”

Python中,规定字符串是“不可变”类型,字符串方法可以“重写”字符串。Python最终让您明白,“字符串不可改变”。😎 (笔记模板由python脚本于2024年11月01日 17:55:57创建,本篇笔记适合熟悉python础数据类型str的coder…

#渗透测试#SRC漏洞挖掘# 操作系统-Linux系统

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Android 屏蔽\取消(禁止)下拉通知栏包括二级菜单下拉

修改方案很简单,就是直接返回类型进行屏蔽掉,让下拉效果失去,有些修改建议一起修改,不然会有意想不到的冲突,单独修改需要验证再验证,确保无其他bug产生。 有些版本可能方法的位置不一样,需要搜…

如何用Aicbo轻松转换多种艺术风格?

Aicbo能够处理从古典到现代的各种艺术风格。例如,它可以将一幅印象派画作转换为具有立体主义特征的作品,或者将一幅中国山水画的风格应用到西方风景画上。这种跨文化、跨时代的风格转换,为艺术家们提供了一个全新的创作视角。 Aicbo 支持多种…

Ubuntu 命令行教程介绍

目录 Ubuntu 命令行教程 1. 打开终端 2. 导航文件系统 3. 文件操作 4. 查看文件内容 5. 查找文件 6. 安装软件包 7. 用户和权限管理 8. 查看系统信息 9. 连接远程服务器 10. 日志文件管理 Ubuntu 命令行教程 Ubuntu 是一款非常流行的 Linux 发行版,以其…

oc的若干方法转为swift 请求不执行

GPT帮忙翻译的代码,就是不执行某句话 if let maxPageDic UserDefaults.standard.object(forKey: KDocumentProgressTecentMaxPage) as? [String: Any], !maxPageDic.isEmpty { if let maxPage maxPageDic["maxPage"] { if type(of: maxPage) Int.self…

为什么音频采样率通常是44.1kHz?

计算机中操作和存储只能是类似10101011这样的二进制数字,对于自然界中音频原始信号则为模拟信号,如下一个1kHz的音频信号,如果要转化为数字音频信号,则需要采样, 通常我们会采用44.1kHz的频率来进行采样,在…