57 npm run build 和 npm run serve 的差异

前言

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,
                  "postcssOptions": {
                    "plugins": [
                      null
                    ]
                  }
                }
              },
              {
                "loader": "sass-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          },
          {
            "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": {},
        "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,
                  "sassOptions": {
                    "indentedSyntax": true
                  }
                }
              }
            ]
          },
          {
            "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,
                  "sassOptions": {
                    "indentedSyntax": true
                  }
                }
              }
            ]
          },
          {
            "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
                    ]
                  }
                }
              },
              {
                "loader": "sass-loader",
                "options": {
                  "sourceMap": false,
                  "sassOptions": {
                    "indentedSyntax": true
                  }
                }
              }
            ]
          },
          {
            "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,
                  "sassOptions": {
                    "indentedSyntax": true
                  }
                }
              }
            ]
          }
        ]
      },
      {
        "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": "less-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": "less-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,
                  "postcssOptions": {
                    "plugins": [
                      null
                    ]
                  }
                }
              },
              {
                "loader": "less-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          },
          {
            "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": "less-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          }
        ]
      },
      {
        "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": "stylus-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": "stylus-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,
                  "postcssOptions": {
                    "plugins": [
                      null
                    ]
                  }
                }
              },
              {
                "loader": "stylus-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          },
          {
            "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": "stylus-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          }
        ]
      },
      {
        "test": {},
        "exclude": [
          null
        ],
        "use": [
          {
            "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\babel-loader\\lib\\index.js",
            "options": {
              "cacheCompression": false,
              "cacheDirectory": "D:\\WebstormWorkStations\\hello-package\\node_modules\\.cache\\babel-loader",
              "cacheIdentifier": "66c7e3b9"
            }
          }
        ]
      }
    ]
  },
  "optimization": {
    "realContentHash": false,
    "splitChunks": {
      "cacheGroups": {
        "defaultVendors": {
          "name": "chunk-vendors",
          "test": {},
          "priority": -10,
          "chunks": "initial"
        },
        "common": {
          "name": "chunk-common",
          "minChunks": 2,
          "priority": -20,
          "chunks": "initial",
          "reuseExistingChunk": true
        }
      }
    },
    "minimizer": [
      {
        "options": {
          "test": {},
          "extractComments": false,
          "parallel": true,
          "minimizer": {
            "options": {
              "compress": {
                "arrows": false,
                "collapse_vars": false,
                "comparisons": false,
                "computed_props": false,
                "hoist_funs": false,
                "hoist_props": false,
                "hoist_vars": false,
                "inline": false,
                "loops": false,
                "negate_iife": false,
                "properties": false,
                "reduce_funcs": false,
                "reduce_vars": false,
                "switches": false,
                "toplevel": false,
                "typeofs": false,
                "booleans": true,
                "if_return": true,
                "sequences": true,
                "unused": true,
                "conditionals": true,
                "dead_code": true,
                "evaluate": true
              },
              "mangle": {
                "safari10": true
              }
            }
          }
        }
      }
    ]
  },
  "plugins": [
    {},
    {
      "definitions": {
        "process.env": {
          "NODE_ENV": "\"development\"",
          "BASE_URL": "\"\""
        }
      }
    },
    {
      "options": {},
      "logger": {},
      "pathCache": {},
      "fsOperations": 0,
      "primed": false
    },
    {
      "compilationSuccessInfo": {},
      "shouldClearConsole": true,
      "formatters": [
        null,
        null,
        null,
        null
      ],
      "transformers": [
        null,
        null,
        null,
        null
      ],
      "previousEndTimes": {}
    },
    {
      "userOptions": {
        "title": "hello-package",
        "scriptLoading": "defer",
        "template": "D:\\WebstormWorkStations\\hello-package\\public\\index.html"
      },
      "version": 5,
      "options": {
        "template": "D:\\WebstormWorkStations\\hello-package\\public\\index.html",
        "templateContent": false,
        "filename": "index.html",
        "publicPath": "auto",
        "hash": false,
        "inject": "head",
        "scriptLoading": "defer",
        "compile": true,
        "favicon": false,
        "minify": "auto",
        "cache": true,
        "showErrors": true,
        "chunks": "all",
        "excludeChunks": [],
        "chunksSortMode": "auto",
        "meta": {},
        "base": false,
        "title": "hello-package",
        "xhtml": false
      }
    },
    {
      "patterns": [
        {
          "from": "D:\\WebstormWorkStations\\hello-package\\public",
          "to": "D:\\WebstormWorkStations\\hello-package\\dist",
          "toType": "dir",
          "noErrorOnMissing": true,
          "globOptions": {
            "ignore": [
              "**/.DS_Store",
              "D:/WebstormWorkStations/hello-package/public/index.html"
            ]
          },
          "info": {
            "minimized": true
          }
        }
      ],
      "options": {}
    },
    {
      "delegate": {
        "profile": false,
        "modulesCount": 5000,
        "dependenciesCount": 10000,
        "showEntries": false,
        "showModules": true,
        "showDependencies": false,
        "showActiveModules": false,
        "percentBy": "entries"
      }
    }
  ],
  "entry": {
    "app": [
      "./src/main.js"
    ]
  }
}

