前言:Webpack是一款基于node的前端打包工具,它可以将很多静态文件打包起来,自动处理依赖关系后,生成一个.js文件,然后让html来引用,不仅可以做到按需加载,而且可以减少HTTP请求,节约带宽。

常用命令如下:

npm install webpack -g   // 全局安装webpack
npm init               //初始化默认的package.json文件
npm install webpack --save-dev   //下载webpack插件到node_modules 并在package.json文件中加上webpack的配置内容

webpack    //对项目进行打包

webpack   --watch   // 自动监控文件的改变
webpack  --display-modules  //打包时显示隐藏的模块
webpack  --display-chunks   //打包时显示chunks
webpack  --display-error-details  //显示详细错误信息  
 
npm install {whatever}-loader  --save-dev   //安装loader并将该loader配置到package.json文件中
 
=======================

入口 entry

出口 output

loader 加载器

插件 plugins

====================

安装完乘后执行webpack报错,原因没有找到默认入口文件:

需要在当前文件地址下创建置默认入口文件路径 ,创建后就不会报错了,或者也可以自定义路径.

  1. ./src/index.js

用shell语句修改开发环境:

webpack --mode=development

或者也可以按照后文方式配置到webpack.config.js 中

1.配置与安装

在node已经安装完成的前提下,全局安装webpack

$ cd d:

$ mkdir test && cd test //创建test ,并进入

$ npm install -g webpack //等待100s,安装完成,也可以使用淘宝镜像

$ npm init //初始化package.json文件

$ npm install --save-dev webpack //添加依赖 ,在package.json中声明依赖,等待安装完成

2.基本操作$webpack main.js webpack.js

当前目录下创建如下工作结构:

/---------test

----app
----main.js
----index.js

----index.html

项目目录下,app文件夹含有两个js文件,修改如下:

//main.js ,这是Webpack主要的入口文件

require('./index.js');

//index.js ,这是被主文件引用的文件

document.write('Hello,world!');

//index.html ,供浏览器解读

<html>

...

<script src="./webpack.js"> // 引用同目录下的webpack.js

...

</html>

webpack.js是哪来的呢?就是通过webpack打包生成的js文件,接下来,

开始生成webpack.js文件:

$ webpack main.js webpack.js

可以看到已经打包成功了,此时查看IDE中的项目目录,根目录下已经多了一个webpack.js文件。然后用浏览器打开index.html,效果如下:

此时查看网页源代码:

3.进阶操作

(配置webpack.config.js或者配置package.json,后者依赖前者)每次在命令行敲目录调试,是很痛苦的,因此需要一次配置,多次使用的方法。

在根目录下新建文件: webpack.config.js (名字就是这样,规定,不能改),内容如下:

  1. var path = require('path');
  2. module.exports = {
  3. //手动入口文件位置
  4. entry:__dirname+'/X-admin/js/xadmin.js',
  5.  
  6. //出口
  7. output:{
  8. //路径
  9. path:__dirname,
  10. //或者换一种写法:path:path.resolve(__dirname,"dist")
  11. //注意:__dirname 就是根目录,然后是有两个下划线,打包到dist下;
  12. filename:'webpack.js'
  13. },
  14. mode:'development'
  15.  
  16. }

这里的 __dirname是一个node的全局变量,用于指向当前的工作目录,调皮的我console.log了一下这个变量:

确认无疑。

这样,我们的webpack.js写完以后,可以直接在命令行中敲:

$ webpack
1
可以发现,项目中也同样的会生成目标js文件,也就是webpack.js,这样非常方便,省事。

还有一种配置方法,将package.json文件中”scripts”里面添加键值对:

这样同样可以在项目目录生成目标js文件,直接在 命令行里敲

$ npm start //因为webpack是全局安装的,直接value给webpack,而不用跟路径
1
如果start被占用了/冲突了,也可以在scripts下面自定义一个键值对:

"zq":"webpack"

$ npm run zq //稍作修改cmd 命令

最后还是可以生成。

4.webpack服务器监听代码变动,自动刷新及source-map

4.1关于source-map,

也就是在webpack.config.js中配置 devtool (develpment tool)的值,例如我这样配置:

在webpack完成文件打包后,会自动生成一个与目标文件相同名的 .map文件,用来说明打包文件的每个地方对应的是哪些文件,简而言之,让你能知道源码是在哪里错的,帮你刨根问底,而不用开发者自己去Debug。

参考文章1:入门WEBPACK,看这篇文章就够了—-简书

参考文章2:Webpack中的sourcemap

4.2 webpack服务器

首先单独安装 server 包 :

