package.json scripts参数windows系统只能运行单个进程问题

项目场景:

提示:项目为Node项目,并且此项目中包含两个package.json,即:


my-project
 --admin/
   --node_modules/
   ...
   --package.json
 --node_modules/
 ...
 --package.json
 

问题描述:

运行代码:npm run dev && cd admin && npm run dev,package.json文件内容如下:

{
 "scripts": {
	"watch": "npm run dev && cd admin && npm run dev"
 }
}

问题描述

  • mac系统中以上命令可以运行正常运行,即:npm run dev运行起来一个进程,cd admin && npm run dev运行起来一个进程,所以共运行起来两个进程
  • 但在windows系统中以上命令仅可以运行一半,即:仅执行npm run dev,随后进程卡死,不会执行后面的cd admin && npm run dev,所以运行起来一个进程

原因分析:

  • mac系统中以上命令可以运行正常运行,即:npm run dev运行起来一个进程,cd admin && npm run dev运行起来一个进程,所以共运行起来两个进程
  • 但在windows系统中以上命令仅可以运行一半,即:仅执行npm run dev,随后进程卡死,不会执行后面的cd admin && npm run dev,所以运行起来一个进程。由于进程是卡住的,所以不会报错也不会报异常(这一点在windows开发过程发现不了)

有话要说:

经测试发现package.json在windows中运行是单线程的,mac系统中的package.json应该是多线程的(穷人一枚没mac)

以上结论如有不对,请联系纠正,感谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: package.json 中的 scripts 字段是一个配置命令的对象,它可以定义多个命令,并且通过 `npm run [script name]` 在命令行中运行参数是通过在命令行中的空格隔开的字符串传递给脚本的。例如: ``` "scripts": { "build": "webpack --config build.config.js", "test": "jest --coverage" }, ``` 运行 `npm run build` 将运行命令 `webpack --config build.config.js`。 您可以在 package.json 脚本命令中通过 `$npm_config_[key]` 访问 `npm config` 中的配置项,并在脚本命令中使用它们,例如: ``` "scripts": { "build": "webpack --env.NODE_ENV=$npm_config_environment" }, ``` 运行 `npm run build -- --environment=production` 将运行命令 `webpack --env.NODE_ENV=production`。 ### 回答2: package.json文件是Node.js项目的配置文件,其中包含了一些项目相关的信息,包括项目的依赖、脚本命令等等。其中scripts属性是最常用的属性之一,它指定了npm运行脚本命令的方式。 在scripts属性中,可以定义多个命令,各个命令之间以空格分隔。例如: ```json "scripts": { "start": "node index.js", "test": "mocha" } ``` 在上述示例中,定义了start和test两个命令。start命令指定了运行node index.js命令,用于启动应用程序;test命令指定了运行mocha命令,用于运行测试。 npm运行脚本的方式是使用npm run命令,后面跟着需要运行的脚本命令名称。例如: ```bash npm run start ``` 上述命令将会执行start命令,即运行node index.js命令。 当然,也可以向脚本命令中传递参数,例如: ```json "scripts": { "build": "webpack --config webpack.config.js", "test": "mocha --grep 'test case name'" } ``` 在上述示例中,build命令指定了使用webpack.config.js配置文件进行项目构建;test命令中的--grep参数指定了只运行名称中包含'test case name'的测试用例。 总而言之,package.jsonscripts参数提供了一种方便的方式来定义项目中需要运行的脚本命令,为项目开发和维护提供了很大的便利性。 ### 回答3: package.json是一个标准的npm配置文件,包含了项目的元数据和依赖项信息。其中,scripts参数是用来定义一些脚本命令的。下面是一些常见的脚本命令及其作用: 1. start:启动应用程序。通常用于开发环境中。 2. build:打包静态资源。通常用于生产环境中。 3. test:运行单元测试。 4. lint:对代码进行静态分析,检查潜在的错误及代码规范。 5. prestart,poststart,prebuild,postbuild等预设脚本:在执行start或build等命令前或后做一些准备或清理工作。 6. 自定义脚本:开发者可以自行定义一些脚本命令来满足自己的需求,比如部署到服务器等。自定义脚本命令需要按照"脚本名": "命令"的格式进行定义,如下所示: ``` "deploy": "npm run build && scp -r dist/ user@example.com:/path/to/remote/server" ``` 在执行时,可以通过npm run deploy来运行该脚本命令。 脚本的执行顺序是按照定义的顺序执行的,也可以通过在命令中使用&或者&&来进行并行或者串行执行。比如: ``` "start": "npm run build & node server.js" ``` 该命令会先执行打包命令,然后并行执行node server.js启动应用程序。 总之,package.jsonscripts参数提供了一种简便的方式来定义和执行一些脚本命令,使得开发者可以轻松地管理和控制项目中的各种任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值