【webpack执行npm run dev后dist文件被清空】

webpack执行npm run dev后dist文件被清空

原因

dist文件被清空是因为使用了clean-webpack-plugin插件去实现每次npm run build清空dist文件夹中过期的文件,在我们执行npm run build时,发现存在clean-webpack-plugin插件,webpack就会去清空dist中过期的文件,同样的,当我们执行npm run dev时,同样会去执行plugins中的插件,但是npm run dev又不会生成新的文件,所以就造成了dist被清空的现象。

解决思路

执行npm run build时存在并使用clean-webpack-plugin插件,执行npm run dev时删除clean-webpack-plugin插件

怎么判断执行的哪个命令?

通过设置全局环境变量判断执行时机

怎么设置全局环境变量?

通过cross-env设置

使用方法:

//安装cross-env
npm install --save-dev cross-env 
//定义全局变量,可直接在执行命令时定义
"scripts": {
    "dev": "cross-env NODE_ENV=dev webpack-dev-server"
 }
//表明在执行npm run dev时定义NODE_ENV变量,变量值为dev,执行其他命令则没有声明
//之后在webpack配置文件中获取变量
const dev = process.env.NODE_ENV
//接着就是根据dev的值动态设置plugins的属性值
plugins:[
    new MiniCssExtractPlugin()
].contat(dev === 'dev'?[]:[new CleanWebpackPlugin()])

提问

为什么不直接

plugins:[
    new MiniCssExtractPlugin(),process.env.NODE_ENV === 'dev'?'':new CleanWebpackPlugin()
]
//会报错,因为plugins只支持对象和方法类型,该方式语法本身没问题,但是会给plugins的数组设置一个''元素
//plugins不支持元素为'',所以会报错

希望对您有帮助!!!

### Vue 项目中 `npm run dev` 的文件加载和执行顺序 当在 Vue CLI 创建的项目中运行 `npm run dev` 命令时,一系列复杂的操作会在后台发生以启动开发服务器。以下是详细的文件加载和执行流程: #### 配置解析 首先读取项目的配置文件,包括但不限于 `.eslintrc.js`, `babel.config.js`, 或者位于根目录下的 `vue.config.js` 文件[^1]。 #### Webpack 构建过程初始化 Webpack 是 Vue CLI 默认使用的模块打包工具,在此过程中会: - 加载 webpack 配置; - 注册各种插件和服务端中间件; - 设置热更新机制以便于开发者可以即时看到更改效果; #### 启动服务 通过调用内部脚本完成实际的服务启动工作,这一步骤涉及到了 Node.js 环境下 Express 框架的应用实例创建以及监听指定端口等待请求到来[^2]。 #### 客户端编译与资源注入 对于客户端部分而言,则是基于上述已经准备好的环境来进行 JavaScript, CSS 及 HTML 资源的实时编译,并将其注入到页面模板当中去。具体来说就是将入口 JS 文件(通常是 src/main.js)作为起点来分析依赖关系图谱并最终产出可被浏览器识别的内容[^3]。 ```javascript // main.js 示例代码片段 import { createApp } from 'vue' import App from './App.vue' createApp(App).mount('#app') ``` 在此之后,随着每次保存修改后的源码文件webpack-dev-server 就能感知变化并通过 HMR(Hot Module Replacement) 技术实现局部刷新而非整个页面重载,从而极大地提高了开发效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值