SSF0SSF0
首页
前端
  • Node
  • Go
  • C#
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
Timeline
Github
标签
分类
首页
前端
  • Node
  • Go
  • C#
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
Timeline
Github
标签
分类
  • HTML

    • html1
    • html2
  • CSS

    • Flex 布局常见问题与解决方案
  • JavaScript

    • 数据类型及引用问题
    • 处理 Blob 类型文件下载问题总结
    • localStorage 与 sessionStorage 区别
    • JavaScript 中的 script 标签问题详解
    • JavaScript 中的`this`指向问题详解
    • SessionStorage踩坑记录:它真的能"只设置一次"吗?
    • 动态加载 JS 脚本方法对比
    • 浏览器页面关闭场景下的数据上报
  • es6

    • Promise
    • es6 模块导出方式全解析
  • Vue2

    • created VS mounted 发起异步请求
    • vue2-2
  • Vue3

    • Vite + Vue3 修改 element-plus 源码
    • Vue v-if 与 v-show
    • Vue3 ref 获取组件
    • Vue3 路由传参
    • 父子组件与组件里 Hooks 加载顺序
    • 第三方组件传入参数TS提示
    • Vue3 Props 在 Hooks 中的响应性处理
    • Vue Router 的两种历史模式及部署配置详解
    • 在Vue 3项目中顺利集成Tailwind CSS的完整指南
    • Vue 3 深度选择器:deep()完全指南
  • Electron

    • 快速构建 electron + vue3 项目
  • TS

    • TS 泛型
    • 记录模板使用断言的问题
    • type 与 interface
  • WebPack

    • Webpack 介绍
  • Vite

    • Vite CLI 常见命令
    • vite 与 webpack 比较
  • 项目工程

    • 前端代码风格
    • Vue3 项目规范
    • npm 镜像问题
    • 包管理工具
    • 使用 engines 限制开发环境依赖
    • 打包与shell交互指定模式
    • 使用 pnpm 构建 Monorepo 实战指南
    • pnpm 修改依赖源码打包报错
  • 记录一下小程序
  • 控制浏览器正确保存网站账号密码的技巧

打包于 shell 交互指定模式

交互式打包

在开发环境和生产环境打包时,可以编写一个 Shell 脚本(或 Node 脚本)来与用户交互,基于用户输入来决定调用哪个打包命令。主要步骤如下:

  1. 创建一个 Shell 脚本并编写交互逻辑。用户在执行脚本时输入开发或生产,脚本根据输入执行对应的 npm run 命令。

  2. 若需要在 package.json 中增加脚本来执行该交互脚本,可将脚本加到 scripts 中以统一管理。

  3. 最终执行时,只需输入 ./build.sh 或 npm run build:interactive,即可根据提示选择打包环境。

示例脚本 (build.sh):

#!/bin/bash

echo "请选择打包环境:"
echo "1. 开发环境"
echo "2. 生产环境"
echo "3. 测试环境"
read -p "请输入选项(1 或 2 或 3):" choice

if [ "$choice" == "1" ]; then
  npm run build:dev
elif [ "$choice" == "2" ]; then
  npm run build:prod
elif [ "$choice" == "3" ]; then
  npm run build:test
else
  echo "无效选项,请重新运行脚本并输入正确的选项。"
fi

交互式环境

  1. 新建一个 Shell 脚本(例如 build.sh),编写如下内容:
#!/usr/bin/env bash

# 提示用户输入 mode 参数,比如 development、test、production 等
echo "请输入要使用的 mode(可选值如 development、test、production 等,默认为 development):"
read MODE

# 如果用户未输入,则使用默认值 development
if [ -z "$MODE" ]; then
    MODE="development"
fi

echo "您选择的 mode:$MODE"
echo "开始执行打包命令..."

# 执行打包流程,这里以 vue-tsc + vite build 为例
# 注意将 --mode 后面的值改为 Shell 脚本变量 $MODE
vue-tsc && vite build --config vite-web.config.ts --mode "$MODE"
  1. 为脚本赋执行权限(在 Mac 或 Linux 等 Unix 系统下):
chmod +x build.sh
  1. 在 package.json 中加一个自定义脚本(可选)。如果你希望通过执行 npm run build:interactive 来进入交互模式,可以这样写:
{
  "scripts": {
    "build:interactive": "./build.sh",
    "build:web": "vue-tsc && vite build --config vite-web.config.ts --mode production",
    "build:web:test": "vue-tsc && vite build --config vite-web.config.ts --mode development"
  }
}
  1. 执行脚本时,脚本会提示你输入 mode。根据输入的不同,脚本会将相应的值传给 vite build 的 --mode 选项,从而实现"同一个命令却指定不同 mode"的需求。

    • 直接执行脚本:
      ./build.sh

    • 或者通过 package.json 脚本:
      npm run build:interactive

这样就可以在一个脚本内,动态指定 --mode。无需为每种 mode 都写在 package.json 里,只要在执行时通过 Shell 脚本交互选择即可。

以上待实践修改

最后更新时间:
贡献者: 何风顺
上一页
使用 engines 限制开发环境依赖
下一页
使用 pnpm 构建 Monorepo 实战指南