1、webpack简单介绍

(1)webpack是一个用于实现前端模块化开发工具,可帮助我们自动打包编译成浏览器能够识别的代码 ;同时支持commonjs规范 以及es6的import规范; 同时具备各种常见语言编译(需要安装插件和loader)等功能。

(2)在使用webpack时 需要使用配置文件 ,名字如下: webpack.config.js

(3)安装 npm i webpack@3.11.0 -g,需要安装的本地web服务器  webpack-dev-server 版本号为: 2.9.7,在webpack.config.js 文件中对devServer属性进行配置,然后运行命令 webpack-dev-server --inline 启动即可,注意 webpack 和webpack-dev-server 需要全局安装

(4)webpack 配置:入口、出口、规则、插件

(5)在使用html-webpack-plugin 时 由于该模块依赖于webpack,  所以 在项目本地还需要安装一个webpack, 版本同样时3.11.0

(6) 命令 webpack-dev-server --inline 的作用仅为在本地预览开发效果,  本身并不包含编译的功能 ,如果需要将开发完成的代码上线  需要执行webpack 才能将代码编译到dist目录当中

(7)提取样式代码到单独的文件中

第一步  安装提取器 extract-text-webpack-plugin  第二步 配置loader   loader:Ext.extract("xxx-loader")  第三步 配置输出文件名  plugins : [new Ext("xxx.css")]

(8)__filename变量:node.js中,在任何模块文件内部,可以使用__filename变量获取当前模块文件的带有完整绝对路径的文件名。

__dirname :获得当前文件所在目录的完整目录名

2、配置文件属性

const path = require("path"); // node 模块 处理路径逻辑
const htmlWebpackPlugin = require("html-webpack-plugin"); //该模块用于自动复制html文件到dist当中,操作HTML
const openBrowserWebpackPlugin = require("open-browser-webpack-plugin"); // 打开浏览器
const extractTextWebpackPlugin = require("extract-text-webpack-plugin") // 安装提取器,抽离样式 样式独立出去
module.exports = {
  entry:[ "./src/main.js"],    //声明项目入口文件  entry : __dirname + "/src/main.js",
  output:{    //配置编译后的文件
    path:path.resolve(__dirname,'dist'),
    filename:"js/[name].[hash:8].js", // 生成 hash规则解密解析的长度为8 的随机字符串 阻止浏览器缓存
    publicPath:"", // 公共路径 上线需要配置
  },
  //output : { //配置编译后的文件
         // path : __dirname + "/dist", //配置文件所在目录
         //filename : "index.js" //配置文件名
     },
  devtool:"source-map",  //开启资源地图模式  方便调试  让浏览器控制台能够准确指向编译前是哪个文件报错
  resolve:{
    alias:{ // 别名
      'vue':'vue/dist/vue.js'
    }
  },
module:{
  rules:[
    {
      test:/\.js$/,
      exclude:/node_modules/,
      use:['babel-loader']
    },
    {
      test:/\.(png|gif|svg|jpg|woff|woff2|eot|ttf)\??.*$/,
      use:["url-loader?limit=8192&name=font/[hash:8].[name].[ext]"] // 8M ext扩展名
    },
    {
      test:/\.(css|scss)$/,
      use:extractTextWebpackPlugin.extract({
      fallback:"style-loader", // 转化为 node 风格代码
      use:[ "css-loader", // css 转化为 commonJs模块
        {
          loader:"postcss-loader", // 模块
          options:{
            plugins:function(){
              return [
                require("cssgrace"), // 美化 css
                require("autoprefixer")() // 自动补全 实现兼容
                 ]
            }
          }
        },
        "sass-loader" // 编译 scss 为 css 代码
        ],
      })
    },
    {
      test:/\.(css|less)$/,
      use:extractTextWebpackPlugin.extract({
      fallback:"style-loader", // 转化为 node 风格代码
      use:[ "css-loader", // css 转化为 commonJs模块
        {
        loader:"postcss-loader", // 模块
      options:{
        plugins:function(){
            return [
            require("cssgrace"), // 美化 css
            // require('postcss-px2rem-exclude')(
            // {
            // remUnit:100,
            // exclude:/element-ui/i, // 排除 mint-ui 不需要进行 rem 转换
            // }
            // ), // px 转 rem
            require("autoprefixer")() // 自动补全 实现兼容
            ]
          }
        }
    },
    "less-loader" // 编译 scss 为 css 代码
      ],
    })
    },
    {
      test:/\.vue$/,
      loader:'vue-loader',
      options:{
        loaders:[
          {'css':'style-loader!css-loader'},
          {'scss':'style-loader!css-loader!sass-loader'},
          {'less':'style-loader!css-loader!less-loader'},
        ]
      }
    }
   ]
},
devServer:{
  contentBase:path.join(__dirname,"dist"),    // contentBase : __dirname + "/dist/", //指定本地web服务根路径
  compress:true,
  hot:true,
  inline:true,//开启自动刷新
  host:"0.0.0.0",
  port:7000,//设置端口号
  // open:true,
  publicPath:"",
  proxy:{ // 代理
  },
  // historyApiFallback:true // 处理 history 路由模式
},
plugins:[
  new htmlWebpackPlugin({
    template:"./src/index.html", //声明 编译 HTML 文件
    inject:true, // 自动注入 css/js link script
  }),
  new openBrowserWebpackPlugin({url:"http://localhost:7000"}),
  new extractTextWebpackPlugin({
    filename:'css/app.[hash:8].css',
    allChunks:true , // 抽离所有的数据
    disable:false // true 无法样式抽离
  })
  ]
}