$ npm install --save-dev webpack-dev-server
1
同样的,在webpack.config.js中做出相应的配置:

  1. module.exports = {
  2. devtool: 'source-map',
  3. entry: __dirname + "/app/main.js",
  4. output: {
  5. path: __dirname,
  6. filename: 'bundle.js'
  7. },
  8. module: {
  9.  
  10. },
  11.  
  12. devServer: {
  13. contentBase: "./",//本地服务器加载index.html页面所在的目录,这里写的是根目录
  14. historyApiFallback: true,//不跳转
  15. inline: true//实时刷新,
  16. }
  17.  
  18. }

配置好config后,还得配置一下package.json,在scirpts里面添加server:

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

接着,在命令行运行

$ npm run server

/*届时服务器会自动启动, 并且打开浏览器,默认端口为8080,也可以

  1. devServer:{
  2.  
  3. port:4040 //自己配置端口为4040
  4.  
  5. }

下面是一个服务器跑起来后的演示结果,我不断的修改work.js 中 document.write的值,从而服务器会自动检测并刷新页面:

5.非JS文件的操作(img,json,css……),猪脚:Loaders

5.1 基本概念

前面都在说js文件,官网说什么文件都可以当做模块打包,下面就来试试非js文件。

首先要明确的是,webpack只能识别js文件,如果要识别非js文件,就需要loader来解析这些文件。

loaders 需要单独安装,并且在webpack.config.js中的modules关键字下进行配置。

Webpck2以上已经支持对json的解析打包,不需要额外的loaders,可以在main.js中

var json = require('../package.json')//json在它的上级目录

document.write(json.scripts.server);

运行结果 :

可见,网页中,没有通过任何第三方loader,即可将json解析并打包成bundle.js。

5.2 Bable

Bable可以使得开发者使用最新的ECMAscript标准来书写代码,而不用管新标准是否被当前使用的浏览器完全支持。

还是需要单独安装Bable的包:

$ npm install --save-dev babel-core babel-loader babel-preset-env

安装完成后,在webpack.config.js下的module关键字下进行配置:

  

  1. module.exports = {
  2. devtool: 'source-map',
  3.  
  4. entry: __dirname + "/app/main.js",
  5.  
  6. output: {
  7.  
  8. path: __dirname,
  9.  
  10. filename: 'bundle.js'
  11.  
  12. },
  13.  
  14. devtool: 'eval-source-map',
  15.  
  16. devServer: {
  17.  
  18. contentBase: "./public",//本地服务器所加载的页面所在的目录
  19.  
  20. historyApiFallback: true,//不跳转
  21.  
  22. inline: true//实时刷新
  23.  
  24. },
  25.  
  26. module: {
  27.  
  28. rules: [
  29.  
  30. {
  31.  
  32. test: /\.js$/, //正则匹配,必须
  33.  
  34. use: { //使用到的loader
  35.  
  36. loader: "babel-loader", //loader名
  37.  
  38. options: { //选项
  39.  
  40. presets: [ //预先配置
  41.  
  42. "env"
  43.  
  44. ]
  45.  
  46. }
  47.  
  48. },
  49.  
  50. exclude: /node_modules/ //不包含的目录或文件
  51.  
  52. }
  53.  
  54. ]
  55.  
  56. }
  57.  
  58. };

5.3 CSS文件处理

webpack提供两个工具处理样式表,css-loader 和 style-loader,二者处理的任务不同,css-loader使你能够使用类似@import 和 url(…)的方法实现 require()的功能,style-loader将所有的计算后的样式加入页面中,二者组合在一起使你能够把样式表嵌入webpack打包后的JS文件中。

同样先安装两个包 style-loader和css-loader

  1. $ npm install --save-dev style-loader css-loader
  2. 1
  3. module: {
  4. rules: [
  5. {.......},
  6. {
  7. test: /\.css$/,
  8. use: [
  9. {
  10. loader: "style-loader"
  11. }, {
  12. loader: "css-loader"
  13. }
  14. 也可以简写:
  15. {
  16. test:/\.css$/.
  17.  
  18. use:[{
  19.  
  20. loader:"style!css" //这里的执行顺序是从右往左,css应该在style之前执行
  21.  
  22. }]
  23. }

根目录下新建 ./src/index.css,写一个body的背景为green,然后在入口文件main.js中,require(‘../src/index.css’),接着通过命令行$ webpack
此时查看index.html,发现页面背景已经变成绿色

6.插件plugins

先安装插件的包:

cnpm install html-webpack-plugin
1
在webpack.config.js中 头部,引入依赖:

let webpack = require('webpack');
1
然后在webpack.config.js中配置根键值对:

plugins: [
new webpack.BannerPlugin('版权所有,翻版必究')
],

 

Webpack 常用命令总结以及常用打包压缩方法的更多相关文章

  1. Linux就该这么学--命令集合6(打包压缩文件、文件查询搜索命令)

    1.tar命令用于对文件打包压缩或解压:(tar [选项] [文件]) 打包并压缩文件:tar -czvf 压缩包名.tar.gz 文件名 解压并展开压缩包:tar -xzvf 压缩包名.tar.gz ...

  2. Vue项目模板--和--webpack自动化构建工具的---项目打包压缩使用

    [首先安装node.js]: 1. 从node.js官网下载并安装node,安装过程很简单. 2. npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 npm -v2.3.0 #升 ...

  3. 54. Android中adb常用命令及应用常用目录

    本文主要介绍adb常用命令及应用常用目录.1.adb常用命令adb devices列出所有连接的android设备.以下命令都是对单个devices而言,如果存在多个devices的话,下面的命令都需 ...

  4. mac 终端 常用命令,MacOS 常用终端命令大全,mac 在当前目录打开终端

    MacOS 常用终端命令大全:目录操作dircmp——比较两个目录的内容——dircmp dir1 dir2文件操作pg分页格式化显示文件内容——pg filenameod——显示非文本文件的内容—— ...

  5. ADB常用命令(adb常用命令)

    基本用法 命令语法 adb 命令的基本语法如下: adb [-d|-e|-s <serialNumber>] <command> 如果只有一个设备/模拟器连接时,可以省略掉 [ ...

  6. Ubuntu常用命令及git常用命令

    1. CMakeLists.txt中指定OpenCV路径 set(OPENCV_DIR /***/***/opencv-2.4.9) 2. cmake工程编译安装 mkdir build cd bui ...

  7. [工作需求]linux常用命令以及vim常用命令

    一.             Linux 常用命令 mkdir dirname新建文件夹 cd ~ 进入自己的家目录 cd dirname 进入名字为dirname的目录: l 显示当前文件夹下的文件 ...

  8. mysql常用命令大全 mysql常用命令总结

    原文地址:http://www.jbxue.com/db/12472.html 本文介绍下,mysql中常用的一些命令,包括创建与修改数据库.数据库中的表,mysql的权限管理命令grant.revo ...

  9. mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库

    简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...

