【webpack学习笔记】a04-建立开发环境
开发环境就是在开发过程中为了方便配置的环境,生产环境就是开发完成即将上线的情况。
好了,说了句废话,切入正题。
在开发时,打包后的文件压缩成一团,报错调试的时候傻眼了有木有?每次做出修改需要到浏览器查看效果的时候,都要手动npx webpack或者npm run build手动进行打包,耗时又费劲有木有?
用几个工具配置开发环境(不能用于生产环境)解决这个问题:
source map
source map 可以将编译后的代码映射回原始源代码
截个官方图:

具体用法:
webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: {
print: './src/print.js',
app: './src/index.js'
},
output:{
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
},
devtool: 'inline-source-map' //这里可配置各种选项
plugins:[
new HtmlWebpackPlugin({
title: 'Output Management',
filename: 'index.html',
template: './src/index.html',
inject: 'body'
})
]
};
webpack Watch && webpack-dev-server
webpack Watch(观察模式)可以解决每次修改后都要手动命令打包的问题,修改完后直接在浏览器中刷新就可以查看。
若刷新都懒得刷新,想一修改就看到结果怎么办?那就用webpack-dev-server.
webpack-dev-server提供了一个简单的 web 服务器,并且能够实时重新加载(live reloading)
webpack Watch(观察模式)直接在package.json文件中直接配置就好,配置完后直接在命令行运行npm run watch就可以观察模式,但webpack-dev-server还需要安装一下,我们看下例子:
npm install --save-dev webpack-dev-server
package.json

webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: {
print: './src/print.js',
app: './src/index.js'
},
devtool: 'inline-source-map',
devServer: {
//在这里告诉webpack-dev-server,将 dist 目录下的文件,作为可访问文件
contentBase:'./dist'
},
plugins:[
new HtmlWebpackPlugin({
title: 'Output Management',
filename: 'index.html',
template: './src/index.html'
})
],
output:{
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
}
};
配置好后,命令行运行npm start,就可以开启懒得刷新的懒人模式。
踩坑记录:
在学习官方文档,也就是webpack-dev-server这一部分的时候踩了一个坑,当时在配置好webpack.config.js和package.json后,运行命令npm start成功,没有报错,但是浏览器控制台却报404,页面中也显示"Cannot GET".
查看后发现,我的dist目录并没有打包出来。
这是我当时的配置文档:

问题就出现红框勾出来的地方,当时我配置了清理dist目录,只要注释掉就可以正常运行了。
还有就是这时候输出的文件名最好不要配置hash值,否则也会出现找不到文件的情况。
其实清理dist目录和配置文件hash值都是用于生产环境,在开发环境去掉了也不会有影响。
【webpack学习笔记】a04-建立开发环境的更多相关文章
- Hadoop学习笔记(4) ——搭建开发环境及编写Hello World
Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclip ...
- 【webpack学习笔记】a06-生产环境和开发环境配置
生产环境和开发环境的配置目标不一样,生产环境主要是让文件压缩得更小,更优化资源,改善加载时间. 而开发环境,主要是要开发更方便,更节省时间,比如调试比如自动刷新. 所以可以分开配置不同的开发环境,然后 ...
- Vue学习笔记(五)——配置开发环境及初建项目
前言 在上一篇中,我们通过初步的认识,简单了解 Vue 生命周期的八个阶段,以及可以应用在之后的开发中,针对不同的阶段的钩子采取不同的操作,更好的实现我们的业务代码,处理更加复杂的业务逻辑. 而在这一 ...
- C#学习笔记一:C#开发环境的设置
C#是.NET Framework的一部分,用于编写.NET应用程序. C#集成开发环境(IDE) 微软提供了以下C#编程开发工具: Visual Studio 2010 (VS) Visual C# ...
- NLP自然语言处理学习笔记三(集成开发环境)
前言: 我们在做自然语言学习的过程中使用Python进行编程.是用解析器的方式确实有些麻烦.在这里给大家推荐一款集成开发环境IDE可以很方便的对Python进行项目管理,代码自动提示,运行调试等. 简 ...
- Cocos2d-x学习笔记之Cocos2d-x开发环境搭建
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Cocos2d-x源码包下载地址: http://cocos2d-x.org/projects/cocos2d-x/ ...
- Egret学习笔记.2 (Egret开发环境)
配置Egret的开发环境是很简单的,去https://www.egret.com/products/engine.html下载 然后基本就是下一步下一步,安装好了就好了,装好了选择Wing组件,然后下 ...
- go语言学习笔记1 Go开发环境
什么是Go?Go是一门并发支持.垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡的一门编程语言. Go的主要特点有哪些?* 类型安全 和 内存安 ...
- 【EJB学习笔记】——EJB开发环境搭建(Eclipse集成JBoss)
之前一直用的EJB开发环境是他们搭建好的,直接拿来用,不过还是感觉老吃别人嚼好的不太好吃,所以自己动手来玩一玩. EJB开发依赖的最基本的环境:JDK.Eclipse.JBoss,这里简单介绍一下最基 ...
- 零基础Android学习笔记-01 安卓开发环境搭建
安卓开发环境搭建. 1.首先准备JDK,从官网找到JDK下载地址,原来做.NET不熟悉JAVA,干脆用最新的,下载了JDK 1.7的版本.原来装过1.5还要配置环境变量什么的.但1.7好像很给力,装好 ...
随机推荐
- 自动化测试系列:将常用的Android adb shell 命令行封装为C#静态函数
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 简介:adb命令是常用的Android命令行,自动化.代码调试.手工排查问题都会用的到,这里将常用的一些命令行封装 ...
- Codeforces Global Round 1 解题报告
A 我的方法是: #include<bits/stdc++.h> using namespace std; #define int long long typedef long long ...
- ProtoType原型和__Proto__原型链的详解
var arr = new Array(12,13,14,15,16,17,18); var arr2 = new Array(12,13); arr.sun=function(){ //用原型加Ar ...
- springmvc学习之jdk版本,tomcat版本,spring版本
使用的软件是myeclipse2018,jdk8,tomcat9.0,spring3.2.0 以上为我的软件及各种配置 1.建立了web工程,build path 使用的是默认的j2EE1.8(只有配 ...
- WindowsService(Windows服务)开发步骤
https://www.cnblogs.com/moretry/p/4149489.html
- curl 向远程服务器传输file文件
public function upload(){ //获取上传文件信息,文件名称以自己实际上传文件名称为准 $fileinfo = $_FILE['filename']; //请求参数,依据商户自己 ...
- 【php】单例模式和工厂模式
单例模式:防止重复实例化,避免大量的new操作,减少消耗系统和内存的资源,使得有且仅有一个实例对象 header("Content-type: text/html; charset=utf- ...
- Jenkins去GitLab拉取Java代码自动打包
jenkins的部署 一.部署git 1)先检查系统是否已经自带了git,如果有,就卸载 $ rpm -qa | grep git && rpm -e git --nodeps 2)开 ...
- 【python】 迭代器、生成器、列表推导式
一.可迭代对象.迭代器 1.可以被for循环的数据类型(可迭代对象): 字符串(str).列表(list).字典(dict).元祖(tuple).range() 2.迭代器 2.1 将可迭代对象==& ...
- Java基础知识盘点(三)- 线程篇
创建线程的方式及实现 一.继承Thread类创建线程类 1.定义Thread的子类,并重写run方法,因为该方法的方法体就是代表了线程要完成的任务,因此run方法又叫做执行体. 2.创建Thread子 ...