1.创建文件夹"webpack-study"

2.使用webstrom打开文件夹所在位置。在根目录上创建一个文件,文件命名为“src”,在src文件下新建css、images、js文件夹,在src文件夹下新建index.html文件和main.js文件

3.现在我们需要完成一个隔行变色的需求,来熟悉webpack的使用过程。在index.html文件下添加6个li

123456

4.我准备使用jquery来完成隔行变色.首先初始化webpack,在终端输入

cnpm init -y

在根目录下会生成一个package.json的文件,里面是相应的配置信息

5.通过webpack来安装jquery。在终端输入

cnpm i jquery -S

jQuery安装成功信息

成功之后,根目录下会生成一个“node_modules”的文件夹

6.在“main.js”中通过import $ from 'jquery'来导入模块

导入模板

7.在index.html中引入main.js文件,写的效果在浏览器中并没有生效。import语法太高级,浏览器没办法识别。这个时候我们就必须通过webpack处理一下,打包出来一个文件。在终端中输入

webpack ./src/main.js -o ./dist/bundle.js

打包

文件夹中也生成出来dist文件夹和bundle.js文件

但是终端报了一个警告

警号内容

黄色部分的警告的意思是,没有设置模式,有开发模式和生产模式两种,接下来,找到package.json.添加上"dev"和"build"这两个信息以及他们的值.

"script":{          "test":"echo"Error:no test specified" && exit 1",            "dev":"webpack -- mode development",          "build": "webpack --mode production"} 

在根目录上新建“webpack-config.js”文件

问题得到解决

8.index.html引入bundle.js文件,浏览器效果显示正常。

通过这个小栗子我们能发现webpack能够解决js文件之间相互的依赖关系 ;还能够处理js的兼容问题,把高级的、浏览器不识别的语法转为低级的、浏览器能正常识别的语法。

9.修改main.js中li奇数行背景色,我们想在浏览器上看修改之后的效果,是否一直需要在终端中输入

webpack .srcmain.js -o .distbundle.js

我们能否直接输入“webpack”就能达到我们想要的效果呢?

10.在终端中输入"webpack"

终端提示信息

弹出提示是否安装“webpack-cli”,输入“no”之后,自己在终端

cnpm install webpack-cli -g

安装成功之后,在终端输入“webpack”依然弹出上面的提示。

11.在终端输入

cnpm install webpack -dcnpm install webpack-cli -d

然后在终端输入webpack成功。

12.在根目录下新建“webpack.config.js”配置文件,由于运行webpack命令的时候,webpack需要指定入口文件和输出文件的路径,所以,我们需要在`webpack.config.js`中配置这两个路径:

配置内容

使用“webpack-dev-server”这个工具,来实现自动打包编译的功能

1.终端运行

cnpm i webpack-dev-server -D

把这个工具安装到项目的本地开发依赖。

2.安装完毕后,这个工具的用法,和webpack命令的用法完全一样。

3.由于我们是在项目中安装的webpack-dev-server,所以无法把它当做脚本命令,在终端中直接运行。只有那些安装到全局-g的工具,才能运行。

4.在package.json中添加“dev”:"webpack-dev-server"

5.注意:webpack-dev-server这个工具,如果想要正常运行,要求本地项目中,必须安装webpack

6.webpack-dev-server帮我们打包生成的bundle.js文件,并没有存放在实际的物理磁盘上,而是直接托管到了电脑内存中(好处:由于需要实时打包编译,所以放在内存中速度会非常快)

修改index页面中script的src属性为``

7.把html也放在电脑内存中 “cnpm i html-webpack-plugin -D”安装到开发依赖

修改`webpack.config.js`配置文件如下:

// 导入处理路径的模块var path = require('path');// 导入自动生成HTMl文件的插件var htmlWebpackPlugin = require('html-webpack-plugin');module.exports = {entry: path.join(__dirname, 'src/js/main.js'), // 项目入口文件output: { // 配置输出选项path: path.join(__dirname, 'dist'), // 配置输出的路径filename: 'bundle.js' // 配置输出的文件名},plugins:[ // 添加plugins节点配置插件new htmlWebpackPlugin({template:path.join(__dirname, 'src/index.html'),//模板路径filename:'index.html'//自动生成的HTML文件的名称})]}

