• vue执行配置选项npm run serve的本质


    vue执行配置选项npm run serve运行开发服务器的本质

    目录

    vue执行配置选项npm run serve运行开发服务器的本质

    一、启动开发服务器、调用“工具链”、编译、并运行当前工程

    二、npm run serve内部原理分析

    三、vue编译运行过程

    喜欢的,就收藏并点个赞,便于观看下篇文章:


    一、启动开发服务器、调用“工具链”、编译、并运行当前工程

    npm run serve

            该命令的配置文件在当前工程的package.json文件中,随@vue/cli脚手架驱动产生的vue的工程默认自动生成: 

     (图1)

      (图2)

    二、npm run serve内部原理分析

             打开“工程”下的node包依赖路径下的“可执行脚本”目录:node_modules\bin

       (图3)

             如 图3 所示,vue-cli-service.cmd文件,即 图1 所运行的实际脚本,运行其命令行帮助:

       (图4)

             得知其需要1些选项来执行命令( 如 图4 所示):

       (图5)

            分别打开 图5 所示的两个文件,得知vue-cli-service.cmd需要带1个“选项参数”来执行内部命令( 如 图6、图7 所示):

       (图6)

       (图7)

            通过分析 vue-cli-service.js 源码:

     (图8)

             得知,“选项参数” 的别名,分别为 build、 serve 、inspect :

    1. #!/usr/bin/env node
    2. const { semver, error } = require('@vue/cli-shared-utils')
    3. const requiredVersion = require('../package.json').engines.node
    4. if (!semver.satisfies(process.version, requiredVersion, { includePrerelease: true })) {
    5. error(
    6. `You are using Node ${process.version}, but vue-cli-service ` +
    7. `requires Node ${requiredVersion}.\nPlease upgrade your Node version.`
    8. )
    9. process.exit(1)
    10. }
    11. const Service = require('../lib/Service')
    12. const service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd())
    13. const rawArgv = process.argv.slice(2)
    14. const args = require('minimist')(rawArgv, {
    15. boolean: [
    16. // build
    17. 'modern',
    18. 'report',
    19. 'report-json',
    20. 'inline-vue',
    21. 'watch',
    22. // serve
    23. 'open',
    24. 'copy',
    25. 'https',
    26. // inspect
    27. 'verbose'
    28. ]
    29. })
    30. const command = args._[0]
    31. service.run(command, args, rawArgv).catch(err => {
    32. error(err)
    33. process.exit(1)
    34. })

            因而,开发环境,npm run serve 的原生CLI命令行脚本为:

    1. node .\node_modules\@vue\cli-service\bin\vue-cli-service.js serve

             同理,生产环境,进行分发时,npm run build 的原生CLI命令行脚本为:

    node .\node_modules\@vue\cli-service\bin\vue-cli-service.js build
    

    三、vue编译运行过程

            npm run serve、npm run build等“调试运行脚本”:仅仅是Vue默认在内部做了1个“命令行”封装而已!以包配置文件(package.json)的形式与用户交互。

    1. # 过程大致如此:
    2. # INFO Starting development server...
    3. # node调用各个相关模块并运行:
    4. node.exe
    5. # vue内置webpack开始启动开发服务器webpack-dev-server :
    6. .\node_modules\webpack-dev-server\client\index.js?http://192.168.3.242:8081&sockPath=/sockjs-node
    7. .\node_modules\webpack\hot\dev-server.js
    8. .\node_modules\webpack-dev-server\client\index.js?http://192.168.3.242:8081&sockPath=/
    9. # vue内置webpack调用cache-loader和babel-loader解析代码进行语法分析、依赖分析:
    10. .\node_modules\cache-loader\dist\cjs.js??ref--13-0!
    11. .\node_modules\babel-loader\lib\index.js!
    12. # ...........
    13. # vue-loader加载器启动选项:
    14. .\node_modules\vue-loader\lib\index.js??vue-loader-options!
    15. # 对你的工程中的文件进行语法及依赖分析:
    16. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\App.vue?vue&type=te
    17. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\A
    18. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avatar.vue?vue&type=tem
    19. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avat
    20. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\A
    21. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avat
    22. .\node_modules\babel-loader\lib\index.js
    23. .\node_modules\cache-loader\dist\cjs.js??ref--13-0!
    24. # ...........
    25. # vue-loader开始调用index.js处理你的工程中的文件:
    26. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\App.vue?vue&type=te
    27. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avatar.vue?vue&type=tem
    28. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avatar.vue?vue&type=tem
    29. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\App.vue?vue&type=style&index=0&id=
    30. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avatar.vue?vue&type=style&index=0&id=5811d
    31. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\App.vue?vue&type=style&index=0&id=
    32. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avatar.vue?vue&type=style&index=0&id=5811d
    33. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\App.vue?vue&type=style&index=0&id=
    34. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avatar.vue?vue&type=style&index=0&id=5811d
    35. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avatar.vue?vue&type=style&index=0&id=5811d
    36. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avatar.vue?vue&type=style&index=0&id=5811d
    37. .\node_modules\vue-loader\lib\index.js??vue-loader-options!.\src\components\Avatar.vue?vue&type=style&index=0&id=5811d
    38. # 完成“构建”并启动应用:
    39. # 98% after emitting CopyPlugin
    40. # DONE Compiled successfully in 5177ms 上午4:56:59
    41. # App running at:
    42. # - Local: http://localhost:8081/
    43. # - Network: http://192.168.3.242:8081/
    44. #
    45. # Note that the development build is not optimized.
    46. # To create a production build, run npm run build.

    喜欢的,就收藏并点个赞,便于观看下篇文章:

    原生CLI指令构建npm run减少硬盘node_modules的开销_pulledup的博客-CSDN博客

    vscode用户配置文件等的存取_pulledup的博客-CSDN博客_vscode配置文件在哪
     

    关于vscode插件查询、备份与恢复_pulledup的博客-CSDN博客_vscode缓存文件内容恢复

    推荐一款最流行的流程图及图表工具draw.io,老掉牙的工具已无人再用_pulledup的博客-CSDN博客_drawio 图库

    http通讯及浏览器中的HTML编码、URL编码、base64编码及转义_pulledup的博客-CSDN博客

    开发者实名认证的一般通行做法_pulledup的博客-CSDN博客

  • 相关阅读:
    《低代码指南》——维格云抗原自检信息系统搭建「采集+检测+转运」
    nodejs系列:22.koa介绍
    【ML】分类问题
    【Python】从0开始的Django基础
    圆柱模型分割
    全志ARM926 Melis2.0系统的开发指引⑤
    Docker Hub使用
    samba 安装及配置
    Java武侠文字游戏
    Hadoop搭建————搭建前的准备
  • 原文地址:https://blog.csdn.net/pulledup/article/details/126844821