博客地址:https://ainyi.com/10

webpack

- 什么是webpack:

WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。
 

- webpack工作方式:

把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的JavaScript文件。

- 安装webpack

 //全局安装
npm install -g webpack
//安装到项目目录
npm install webpack --save-dev

- 常见的webpack配置文件

 const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin'); //html解析导入
const ExtractTextPlugin = require('extract-text-webpack-plugin'); // __dirname 是 node.js 中的一个全局变量,它指向当前执行脚本所在的目录
module.exports = {
entry: __dirname + "/app/main.js", //唯一入口文件
output: {
path: __dirname + "/build", //打包后输出的文件路径
filename: "bundle-[hash].js" //打包后输出的文件名
},
devtool: 'none',
//在package.json中的scripts对象中添加webpack-dev-server命令可开启本地服务器
devServer: {
contentBase: "./public", //本地服务器所加载的页面所在的目录
//在开发单页应用时,它依赖于HTML5 history API,如果设置为true,所有的跳转将指向index.html,也就是不跳转
historyApiFallback: true,
inline: true, //当源文件改变时会自动刷新页面
hot: true //热加载
},
//配置loader
//模块的解析规则
module: {
rules: [
//js 匹配所有的js,用babel-loader转译 排除掉node_modules
{
test: /(\.jsx|\.js)$/,
use: {
loader: "babel-loader"
},
exclude: /node_modules/
},
//css use时如果多个loader,要从右往左写
{
test:/\.css$/,
use:[
{
loader: "style-loader"
},{
loader: "css-loader"
}
]
},
//less
{
test:/\.less$/,
use:[
{
loader: "style-loader"
},{
loader: "css-loader"
},{
loader: "less-loader"
}
]
},
//配置图片 只在10000字节以下转化base64,其他情况下输出原图片
{
test: /\.(png|jpe?g|gif|svg|cur)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
}
]
}
},
plugins: [
//通过这个插件打包后会在js文件中增加一段注释:/*! 版权所有,翻版必究 */
new webpack.BannerPlugin('版权所有,翻版必究'),
//HtmlWebpackPlugin:依据一个简单的index.html模板,生成一个自动引用你打包后的JS文件的新index.html
//new 一个这个插件的实例,并传入相关的参数,自动插入到dist目录中
new HtmlWebpackPlugin({
//使用的模板
template: __dirname + "/app/index.tmpl.html"
}),
//Hot Module Replacement(HMR)热加载插件:允许你在修改组件代码后,自动刷新实时预览修改后的效果。
//在webpack中实现HMR也很简单,只需要做两项配置
//在webpack配置文件中添加HMR插件;
//在Webpack 的 devServer中添加“hot”参数为true;
new webpack.HotModuleReplacementPlugin(),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin(),
new ExtractTextPlugin("style.css")
]
};

Loaders

- 通过使用不同的loader,webpack有能力调用外部的脚本或工具,实现对不同格式的文件的处理
- 比如说分析转换scss为css,或者把下一代的JS文件(ES6,ES7)转换为现代浏览器兼容的JS文件,对React的开发而言,合适的Loaders可以把React的中用到的JSX文件转换为JS文件。
- Loaders需要单独安装并且需要在webpack.config.js中的modules关键字下进行配置,Loaders的配置包括以下几方面:
test:一个用以匹配loaders所处理文件的拓展名的正则表达式(必须)
loader:loader的名称(必须)
include/exclude: 手动添加必须处理的文件(文件夹)或屏蔽不需要处理的文件(文件夹)(可选);
query:为loaders提供额外的设置选项(可选)

babel

- babel是一种javascript编译器,它能把最新版的javascript编译成当下可以执行的版本,简言之,利用babel就可以让我们在当前的项目中随意的使用这些新最新的es6,甚至es7的语法。说白了就是把各种javascript千奇百怪的语言统统专为浏览器可以认识的语言。
- babel的配置选项放在一个单独的名为 ".babelrc" 的配置文件中

plugins

- 插件(Plugins)是用来拓展Webpack功能的,它们会在整个构建过程中生效,执行相关的任务。
- Loaders和Plugins常常被弄混,但是他们其实是完全不同的东西,可以这么来说:
loaders是在打包构建过程中用来处理源文件的(JSX,Scss,Less..),一次处理一个。
插件并不直接操作单个文件,它直接对整个构建过程其作用。
- Webpack有很多内置插件,同时也有很多第三方插件,可以让我们完成更加丰富的功能。
- 插件实例在上述代码讲解

