当前位置: 首页 > article >正文

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

【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你的电子学友我们下一篇干货见

相关文章:

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

【NPM Script】Vue 前端工程化实操:从核心封装逻辑到落地,彻底搞懂 npm run 常用命令最佳写法,避开端口占用、环境变量、多环境构建高频坑! 📑 文章目录 开篇一、NPM Script 是什么?为什么用它&#xff1f…...

KMP算法之 next 数组的计算

/*** brief 计算模式串的next数组(部分匹配表),并可视化计算过程* param pattern 模式串(待查找的基因片段)* param next 输出参数:存储next数组(长度需≥模式串长度)*/ void kmp_ge…...

发电机组并网技术研究

一、概述在现代电力供应体系中,柴发机组作为应急电源或后备电源,是应对市电中断、用电高峰负荷及特殊场景电力需求,保障电力持续、稳定供应的关键核心设备,其典型应用系统如下图1所示(图1:柴发机组典型供电…...

负载均衡策略有哪些?如何自定义?

你先记一句总纲:负载均衡策略,就是当一个服务有多个实例时,客户端或网关该按什么规则选一个实例去调用。常见负载均衡策略1. 轮询 Round Robin按顺序一个一个分配请求:第1个请求给实例A第2个请求给实例B第3个请求给实例C优点是简单…...

深度解构 BeyondMimic 引导扩散控制策略

深度解构 BeyondMimic 引导扩散控制策略 引导扩散就是先利用 Tracking 的方式训练出多个可以实现各种动作的小模型,随后利用这些小模型在仿真中生成大量的数据,用来训练出一个大模型,也就是蒸馏。但这里用的不是传统的蒸馏手段,我…...

全球爆火的龙虾杀入科研智能体赛道,字节跳动、微软以及英伟达等巨头也早已布局AI4Science领域

小罗碎碎念 如果说2020年至2023年是以AlphaFold为代表的模型在静态数据映射和结构预测上取得历史性突破的阶段,那么2025至2026年则标志着科学智能正式迈入“智能体(Agentic AI)”时代 。 在这一全新阶段,人工智能不再仅仅是被动…...

leetcode 1394. Find Lucky Integer in an Array 找出数组中的幸运数-耗时100

Problem: 1394. Find Lucky Integer in an Array 找出数组中的幸运数 耗时100%&#xff0c;固定数组统计频次&#xff0c;从高到低判断频次和数值是否相等 Code class Solution { public:int findLucky(vector<int>& arr) {vector<int> freq(501, 0);for(int&…...

leetcode 困难题 1392. Longest Happy Prefix 最长快乐前缀

Problem: 1392. Longest Happy Prefix 最长快乐前缀 滚动哈希的&#xff0c;取基26&#xff0c;模1e9 11&#xff0c;首先求出字符串的前缀哈希&#xff0c;前缀哈希用到了滚动哈希计算方式 后缀哈希&#xff0c;可以直接套公式求 像cbcb&#xff0c;前缀哈希这么算&#xf…...

AI新范式 02|拆解世界模型:它是如何理解物理规律的?

当AI学会了“重力加速度”&#xff0c;它就真正开始理解这个世界引言&#xff1a;从“知其然”到“知其所以然” 在第一篇中&#xff0c;我们谈到2026年是“世界模型元年”&#xff0c;NVIDIA Cosmos、Google DeepMind Genie等代表性工作正在重塑AI对物理世界的理解。但一个核心…...

告别绘图软件!Paperxie AI 科研绘图:10 次免费额度,让理工科论文可视化一步到位

paperxie科研绘图https://www.paperxie.cn/drawinghttps://www.paperxie.cn/drawing 在科研写作与论文发表的路上&#xff0c;「科研绘图」永远是那道绕不开的坎&#xff1a;Matplotlib 代码写了几百行还是跑不出理想图表&#xff0c;Origin 复杂的操作界面让新手望而却步&…...

环境变量与虚拟地址空间

环境变量与虚拟地址空间环境变量&#xff08;1&#xff09;问题引入&#xff08;2&#xff09;引入环境变量&#xff08;3&#xff09;环境变量和c代码关系1.用代码获取环境变量2.作用(4)添加环境变量&#xff08;5&#xff09;删除环境变量&#xff08;6&#xff09;set环境变…...

从零开始了解数据采集——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...

2026 本科生论文工具盘点:9 款 AI 工具搞定初稿 / 绘图 / 排版 / AI 率

一、写在前面&#xff1a;论文季的「工具焦虑」&#xff0c;你需要一份精准选型指南 又到毕业季&#xff0c;朋友圈里满是「论文写到凌晨三点」「格式改到崩溃」「AI 率超标被导师打回」的吐槽。写毕业论文从来不是「敲字」那么简单&#xff1a;从选题定方向、初稿生成&#x…...

cpp刷题打卡20——前k个高频元素

前k个高频元素 题目描述&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 题目代码&#xff1a; class Solution { public:class Mycompare{public:bool operator()(pair<int, int>&…...

基于docker的LLM服务部署

下载 拿qwen-3.5-9B 为例&#xff1a; https://www.modelscope.cn/models/Qwen/Qwen3.5-9B 首先下模型 git lfs install git clone https://www.modelscope.cn/Qwen/Qwen3.5-9B.git 然后下对应docker,框架我用的是vllm docker pull vllm/vllm-openai:qwen3_5 &#xff08;官…...

城市环境监测传感器—实时监测与分析环境数据

城市环境监测传感器是智慧城市建设中不可或缺的“感知神经”&#xff0c;通过实时监测与分析环境数据&#xff0c;为城市治理、生态保护与居民健康提供科学支撑。能够测量环境中的氧气、二氧化碳、氮气等气体成分&#xff0c;以及温度、湿度、噪音等参数。部分传感器还集成气象…...

【开题答辩全过程】以 户外用品比价系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...

C的数组概念

一、一维数组1.1 概念数组是一组相同数据类型的元素的集合&#xff0c;这些元素在内存中是连续存储的&#xff0c;并且通过一个唯一的数组名称和索引来访问。1.2 定义一维数组的定义语法格式&#xff1a;数据类型 数组名 [元素个数];1.3 访问与操作1.3.1 访问访问数组元素通过下…...

电商系统商品管理模块避坑指南:Spring Boot+MySQL+Redis多数据源配置实战

电商系统商品管理模块避坑指南&#xff1a;Spring BootMySQLRedis多数据源配置实战 在电商系统开发中&#xff0c;商品管理模块作为核心业务组件&#xff0c;其稳定性和性能直接影响用户体验和平台收益。本文将深入剖析基于Spring Boot框架的多数据源配置实践&#xff0c;结合M…...

RK3588 Android 12 异显功能开发实战:命令行与Presentation双方案解析

1. 初识RK3588的异显能力&#xff1a;不止是“多接一个屏幕” 如果你手头有一块搭载了瑞芯微RK3588芯片的开发板&#xff0c;比如Firefly的ITX-3588J或者Rock 5B&#xff0c;并且已经刷好了Android 12系统&#xff0c;那你手里握着的其实是一个“多屏怪兽”的潜力股。很多朋友刚…...

新手必看:ARM、树莓派、Arduino和单片机到底该怎么选?从零到一的硬件开发指南

从零到一&#xff1a;如何为你的创意项目挑选最合适的硬件平台 最近几年&#xff0c;身边想动手做点“智能硬件”的朋友越来越多了。有人想给阳台的花花草草做个自动浇水器&#xff0c;有人想改造家里的灯光实现语音控制&#xff0c;还有人雄心勃勃地想从零开始造一台迷你机器人…...

短链接服务选型指南:自建vs第三方API?从Bitly到PicSee的5大商业方案横评

短链接服务选型实战&#xff1a;企业技术决策者的成本、功能与场景化评估指南 在数字营销与用户运营的日常工作中&#xff0c;我们几乎每天都在与链接打交道。无论是电商大促的活动页面、社交媒体上的新品预告&#xff0c;还是内部系统生成的冗长报表地址&#xff0c;一个简洁、…...

2024年网络异常检测避坑指南:为什么你的ELK+Suricata方案总漏报?

2024年企业级网络异常检测实战指南&#xff1a;从规则引擎到AI驱动的技术跃迁 当企业网络流量以每年30%的速度增长时&#xff0c;传统安全设备的告警面板正在变成"狼来了"的故事现场。某金融科技公司的安全团队负责人曾向我展示他们的监控大屏&#xff1a;每天超过2万…...

【限时开源】Dify企业版增强套件v2.0:内置审计水印、敏感词动态策略引擎、RAG溯源追踪模块——仅开放首批50家企业下载权限

第一章&#xff1a;Dify企业版增强套件v2.0核心能力概览Dify企业版增强套件v2.0在原有开源能力基础上&#xff0c;深度集成企业级安全、治理与规模化部署需求&#xff0c;构建起面向生产环境的AI应用全生命周期支撑体系。该版本聚焦三大演进方向&#xff1a;模型纳管标准化、工…...

Gemma-3-12b-it极简交互设计:侧边栏上传+主界面聚焦的UX逻辑解析

Gemma-3-12b-it极简交互设计&#xff1a;侧边栏上传主界面聚焦的UX逻辑解析 如果你用过一些AI工具&#xff0c;可能会被复杂的界面搞得晕头转向。左边是密密麻麻的参数滑块&#xff0c;右边是各种看不懂的模型选项&#xff0c;中间可能还有个需要填写的复杂表单。很多时候&…...

FANUC宏变量实战:从局部到系统的数据管理全解析

1. 宏变量&#xff1a;你的机床“记事本”与“黑匣子” 如果你操作过FANUC系统的数控机床&#xff0c;肯定对编写加工程序不陌生。但你是否遇到过这样的烦恼&#xff1a;想记录一把刀到底加工了多少个零件&#xff0c;或者想记住某个特定工序的某个补偿值&#xff0c;下次开机还…...

奇安信数据安全防护全家桶实战:从数据库防火墙到隐私卫士的完整配置指南

奇安信数据安全防护全家桶实战&#xff1a;从数据库防火墙到隐私卫士的完整配置指南 在数字化转型的浪潮中&#xff0c;企业的核心资产——数据&#xff0c;正面临着前所未有的安全挑战。数据泄露、勒索攻击、内部违规操作等事件频发&#xff0c;单一的安全产品往往难以应对复杂…...

SpringBoot整合RocketMQ实战:从消息发送到消费的完整流程(含Docker部署指南)

SpringBoot与RocketMQ深度整合实战&#xff1a;从基础到Docker化部署 在当今分布式系统架构中&#xff0c;消息队列已成为解耦服务、削峰填谷的关键组件。RocketMQ作为阿里巴巴开源的高性能分布式消息中间件&#xff0c;凭借其高吞吐、低延迟和强一致性的特点&#xff0c;在电商…...

2026最新版!AI免费tokens全攻略,零成本玩转OpenClaw

原文链接&#xff1a;2026最新版&#xff01;AI免费tokens全攻略&#xff0c;零成本玩转OpenClaw...

树莓派5实战:用NCNN跑通YOLOv5目标检测(附完整代码)

树莓派5实战&#xff1a;用NCNN跑通YOLOv5目标检测&#xff08;附完整代码&#xff09; 最近在捣鼓树莓派5&#xff0c;想在上面跑点“硬核”的视觉应用&#xff0c;比如实时目标检测。市面上方案不少&#xff0c;但要么太重&#xff0c;动辄几百兆的框架塞不进小小的SD卡&…...