Vue基础技术 webpack-dev-server的配置和使用_loglevel webpack-dev-server(1)

本文介绍了在Vue开发中如何配置和使用webpack-dev-server,强调了在webpack.config.js中设置target: 'web'以适应前端项目。通过cross-env设置环境变量,并在npm script中区分开发和生产环境。利用html-webpack-plugin生成HTML并引入资源,以及webpack.DefinePlugin定义环境变量,实现不同环境的代码区分打包,确保开发环境的友好性和生产环境的优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们使用同一份webpack配置文件,webpack-dev-server可以给我们带来不同的效果,它是专门用在开发环境的,当然我们也需要去修改一些webpack的配置,来专门适应我们的webpack-dev-server的开发模式,那么这里面我们怎么去做呢?

  1. 首先在webpack.config.js文件中的配置中添加target配置,设置target: ‘web’ 因为我们开发的是前端的项目,我们跑在浏览器里面的,所以我们webpack的编译目标是web平台

因为我们的这份配置是既要用在正式环境又要使用在开发环境,因此需要根据不同的环境去判断使用不同的配置信息,那么我们如何去判断呢?我们可以根据在跑npm script的时候给它设置一个环境变量来标识我们当前是开发环境还是正式环境,那么这个变量我们如何设置呢?我们可以借助一个webpack包cross-env这个包,为什么要使用这个包呢?因为不同平台上我们设置环境变量的方式是不一样的,我们不想为不同的平台编写不同的命令,所以我们借助使用这个包来处理不同平台的差异。

1.1 安装cross-env

➜  vue-demo npm install cross-env
npm WARN vue-demo@1.0.0 No repository field.

+ cross-env@5.2.0
added 3 packages from 2 contributors and audited 5539 packages in 4.487s
found 5 vulnerabilities (2 low, 1 moderate, 2 high)
  run `npm audit fix` to fix them, or `npm audit` for details
➜  vue-demo

1.2 修改npm script脚本,为不同的指令指定不同的环境变量

1.3 在webpack.config.js文件中读取npm script脚本命令携带的环境变量,脚本命令中设置的环境变量都会存在process.env这个对象里面,因此我们可以通过这个对象拿到我们设置的所有环境变量,然后进行判断来处理不同环境下的配置信息

const path = require('path')

const isDev = process.env.NODE_ENV === 'development' 

const config = {
    target: 'web',
    entry: path.join(__dirname, 'src/index.js'),
    output: {
        filename: 'bundle.js',
        path: path.join(__dirname, 'dist')
    },
    module: {
        rules: [
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            },
            {
                test: /\.css$/,
                use: [
                    'style-loader',
                    'css-loader'
                ]
            },
            {
                test: /\.styl$/,
                use: [
                    'style-loader',
                    'css-loader',
                    'stylus-loader'
                ]
            },
            {
                test: /\.(gif|jpg|jpeg|png|svg)$/,
                use: [
                    {
                        loader: 'url-loader',
                        options: {
                            limit: 1024,
                            name: '[name]-image.[ext]'
                        }
                    }
                ]
            }
        ]
    }
}

if (isDev) {
    config.devServer = {
        port: 9999,
        host: '0.0.0.0', // 设置值:0.0.0.0的好处,可以通过localhost访问,也可以通过127.0.0.1访问,还可以通过本机的ip进行访问
        overlay: {
            errors: true // 如果在webpack编译的过程中有任何的错误直接输出到页面上
        }
    }
}

module.exports = config

1.4 借助插件html-webpack-plugin来生成html文件并包含编译打包后的js等资源

1.4.1 安装插件包

➜  vue-demo npm install html-webpack-plugin@2.30.1
npm WARN vue-demo@1.0.0 No repository field.

+ html-webpack-plugin@2.30.1
added 31 packages from 20 contributors and audited 5598 packages in 6.359s
found 5 vulnerabilities (2 low, 1 moderate, 2 high)
  run `npm audit fix` to fix them, or `npm audit` for details
➜  vue-demo

1.4.2 配置插件

