Webpack 常用命令总结以及常用打包压缩方法

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

常用命令如下:

npm install webpack -g   // 全局安装webpack
npm init -y              //初始化默认的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文件中
=======================

 

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 (名字就是这样,规定,不能改),内容如下:

module.exports = {
//入口文件位置
entry:__dirname '/app/main.js',

//出口
output:{
//路径
path:__dirname,
filename:'webpack.js'
}

}

这里的 __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中做出相应的配置:

module.exports = {
devtool: 'source-map',
entry: __dirname   "/app/main.js",
output: {
path: __dirname,
filename: 'bundle.js'
},
module: {
},
devServer: {
contentBase: "./",//本地服务器加载index.html页面所在的目录,这里写的是根目录
historyApiFallback: true,//不跳转
inline: true//实时刷新,
}
}

 


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

 

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

 



接着,在命令行运行


$ npm run server

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

 

devServer:{
port:4040 //自己配置端口为4040

}

 


下面是一个服务器跑起来后的演示结果,我不断的修改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关键字下进行配置:

  

module.exports = {
devtool: 'source-map',
entry: __dirname   "/app/main.js",
output: {
path: __dirname,
filename: 'bundle.js'
},
devtool: 'eval-source-map',
devServer: {
contentBase: "./public",//本地服务器所加载的页面所在的目录

historyApiFallback: true,//不跳转

inline: true//实时刷新

},
module: {
rules: [
{
test: /\.js$/, //正则匹配,必须

use: { //使用到的loader

loader: "babel-loader", //loader名

options: { //选项

presets: [ //预先配置
"env"
]
}
},
exclude: /node_modules/ //不包含的目录或文件

}
]
}
};

 

5.3 CSS文件处理


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

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

