文章目录

  • 一、build文件夹分析
    • build/dev-server.js
    • build/webpack.base.conf.js
    • build/webpack.dev.conf.js
    • build/check-versions.js和build/dev-client.js
    • build/utils.js和build/vue-loader.conf.js
    • build/build.js
    • build/webpack.prod.conf.js
  • 二、config文件夹分析
    • config/index.js
    • config/dev.env.js、config/prod.env.js和config/test.env.js
  • 三、vue项目工程中执行npm run dev 命令之后执行了哪些操作
    • 1.npm run dev是执行配置在package.json中的脚本,比如:
    • 2.build/dev-server.js里var webpackConfig = require('./webpack.dev.conf') 调用了webpack.dev.conf配置文件。

├─build
│ ├─build.js
│ ├─check-versions.js
│ ├─dev-client.js
│ ├─dev-server.js
│ ├─utils.js
│ ├─vue-loader.conf.js
│ ├─webpack.base.conf.js
│ ├─webpack.dev.conf.js
│ ├─webpack.prod.conf.js
│ └─webpack.test.conf.js
├─config
│ ├─dev.env.js
│ ├─index.js
│ ├─prod.env.js
│ └─test.env.js
├─…
└─package.json

以上是关于bulid与run的所有文件

指令分析

package.json里面

"dev": "node build/dev-server.js","build": "node build/build.js",

意思:运行”npm run dev”的时候执行的是build/dev-server.js文件,

运行”npm run build”的时候执行的是build/build.js文件。

一、build文件夹分析

build/dev-server.js

npm run dev 执行的文件build/dev-server.js文件,执行了:

  • 检查node和npm的版本
  • 引入相关插件和配置
  • 创建express服务器和webpack编译器
  • 配置开发中间件(webpack-dev-middleware)和热重载中间件(webpack-hot-middleware)
  • 挂载代理服务和中间件
  • 配置静态资源
  • 启动服务器监听特定端口(8080)
  • 自动打开浏览器并打开特定网址(localhost:8080)

说明:
express服务器提供静态文件服务,不过它还使用了http-proxy-middleware,一个http请求代理的中间件。前端开发过程中需要使用到后台的API的话,可以通过配置proxyTable来将相应的后台请求代理到专用的API服务器。

build/webpack.base.conf.js

dev-server依赖的webpack配置是webpack.dev.conf.js文件,

测试环境下使用的是webpack.prod.conf.js

webpack.dev.conf.js中又引用了webpack.base.conf.js

webpack.base.conf.js主要完成了下面这些事情:
配置webpack编译入口
配置webpack输出路径和命名规则
配置模块resolve规则
配置不同类型模块的处理规则
这个配置里面只配置了.js、.vue、图片、字体等几类文件的处理规则,如果需要处理其他文件可以在module.rules里面配置。

build/webpack.dev.conf.js

在webpack.base.conf的基础上增加完善了开发环境下面的配置,主要包括下面几件事情:

将hot-reload相关的代码添加到entry chunks

  • 合并基础的webpack配置
  • 使用styleLoaders
  • 配置Source Maps
  • 配置webpack插件

build/check-versions.js和build/dev-client.js

最后是build文件夹下面两个比较简单的文件,

dev-client.js似乎没有使用到,代码也比较简单,这里不多讲。

check-version.js完成对node和npm的版本检测

build/utils.js和build/vue-loader.conf.js

webpack配置文件中使用到了utils.js和vue-loader.conf.js这两个文件,utils主要完成下面3件事:

  • 配置静态资源路径
  • 生成cssLoaders用于加载.vue文件中的样式
  • 生成styleLoaders用于加载不在.vue文件中的单独存在的样式文件
  • vue-loader.conf则只配置了css加载器以及编译css之后自动添加前缀。

build/build.js

构建环境下的配置,build.js主要完成下面几件事:

  • loading动画
  • 删除创建目标文件夹
  • webpack编译 输出信息

build/webpack.prod.conf.js

构建的时候用到的webpack配置来自webpack.prod.conf.js,该配置同样是在webpack.base.conf基础上的进一步完善。主要完成下面几件事情:

  • 合并基础的webpack配置
  • 使用styleLoaders
  • 配置webpack的输出
  • 配置webpack插件
  • gzip模式下的webpack插件配置
  • webpack-bundle分析

说明: webpack插件里面多了丑化压缩代码以及抽离css文件等插件。

二、config文件夹分析

config/index.js

config文件夹下最主要的文件就是index.js了,

在这里面描述了开发和构建两种环境下的配置,前面的build文件夹下也有不少文件引用了index.js里面的配置。

config/dev.env.js、config/prod.env.js和config/test.env.js

这三个文件就简单设置了环境变量而已,没什么特别的。

这是webpack的基本入门,webpack还有很多插件,还需要去探索

三、vue项目工程中执行npm run dev 命令之后执行了哪些操作

1.npm run dev是执行配置在package.json中的脚本,比如:

"scripts": {"dev": "node build/dev-server.js","start": "node build/dev-server.js","build": "node build/build.js"
}

2.build/dev-server.js里var webpackConfig = require(’./webpack.dev.conf’) 调用了webpack.dev.conf配置文件。