1.5 我们使用Vue、React这些框架的时候,我们一定要去使用一个webpack的plugin,这个plugin叫webpack.DefinePlugin,这个插件使用来做什么的呢?它是给我们的webpack在编译的过程当中以及在我们的页面上和我们自己编写的js代码的时候,如果想要去判断当前项目的环境,我们都可以通过调用process.env.NODE_ENV来获取环境信息进行逻辑判断,也就是说在这里面定义的变量信息在我们编写的代码中是可以引用到的。提醒一点就是现在Vue及React这些框架的代码,它们会根据不同的环境去进行区分打包,Vue的dist目录里面有非常多的不同版本的Vue的源代码,然后在开发环境它是一个比较大的版本,它里面会包含很多错误信息的提示以及很多的功能,而这些功能在正式环境下是没必要去使用的,因为一方面它会加大文件的大小,另外一方面它会让代码的运行效率降低很多,所以我们在开发环境就使用development这时好处有很多,比如Vue会给我们很多开发错误的提醒,但是在正式环境我们不希望这些代码去使用,所以我们要使用这个变量去进行环境的区分,因为webpack再去打包的过程中也会根据这个变量去区分源代码的版本去打包进去。需要注意procee.env.NODE_ENV的值需要带双引号,否则就是procee.env.NODE_ENV = development 而不是 procee.env.NODE_ENV = “development” 就会出错。

1.6 执行启动webpack-dev-server的指令

➜  vue-demo npm run dev



#### Vue 编码基础

2.1.1. 组件规范  

2.1.2. 模板中使用简单的表达式  

2.1.3 指令都使用缩写形式  

2.1.4 标签顺序保持一致  

2.1.5 必须为 v-for 设置键值 key  

2.1.6 v-show 与 v-if 选择  

2.1.7 script 标签内部结构顺序  

2.1.8 Vue Router 规范



#### Vue 项目目录规范

2.2.1 基础  

2.2.2 使用 Vue-cli 脚手架  

2.2.3 目录说明  

2.2.4注释说明  

2.2.5 其他

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.youkuaiyun.com/topics/618166371)**

![](https://img-blog.csdnimg.cn/img_convert/b4ee1921321dddc29bf532ba888c89e9.png)
pm run dev > vue-admin-template@4.4.0 dev > vue-cli-service serve INFO Starting development server... ERROR Error: Cannot find module 'default-gateway' Require stack: - E:\template\vue-admin-template\node_modules\internal-ip\index.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\node_modules\webpack-dev-server\lib\utils\createDomain.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\node_modules\webpack-dev-server\lib\utils\addEntries.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\node_modules\webpack-dev-server\lib\utils\updateCompiler.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\node_modules\webpack-dev-server\lib\Server.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\lib\commands\serve.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\lib\Service.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\bin\vue-cli-service.js Error: Cannot find module 'default-gateway' Require stack: - E:\template\vue-admin-template\node_modules\internal-ip\index.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\node_modules\webpack-dev-server\lib\utils\createDomain.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\node_modules\webpack-dev-server\lib\utils\addEntries.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\node_modules\webpack-dev-server\lib\utils\updateCompiler.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\node_modules\webpack-dev-server\lib\Server.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\lib\commands\serve.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\lib\Service.js - E:\template\vue-admin-template\node_modules\@vue\cli-service\bin\vue-cli-service.js at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15) at Module._load (node:internal/modules/cjs/loader:922:27) at Module.require (node:internal/modules/cjs/loader:
03-28
### Vue CLI Service Webpack Dev Server Default Gateway Missing Module Error Solution 当遇到 `default-gateway` 模块缺失导致的 Vue 项目启动失败问题时,可以按照以下方法排查并解决问题。 #### 1. 安装缺失模块 如果提示缺少 `default-gateway` 模块,则可以通过 npm 或 yarn 手动安装该依赖项。执行以下命令来安装此模块[^3]: ```bash npm install default-gateway --save-dev ``` 或者使用 Yarn: ```bash yarn add default-gateway --dev ``` #### 2. 更新 webpack webpack-dev-server 版本 有时版本不兼容也会引发此类错误。建议检查当前项目的 `webpack` `webpack-dev-server` 的版本是否匹配。如果不匹配,可能需要更新到最新稳定版或指定兼容版本[^4]: 对于 `webpack-dev-server`,可以尝试重新安装其最新版本: ```bash npm uninstall webpack-dev-server npm install webpack-dev-server@latest -D ``` 同时确认 `package.json` 中的 `webpack` `webpack-dev-server` 是否存在冲突。例如,某些旧版本的 `webpack` 可能无法与较新的 `webpack-dev-server` 配合工作。 #### 3. 清理缓存重置 Node Modules 清理本地缓存以及删除已有的 `node_modules` 文件夹可以帮助解决因依赖损坏引起的错误: 运行以下命令清除缓存: ```bash npm cache clean --force ``` 接着移除现有的依赖文件夹并重新安装: ```bash rm -rf node_modules package-lock.json npm install ``` #### 4. 修改 logLevel 设置 在 `webpack.config.js` 文件中的 `devServer` 部分调整日志级别设置可能会帮助定位更具体的错误原因。例如将 `logLevel` 设定为 `"debug"` 来获取更多调
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值