NPM Script 实战:常用命令设计与封装|Vue 工程化篇

news2026/3/17 13:34:02
【NPM Script】Vue 前端工程化实操从核心封装逻辑到落地彻底搞懂 npm run 常用命令最佳写法避开端口占用、环境变量、多环境构建高频坑 文章目录开篇一、NPM Script 是什么为什么用它1.1 本质1.2 为什么要用 NPM Script二、常用命令的设计思路三、dev开发环境启动3.1 作用3.2 常见写法3.3 容易踩的坑四、build生产构建4.1 作用4.2 常见写法4.3 容易踩的坑五、lint代码规范检查5.1 作用5.2 常见写法5.3 容易踩的坑六、preview预览生产构建6.1 作用6.2 常见写法6.3 容易踩的坑七、release发布流程7.1 作用7.2 常见写法7.3 容易踩的坑八、完整示例一套推荐 scripts九、设计规范小结9.1 命名习惯9.2 顺序建议9.3 跨平台十、小结 本系列专栏导航同学们好我是 Eugene尤金一个拥有多年中后台开发经验的前端工程师~Eugene 发音很简单/juːˈdʒiːn/大家怎么顺口怎么叫就好你是否也有过明明学过很多技术一到关键时候却讲不出来、甚至写不出来你是否也曾怀疑自己是不是太笨了明明感觉会却总差一口气就算想沉下心从头梳理可工作那么忙回家还要陪伴家人。一天只有24小时时间永远不够用常常感到力不从心。技术行业本就是逆水行舟不进则退。如果你也有同样的困扰别慌。从现在开始跟着我一起心态归零利用碎片时间来一次彻彻底底的基础扫盲。这一次我们一起慢慢来扎扎实实变强。不搞花里胡哨的理论堆砌只分享看得懂、用得上的前端干货咱们一起稳步积累真正摆脱「面向搜索引擎写代码」的尴尬。开篇如果你用过npm run dev、npm run build但不太清楚它们是怎么来的、为什么要这么写、踩坑会踩在哪这篇文章就是写给你的。我们会从「命令怎么设计」和「怎么封装」两个维度来讲面向会写 JS 但概念有点混、或想系统补基础的同学不讲玄学原理只讲日常该怎么做。⬆ 返回目录一、NPM Script 是什么为什么用它1.1 本质npm run xxx执行的是package.json里scripts字段里对应的命令。本质就是把常用的、难记的命令封装成简短好记的别名。{name:my-app,scripts:{dev:vite,build:vite build}}npm run dev→ 执行vitenpm run build→ 执行vite build⬆ 返回目录1.2 为什么要用 NPM Script统一入口团队所有人用同一套命令不需要记复杂命令行参数跨平台在不同系统下统一用npm run xxx不依赖不同 shell 语法可组合可以把多条命令串在一起如 lint build生态习惯各种脚手架、教程默认都基于package.jsonscripts⬆ 返回目录二、常用命令的设计思路开发流程里常见的阶段开发、构建、检查、预览、发布。对应到 scripts常见命名是阶段典型命令作用开发dev启动开发服务器热更新构建build打包生产代码检查lint代码规范检查预览preview本地预览生产构建结果发布release发布到仓库 / 上线接下来按这几个命令逐一说明怎么设计、怎么封装。⬆ 返回目录三、dev开发环境启动3.1 作用启动开发服务器支持热更新保存即刷新通常带 source map方便调试⬆ 返回目录3.2 常见写法Vite 项目{scripts:{dev:vite}}Vue CLI 项目{scripts:{dev:vue-cli-service serve}}自定义端口{scripts:{dev:vite --port 3000}}⬆ 返回目录3.3 容易踩的坑端口被占用如果 5173 被占Vite 会尝试下一个端口。要固定端口可以写dev:vite --port 3000 --strictPort--strictPort表示端口被占直接报错而不是自动换端口。环境变量需要区分开发/生产时可用.env.development或.env.local或在命令里加dev:vite --mode development⬆ 返回目录四、build生产构建4.1 作用把源码打包成生产可用文件压缩、混淆、tree-shaking输出到dist或自定义目录⬆ 返回目录4.2 常见写法{scripts:{build:vite build}}构建前清理 dist{scripts:{build:rimraf dist vite build}}rimraf是跨平台的rm -rf需要安装npm i -D rimraf带环境变量{scripts:{build:vite build --mode production,build:staging:vite build --mode staging}}⬆ 返回目录4.3 容易踩的坑dist 没清空旧文件可能残留建议用rimraf dist 先删再构建。环境变量没生效构建时用.env.production且变量必须以VITE_开头Vite 约定。多环境构建可拆成多个命令build、build:staging、build:test等。⬆ 返回目录五、lint代码规范检查5.1 作用检查语法、风格、潜在问题支持自动修复如 ESLint 的--fix⬆ 返回目录5.2 常见写法{scripts:{lint:eslint . --ext .vue,.js,.ts,lint:fix:eslint . --ext .vue,.js,.ts --fix}}Vite ESLint{scripts:{lint:eslint .,lint:fix:eslint . --fix}}Prettier 一起用{scripts:{lint:eslint . prettier --check .,lint:fix:eslint . --fix prettier --write .}}⬆ 返回目录5.3 容易踩的坑遗漏文件确保.eslintignore里排除node_modules、dist等否则会很慢。和 Prettier 冲突建议 ESLint 只做逻辑检查Prettier 做格式可配合eslint-config-prettier关掉 ESLint 的格式规则。提交前检查可用 husky lint-staged 在git commit前自动跑 lint。⬆ 返回目录六、preview预览生产构建6.1 作用在本地用生产构建结果跑一次用来验证打包后的真实表现和开发模式有差别压缩、路由等⬆ 返回目录6.2 常见写法{scripts:{build:vite build,preview:vite preview}}vite preview会先读取dist所以需先执行npm run build。自定义端口{scripts:{preview:vite preview --port 4173}}⬆ 返回目录6.3 容易踩的坑先 build 再 preview忘记 build 直接 preview会用到旧的dist。线上路由 404SPA 需配置服务器 fallback 到index.html本地 preview 没问题不代表线上没问题。⬆ 返回目录七、release发布流程7.1 作用发布不是单一命令而是一套流程通常包括跑测试跑 lint构建更新版本号打 tag推送代码发布到 npm 或 CI 部署⬆ 返回目录7.2 常见写法只做构建 版本号{scripts:{release:npm run lint npm run build npm version patch}}用 standard-version 自动生成 CHANGELOG{scripts:{release:npm run lint npm run build standard-version,release:minor:standard-version --release-as minor,release:major:standard-version --release-as major}}语义化版本说明patch1.0.0 → 1.0.1bug 修复minor1.0.0 → 1.1.0新功能向后兼容major1.0.0 → 2.0.0破坏性变更⬆ 返回目录7.3 容易踩的坑没测就 release建议把test写进 release 流程npm run test npm run lint npm run build。忘记提交npm version会改package.json需要再git add和git commit。npm 发布发布到 npm 时要npm publish并注意.npmignore避免把源码、测试等都发出去。⬆ 返回目录八、完整示例一套推荐 scripts下面是一套可直接参考的package.jsonscripts 配置{name:my-vue-app,version:1.0.0,scripts:{dev:vite --port 3000,build:rimraf dist vite build,build:staging:rimraf dist vite build --mode staging,preview:vite preview --port 4173,lint:eslint . --ext .vue,.js,.ts,lint:fix:eslint . --ext .vue,.js,.ts --fix,format:prettier --write \src/**/*.{vue,js,ts,css,json}\,type-check:vue-tsc --noEmit,test:vitest,test:run:vitest run,release:npm run lint npm run type-check npm run test:run npm run build npm version patch,release:minor:npm run release -- --release-asminor,release:major:npm run release -- --release-asmajor},devDependencies:{eslint:^8.0.0,prettier:^3.0.0,rimraf:^5.0.0,vite:^5.0.0,vitest:^1.0.0,vue-tsc:^1.0.0}}命令含义简要说明dev开发端口 3000build清空 dist 后构建build:stagingstaging 环境构建preview预览构建产物端口 4173lint/lint:fixESLint 检查 / 自动修复formatPrettier 格式化type-checkTypeScript 类型检查若用 TStest/test:run单元测试watch / 单次release/release:minor/release:major发布流程lint 类型检查 测试 构建 版本号⬆ 返回目录九、设计规范小结9.1 命名习惯主命令dev、build、lint、preview带后缀lint:fix、build:staging、test:run保持简短、语义明确⬆ 返回目录9.2 顺序建议依赖前置rimraf dist vite build多条串行lint build⬆ 返回目录9.3 跨平台删除目录用rimraf而不是rm -rf环境变量用cross-env如需要⬆ 返回目录十、小结命令核心作用注意点dev开发服务端口、环境变量build生产构建清空 dist、多环境lint规范检查配合 Prettier、提交前检查preview本地预览构建先 build 再 previewrelease发布流程测试、版本号、提交NPM Script 就是把「难记、易错」的命令封装成「好记、统一」的入口设计时考虑命名清晰、步骤可组合、能跨平台、团队习惯一致。按上面这套思路日常项目足够用也能在踩坑时有方向可排查。⬆ 返回目录 本系列专栏导航 构建工具与工程化一、《Vite 实战教程alias/env/proxy 配置 打包优化避坑Vue 工程化篇》二、《Monorepo pnpm workspace 落地实操Vue 中后台多项目 / 组件库 / 公共包管理Vue 工程化篇》三、《Vue/Vite 多环境配置实战dev、test、prod 差异区分与避坑指南Vue 工程化篇》四、《NPM Script 实战常用命令设计与封装Vue 工程化篇》 跟着系列慢慢学把技术功底扎扎实实地打牢 更多内容TS/Vue/工程化等共47篇已整理成「全体系总目录」收藏后可一站式学习 系列总览想系统学习Vue3中后台开发收藏这份「全体系指南」47篇干货从基础到工程化全覆盖《前端基础实战JS/TS与Vue体系化扫盲47 篇完整目录 避坑》 每篇都配套实战场景避坑指南帮你摆脱「面向搜索引擎写代码」的尴尬⬆ 返回目录学习本就是一场持久战不需要急着一口吃成胖子。哪怕今天你只记住了一点点这都是实打实的进步。后续我还会继续用这种大白话、讲实战的方式带大家扫盲更多前端基础。关注我不迷路咱们把那些曾经模糊的知识点一个个彻底搞清楚。如果你觉得这篇内容对你有帮助不妨点赞收藏下次写代码卡壳时拿出来翻一翻比搜引擎更靠谱。我是 Eugene你的电子学友我们下一篇干货见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2419562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…