const path = require('path');
// 以下文件需要npm i 文件名 --save-dev
const uglify = require('uglifyjs-webpack-plugin');
const htmlPlugin= require('html-webpack-plugin');
const extractTextPlugin = require("extract-text-webpack-plugin"); //文件分离插件
const glob = require('glob');
const PurifyCSSPlugin = `require`("purifycss-webpack");
const copyWebpackPlugin= require("copy-webpack-plugin");
// 区分生产环境还是线上环境
// package.join 需要配置
// "scripts":{
// "dev":"set type=dev&webapck",
// "build": "set type=build&webpack"
// }
if(process.env.type=="build"){ //生产
var website ={
publicPath:"http://99.6.118.125:10090/"
}
}else{
var website ={
publicPath:"生产域名"
}
}
module.exports={
// 打包后的调试模式 这个不是必须配置项 有4种source-map eval-source-map cheap-module-eval-source-map cheap-module-source-map
devtool:'eval-source-map',
//指定打包入口文件
entry:{
// ....例如entry1可以自定义取
entery1:"./src/entery.js",
// 下面引入的第三方内库
jquery:'jquery',
vue:'vue'
},
// 指定打包出口文件
output:{
// 输出路径 node语法绝对路径
path:path.resolve(__dirname,"dist"),
// 输出文件名
filename:'[name].js',
// 处理静态文件路径问题 也有其他方法
publicPath:website.publicPath
},
// 模块:例如一些转换器css js的(最重要),例如可以将多个css文件转换成一个,减少请求次数
// 需要手动下载加载器哦npm install style-loader --save-dev
module:{
rules:[
{
test:/\.css$/,
// 不分离版本
// use:[
// {
// loader:"style-loader" ,
// options:{
// minimize:true
// }
// },
// {
// loader:"css-loader" ,
// options:{
// minimize:true
// }
// }
// ]
// css js分离版本
use:extractTextPlugin.extract({
fallback:"style-loader",
use:[
{loader:"css-loader",options:{importLoaders:1}},
'postcss-loader' //加css前缀
]
})
},
// 图片需要下载url-loader
{
test:/\.(png|jpg|gif)/,
use:[{
loader:'url-loader',
options:{
// 图片小于50000字节的直接在文件中生成base64图片减少请求,大于就生成文件里、面
limit:50000,
// 输出文件
outputPath:"images/"
}
}]
},
// 解决html文件中图片不能正确显示
{
test:/\.(html|html)$/i,
use:['html-withimg-loader']
},
// less文件装换 less要先安装才能用npm install --save-dev less sass同理得
{
test:/\.less$/,
use: extractTextPlugin.extract({
use: [{
loader: 'css-loader'
},
{
loader: "less-loader"
},
// 给css的熟悉加兼容前缀 例如webkit
{
loader:"postcss-loader"
}
],
fallback: "style-loader"
})
},
// 输出js,es5+以上的语法 还要去除调node_modules里面的js文件
// npm install --save-dev babel-core babel-loader babel-preset-react babel-preset-env
{
test:/\.(jsx|js)$/,
use:{
loader:'babel-loader',
options:{
presets:[
"env","react"
]
}
}
}
]
},
// 插件 用于生产模版和各项功能
plugins:[
// js压缩
new uglify(),
new htmlPlugin({
// 对html文件进行压缩,removeAttributeQuotes是去掉属性双引号
minify:{
removeAttributeQuotes:true
},
// 自动在js文件路径后面生成随机版本号,去缓存作用
hash:true,
// 要打包的html模版路径
template:"./src/index.html"
}),
// 消除css中不用的css
new extractTextPlugin("css/index.css"),
new PurifyCSSPlugin({
// 遍历你的html文件(消除不用的css)
paths: glob.sync(path.join(__dirname, 'src/*.html')),
}),
// 全局引用第三方类库,这样引用比文件中引用好,这样的话用的话就
// 调用,不用不会调用,减少文件大小
// 这种方式打包后第三方库不会抽离出来
// new webpack.ProvidePlugin({
// $:"jquery"
// }),
// 这种会抽离建议用这个 这些插件都需要npm
new webpack.optimize.CommonsChunkPlugin({
name:['jquery','vue'],
// 文件打包去到的路径
filename:"assets/js/[name].js",
// 最小打包的文件模块数,直接写2就好
minChunks:2
}),
// 打包代码的第一行添加版权说明
new webpack.BannerPlugin('VICKY的练习项目'),
// 例如项目中那些没有引用进来的图片,也需要上传到服务器中
// cnpm c install --save-dev copy-webpack-plugin
new copyWebpackPlugin([
{
from:__dirname+'/src/public',
to:'./public'
}
]),
// 热更新的插件
new webpack.HotModuleReplacementPlugin(),
],
// 配置webpack开发服务 这个云创没用到 3.6.0+版本可以热更新
devServer:{
// 设置基本目录结构
contentBase:path.resolve(__dirname,"dist"),
// 服务器地址,ip或者localhost
host:'99.6.118.125',
// 服务端压缩是否开启
compress:true,
// 端口号
port:10080
}
}

