飞道的博客

Vue.js 学习笔记十一:Webpack之webpack 配置 配置文件分离

333人阅读  评论(0)

目录

webpack 配置

配置文件分离


webpack 配置

配置文件分离

随着我们业务逻辑的增多,图片、字体、css、ES6 以及 CSS 预处理器和后处理器逐渐的加入到我们的项目中来,进而导致配置文件的增多,使得配置文件书写起来比较繁琐,更严重者,书写特定文件的位置会出现错误。由于项目中不同的生产环境和开发环境的配置,使得配置文件变得更加糟糕。

使用单个的配置文件会影响到任务的可重用性,随着项目需求的增长,我们必须要找到更有效地管理配置文件的方法。

配置文件的管理有一下几种方法。

  • 在每个环境的多个文件中维护配置,并通过 --config 参数将 webpack 指向每个文件,通过模块导入共享配置。

  • 将配置文件推送到库,然后引用库。

  • 将配置文件推送到工具。

  • 维护单个配置文件的所有配置并在那里进行分支并依赖 --env 参数。

这里学习配置文件分离的方法。

我们在根目录下创建 config 文件夹,并创建三个配置文件,分别是:

  • common.config.js 公共环境的配置文件

  • dev.config.js 开发环境下的配置文件

  • prod.config.js 生产环境下的配置文件

 

src/config/common.config.js


  
  1. const path = require( 'path')
  2. const {VueLoaderPlugin} = require( 'vue-loader')
  3. const webpack = require( 'webpack')
  4. const HtmlWebpackPlugin = require( 'html-webpack-plugin')
  5. module.exports = {
  6. entry: {
  7. index : './src/index.js'
  8. },
  9. output: {
  10. path: path.resolve(__dirname, './dist'),
  11. filename: '[name].js',
  12. },
  13. module: {
  14. rules: [
  15. {
  16. test: /\.css$/,
  17. use: [ 'style-loader', 'css-loader'],
  18. },
  19. {
  20. test: /\.vue$/,
  21. use : 'vue-loader'
  22. }
  23. ]
  24. },
  25. resolve: {
  26. alias: {
  27. 'vue$': 'vue/dist/vue.esm.js'
  28. }
  29. },
  30. plugins:[
  31. new VueLoaderPlugin(),
  32. new webpack.BannerPlugin( '最终版权归 stary 所有'),
  33. new HtmlWebpackPlugin({
  34. template: 'index.html'
  35. })
  36. ]
  37. }

src/config/dev.config.js


  
  1. module.exports = {
  2. mode : 'development',
  3. devServer: {
  4. contentBase: './dist',
  5. inline: true
  6. }
  7. }

src/config/prod.config.js


  
  1. const UglifyJsPlugin = require( 'uglifyjs-webpack-plugin')
  2. module.exports = {
  3. mode: 'production',
  4. plugins:[
  5. new UglifyJsPlugin()
  6. ]
  7. }

所以,在开发时配置文件就是 common.config.js + dev.config.js。生产时配置文件就是common.config.js+ prod.config.js

为了让两个文件合并在一起,必须装一个东西。

安装 webpack-merge

npm install webpack-merge --save-dev

修改 webpack.config.js 配置文件:


  
  1. const commonConfig = require( "./config/common.config")
  2. const devConfig = require( "./config/dev.config");
  3. const prodConfig = require( "./config/prod.config")
  4. const { merge } = require( "webpack-merge")
  5. module.exports = env => {
  6. if(env.dev) {
  7. return merge(commonConfig, devConfig)
  8. } else if(env.prod) {
  9. return merge(commonConfig, prodConfig)
  10. } else {
  11. throw new Error( 'No matching configuration was found!')
  12. }
  13. }

修改配置 package.json执行脚本:


  
  1. "scripts": {
  2. "test": "echo \"Error: no test specified\" && exit 1",
  3. "build": "webpack --env prod",
  4. "dev": "webpack serve --open --env dev"
  5. }

执行 npm run dev 就是开发环境运行, 执行 npm run build 就是生产环境打包。

 

 


转载:https://blog.csdn.net/qq_27875933/article/details/117289353
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场