【vue】npm run serve的背后执行

vue-cli3搭建的项目,使用npm run serve/yarn serve来运行项目;
npm run :会执行pakeage.json中在scripts中写的脚本命令,这些脚本就是node_modules/.bin中的文件名;因为npm在执行脚本时会临时自动将目录的node_modules/.bin加入PATH变量,所以脚本命令会去node_modules/bin中找,而无需添加node_modules/.bin前缀

 "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
而不是
"scripts": {"serve": "node_modules/.bin/vue-cli-service serve",}

开始

1、执行npm run serve
2、找到==>pageage.json中的 "scripts": {"serve": "vue-cli-service serve", },其中serve是参数,也可以是build
3、找到==>node_modules/.bin/vue-cli-service文件;
4、找到==>@vue/cli-service/bin/vue-cli-service.js文件;

关于上述文件补充:
1、 semver:称为 Semantic Versioning(语义化版本表示);
2、【CommenJS的导入规则】 const { semver, error } = require('@vue/cli-shared-utils')
核心模块、第三方模块的加载:在node_module文件下的同名文件中找package.json中的main属性对应的值,如index.js,然后去这个文件并执行;如果main没有,那默认找index.js;本文件夹没有则往外找package.json、index.js,直到找到根目录。
3、【CommenJS的导出规则】
导出的是:module.exports对象;内部默认var module.exports={}; var exports = module.exports; return module.exports;所以一般导出单个用:module.exports=;导出多个用:exports.属性名=或module.exports={};

两个关键点:

  • 普通命令行: *** …:先找当前目录下有没有exe可执行文件,没有就path变量里找有没有全局配置;
  • npm run …,对应的package.json中命令: ***,找node_modules/.bin/***
  • require(***)时:找node_modules/***/package.json中的main字段

版权声明:本文为zhangank原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。