npm run build 执行得到的 webpack 配置如下

{
  "mode": "production",
  "context": "D:\\WebstormWorkStations\\hello-package",
  "devtool": false,
  "output": {
    "hashFunction": "xxhash64",
    "path": "D:\\WebstormWorkStations\\hello-package\\dist",
    "filename": "js/[name].[contenthash:8].js",
    "publicPath": "",
    "chunkFilename": "js/[name].[contenthash:8].js"
  },
  "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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
                }
              }
            ]
          },
          {
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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": {},
        "oneOf": [
          {
            "resourceQuery": {},
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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,
                  "sassOptions": {
                    "indentedSyntax": true
                  }
                }
              }
            ]
          },
          {
            "resourceQuery": {},
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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,
                  "sassOptions": {
                    "indentedSyntax": true
                  }
                }
              }
            ]
          },
          {
            "test": {},
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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,
                  "sassOptions": {
                    "indentedSyntax": true
                  }
                }
              }
            ]
          },
          {
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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,
                  "sassOptions": {
                    "indentedSyntax": true
                  }
                }
              }
            ]
          }
        ]
      },
      {
        "test": {},
        "oneOf": [
          {
            "resourceQuery": {},
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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": "less-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          },
          {
            "resourceQuery": {},
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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": "less-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          },
          {
            "test": {},
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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": "less-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          },
          {
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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": "less-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          }
        ]
      },
      {
        "test": {},
        "oneOf": [
          {
            "resourceQuery": {},
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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": "stylus-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          },
          {
            "resourceQuery": {},
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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": "stylus-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          },
          {
            "test": {},
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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": "stylus-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          },
          {
            "use": [
              {
                "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\mini-css-extract-plugin\\dist\\loader.js",
                "options": {
                  "publicPath": "../"
                }
              },
              {
                "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": "stylus-loader",
                "options": {
                  "sourceMap": false
                }
              }
            ]
          }
        ]
      },
      {
        "test": {},
        "exclude": [
          null
        ],
        "use": [
          {
            "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\thread-loader\\dist\\cjs.js"
          },
          {
            "loader": "D:\\WebstormWorkStations\\hello-package\\node_modules\\babel-loader\\lib\\index.js",
            "options": {
              "cacheCompression": false,
              "cacheDirectory": "D:\\WebstormWorkStations\\hello-package\\node_modules\\.cache\\babel-loader",
              "cacheIdentifier": "47eee831"
            }
          }
        ]
      }
    ]
  },
  "optimization": {
    "realContentHash": false,
    "splitChunks": {
      "cacheGroups": {
        "defaultVendors": {
          "name": "chunk-vendors",
          "test": {},
          "priority": -10,
          "chunks": "initial"
        },
        "common": {
          "name": "chunk-common",
          "minChunks": 2,
          "priority": -20,
          "chunks": "initial",
          "reuseExistingChunk": true
        }
      }
    },
    "minimizer": [
      {
        "options": {
          "test": {},
          "extractComments": false,
          "parallel": true,
          "minimizer": {
            "options": {
              "compress": {
                "arrows": false,
                "collapse_vars": false,
                "comparisons": false,
                "computed_props": false,
                "hoist_funs": false,
                "hoist_props": false,
                "hoist_vars": false,
                "inline": false,
                "loops": false,
                "negate_iife": false,
                "properties": false,
                "reduce_funcs": false,
                "reduce_vars": false,
                "switches": false,
                "toplevel": false,
                "typeofs": false,
                "booleans": true,
                "if_return": true,
                "sequences": true,
                "unused": true,
                "conditionals": true,
                "dead_code": true,
                "evaluate": true
              },
              "mangle": {
                "safari10": true
              }
            }
          }
        }
      },
      {
        "options": {
          "test": {},
          "parallel": true,
          "minimizer": {
            "options": {
              "preset": [
                "default",
                {
                  "mergeLonghand": false,
                  "cssDeclarationSorter": false
                }
              ]
            }
          }
        }
      }
    ]
  },
  "plugins": [
    {},
    {
      "definitions": {
        "process.env": {
          "NODE_ENV": "\"production\"",
          "BASE_URL": "\"\""
        }
      }
    },
    {
      "options": {},
      "logger": {},
      "pathCache": {},
      "fsOperations": 0,
      "primed": false
    },
    {
      "compilationSuccessInfo": {},
      "shouldClearConsole": true,
      "formatters": [
        null,
        null,
        null,
        null
      ],
      "transformers": [
        null,
        null,
        null,
        null
      ],
      "previousEndTimes": {}
    },
    {
      "_sortedModulesCache": {},
      "options": {
        "filename": "css/[name].[contenthash:8].css",
        "ignoreOrder": false,
        "runtime": true,
        "chunkFilename": "css/[name].[contenthash:8].css"
      },
      "runtimeOptions": {
        "linkType": "text/css"
      }
    },
    {
      "userOptions": {
        "title": "hello-package",
        "scriptLoading": "defer",
        "template": "D:\\WebstormWorkStations\\hello-package\\public\\index.html"
      },
      "version": 5,
      "options": {
        "template": "D:\\WebstormWorkStations\\hello-package\\public\\index.html",
        "templateContent": false,
        "filename": "index.html",
        "publicPath": "auto",
        "hash": false,
        "inject": "head",
        "scriptLoading": "defer",
        "compile": true,
        "favicon": false,
        "minify": "auto",
        "cache": true,
        "showErrors": true,
        "chunks": "all",
        "excludeChunks": [],
        "chunksSortMode": "auto",
        "meta": {},
        "base": false,
        "title": "hello-package",
        "xhtml": false
      }
    },
    {
      "patterns": [
        {
          "from": "D:\\WebstormWorkStations\\hello-package\\public",
          "to": "D:\\WebstormWorkStations\\hello-package\\dist",
          "toType": "dir",
          "noErrorOnMissing": true,
          "globOptions": {
            "ignore": [
              "**/.DS_Store",
              "D:/WebstormWorkStations/hello-package/public/index.html"
            ]
          },
          "info": {
            "minimized": true
          }
        }
      ],
      "options": {}
    }
  ],
  "entry": {
    "app": [
      "./src/main.js"
    ]
  }
}