var config = require('../config')
if (!process.env.NODE_ENV) {process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
}var opn = require('opn')
var path = require('path')
var express = require('express')
var webpack = require('webpack')
var proxyMiddleware = require('http-proxy-middleware')
var webpackConfig = require('./webpack.dev.conf')

webpack.dev.conf文件通过merge引用了webpack.base.conf.js文件

在webpack.base.conf.js文件中调用了./src/main.js

main.js用到了一个html元素#app。new vue 挂载的就是app.vue,其中包括导入了路由 app应用

import Vue from 'vue'
import App from './App'
import router from './router'
import Mint from 'mint-ui'var jquery = require('jquery');Vue.config.productionTip = false/* eslint-disable no-new */
new Vue({el: '#app',router,template: '<App/>',components: { App }
}

再次回到webpack.dev.conf.js文件的结尾处

 new HtmlWebpackPlugin({filename: 'index.html',template: 'index.html',inject: true})

这里就指定了输出的模板文件

后续就是因为调用了main.js 所以就去去调取路由 最后填充到App.Vue 中

vue的npm run dev做了什么相关推荐

  1. 关于vue的npm run dev和npm run build

    转自:https://www.cnblogs.com/hl0203/p/7138600.html 关于vue的npm run dev和npm run build ├─build │ ├─build.j ...

  2. vue 项目npm run dev时报错The service was stopped

    vue 项目npm run dev时报错The service was stopped 1.The service was stopped 执行命令: node_modules/esbuild/ins ...

  3. 【VUE】npm run dev b报错 “'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。”

    背景 使用npm run dev 运行PC端项目时,报错: "'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件." 'webpack- ...

  4. 设置vue运行npm run dev时候,项目在浏览器自动打开页面的方法

    在config/index.js找到dev:{}里面的autoOpenBrowser: 设置为true,重新npm run dev一次就自动弹出浏览器页面啦!

  5. 【VUE】npm run dev 报错 spawn cmd ENOENT

    问题描述 npm run dev 时报错spawn cmd ENOENT 原因 ['C:\Windows\System32']丢失 解决办法 添加系统环境变量path即可. 进入系统的环境变量–pat ...

  6. 【vue】npm run dev报错解决方法

    报错: C:\Users\Administrator\Desktop\todomvc-vue>npm star dev npm ERR! code E403 npm ERR! 403 403 F ...

  7. Vue 运行 npm run dev 是报错提示 web-project-base@1.0.0 dev: `webpack-dev-server --inline --progress --open

    从git 拉取了其他同事的代码,再运行前端 npm run dev 时就报这个错误了,然后就开始吧啦吧啦从网上找啊,各种方法实验,反正最后给解决了,但是花费的时间不少啊,记录下我报错的原因把,每个人的 ...

  8. Vue 项目 npm run dev报错errno 134

    报错信息: npm ERR! code ELIFECYCLE npm ERR! errno 134 npm ERR! GAWeb@1.0.0 nativeBuild: react-app-rewire ...

  9. vue报错 运行npm run dev报cjs.js缺失

    vue 运行 npm run dev 或者npm run serve 报core-js/modules/es6.array.find in ./node_modules/_cache-loader@2 ...

  10. npm install和npm run dev以及npm run build的区别

    我们在开发vue.js的mvvp项目时候,会执行npm install ,npm build,npm dev等等.其实这些都和package.json有关. {"name": &q ...

最新文章

  1. 机器学习的教训:5家公司分享的错误经验
  2. SVN账号重新指定方法
  3. Android复习07【创建数据库、insert()插入数据、查看数据库、根据列索引获取参数值、根据列名-返回索引、增删改查数据、数据分页、修改表结构、Room框架】
  4. MFC学习之路之多媒体 --(1) DirectShow
  5. java----连接池C3p0使用的补充
  6. 获取python版本
  7. pytorch tensor数据类型与变换类型
  8. sts 的js代码不变色_[黑科技] 使用 Laravel Livewire 来构建实时搜索功能(不使用一行 JS 代码)...
  9. Android系统信息获取 之十二:获取屏幕分辨率及密度
  10. InDesign 软件教程,如何在 InDesign 中缩放和平移文档?
  11. 当棋牌遇到Web3,Immortal Games能让国际象棋流行起来么
  12. 回溯算法求解桥本分数式
  13. SQL 修改表的常用命令
  14. Windows xp 落选logo方案首次公开!居然设计了这么多版本!
  15. JavaScript 获取字符串的最后一个字符
  16. JVM笔记十四:方法区
  17. Arcgis中给nodata的值设为空
  18. Entity Relation Fusion for Real-Time One-Stage Referring Expression Comprehension 2021
  19. java输出三维数组
  20. 利用C++逆向知识写CS辅助,轻松实现透视原理!

热门文章

  1. php格式转为jpg格式,php实现图片格式转换
  2. 软件测试面试必问问题
  3. 杰出人士的七种共性之5-独木求林
  4. 好站推荐-四个在线识别字体网站,从此不在为找字体烦恼
  5. 纠正口呼吸,信医生别信“神器”
  6. Gensim库之Doc2Vec模型详解
  7. RAID 0/1/5/6/00/(10/01)/50/60磁盘阵列逻辑容量计算公式
  8. 内核获取网络设备的网桥接口
  9. 20年研发管理经验谈(二)
  10. 调用支付宝第三方支付接口详解(沙箱环境)