(6/24) 插件配置:轻松配置JS文件压缩
实际开发中,在项目上线之前,我们编写的js代码是需要进行压缩的,我们可以采取压缩软件或者在线进行压缩,这不是我们的重点,在webpack中实现JS代码的压缩才是本节的核心。
通过webpack中可实现的JS代码压缩是通过插件的方式实现的----uglifyjs-webpack-plugin(JS压缩插件,简称uglify)。
注意:虽然uglifyjs是插件,但是webpack版本里默认已经集成,不需要再次安装。
1.使用uglify插件实现JS代码压缩

1.1 插件引入
首先需要在webpack.config.js中引入uglifyjs-webpack-plugin插件
const uglify = require('uglifyjs-webpack-plugin');
1.2 配置
引入后在plugins配置里new一个 uglify对象就可以了,代码如下:
plugins:[
new uglify()
],
1.3 打包
在webstorm的终端中使用webpack进行打包,得到压缩后的JS代码。
webpack
压缩后的代码格式:

这样就实现了JS代码的压缩。
注意:当我们想在终端中输入了npm run server进行预览,但发现终端中报错了:
要弄明白这个问题,我们先要弄清楚什么是开发环境,什么是生产环境。开发环境中是基本不会对js进行压缩的,由于在开发预览时我们需要明确的报错行数和错误信息,所以完全没有必要压缩JavasScript代码。而生产环境中才会压缩JS代码,用于加快程序的工作效率。devServer用于开发环境,而压缩JS用于生产环境,在开发环境中作生产环境的事情所以webpack设置了冲突报错。
在实际开发中,webpack配置文件是分开的,开发环境、生产环境各自一个文件。
目前webpack.config.js文件中的所有代码为:
const path = require('path');
const uglify = require('uglifyjs-webpack-plugin');
module.exports={
    //入口文件的配置项
    entry:{
        entry:'./src/entry.js',
        //这里我们又引入了一个入口文件
        entry2:'./src/entry2.js',
    },
    //出口文件的配置项
    output:{
        //输出的路径,用了Node语法
        path:path.resolve(__dirname,'dist'),
        //输出的文件名称
        filename:'[name].js'
    },
    //模块:例如解读CSS,图片如何转换,压缩
    module:{
        rules: [
            {
                test:/\.css$/,
                use:['style-loader','css-loader']
            }
        ]
    },
    //插件,用于生产模版和各项功能
    plugins:[
        new uglify()
    ],
    //配置webpack开发服务功能
    devServer:{
        contentBase:path.resolve(__dirname,'dist'), //绝对路径
        host:'localhost',
        compress:true,
        port:1818
    }
}
(6/24) 插件配置:轻松配置JS文件压缩的更多相关文章
- JavaScript的js文件压缩和格式化工具
		JavaScriptcompressor.com这个网站可是大名鼎鼎啊.以前在找到过压缩 Javascript 代码的程序,一直在用,感觉效果不错.域名是: http://javascriptcomp ... 
- grunt  一个目录下所有的js文件压缩 配置收藏
		module.exports = function(grunt){ // 项目配置 grunt.initConfig({ pkg: grunt.file.readJSON('package.json' ... 
- jQuery插件EasyDrag轻松实现JS拖动的效果
		jquery.easydrag下载地址:http://ishare.iask.sina.com.cn/f/34289681.html 实现效果图:分布实现一.页面Html标签元素定义 <!doc ... 
- (7/24) 插件配置之html文件的打包发布
		从前面几节到现在,其实我们的项目结构是有问题的,因为我们直接把index.html文件放到了dist文件夹目录下.这肯定是不正确的,应该放到我们src目录下,然后打包到dist目录下,前面为了学习,才 ... 
- webpack.config.js文件的高级配置
		一.多个入口文件之前我们配置的都是 一个入口 var webpack = require('webpack'); var commonsPlugin = new webpack.optimize.Co ... 
- gulp插件实现压缩一个文件夹下不同目录下的js文件(支持es6)
		gulp-uglify:压缩js大小,只支持es5 安装: cnpm: cnpm i gulp-uglify -D yarn: yarn add gulp-uglify -D 使用: 代码实现1:压缩 ... 
- 为什么vue-cli创建的build文件下没有dev-server.js文件
		在新版本的Vue开发中,通过vue-cli创建的build文件夹下面已经没有了旧版本中的dev-server.js文件新版本的vue已将dev-server.js与webpack.dev.conf.j ... 
- 基于animate.css动画库的全屏滚动小插件,适用于vue.js(移动端、pc)项目
		功能简介 基于animate.css动画库的全屏滚动,适用于vue.js(移动端.pc)项目. 安装 npm install vue-animate-fullpage --save 使用 main.j ... 
- asp.net 百度编辑器 UEditor 上传图片 图片上传配置 编辑器配置 网络连接错误,请检查配置后重试
		1.配置ueditor/editor_config.js文件,将 //图片上传配置区 ,imageUrl:URL+"net/imageUp.ashx" //图片上传提交地址 ,im ... 
随机推荐
- HDU 2108 逆时针给出多边形的顶点,判断是否为凸多边形,水题
			下面是别人解题报告的链接,很详细,写的很好 http://blog.csdn.net/chl_3205/article/details/8520597 下面贴我的代码 #include <cst ... 
- Sereja ans Anagrams  优先队列控制
			Sereja has two sequences a and b and number p. Sequence a consists of n integers a1, a2, ..., an. Si ... 
- Microsoft - Find Biggest Node
			public Node findBiggest (Node n1, Node n2){ Node c1 = n1; Node c2 = n2; boolean isPositive = false; ... 
- python list 去掉重复元素
			貌似用遍历最方便. http://www.cnblogs.com/tudas/p/python-delete-duplicate-element-from-list.html 
- 树的遍历算法-只有一个变量T-递归和非递归
			void PostOrderTraverse(BTNode *T) { //就用到了一个变量T if(T==NULL) return; PostOrderTraverse(T->lchild); ... 
- Entities、pads、links 实体、垫、链接
			Entities.pads.links 实体.垫.链接 Entities:1.实体由一个struct media_entity实例表示.结构通常嵌入到一个较高级别的结构,例如v4l2_subdev或v ... 
- hive 创建orc表
			orc表 创建具备ACID及Transactions的表 这里的表需要具备下面几个条件: 1. 必须以 ORC 格式存储 2. 必须分 bucket,且不能 sort 3. 必须显式声明tran ... 
- windows 版nginx 的一些基础知识
			nginx的Windows版本使用原生Win32 API(非Cygwin模拟层).当前nginx/Windows只使用select作为通知方法,所以不要期待它有很高的性能和扩展性.鉴于这点和一些已知问 ... 
- silverlight 中javascript 代码与托管代码的互调用 以及一些思考
			silverlight 客户端javascript 代码与托管代码的互调用时比较用意义的同时,因为silverlight本身就是一个插件,如果两者之间不能进行相互的调用,对于web 上的一些特殊的功能 ... 
- PHP中数组的各种用法
			$a = 'false';if($a){ echo '好坑';}输出好坑,得转换成布尔值才行哦. in_array $people = array("Bill", "St ... 