我们这里 只是从最终的结果来查看差异, 具体的细节 请参见各个 vue-plugin 的具体的实现

devtool 的默认配置, output 的文件模板存在一些差异

这也就是为什么我们在 npm run serve 的调试中, 看到的各个文件直接是 app.js, src_HelloWorld_vue.js 等等

css 的加载的 loader 有一些差异, npm run serve 是使用 vue-style-loader

npm run build直接使用 mini-css-extract-plugins 最小化目标 css

这里的每一个 test 是表示对于一类模块的加载方式, 只是这里的 test 没有加载出来, 可以理解为这个 test 是一个正则, 总共有十几类, 比如对于 *.vue 文件这样处理方式, *.css 另外的处理方式, 细节 我们不用关心

optimization 里面 npm run build 多一个 minimizer 的流程

npm run serve 这边多一些 dev 模式下面的一些配置

关于 plugin 的差异, 这部分的差异也可以在 各个 vue 插件中查找

如下是 npm run serve 的 plugin 列表

如下是 npm run build 的 plugin 列表

比如之前曾经提到过的 CopyPlugin 的注册是在 app.js 中注册的

这个也曾经在 vue 项目默认暴露出去的 public 文件夹 和 CopyWebpackPlugin中提到

webpack 的其他上下文导致的差异