webpack基本配置文件(含解释)的更多相关文章

  1. my.cnf 配置文件参数解释

    my.cnf 配置文件参数解释: #*** client options 相关选项 ***# #以下选项会被MySQL客户端应用读取.注意只有MySQL附带的客户端应用程序保证可以读取这段内容.如果你 ...

  2. 分布式文件存储FastDFS(七)FastDFS配置文件具体解释

    配置FastDFS时.改动配置文件是非常重要的一个步骤,理解配置文件里每一项的意义更加重要,所以我參考了大神的帖子,整理了配置文件的解释.原帖例如以下:http://bbs.chinaunix.net ...

  3. 在C#代码中应用Log4Net(三)Log4Net中配置文件的解释

    一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件. <log4net> <!-- 错误日志类--> <logger nam ...

  4. 在C#代码中应用Log4Net 中配置文件的解释

    一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件. <log4net> <!-- 错误日志类--> <logger nam ...

  5. log4j配置文件详细解释

    web.xml中配置启动log4j的配置 <!-- webAppRootKey进行配置,这里主要是让log能将日志写到对应项目根目录下 --> <!-- 定义以后,在Web Cont ...

  6. [转]Log4Net中配置文件的解释

    FROM:http://www.cnblogs.com/kissazi2/p/3392605.html 一个完整的配置文件的例子如下所示 <log4net> <!-- 错误日志类-- ...

  7. 【比赛打分展示双屏管理系统-加强版】的两个ini配置文件功能解释及排行榜滚动界面的简答配置等

    加强版目录下有两个ini文件,功能解释如下: 1. ScoreTip.ini: bScoreTip:如果为1,可以启用 回避 功能 或 高低分差值超出 iScoreRange 的 提示功能. iSco ...

  8. Log4Net中配置文件的解释

    一个完整的配置文件的例子如下所示 <log4net> <!-- 错误日志类--> <logger name="logerror"> <le ...

  9. webpack 使用配置文件

    webpack入门     大多数项目会需要很复杂的设置,这就是为什么webpack要支持配置文件.这比在终端中输入大量命令要高效的多,所以让我们常见一个取代CLI选项方式的配置文件 新建 webpa ...

随机推荐

  1. Xamarin.Forms踩坑集锦(持续更新)

    1.ImageButton控件 问题:ImageButton在切换图片的时候,图片大小会改变. Github Issue:ImageButton changes image size · Issue ...

  2. 2018-2019-2 20165316 《网络对抗技术》 Exp6 信息搜集与漏洞扫描

    2018-2019-2 20165316 <网络对抗技术> Exp6 信息搜集与漏洞扫描 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应 ...

  3. Java 必须掌握的 20+ 种 Spring 常用注解

    Spring部分 1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @C ...

  4. Java基础总结3

    计算只做加法计算 减法也是加法计算出来的: 1,顺序结构: 按照编写代码的顺序从上而下逐行翻译执行: 特点:每行代码都能被执行到且被执行一次: 2,选择结构看条件: 条件为true(成立)执行代码块: ...

  5. postman抓包工具与kap项目部署(新猿旺学习总结)

    postman抓包工具 1.post请求在哪里输入数据:选择请求方法-post--->在body里面如图位置输入参数和值,如果是json格式在raw出填写 get请求在哪里输入数据:选择请求方法 ...

  6. Parallels Desktop 14.1.3中文版win系统安装教程

    parallels desktop 14 中文版(pd虚拟机)是mac上最强大也是最好用的虚拟机软件,本站第一时间为大家带来这款parallels desktop 14 破解版,最新版本的parall ...

  7. open-falcon部署v0.2.1版本

    环境准备 安装redis yum install redis -y systemctl start redis 安装mysql rpm -ivh http://dev.mysql.com/get/my ...

  8. MySQL的4种事务隔离级别

    链接: https://www.cnblogs.com/huanongying/p/7021555.html https://blog.csdn.net/qq_33226422/article/det ...

  9. UVA12206 Stammering Aliens

    思路 可以二分答案+哈希 判断有没有那个长为L的串出现至少m次即可 代码 #include <cstdio> #include <cstring> #include <a ...

  10. 详解Python的装饰器

    Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye()两个函数. def sa ...