前言
npm run serve 和 npm run build 的差异
这里主要是从 vue-cli 的流程 来看一下 我们经常用到的这两个命令, 他到传递给 webpack 打包的时候, 的一个具体的差异, 大致是配置了那些东西?
经过了那些流程 ?
vue-cli 的 vue-plugin 的加载
内置的 plugin 列表如下, 依次对应于左边的 commands, config 中的各个 js
也是在这个流程中, npm run serve 和 npm run build 产生了一些配置上的差异 导致了一部分结果的差异
vue-cli 的 vue-plugin 的加载导致的差异
更友好的这个json, 可以通过 vue-cli-service inspect 进行查看, 增加 --mode 参数查看不同的环境, 这里是直接调试输出的
npm run serve 执行得到的 webpack 的配置如下
{
"mode": "development",
"context": "D:\\WebstormWorkStations\\hello-package",
"devtool": "eval-cheap-module-source-map",
"output": {
"hashFunction": "xxhash64",
"path": "D:\\WebstormWorkStations\\hello-package\\dist",
"filename": "js/[name].js",
"publicPath": "",
"chunkFilename": "js/[name].js",
"globalObject": "(typeof self !== 'undefined' ? self : this)"
},
"resolve": {
"alias": {
"@": "D:\\WebstormWorkStations\\hello-package\\src",
"vue$": "vue/dist/vue.runtime.esm.js"
},
"extensions": [
".mjs",
".js",
".jsx",
".vue",
".json",
".wasm"
],
"modules": [
"node_modules",
"D:\\WebstormWorkStations\\hello-package\\node_modules",
"D:\\WebstormWorkStations\\hello-package\\node_modules\\@vue\\cli-service\\node_modules"
]
},
"resolveLoader": {
"modules": [
"D:\\WebstormWorkStations\\hello-package\\node_modules\\@vue\\cli-plugin-babel\\node_modules",
"D:\\WebstormWorkStations\\hello-package\\node_modules\\@vue\\cli-service\\lib\\config\\vue-loader-v15-resolve-compat",
"node_modules",
"D:\\WebstormWorkStations\\hello-package\\node_modules",
"D:\\WebstormWorkStations\\hello-package\\node_modules\\@vue\\cli-service\\node_modules"
]
},
"module": {
"noParse": {},
"rules": [
{
"test": {},
"resolve": {
"fullySpecified": false
}
},
{
"test": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\@vue\\vue-loader-v15\\lib\\index.js",
"options": {
"compilerOptions": {
"whitespace": "condense"
}
}
}
]
},
{
"test": {},
"resourceQuery": {},
"sideEffects": true
},
{
"test": {},
"oneOf": [
{
"resourceQuery": {},
"use": [
{
"loader": "pug-plain-loader"
}
]
},
{
"use": [
{
"loader": "raw-loader"
},
{
"loader": "pug-plain-loader"
}
]
}
]
},
{
"test": {},
"type": "asset/resource",
"generator": {
"filename": "img/[name].[hash:8][ext]"
}
},
{
"test": {},
"type": "asset",
"generator": {
"filename": "img/[name].[hash:8][ext]"
}
},
{
"test": {},
"type": "asset",
"generator": {
"filename": "media/[name].[hash:8][ext]"
}
},
{
"test": {},
"type": "asset",
"generator": {
"filename": "fonts/[name].[hash:8][ext]"
}
},
{
"test": {},
"oneOf": [
{
"resourceQuery": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2,
"modules": {
"localIdentName": "[name]_[local]_[hash:base64:5]"
}
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
}
]
},
{
"resourceQuery": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
}
]
},
{
"test": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
}
]
},
{
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
}
]
}
]
},
{
"test": {},
"oneOf": [
{
"resourceQuery": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2,
"modules": {
"localIdentName": "[name]_[local]_[hash:base64:5]"
}
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
}
]
},
{
"resourceQuery": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
}
]
},
{
"test": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
}
]
},
{
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
}
]
}
]
},
{
"test": {},
"oneOf": [
{
"resourceQuery": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2,
"modules": {
"localIdentName": "[name]_[local]_[hash:base64:5]"
}
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
},
{
"loader": "sass-loader",
"options": {
"sourceMap": false
}
}
]
},
{
"resourceQuery": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"postcssOptions": {
"plugins": [
null
]
}
}
},
{
"loader": "sass-loader",
"options": {
"sourceMap": false
}
}
]
},
{
"test": {},
"use": [
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\vue-style-loader\\index.js",
"options": {
"sourceMap": false,
"shadowMode": false
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\css-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"importLoaders": 2
}
},
{
"loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\postcss-loader\\dist\\cjs.js",
"options": {
"sourceMap": false,
"