随机推荐

  1. MySQL字符集的设置

    Notice:文章基于ubuntu系统而写 1.关于MySQL字符集 MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式( ...

  2. centos7上mysql5.6版本主从复制

    做主从复制实验: 第一步:主服务器上操作 1.修改主服务器master: [root@localhost ~]# vim /etc/my.cnf server_id = 1  //[必须]服务器唯一I ...

  3. postgresql-tps

    tps TPS就是每秒事务数,但是事务是基于虚拟用户数的,假如1个虚拟用户在1秒内完成1笔事务,那么TPS明显就是1:如果 某笔业务响应时间是1ms,那么1个用户在1秒内能完成1000笔事务,TPS就 ...

  4. 【rocketMQ】1、搭建MQ服务器,生产一个订单与消费一个订单

    1. 先解压 2. maven编译安装.(注意虚拟机采用nat网络模式,需要联网) mvn -Prelease-all -DskipTests clean install -U 启动nameser节点 ...

  5. Python Web框架 tornado 异步原理

    Python Web框架 tornado 异步原理 参考:http://www.jb51.net/article/64747.htm 待整理

  6. 鼠标右键添加"在此处打开命令窗口"

    从windows7开始,提供了一个便于从当前文件夹打开cmd命令行窗口的快捷方式: 直接使用  Shift+鼠标右键==>“在此处打开命令行窗口” 有可能以后会遇到的问题,可参考如下.. htt ...

  7. Linux系统基础知识整理

    一.说明 本篇文章,我将结合自己的实践以及简介,来对linux系统做一个直观清晰的介绍,使得哪些刚接触Linux的小伙伴可以快速入门,也方便自己以后进行复习查阅. 二.基本知识整理 1.Linux文件 ...

  8. 三:理解Page类的运行机制(例:在render方法中生成静态文件)

    我这里只写几个常用的事件1.OnPreInit:此事件后将加载个性化信息和主题2.OnInit:初始化页面中服务器控件的默认值但控件的状态没有加载,没有创建控件树3.OnPreLoad:控件完成状态和 ...

  9. 前端组件化Polymer入门教程(2)——Hello world

    本节为体验篇,就是让你了解它有哪些功能,不做详细说明,后面再来讲细节. 自定义元素 组件页 <link rel="import" href="../polymer- ...

  10. Apache 源码安装

    8.20]# make[root@yahoo pcre-8.20]# make install 二.安装apache1.下载httpd-2.4.3.tar.gz,地址是:http://httpd.ap ...