3、react配置webpack文件

let webpack= require("webpack")
let Hwp = require("html-webpack-plugin")
let Ext = require("extract-text-webpack-plugin")
module.exports = {
  entry : __dirname + "/src/main.js",
  output : {
    path : __dirname + "/dist/",
    filename : "app.js",
    publicPath : "/"
  },
  devtool : "source-map",
  devServer : {
    contentBase : __dirname + "/dist/",
    port : 3000,
    inline : true,
    publicPath : "/",
    historyApiFallback : true,
    disableHostCheck : true,
    proxy : {
      "/zhuiszhu" : {
        target : "http://39.105.136.190:3000"
      }
    }
},
module : {
  rules : [
    {test : /\.js$/ , exclude : /node_modules/ ,loader : "babel-loader"},
    {test : /\.less$/,loader :Ext.extract("css-loader!less-loader")},
    {test : /\.css$/,loader :Ext.extract("css-loader")},
  ]
},
plugins : [
  new webpack.ProvidePlugin({
    React : "react"
  }),
  new Hwp({
    template : "index.html",
    filename : "index.html",
    inject : true
  }),
  new Ext("app.css")
  ]
}
 
4、vue配置webpack文件
let Hwp = require("html-webpack-plugin")
let Ext = require("extract-text-webpack-plugin")
module.exports={
  entry:__dirname+"/src/main.js",
  output:{
    path:__dirname+"/dist/",
    filename:"app.js"
  },
  devtool:"source-map",
  devServer:{
    contentBase:__dirname+"/dist/",
    port:3000,
    inline:true,
    proxy:{
      "/zhuiszhu":{
        target:"http://39.105.136.190:3000"
      }
    }
  },
  resolve:{
    alias:{
      "vue":"vue/dist/vue.js"
     }
  },
module:{
  rules:[
    {test:/\.css$/,loader:Ext.extract("css-loader")},
    {test:/\.less$/,loader:Ext.extract("css-loader!less-loader")},
    {test:/\.html$/,loader:"string-loader"},
    {test:/\.js$/,exclude:/node_modules/,loader:"babel-loader"},
  ]
},
plugins:[
  new Hwp({
    template:"src/index.html",
    filename:"index.html",
    inject:true
  }),
  new Ext("app.css")
  ]
}
 
5.补充webpack知识讲解

webpack是一个用于实现前端模块化开发工具 可帮助我们自动打包编译成浏览器能够识别的代码
同时支持commonjs规范 以及es6的import规范

同时具备各种常见语言编译(需要安装插件和loader)等功能

在使用webpack时 需要使用配置文件
名字如下: webpack.config.js

1 安装 : 全局安装
推荐使用版本: 3.11.0
npm i webpack@3.11.0 -g

运行命令
webpack

配置文件属性

entry : 配置入口文件
output : {
path : "", //输出路径
filename : "" //输出文件名
},
devtool : "source-map" , //开启资源地图模式
devServer : { //webpack-dev-server 服务相关配置
contentBase : "",//服务器根目录,
port : 3000,//端口号,
inline : true,//自动刷新,
proxy : { //配置服务器代理
"pathname" : {
target : "目标服务器地址"
}
}
},
module : {
rules : [ //loader相关配置
{
test: xxx,// 正则对象,匹配相应文件
exclude : yyy,// 正则对象,过滤掉不需要编译的部分
loader : "", //需要使用到的loader
}
]
},
plugins : [ //配置各种插件

]
}

常见插件用法
全局变量:
let webpack = require("webpack")

plugins : [
new webpack.ProvidePlugin({
React : "react"
})
]

css文件提取
let Ext = require("extract-text-webpack-plugin")

loader配置:
{test:/\.css$/,loader:Ext.extract("css-loader")}

plugins : [
new Ext("app.css")
]

html文件自动复制
let Hwp = require("html-webpack-plugin")

