npm run demo1 && npm run demo2 & npm run demo3 这个命令到底会怎么执行呢

简介: 总结: 按照顺序一个命令执行完毕,才会继续执行后面的命令

image.png


前言 作为一个前端,运行测试项目天天就是跟npm scripts打交道,通常用的都比较简单,直接一个命令运行项目即可。但有时候在写一些复杂的脚本的时候会进行并行或者串行的需求,如果对&&&使用不当,可能会产生意想不到的后果。下面就来看看这个命令是如何运行的?


1、准备代码


代码结构非常简单,如下图所示


image.png


  • ./demo1.js


function demo(callback, time) {
  setTimeout(() => {
    callback()
  }, time);
}
const fun = () => console.log('demo1')
demo(fun, 3000)


  • ./demo2.js


function demo(callback, time) {
  setTimeout(() => {
    callback()
  }, time);
}
const fun = () => console.log('demo2')
demo(fun, 2000)  //两秒后打印demo2


  • ./demo3.js


function demo(callback, time) {
  setTimeout(() => {
    callback()
  }, time);
}
const fun = () => console.log('demo3')
demo(fun, 1000)   //一秒后打印demo3


  • ./package.json


"scripts": {
    "demo1": "node demo1.js",
    "demo2": "node demo2.js",
    "demo3": "node demo3.js",
  },


2、npm 串行执行


"chuanxing": "npm run demo1 && npm run demo2 && npm run demo3"


image.png


根据执行情况你可以很明显的感受到:


1.先执行demo1.js,停顿3秒后打印出demo1


1.再执行demo2.js,停顿2秒后打印出demo2


1.最后是demo3.js,停顿1秒后打印出demo3


总结: 按照顺序一个命令执行完毕,才会继续执行后面的命令


&&符号进行拼接


3、npm 并行执行


"bingxing": "npm run demo1 & npm run demo2 & npm run demo3"


image.png


通过截图和执行情况可以发现(因为我也设置了三秒后打印3,两秒后打印2,一秒后打印1)


1.间隔一秒后先打印demo3


2.又间隔一秒后打印demo2


3.最后又间隔一秒后打印是demo1



总结: 三个命令一起执行,谁的时间短谁就先执行完毕了


& 符号进行拼接


4、'&'与 '&&'一起该如何选择呢


"demo": "npm run demo1 && npm run demo2 & npm run demo3"


image.png


其实它是demo1和demo3两个命令先执行,但是demo3只需要一秒钟便可以打印,而demo1,则需要三秒钟。所以先打印demo3,再打印demo1。两个命令都执行完毕之后,再去执行demo2的命令,最后打印出demo2。


总结:并不是先执行demo1,结束后demo2和demo3再并行执行

'&'和'&&'一起的时候,会先执行&前后命令

npm run demo1 && npm run demo2npm run demo3一起执行

然而前面命令中的两个指令又会进行串行的执行

&的优先级要高于&&,并行指令优先级要高于串行指令


5、总结


  • 一个 & 是代表并行执行左指令和右侧指令
  • 两个 && 是代表串行执行,先执行左侧指令,再执行右侧命令
  • 而如果一个命令中既包含 & ,也包含 &&&并行的级别要高一些,首先会执行&左右两侧的命令,然后再根据左右两侧指令情况进行执行。


最后有兴趣的再来看看下面这个命令会怎么执行吧?


"demo": "npm run demo1 & npm run demo2 && npm run demo3"


目录
相关文章
|
3月前
npm info 命令的用途
npm info 命令的用途
37 0
|
26天前
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
|
4月前
|
JavaScript 前端开发 数据安全/隐私保护
详细介绍NPM的基本使用方法、常用命令和一些实用技巧
详细介绍NPM的基本使用方法、常用命令和一些实用技巧
125 0
|
5月前
|
Ubuntu
node、npm 命令升级
node、npm 命令升级
|
4月前
|
JavaScript
node.js 项目中执行 npm install 命令后看到的 idealTree inflate 的含义
node.js 项目中执行 npm install 命令后看到的 idealTree inflate 的含义
188 0
|
2月前
项目打包报错“caniuse-lite is outdated. Please run next command `npm update`”的解决方案
项目打包报错“caniuse-lite is outdated. Please run next command `npm update`”的解决方案
43 1
|
5月前
|
JavaScript 前端开发 Shell
NPM 自定义 package.json 中 scripts 命令(& 与 && 的区别,cross-env 的使用)
NPM 自定义 package.json 中 scripts 命令(& 与 && 的区别,cross-env 的使用)
39 0
|
7天前
|
弹性计算 Dubbo Serverless
Serverless 应用引擎操作报错合集之阿里函数计算中配置完fc,出现‘Function instance exited unexpectedly(code 1, message:operation not permitted) with start command 'npm run start '. 报错如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
14 5
|
2月前
|
缓存 JavaScript 前端开发
【热门话题】深入浅出:npm常用命令详解与实践
**npm命令详解:**了解基本概念和安装后,通过`npm init`生成`package.json`。安装包用`install [package]`,加`--save`或`--save-dev`管理依赖。移除包用`uninstall`,更新用`update`,全局安装加`-g`。搜索包用`search`,查看依赖用`list`,检查过时包用`outdated`,审计安全用`audit`。版本控制用`version`,发布包用`publish`。掌握这些命令能提升开发效率。探索更多npm特性,加强项目管理和协作。
32 6
|
3月前
|
JavaScript 前端开发
Npm 命令大全介绍(NodeJs)
Npm 命令大全介绍(NodeJs)
37 0

热门文章

最新文章

推荐镜像

更多