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(网页)平台服务的。
- 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。展示的内容在另外一个进程中运行,本应用并不参与其中的布局和渲染。 通常用于有进程隔离诉求的模块化开发场景。 说明: 该组件从API Version 10开始支持。后续版本如有新增内容࿰…...
Jenkins: 配合docker来部署项目
jenkins docker 部署 1 )测试将jenkins构建后的项目部署到docker的nginx镜像中 nginx 镜像内的默认目录在 /usr/share/nginx/html将待部署项目存放在 /usr/share/nginx/html 项目名称目录在Mac环境下的 jenkins系统 中,工程项目默认的路径在 ~/.jenkin…...
Leetcode 22. 括号生成
心路历程: 一开始看到左右括号,第一想到了栈。后来发现题目要求遍历所有的可能组合,第一想法是暴力for循环,但是不知道用几个for循环,所以想到递归和回溯。 虽然叫‘括号组合’,但是实际上这是一个满足规则…...
ChatGPT编程—实现小工具软件(批量替换文本、批量处理图像文件)
ChatGPT编程—实现小工具软件(批量替换文本、批量处理图像文件) 今天借助[小蜜蜂AI][https://zglg.work]网站的ChatGPT编程实现一个功能:批量处理文件及其内容,例如批量替换文本、批量处理图像文件等。 环境:Pycharm 2021 系统:…...
更安全的C gets()和str* 以及fgets和strcspn的用法
#include <stdio.h>int main() {char *str;gets(str);puts(str);return(0); }可以说全是错误 首先char *str没有指向一个分配好的地址,就直接读入,危险 ps: 怎么理解char *str "Hello World" 是将一个存储在一个只读的数据段中字符串常…...
专升本 C语言笔记-07 逗号运算符
1.逗号表达式的用法 就是用逗号隔开的多个表达式。逗号表达式,从左向右依次执行。 2.逗号表达式的特性 2.1.当没有括号时,第一个表达式为整个表达式的值。 代码 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完成的。其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于web的用户界面(Dashboard&…...
基于Java+Springmvc+vue+element实现高校心理健康系统详细设计和实现
基于JavaSpringmvcvueelement实现高校心理健康系统详细设计和实现 博主介绍:多年java开发经验,专注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服务漏洞
针对湖南麒麟操作系统进行漏洞检测时,会报SSH漏洞风险提醒,具体如下: 针对这些漏洞,可以关闭SSH服务(前提是应用已经部署完毕不再需要通过SSH远程访问传输文件的情况下,此时可以通过VNC远程登录方法&#x…...
升级ChatGPT4.0失败的解决方案
ChatGPT 4.0科普 ChatGPT 4.0是一款具有多项出众功能的新一代AI语言模型。以下是关于ChatGPT 4.0的一些关键特点和科普内容: 多模态:ChatGPT 4.0具备处理不同类型输入和输出的能力。这意味着它不仅可以接收文字信息,还能处理图片、视频等多媒…...
常用图像滤波器,图像增强
滤波器 滤波器在图像处理中有各种各样的应用,它们可以用于去除噪声、平滑图像、增强图像特征等。以下是一些常见的滤波器及其主要应用: 均值滤波器(Mean Filter): 用于去除高斯噪声或均匀噪声。 平滑图像࿰…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
创客匠人:如何通过创始人IP打造实现知识变现与IP变现的长效增长?
在流量红利逐渐消退的当下,创始人IP的价值愈发凸显。它不仅能够帮助中小企业及个人创业者突破竞争壁垒,还能成为企业品牌影响力的核心资产。然而,市场上IP孵化机构鱼龙混杂,如何选择一家真正具备长期价值的合作伙伴?创…...
5. TypeScript 类型缩小
在 TypeScript 中,类型缩小(Narrowing)是指根据特定条件将变量的类型细化为更具体的过程。它帮助开发者编写更精确、更准确的代码,确保变量在运行时只以符合其类型的方式进行处理。 一、instanceof 缩小类型 TypeScript 中的 in…...
MySQL间隙锁入手,拿下间隙锁面试与实操
一、MySQL 间隙锁,究竟是什么? 在 MySQL 的世界里,间隙锁(Gap Lock)就像是一个默默守护数据一致性的卫士,看似低调,却在并发控制中扮演着至关重要的角色。 想象一下,你去图书馆借…...