$ npm install --save-dev style-loader css-loader
1
module: {
rules: [
{.......},
{
test: /\.css$/,
use: [
{
loader: "style-loader"
}, {
loader: "css-loader"
}
也可以简写:
{
test:/\.css$/.
use:[{
loader:"style!css" //这里的执行顺序是从右往左,css应该在style之前执行

}]
}

 


根目录下新建 ./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('版权所有,翻版必究')
],


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS3 Filter详解(改变模糊度 亮度 透明度等方法)

文章目录 1.模糊2.灰度3.亮度4.对比度5.饱和度6.色相旋转7.反色8.阴影9.透明度10.褐色CSS3 Filter&#xff08;滤镜&#xff09;属性提供了提供模糊和改变元素颜色的功能。CSS3 Fitler 常用于调整图像的渲染、背景或边框显示效果。 -webkit-filter是css3的一个属性&#xff0c;…

laravel中使用offsetSet

首先不用offsetSet方法&#xff0c;使用laravel的硬添加属性如下&#xff1a; 下边使用offsetSet 转载于:https://www.cnblogs.com/qaing123/p/9672241.html

转3d视图快捷键_最全Solidworks快捷键,值得收藏!

SOLIDWORKS软件提供了很多实用的快捷键&#xff0c;如果我们熟练掌握这些快捷键无疑可以减轻工作强度和提高工作效率。当然我们也可以点击【工具】-【自定义】-【键盘】&#xff0c;自己定义一些快捷键。本文为大家整理一些常用的快捷键&#xff0c;多使用快捷键可以帮助我们节…

构建前端自动化工作流环境

目标&#xff1a;建一个自动化工作流环境 自动编译 自动合并 自动刷新 自动部署 工作流&#xff1a; 1 全局安装webpack 执行命令&#xff1a; npm install webpack webpack-cli -g 其中webpack-cil 是命令接口工具 2 初始化当前项目&#xff1a;npm init 然后一路回车…

大型布线:Java云应用程序缺少的技术

您是否曾经想过&#xff0c;为什么大多数Java框架中的依赖项注入仅用于本地进程内服务而不是分布式服务&#xff1f; 我最近在2013年EMC世界大会上遇到了Paul Maritz的主题演讲 &#xff08;跳至第32分钟&#xff09;&#xff0c;这使我在云平台的背景下思考了这个问题。 主题…

java cpu过高排查_涨薪秘籍:JAVA项目排查cpu负载过高

背景我负责的其中一个项目在空负载的情况下&#xff0c;CPU占用率依然保持着100%左右&#xff0c;线上、测试、开发的服务都一样&#xff1b;是什么导致的呢&#xff1f;在开发环境我查看了请求流量&#xff0c;这个流量可以忽略但CPU占用率一直在60%-100%之间浮动。分析问题流…

巧用css的border属性完成对图片编辑功能的性能优化

一、需求场景&#xff1a; 最近闲来无事&#xff0c;boss提出了一个要求&#xff0c;研究相关代码并完成一个关于编辑图片功能的性能优化&#xff0c;该功能的主要界面展示如下&#xff1a; 通过了几分钟的短暂试用&#xff0c;发现就是一个简单的裁剪并保存用户选择并上传的图…

求数的绝对值一定是正数_人教版初中数学七年级上册绝对值公开课优质课课件教案视频...

绝对值&#xff08;习题课&#xff09;导学案&#xff08;教师版&#xff09;【教学目标】1、能利用绝对值的性质求值。 2、通过复习绝对值&#xff0c;让学生对绝对值的理解更加深透。 3、通过复习&#xff0c;让学生掌握利用绝对值的代数和几何意义&#xff0c;并学会灵活运用…

使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全

企业应用程序的常见要求是在登录页面后面保护所有JSF页面。 有时&#xff0c;您甚至希望在应用程序内部具有保护区&#xff0c;只有拥有特定角色的用户才能访问这些保护区。 Java EE标准附带实现受某些安全性约束保护的Web应用程序所需的所有方法。 在此博客文章中&#xff0c;…

java 十六进制转十进制_JAVA知识-分析JAVA中的重点和难点

Java中有很多内容在开发项目的过程中并不常用&#xff0c;但是却是很重要的部分&#xff0c;为了避免忘记&#xff0c;今天重新温习了一遍Java中的重点和难点&#xff0c;借此机会记录一下方便以后查找。本文主要分为以下几个部分&#xff1a;1.进制的相互转换2.Java中位运算符…

java运算符知识整理

赋值运算符: int a 0;a 2;System.out.println("a0"""".."a);int b 0;b2;System.out.println("b0""b2"".."b);int c 0;c-2;System.out.println("c0""c-2"".."c);int d 1;d*2;S…

开放才能进步!Angular和Wijmo一起走过的日子

Angular 已成为广受欢迎的前端框架。去年9月份&#xff0c;期待已久的 Angular2 的正式版发布之后&#xff0c;Angular 又迎来了新一轮热潮。伴随着 Angular 这一路走来&#xff0c;Wijmo 一直都是第一个全面支持各种版本 Angular 的JS控件库&#xff0c;为 Angular 用户提供着…

windows 检查cuda安装_Windows云主机GPU驱动-CUDA安装使用

IE安全相关配置如果打开浏览器无法正常下载&#xff0c;则需要设置Internet Explorer增强的安全配置。设置如下&#xff1a;打开"服务器管理器";点击"本地服务器"&#xff1b;"IE增强的安全配置"&#xff1b;选择"关闭"&#xff1b; 之…

镜像镜像–使用反射在运行时查看JVM内部

开发人员&#xff1a;Takipi会告诉您何时新代码在生产中中断– 了解更多 我们都习惯于在我们的日常工作中直接或通过利用反射的框架来运用反射。 它是Java和Scala编程的主要方面&#xff0c;它使我们使用的库可以与我们的代码进行交互&#xff0c;而无需对其进行硬编码的知识。…

UnicodeMath数学公式编码_翻译(Unicode Nearly Plain - Text Encoding of Mathematics Version 3)

目录 完整目录1. 简介2. 编码简单数学表达式2.1 分数2.2 上标和下标2.3 空白&#xff08;空格&#xff09;字符使用3. 编码其他数学表达式3.1 分隔符强烈推荐本文简明版UnicodeMath编码教程 本文为UnicodeMath官方文档的翻译&#xff0c;原文看这。翻译如有不准还请谅解&#x…

antd 表格树如何展开_如何分析工作,找出规律,使用excel大幅度提高工作效率...

在职场中&#xff0c;掌握一定的excel知识&#xff0c;有时候可以极大的提高工作效率&#xff0c;减少加班次数。但是有的人可能不知道如何去做&#xff0c;下面我使用一个我前几天遇到的工作场景&#xff0c;一步一步的来给大家展示一下&#xff0c;如何使用excel提高工作效率…

Wijmo 更优美的jQuery UI部件集:复合图表(CompositeChart)

Wijmo的CompositeChart控件允许您使用一个Chart来分析和展现复杂的数据。相同的数据可以使用不同的可视化效果&#xff0c;不同的图表类型展现在一个图表内&#xff0c;使得用户可以从不同的角度&#xff0c;了解分析这组数据所表达的内容 。 本文将介绍如何使用Wijmo的Composi…

广联达2018模板算量步骤_广联达gtj2021实操案例,新增6大板块,快速提高算量效率...

对于从事造价行业的朋友来说&#xff0c;广联达软件是我们最经常用到的软件&#xff0c;不仅是因为广联达软件能够在提高工作效率&#xff0c;主要还是现在大数据下&#xff0c;广联达软件可以做到更精准、零失误广联达软件更新的也比较快&#xff0c;广联达GTJ2021版已经更新出…

WPF中元素拖拽的两个实例

WPF中元素拖拽的两个实例 原文:WPF中元素拖拽的两个实例今天结合之前做过的一些拖拽的例子来对这个方面进行一些总结&#xff0c;这里主要用两个例子来说明在WPF中如何使用拖拽进行操作&#xff0c;元素拖拽是一个常见的操作&#xff0c;第一个拖拽的例子是将ListBox中的子元素…

使用vert.x 2.0,RxJava和mongoDB创建simpe RESTful服务

中断了将近半年后发表了一篇新文章。 在本文中&#xff0c;我们将快速了解如何开始使用vert.x&#xff0c;更有趣的是&#xff0c;如何使用RxJava简化异步系统的编程。 我们将涵盖以下主题&#xff1a; 使用Maven创建一个空的vert.x项目 导入IntelliJ并创建一个简单的HTTP服务…