博客地址:https://ainyi.com/10

webpack 配置文件相关解说的更多相关文章

  1. webpack优化相关操作

    1.缩小文件搜索的范围 • 优化loader配置 尽量精确使用 include 只命中需要的文件.    module.exports = {      module: {        rules: ...

  2. 为什么我们要做三份 Webpack 配置文件

    时至今日,Webpack 已经成为前端工程必备的基础工具之一,不仅被广泛用于前端工程发布前的打包,还在开发中担当本地前端资源服务器(assets server).模块热更新(hot module re ...

  3. webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server

    一.webpack基础 1.在项目中生成package.json:在项目根目录中输入npm init,根据提示输入相应信息.(也可以不生成package.json文件,但是package.json是很 ...

  4. 调试webpack配置文件

    webpack运行在nodejs上,调试webpack就相当于调试nodejs程序.下面介绍一种通用的办法. 1.配置package.json,加一个debug. { 'scripts': { 'de ...

  5. react暴露webpack配置文件

    在react中安装create-react-app脚手架新建项目,但是新建的项目中没有配置文件. webpack的配置文件webpack.base.conf.js隐藏在了node_modules文件夹 ...

  6. webpack实践(二)- webpack配置文件

    webpack系列博客中代码均在github上:https://github.com/JEmbrace/webpack-practice <webpack实践(一)- 先入个门> < ...

  7. prefetch 和 preload 及 webpack 的相关处理

    使用预取和预加载是网站性能和用户体验提升的一个很好的途径,本文介绍了使用 prefetch 和 prefetch 进行预取和预加载的方法,并使用 webpack 进行实现 Link 的链接类型 < ...

  8. 3.WebPack配置文件

    一.为什么需要WebPack配置文件 引用自官方: 在 webpack 4 中,可以无须任何配置使用,然而大多数项目会需要很复杂的设置,这就是为什么 webpack 仍然要支持 配置文件.这比在终端( ...

  9. 二:搭建一个webpack3.5.5项目:建立项目的webpack配置文件

    第一步: npm init -y [初始文件] npm info webpack / bower info webpack[查看版本,用bower的时候要先 npm install bower] np ...

随机推荐

  1. 利用websocket实现微信二维码码扫码支付

    由于业务需要引入微信扫码支付,故利用websocket来实现消息推送技术. 实现大致流程:首先客户端点击微信支付按钮,触发微信支付接口,同时微信支付响应成功参数后,连接websocket客户端,此刻利 ...

  2. STM32F10x_StdPeriph_Lib_V3.5.0标准库文件关系(转载他人)

  3. JS 控制输入框输入表情emoji 显示在页面上

    问题描述: 最近做一个评论回复的功能遇到了用户输入框输入表情,存入数据库的时候转变成了问号??? 起初为了避免这个问题,做了一个过滤表情的控制 var inputText = $('#pinglun' ...

  4. springboot 不同环境切换不同的配置文件

    开发的流程是本地>测试>预发布>正式,所以不同的环境,肯定是不同的配置文件,所以我们需要针对不同的环境做不同的配置切换. 下面我们来说说 springboot 是怎么来切换的: 1. ...

  5. position 小结

    position: static fixed relative absolute sticky 1.static static定位是HTML元素的默认值,即没有定位,元素出现在正常的流中.因此,这种定 ...

  6. js操作bom和dom

    Bom 概念 BOM : Browser Object Model 浏览器对象模型,描述与浏览器进行交互的方法和接 口, ECMAscript是javascript的核心,但如果要在web中使用jav ...

  7. Linux 搜某个文件里关键字的上下500行到执行文件里

    Linux 搜某个文件里关键字的上下500行到执行文件里grep '300000111110' -C 500 ./saastom7061_APP3/logs/sass.log >/app/saa ...

  8. kafka中zookeeper的操作

    bin/zookeeper-shell.sh localhost:2181 <<< "get /brokers/ids/4" ./zkCli.sh -server ...

  9. 微信小程序-自定义下拉刷新

    最近给别个公司做技术支持,要实现微信小程序上拉刷新与下拉加载更多 微信给出的接口不怎么友好,最终想实现效果类似QQ手机版 ,一共3种下拉刷新状态变化,文字+图片+背景颜色 最终实现后的效果(这里提示有 ...

  10. MySQL--更新自增列的潜在风险

    ##=====================================================================##测试环境:MySQL版本:MySQL 5.7.19复制 ...