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. C# 截取两个字符串中间的子字符串

    /// <summary> /// 截取中间字符 /// </summary> /// <param name="text">全字符串</ ...

  2. get_class __class__ get_called_class 分析记录

    首先看代码: class A { use T { T::say as aTsay; } public function say() { echo 'a__class__:' . __CLASS__ . ...

  3. Angular4 构建,部署,多环境

  4. 利用airbase-ng建立Soft AP

    利用airbase-ng建立Soft AP,再利用一些常见工具进行嗅探,或对抓包进行分析是出现比较早的一种MITM攻击方法.网上有很多关于手动实现的文章,也有一些自动实现脚本.这些脚本通常分两类,一类 ...

  5. Linux实战

    1.root用户无法删除文件 [root@VM_0_9_centos .ssh]# lsattr authorized_keys ----i----------- authorized_keys ls ...

  6. Nginx 出现 _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/

    Nginx 出现  _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/ 这种情况是因为 application 没有足的权限 .需要给予777的权限就能解决了

  7. 我的web前端整理和学习

    知识点收藏:(边看.边记录.边写) 开直播学习:虎牙 待办事理>> 练习自我表达(把文章做成视频).技术学习总结(博客与公众号).跳出舒适圈. 前端知识体系:https://www.cnb ...

  8. 父级POM的表现形式

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  9. oracle 表空间管理相关(原创)

    通过以下几步基本可以查看表空间情况以及处理表空间不足问题. ASM相关 查看asm空间 select group_number,name,total_mb,free_mb from v$asm_dis ...

  10. CenOS 6.4下安装中文输入法

    1.使用root登录 输入:yum install "@Chinese Support" 2.回到桌面设置添加输入法 参考链接:http://www.linuxidc.com/Li ...