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

npm run dev命令的执行顺序和原理

当我们在开发vue、react等项目的时候经常会用npm run *命令,那么当我们执行这个命令的时候具体都做了些什么呢?接下来我们就来详细探索一下

当执行npm run dev命令时,npm会按照以下步骤进行操作:

1. 查找并执行脚本:

npm首先会在项目的package.json文件中查找scripts字段下的dev属性,并找到与之对应的脚本命令。这意味着,你需要确保在执行npm run dev命令时,你处于正确的目录中,即package.json文件所在的目录。
例如,如果package.json文件中有如下的配置:

{"scripts": {"dev": "node server.js"}
}
   执行npm run dev将会在当前目录下启动一个Node.js服务器,并执行server.js文件。

2. 检查依赖:

在执行脚本之前,npm会检查项目中是否已安装了所有必要的依赖项。如果依赖项不存在,npm会尝试自动安装package.json中列出的依赖项。

3. 执行命令:

一旦依赖项安装完成或确认已存在,npm将执行dev属性中指定的脚本命令。这可以是一个脚本、一个可执行文件或一个自定义的命令。
例如:

{"scripts": {"dev:h5": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve" }      
}

当我们运行npm run dev:h5命令的时候他会执行一下逻辑顺序:
1. npm run dev:h5:当你在命令行中执行这个命令时,npm 会查找 package.json 文件中 scripts 部分对应的
“dev:h5” 脚本,并准备执行它。
2. cross-env:首先,cross-env 会被调用,它会在node_modules/.bin的目录下查找该命令的可执行文件并且运行,如果没有找到,他会在全局的依赖包目录下查找。这个工具用于跨平台地设置环境变量。它确保NODE_ENV 和 UNI_PLATFORM 这两个环境变量能够在接下来的命令中正确使用,无论你在什么操作系统上。

  • NODE_ENV=development:cross-env 设置 NODE_ENV 环境变量的值为 development。这告诉应用或库当前处于开发模式。
  • UNI_PLATFORM=h5:同时,cross-env 设置 UNI_PLATFORM 环境变量的值为 h5。这是 Uni-app 的一个特定配置,用于指示接下来的命令是为 H5(网页)平台服务的。
  1. vue-cli-service uni-serve:在设置好环境变量之后,vue-cli-service uni-serve 命令被执行。这是 Vue CLI 的一个服务命令,通常该命令也是存放在node_modules/.bin目录下

4. 开发环境配置:

如果脚本中包含了环境变量的配置,例如通过-mode=development或读取.env.development文件来设置特定的开发环境变量,npm也会处理这些环境相关的配置。

5. 启动开发服务器:

在许多前端项目中,npm run dev会启动一个本地开发服务器,用于开发环境的代码调试。这通常包括监听指定目录下的源代码变化,并根据配置文件进行实时编译打包。

6. 文件监视与刷新:

npm还可能监视文件的变化,以便在文件改变时重新编译代码并刷新浏览器。

7. 执行其他任务:

根据项目的具体配置和开发环境的需要,npm可能会执行其他相关的构建任务,如处理图片、压缩代码等。

8. 启动浏览器实例:

最后,npm可能会启动一个浏览器实例,自动打开应用程序以进行预览。

总的来说,npm run dev命令会根据项目的配置执行一系列的操作,以启动并配置开发环境,使得开发者可以进行实时编码并立即看到结果。这些操作可能包括安装依赖、配置环境变量、启动开发服务器、监视文件变化、执行构建任务以及启动浏览器预览等。具体的操作取决于package.json文件中的配置以及项目的实际需求。

相关文章:

npm run dev命令的执行顺序和原理

当我们在开发vue、react等项目的时候经常会用npm run *命令,那么当我们执行这个命令的时候具体都做了些什么呢?接下来我们就来详细探索一下 当执行npm run dev命令时,npm会按照以下步骤进行操作: 1. 查找并执行脚本: …...

C# SM2加解密 ——国密SM2算法

SM2 是国家密码管理局组织制定并提出的椭圆曲线密码算法标准。 本文使用第三方密码库 BouncyCastle 实现 SM2 加解密,使用 NuGet 安装即可,包名:Portable.BouncyCastle,目前最新版本为:1.9.0。 using Org.BouncyCastl…...

【Machine Learning】Suitable Learning Rate in Machine Learning

一、The cases of different learning rates: In the gradient descent algorithm model: is the learning rate of the demand, how to determine the learning rate, and what impact does it have if it is too large or too small? We will analyze it through the follow…...

力扣每日一题 矩阵中移动的最大次数 DP

Problem: 2684. 矩阵中移动的最大次数 复杂度 ⏰ 时间复杂度: O ( n m ) O(nm) O(nm) 🌎 空间复杂度: O ( n m ) O(nm) O(nm) Code class Solution { public int maxMoves(int[][] grid){int n grid.length;int m grid[0].length;int[][] f new int[n][m]…...

计算机网络 |内网穿透

其实内网穿透,也挺好玩的,如果在大学的时候,那个时候讲计算机网络的老师能横向延展,估计课也会更有趣不少,本来计算机网络这门课就是计算机课程中可玩性最搞的。 只能说,怪可惜的 回到正题,内网…...

爬虫学习 Scrapy中间件代理UA随机selenium使用

目录 中间件UA、代理处理---process_requestUA随机 代理处理seleniumscrapy 中间件 控制台操作 (百度只起个名 scrapy startproject mid scrapy genspider baidu baidu.com setting.py内 ROBOTSTXT_OBEY FalseLOG_LEVEL "WARNING"运行 scrapy crawl baidu middle…...

React理念——Fiber架构的主要原理

React理念——Fiber架构的主要原理 React 理念CPU 的瓶颈IO 的瓶颈 Fiber的产生及原理如何构建副作用链表 React 理念 从官网看到React的理念: React 是用 JavaScript 构建快速响应的大型 Web 应用程序的首选方式。它在 Facebook 和 Instagram 上表现优秀。 可见&a…...

[蓝桥杯练习题]确定字符串是否包含唯一字符/确定字符串是否是另一个的排列

确定字符串是否包含唯一字符 #include<bits/stdc.h> using namespace std; int main(){ios::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr);map<char,int>m;string s;cin>>s;for(int i0;i<s.size();i){if(isalpha(s[i]))s[i]tolower(s[i]);if(…...

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:UIExtensionComponent (系统接口))

UIExtensionComponent用于支持在本页面内嵌入其他应用提供的UI。展示的内容在另外一个进程中运行&#xff0c;本应用并不参与其中的布局和渲染。 通常用于有进程隔离诉求的模块化开发场景。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0…...

Jenkins: 配合docker来部署项目

jenkins docker 部署 1 &#xff09;测试将jenkins构建后的项目部署到docker的nginx镜像中 nginx 镜像内的默认目录在 /usr/share/nginx/html将待部署项目存放在 /usr/share/nginx/html 项目名称目录在Mac环境下的 jenkins系统 中&#xff0c;工程项目默认的路径在 ~/.jenkin…...

Leetcode 22. 括号生成

心路历程&#xff1a; 一开始看到左右括号&#xff0c;第一想到了栈。后来发现题目要求遍历所有的可能组合&#xff0c;第一想法是暴力for循环&#xff0c;但是不知道用几个for循环&#xff0c;所以想到递归和回溯。 虽然叫‘括号组合’&#xff0c;但是实际上这是一个满足规则…...

ChatGPT编程—实现小工具软件(批量替换文本、批量处理图像文件)

ChatGPT编程—实现小工具软件(批量替换文本、批量处理图像文件) 今天借助[小蜜蜂AI][https://zglg.work]网站的ChatGPT编程实现一个功能&#xff1a;批量处理文件及其内容&#xff0c;例如批量替换文本、批量处理图像文件等。 环境&#xff1a;Pycharm 2021 系统&#xff1a…...

更安全的C gets()和str* 以及fgets和strcspn的用法

#include <stdio.h>int main() {char *str;gets(str);puts(str);return(0); }可以说全是错误 首先char *str没有指向一个分配好的地址&#xff0c;就直接读入&#xff0c;危险 ps: 怎么理解char *str "Hello World" 是将一个存储在一个只读的数据段中字符串常…...

专升本 C语言笔记-07 逗号运算符

1.逗号表达式的用法 就是用逗号隔开的多个表达式。逗号表达式&#xff0c;从左向右依次执行。 2.逗号表达式的特性 2.1.当没有括号时&#xff0c;第一个表达式为整个表达式的值。 代码 int x 3,y 5,a 0; a x,y; printf("a %d",a); 说明:因为逗号优先级最低,会…...

k8s之图形界面DashBoard【九】

文章目录 9. DashBoard9.1 部署Dashboard9.2 使用DashBoard 镇场 9. DashBoard 之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实&#xff0c;为了提供更丰富的用户体验&#xff0c;kubernetes还开发了一个基于web的用户界面&#xff08;Dashboard&…...

基于Java+Springmvc+vue+element实现高校心理健康系统详细设计和实现

基于JavaSpringmvcvueelement实现高校心理健康系统详细设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…...

python --阿里云(智能媒体管理/视频点播)

智能媒体服务获取token # alibabacloud_imm202009304.1.0 class Sample(object):智能媒体服务def __init__(self):self.access_key 111self.key_secret 222def weboffice_permission(self):return imm_20200930_models.WebofficePermission(renameFalse,readonlyTrue,histor…...

湖南麒麟SSH服务漏洞

针对湖南麒麟操作系统进行漏洞检测时&#xff0c;会报SSH漏洞风险提醒&#xff0c;具体如下&#xff1a; 针对这些漏洞&#xff0c;可以关闭SSH服务&#xff08;前提是应用已经部署完毕不再需要通过SSH远程访问传输文件的情况下&#xff0c;此时可以通过VNC远程登录方法&#x…...

升级ChatGPT4.0失败的解决方案

ChatGPT 4.0科普 ChatGPT 4.0是一款具有多项出众功能的新一代AI语言模型。以下是关于ChatGPT 4.0的一些关键特点和科普内容&#xff1a; 多模态&#xff1a;ChatGPT 4.0具备处理不同类型输入和输出的能力。这意味着它不仅可以接收文字信息&#xff0c;还能处理图片、视频等多媒…...

常用图像滤波器,图像增强

滤波器 滤波器在图像处理中有各种各样的应用&#xff0c;它们可以用于去除噪声、平滑图像、增强图像特征等。以下是一些常见的滤波器及其主要应用&#xff1a; 均值滤波器&#xff08;Mean Filter&#xff09;&#xff1a; 用于去除高斯噪声或均匀噪声。 平滑图像&#xff0…...

MCP23017按键矩阵驱动库:嵌入式I²C GPIO扩展与中断控制

1. 项目概述MentorBitMatrizPulsadores 是一款专为 MentorBit 兼容硬件平台设计的嵌入式驱动库&#xff0c;核心目标是简化基于 MCP23017 IC GPIO 扩展器的按键矩阵&#xff08;Keypad Matrix&#xff09;控制与状态读取。该库并非从零实现底层 IC 通信协议&#xff0c;而是构建…...

DTM智慧监控:构建企业级分布式事务一致性保障的终极指南

DTM智慧监控&#xff1a;构建企业级分布式事务一致性保障的终极指南 【免费下载链接】dtm A distributed transaction framework, supports workflow, saga, tcc, xa, 2-phase message, outbox patterns, supports many languages. 项目地址: https://gitcode.com/gh_mirrors…...

实战应用开发:基于快马平台构建集成heic转换功能的图片管理系统

最近在做一个图片管理系统的项目&#xff0c;其中遇到一个很实际的需求&#xff1a;用户上传的HEIC格式照片需要自动转换成通用的JPG格式。这个功能看似简单&#xff0c;但实际开发中需要考虑很多细节。下面分享下我在InsCode(快马)平台上实现这个功能的完整过程。 项目整体架构…...

Winbond W25N/W25M系列SPI NAND Flash驱动开发指南

1. Winbond W25N系列SPI NAND Flash驱动库技术解析Winbond W25N系列&#xff08;含W25N01GV、W25N02GV等&#xff09;与W25M系列&#xff08;如W25M02GW双芯片封装&#xff09;是工业级高可靠性SPI NAND Flash存储器&#xff0c;广泛应用于嵌入式系统中替代传统并行NAND或eMMC方…...

ESC固件底层开发:寄存器级驱动与无传感器换相实现

1. ESC固件底层技术解析&#xff1a;电子调速器固件架构与驱动实现电子调速器&#xff08;Electronic Speed Controller, ESC&#xff09;是无人机、电动航模、机器人驱动系统中的核心执行单元&#xff0c;其本质是一个高动态响应的三相逆变器控制器。ESC固件并非简单的PWM输出…...

为什么28S与18S rRNA比值可用于评估RNA质量?

在分子生物学实验中&#xff0c;获得高质量RNA样本是基因表达分析、转录组测序等研究成功的关键前提。在众多RNA质量评估方法中&#xff0c;28S与18S核糖体RNA的比值长期被广泛用作实验室中的“黄金标准”。这一标准为何如此受重视&#xff1f;其背后有着明确的原理与判断依据。…...

OpenClaw自动化测试:千问3.5-27B驱动UI全流程验证

OpenClaw自动化测试&#xff1a;千问3.5-27B驱动UI全流程验证 1. 为什么选择OpenClaw做自动化测试&#xff1f; 去年接手一个前端重构项目时&#xff0c;我遇到了一个典型困境&#xff1a;每次代码改动后&#xff0c;都需要手动执行47个关键页面的功能测试。这套测试流程完整…...

LSM6DS3TR-C驱动开发指南:寄存器配置与嵌入式IMU工程实践

1. JoyIT_LSM6DS3TR-C库深度解析&#xff1a;面向嵌入式工程师的LSM6DS3TR-C驱动开发指南LSM6DS3TR-C是意法半导体&#xff08;STMicroelectronics&#xff09;推出的超低功耗、高精度6轴惯性测量单元&#xff08;IMU&#xff09;&#xff0c;集成三轴加速度计与三轴陀螺仪&…...

Prompt工程进阶:6个技巧提升大模型输出精准度

Prompt工程进阶&#xff1a;6个技巧提升大模型输出精准度 随着大语言模型在代码生成、内容创作、数据分析等场景的渗透率持续提升&#xff0c;开发者和从业者逐渐发现&#xff0c;通用Prompt往往只能得到模糊、冗余甚至偏离需求的输出。如何通过精细化的Prompt设计&#xff0c;…...

libcimbar视觉传输工具实战指南:跨设备无网络数据传输解决方案

libcimbar视觉传输工具实战指南&#xff1a;跨设备无网络数据传输解决方案 【免费下载链接】libcimbar Optimized implementation for color-icon-matrix barcodes 项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar 一、核心价值解析&#xff1a;突破网络限…...