将index.html中script标签注释掉,因为`html-webpack-plugin`插件会自动把bundle.js注入到index.html页面中!

实现自动打开浏览器、热更新和配置浏览器的默认端口号

方式1:+ 修改`package.json`的script节点如下,其中:

"dev": "webpack-dev-server --hot --port 4321 --open"  //--open表示自动打开浏览器,//--port 4321  表示打开的端口号为4321,//--hot表示启用浏览器热更新

webpack默认只能打包处理JS类型的文件,无法处理其他非JS类型的文件;如果非要处理非JS类型的文件,我们需要手动安装一些合适第三方loader加载器

因为传统的link加载css样式会发起二次请求,所以我们需要在webpack中使用loader加载css样式

如果想要打包处理css文件,需要安装

cnpm i style-loader css-loader -D

修改`webpack.config.js`这个配置文件:

module: { // 用来配置第三方loader模块的  rules: [ // 文件的匹配规则    { test: /.css$/, use: ['style-loader', 'css-loader'] }//处理css文件的规则  ]}

3. 注意:`use`表示使用哪些模块来处理`test`所匹配到的文件;`use`中相关loader模块的调用顺序是从后向前调用的;

使用webpack打包less文件

1. 在终端运行

cnpm i less-loader less -D

2. 修改`webpack.config.js`这个配置文件:

`cnpm i sass-loader node-sass --save-dev`

使用webpack打包sass文件

1. 在终端运行

{ test: /.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }

2. 在`webpack.config.js`中添加处理sass文件的loader模块:

{ test: /.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }

使用webpack处理css中的路径

1. 在终端运行

cnpm i url-loader file-loader --save-dev

2. 在`webpack.config.js`中添加处理url路径的loader模块:

{ test: /.(png|jpg|gif)$/, use: 'url-loader' }

3. 可以通过`limit`指定进行base64编码的图片大小;只有小于指定字节(byte)的图片才会进行base64编码:limit的数值大于等于图片的字节,图片才会进行base64编码

{ test: /.(png|jpg|gif)$/, use: 'url-loader?limit=43960' },

安装时一直报错

错误信息

解决办法:

完美解决

默认webpack无法打包.vue文件,需要安装相关的loader

"cnpm i vue-loader vue-template-compiler -D"

在配置文件中新增loader配置项

{test:/.vue$/,use:'vue-loader'}

启动项目报错

报错信息

解决方法:Vue Loader v15 现在需要配合一个 webpack 插件才能正确使用,在webpack.config.js添加以下的代码,即可

webpack.config.jsconst VueLoaderPlugin = require(‘vue-loader/lib/plugin’)module.exports = {  plugins: [  new VueLoaderPlugin()]}

git 创建webpack项目_使用webpack手动创建一个完整项目的全过程相关推荐

  1. pycharm里怎么关闭一个项目_【周末分享】一个完整的项目复盘到底要怎么做?...

    点击"阅读原文",注册会员,海量活动方案免费拿 作者 | 杨阳(广告创意主笔) 来源 | 广告创意(ID:idea1408) 字数:3099 推荐阅读时长:5min 从计划到执行到 ...

  2. 如何使用graphpad做柱形图_系列文章 如何使用PaddleDetection做一个完整项目(三)...

    系列文章 如何使用PaddleDetection做一个完整项目(三) 该文章是PaddleDetection的完结篇,请参考之前两篇文章 https://zhuanlan.zhihu.com/p/10 ...

  3. 结合webpack配置_前端 Webpack 工程化的最佳实践

    作者 | 阿里文娱前端开发专家 芃苏责编 | 屠敏头图 | CSDN 下载自视觉中国 引言 ▐ 前端构建工具的演变 回想在2015-2016年的时候,开发者们开始渐渐把视线从大量使用Task Runn ...

  4. 2020.2idea怎么创建html模块_利用idea快速搭建一个项目

    一.前提准备:电脑安装好jdk1.8,安装好IDEA 二.步骤 1.点击创建一个新项目 2.选择 Spring initializr选项,这是一个非常方便的生成Springboot的工具,确认信息无误 ...

  5. spring创建web项目_使用Spring WS创建合同优先的Web服务

    spring创建web项目 1引言 本文介绍了如何使用来实现和测试SOAP Web服务 Spring Web Services项目 . 本示例将JAXB2用于(取消)编组. 为了开发服务,我将使用合同 ...

  6. python创建django项目_搭建Python-Django环境,创建第一个Django项目

    曾想学爬虫,没想到误入python web班,在美女老师shirely的指导下,搭建了好Django环境,试着开始做第一个web项目 一.Python环境安装 1.Python2.7的下载 从Pyth ...

  7. vs2019中如何创建qt项目_在VS2015中创建Qt项目【VS+Qt项目开发系列】(二)

    在VS2015中创建Qt项目[VS+Qt项目开发系列](二) 发布时间:2018-04-20 22:44, 浏览次数:1269 , 标签: VS Qt 在上一篇[VS+Qt项目开发](一)在VS201 ...

  8. django新建一个项目_如何使用Django创建项目

    django新建一个项目 Now that we know how to create virtual environments and use pip, we can begin building ...

  9. maven 创建java项目_手把手教你创建Java Maven依赖项目

    本教程介绍了如何通过MyEclipse Web项目,或者其他任何Maven项目来创建一个通用的Java/Maven项目.这些步骤包括基础的创建和使用Maven依赖.您将学习到: 创建一个Maven实用 ...

最新文章

  1. 香肠派对电脑版_《香肠派对》新春直播活动来袭
  2. wpsppt流程图联系效果_风险隐患排查的手段—HAZOP 与检查表的区别及应用效果
  3. Springboot定时任务原理及如何动态创建定时任务
  4. oracle 最小权限,oracle低权限下获取shell
  5. 数据库工作笔记016---SqlServer2016_日期处理_ntext和text区别_开启远程连接_查看系统COm组件_Browser服务无法启动_导出数据_字符串前加N
  6. python中bytearray函数_Python内置函数bytearray()
  7. Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)
  8. 小熊派鸿蒙开发版,小熊派IoT开发板系列教程合集
  9. 程序员春节回家相亲指南
  10. HBase Java API类介绍
  11. html自动登录网页,简单网页登陆代码html
  12. c语言对英文字母循环加密,加密英语
  13. uniapp:微信小程序地图功能
  14. 小学计算机无生试讲教案,小学英语无生试讲
  15. SF18 | MACD顶底背离+动态区间交易模型源码(技术贴)
  16. LED大屏实现“人屏”互动的方式有哪些?
  17. matlab检验相关性显著性检验,显著性检验matlab.ppt
  18. wordpressQQ登陆php代码_WordPress代码实现QQ账号互联授权登录注册功能 | 搁浅SEO
  19. CSS和CSS3选择器
  20. python函数运行加速

热门文章

  1. Java让数据库执行一条sql_java数据库编程——执行SQL 语句
  2. axure 图片切换图片的交互_Axure 交互案例:放大缩小图片
  3. Java 设计模式之工厂方法
  4. django解决NameError: name ‘_mysql‘ is not defined 或 mysqlclient 1.4.0 or newer is required报错
  5. Mac在命令行中打开Finder
  6. 离群点、异常点检测及Python实现(正态分布3∂,Z-score 异常值检测,基于MAD的Z-score 异常值检测,杠杆值点、DFFITS值、SR学生化残差、cook距离和covratio值)
  7. R语言快速学习第一部分(有其他语言基础)
  8. 无界面chrome + selenium爬虫
  9. 看图识物_有声绘本故事《晚安,建筑工地》看图识物,嘘,晚安
  10. 如何分析一个复杂系统