注意 这部分代码是在 webpack 里面, 不是在 vue-cli 中

比如, 我就听疑惑 npm run build 和 npm run serve 在哪里配置的一个最小化代码, 一个没有最小化代码? 这个问题 我找了很久, 最后终于找到了

在 webpack/lib/config.defaults.applyOptimizationDefaults 中, 一系列变量是 根据 isProduction 进行初始化的, 这就是为什么 npm run build 的流程中有 minimize 这一项

npm run serve 使用的内存文件系统, 而 npm run build 打包到磁盘的?

这个流程是由 npm run serve 这边的启动 devServer 的过程触发的

而 npm run build 这边和 devServer 没有关系, 因此 fs 是默认的 磁盘文件系统

具体的配置 outputFileSystem 到 context, compiler 的地方如下

然后可以看到, 这个 outputFileSystem 还是可以自己手动配置的, 扩展性相当强

npm run serve 如何将编译的结果写出到磁盘

其实偶尔也有 npm run servce 的时候, 查看一下具体文件的需求

免得 需要一个调试环境才能够运行时查看 memfs 的文件系统的具体的文件信息

这时候可以通过 devServer 下面的 devMiddleware 的配置进行配置, 增加了一个 writeToDisk 的选项, 这样的话 devServer 这边会将编译的结果, 也写出到内存文件系统, 然后也会写一份数据到磁盘, 服务本身的使用 还是使用 内存文件系统的数据

这里是通过 webpackDevMiddleware 这里进行关联的

这是一份编译完成之后的结果如下

另外可以通过 options.outputFileSystem 进行配置, 注意看下面 outputFileSystem 部分的配置

最终写出的文件信息如下

writeToDisk 参数的文档

outputFileSystem 参数的文档

相关推荐
昨天;明天。今天。2 分钟前
案例-任务清单
前端·javascript·css
zqx_71 小时前
随记 前端框架React的初步认识
前端·react.js·前端框架
惜.己1 小时前
javaScript基础(8个案例+代码+效果图)
开发语言·前端·javascript·vscode·css3·html5
什么鬼昵称2 小时前
Pikachu-csrf-CSRF(get)
前端·csrf
长天一色2 小时前
【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)
服务器·开发语言·前端·javascript·性能优化·ecmascript
NiNg_1_2342 小时前
npm、yarn、pnpm之间的区别
前端·npm·node.js
秋殇与星河3 小时前
CSS总结
前端·css
BigYe程普3 小时前
我开发了一个出海全栈SaaS工具,还写了一套全栈开发教程
开发语言·前端·chrome·chatgpt·reactjs·个人开发
余生H3 小时前
前端的全栈混合之路Meteor篇:关于前后端分离及与各框架的对比
前端·javascript·node.js·全栈
程序员-珍3 小时前
使用openapi生成前端请求文件报错 ‘Token “Integer“ does not exist.‘
java·前端·spring boot·后端·restful·个人开发