plugins : [
new Hwp({
template : "index.html" ,//源html文件路径
filename : "index.html",//自动输出到output所指向的目录
inject : true , //自动引入所需要的标签 比如link 比如script
})
]

webpack详细介绍以及配置文件属性!的更多相关文章

  1. [webpack] webpack-dev-server介绍及配置

    webpack-dev-server是webpack官方提供的一个小型Express服务器.使用它可以为webpack打包生成的资源文件提供web服务.webpack-dev-server官方文档 w ...

  2. iptables的详细介绍及配置方法*

    Firewall(防火墙):组件,工作在网络边缘(主机边缘),对进出网络数据包基于一定的规则检查,并在匹配某规则时由规则定义的处理进行处理的一组功能的组件. 防火墙类型:根据工作的层次的不同来划分,常 ...

  3. webpack详细配置解析

    阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本 ...

  4. webpack的详细介绍和使用

    // 一个常见的`webpack`配置文件 const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-we ...

  5. linux配置网卡IP地址命令详细介绍及一些常用网络配置命令

    linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...

  6. 网卡配置和DNS配置,手动挂在nas存储的共享目录,网络相关其它操作命令,修改防火墙中的端口配置,resolv.conf配置详细介绍和网卡信息配置详细介绍

    1.   网卡配置和DNS配置 若想服务器能够发邮件,需要让部署的服务器能够访问到外网环境.若部署的服务器访问不到外网,通过ping www.baidu.com的方式执行的时候,会出现以下问题: &q ...

  7. vue对比其他框架详细介绍

    vue对比其他框架详细介绍 对比其他框架 — Vue.jshttps://cn.vuejs.org/v2/guide/comparison.html React React 和 Vue 有许多相似之处 ...

  8. php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系

    以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...

  9. 图解MySQL5.5详细安装与配置过程

    MySQL是一个开源的关系型数据库管理系统,原由瑞典MySQL AB公司开发,目前属于Oracle公司旗下.MySQL是目前世界上开源数据库中最受欢迎的产品之一,是应用最为广泛的开源数据库.MySQL ...

随机推荐

  1. React 受控组件和非受控组件

    需求用户名自动获取 onChange用户状态发生改变 就获取值 就是时时获取值 使用onChange 点击按钮 获取密码 只要绑定了点击事件 就可以获取值 通过 let usercont=event. ...

  2. appium自动化常用API

    常用函数 一.获得信息类API (1)获取当前页面的activity名,比如: (.ui.login.ViewPage)  current_activity() 比如我们需要实现这个登录的功能时,主要 ...

  3. c# 第16节 一维数组的声明及使用

    本节内容: 1:为什么要有使用数组 2:数组的简介 3:一维数组的声明 4: 实例数组声明 5:一维数组的使用 6:一维数组使用注意地方 1:为什么要使用数组 2:数组的简介 3:一维数组的声明 4: ...

  4. 张兴盼-201871010131《面向对象程序设计(Java)》第七周学习总结

    张兴盼-201871010131<面向对象程序设计(Java)>第七周学习总结 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个 ...

  5. 基于 webdriver 的测试代码日常调试方python 篇

    看到论坛有人写了JAVA的测试代码日常设计,就给大家分享一下偶自己平时是如何测试测试代码的.主要基于python语言.基于 webdriver 的日常调试在 python交互模式下非常方便,打开pyt ...

  6. 四则运算web版需求规格说明书

    目录 1引言... 4 1.1  目的... 4 1.2  背景... 4 1.3  术语... 4 1.4  预期读者与阅读建议... 5 1.5  参考资料... 6 1.6  需求描述约定... ...

  7. yum源加速,替换为阿里云镜像

    问题 使用yum命令安装mysql时,发现下载速度很慢,于是决定换成阿里的yum源 解决方法 参考自:https://www.jianshu.com/p/b7cd2f9fb8b7 首先备份一下原先的y ...

  8. 【UVA1303】Wall(凸包)

    点此看题面 大致题意: 给你一个多边形,要求建一面墙使得墙上的点至少离多边形每个顶点\(R\)的距离,求最短的墙长. 考虑\(R=0\) 考虑当\(R=0\)时,所求的答案显然就是求得的凸包的周长. ...

  9. Npcap:Nmap项目里一个为Windows而生的嗅探库 Npcap: Nmap Project's packet sniffing library for Windows

    如果有人知道Npcap与libpcap对应的头文件列表,请告诉我,非常感谢 Introduction介绍 This Manual describes the programming interface ...

  10. mysql修改windows下的data目录

    在windows下,安装完mysql后,建议把数据目录(data目录)移动到非系统目录,避免系统出问题的时候还原. 1.在d盘创建一个mysqldata 2.给新文件增加权限NetworkServic ...