webpack配置文件:webpack.config.js(一)
1、webpack的配置文件webpack.config.js
//const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {mode:'none',entry: './src/index.js',output: {path: __dirname + '/dist',filename: 'dist.js'},
}
上面代码是一个最最基本的webpac配置文件,
entry是指定要打包的入口文件,(多页面可以有多个入口)
output指定打包之后文件的路径和文件名(只有一个出口)
(其中几个目录请手动新建:src是放我们源码的文件夹,dist是放我们编译后文件的文件夹。)
有了基本的webpack.config.js,我们用webpack来打包就简单了,可以直接执行下面命令:
webpack
webpack默认就会去寻找根目录下的webpack.config.js文件。
打包成功,dist/js文件夹下就会生成一个dist.js。
2、我们也可以指定webpack的配置文件名
webpack.config.js是webpack默认的配置文件名,如果我们有一个webpack.dev.config.js配置,又如何让webpack来读取它呢?
只需要在执行打包命令的时候,加一个参数: --config `文件名
webpack --config `webpack.dev.config.js
3、webpack配合npm
还记得我们在npm init初始化之后,生成了一个package.json文件么?我们现在终于要用到它了。
我们在package.json文件中,增加一个scripts:
"scripts": {"test": "echo \"Error: no test specified\" && exit 1","webpack": "webpack --config webpack.config.js"},
上面我们增加了一个webpack项,我们可以看出其值其实也是执行的webpack命令。
既然我们是要webpack和npm配合,那么上面的配置到底有什么作用呢?
我们可以通过npm来调用webpack来,执行下面命令,同样完成webpack打包操作:
npm run webpack
npm run xxxx,其中 xxxx 就是我们上面配增加的scripts命令。
4、webpack配置的entry
entry是webpack打包的入口指示。
//entry:'路径',
entry:'./src/script/main.js',
它有三种形式:
1)、最简单的就是一个string,也是只有一个入口文件。我们前面已经见识了。
entry:'./src/script/main.js',
这种形式,你的所有的依赖,都在这个文件main.js中引入进来。
2)、数组的形式
entry:['./entry1','./entry2']
3)、对象的形式
entry: {page1:'./page1',page2:['./entry1','./entry2']
}
上面 数组的形式和对象形式,都2个入口。
5、webpack配置的output
然后我们把webpack.config.js中output段修改如下:
output:{path:'./dist/js',filename:'[name]-[hash].js' //这样我们打包之后的文件就是**main-本次打包的hash值.js**。}
这样我们打包之后的文件就是 main-本次打包的hash值.js。
还可以:
filename:'[name]-[chunkhash].js'
这其中的hash值,我们可以认为是版本号,也就是说,只有在我们的文件改变了的时候,这个hash值才会有变化。最后打包的文件名就是随机的。
6、webpack配置的plugins
使用插件的方法:配置plugins:
1、要使用某个插件,需要通过npm安装它,然后在webpack.config.js中的plugins关键字部分添加该插件的一个实例(plugins是一个数组,new一个插件即可)。
如添加一个实现版权声明的插件:
module.exports = {mode: 'none',entry: __dirname + "/app/main.js",output: {...},module: {loaders: [{ test: /\.json$/, loader: "json" },{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },{ test: /\.css$/, loader: 'style!css?modules!postcss' }//这里添加PostCSS]},postcss: [require('autoprefixer')],//添加该插件的一个实例plugins: [new webpack.BannerPlugin("Copyright Flying Unicorns inc.") ],devServer: {...}
}
2、几个常用的插件
1) HtmlWebpackPlugin
这个插件的作用是依据一个简单的模板,帮助生成最终的Html5文件,这个文件中自动引用了打包后的JS文件。每次编译都在文件名中插入一个不同的哈希值。
安装命令:npm install --save-dev html-webpack-plugin
这个插件自动完成了之前手动做的一些事情,在正式使用之前需要对项目结构做一些改变:
① 移除public文件夹,利用此插件,HTML5文件会自动生成,此外CSS已经通过前面的操作打包到JS中了。
② 在app目录下,创建一个HTML文件模板index.tmpl.html,这个模板包含title等其它需要的元素,在编译过程中,本插件会依据此模板生成最终的HTML页面,会自动添加所依赖的 css, js,favicon等文件,模板源代码如下:
<!DOCTYPE html>
<html lang="en"><head></head><body><div id='root'></div></body>
</html>
③ 更新webpack的配置文件,方法同上,新建一个build文件夹用来存放最终的输出文件。
var webpack = require('webpack');var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {devtool: 'eval-source-map',entry: __dirname + "/app/main.js",output: {path: __dirname + "/build",filename: "bundle.js"},module: {loaders: [{ test: /\.json$/, loader: "json" },{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },{ test: /\.css$/, loader: 'style!css?modules!postcss' }]},postcss: [require('autoprefixer')],plugins: [new HtmlWebpackPlugin({template: __dirname + "/app/index.tmpl.html"//new 一个这个插件的实例,并传入相关的参数})],devServer: {colors: true,historyApiFallback: true,inline: true}
}
2) Hot Module Replacement
Hot Module Replacement(HMR)也是webpack里很有用的一个插件,它允许在修改组件代码后,自动刷新实时预览修改后的效果。
在webpack中实现HMR也很简单,只需要做两项配置
① 在webpack配置文件中添加HMR插件;
② 在Webpack Dev Server中添加“hot”参数。
不过配置完这些后,JS模块其实还是不能自动热加载的,还需要在JS模块中执行一个Webpack提供的API才能实现热加载,虽然这个API不难使用,但是如果是React模块,使用已经熟悉的Babel可以更方便的实现功能热加载。
具体实现方法如下:
① Babel和webpack是独立的工具;
② 二者可以一起工作;
③ 二者都可以通过插件拓展功能;
④ HMR是一个webpack插件,它让你能浏览器中实时观察模块修改后的效果,但是如果你想让它工作,需要对模块进行额外的配额;
⑤ Babel有一个叫做react-transform-hrm的插件,可以在不对React模块进行额外的配置的前提下让HMR正常工作。
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {devtool: 'eval-source-map',entry: __dirname + "/app/main.js",output: {path: __dirname + "/build",filename: "bundle.js"},module: {loaders: [{ test: /\.json$/, loader: "json" },{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },{ test: /\.css$/, loader: 'style!css?modules!postcss' }] },postcss: [require('autoprefixer')],plugins: [new HtmlWebpackPlugin({template: __dirname + "/app/index.tmpl.html"}),new webpack.HotModuleReplacementPlugin()//热加载插件],devServer: {colors: true,historyApiFallback: true,inline: true,hot: true}
}
安装react-transform-hmr:npm install --save-dev babel-plugin-react-transform react-transform-hmr
配置Babel :
{"presets": ["react", "es2015"],"env": {"development": {"plugins": [["react-transform", {"transforms": [{"transform": "react-transform-hmr","imports": ["react"],"locals": ["module"]}]}]]}}
}
使用React时,可以热加载模块了。
webpack配置文件:webpack.config.js(一)相关推荐
- VUE-CLI可选的配置文件vue.config.js
VUE-CLI可选的配置文件 vue.config.js 整理自官方文档,仅供博文https://blog.csdn.net/qq_28550263/article/details/120633610 ...
- vue - vue的配置文件vue.config.js介绍
文章目录 前言: 常用配置项如下: 常用配置项说明: 前言: 注意: 使用 vue-cli 3.x 以上的脚手架创建的 vue 项目不再有 build 文件夹,若需要进行相关配置,需在项目目录下新建文 ...
- Vue中使用配置文件vue.config.js简化文件夹路径
一.首先创建vue.config.js(名字不能更改) 二.使用vue.config.js为常用的文件路径进行标识 module.exports = {configureWebpack: {resol ...
- (三)01 -Vue项目打包发布移动App——vue.config.js中配置相对路径publicPath为空字符串 在public中添加HBuilderX的打包配置文件manifest.json
Vue 项目打包发布移动 App--npm run build打包 & vue.config.js文件中配置相对路径publicPath为空字符串 & 在 public中添加HBuil ...
- 初识webpack与webpack环境搭建
文章目录 认识webpack配置文件 webpack配置结构 环境搭建安装Node.js和NPM NVM安装 Nodejs和NPM安装 环境搭建安装webpack和webpack-cli 创建空目录和 ...
- tailwindcss 官网(六)定制:配置( `tailwind.config.js `、-p、important、核心插件、`resolveConfig`)、主题 `theme` 配置
tailwindcss 官网(六)定制:配置( tailwind.config.js.-p.important.核心插件.resolveConfig).主题 theme 配置 文章目录 tailwin ...
- webpack 3 零基础入门教程 #4 - webpack 的配置文件 webpack.config.js
在命令行中运行 webpack 命令确实可以实现 webpack 的功能,但是我们一般不这么做,我们要用配置文件来处理. 我们把之前学到的知识用 webpack 的配置文件来实现,配置文件的名字叫 w ...
- vue-cli的webpack模版,相关配置文件dev-server.js与webpack.config.js配置解析
1.下载vue-cli [html] view plain copy npm install vue-cli -g vue-cli的使用与详细介绍,可以到github上获取https://github ...
- Vue 2 中,使用Vite作为前端构建开发工具,替代webpack(一)——vite.config.js配置文件
Vue 2 中,使用Vite作为前端构建开发工具,替代webpack(一)--vite.config.js配置文件 当前版本 vite@2.3.7和vite@2.4.4 "vite" ...
最新文章
- Vue-Layout:可视化布局、自动生成代码工具
- SCDPM2012功能测试(4)—配置通知
- 第二章:2.1 微分方程、差分方程求解(举例)
- yolo配置文件以及训练时各参数的定义
- Drupal 为前台(Front page)页面添加区域(Regions)
- 粗谈MySQL事务的特性和隔离级别
- 面向对象设计原则之2-开放闭合原则
- ctfmon是什么启动项_启动项里ctfmon是什么意思,干什么用的??
- c语言std变量,10-C ++中的变量
- android空格对齐
- java8 collections_关于Jdk7与Jdk8对Collections进行分组的区别
- 假设检验之t检验详解
- 2021-11-13 变电站综合自动化 二次系统安全
- php调用海康人脸识别摄像机,海康网络摄像机SDK对接
- 多聚赖氨酸大鼠血清白蛋白纳米粒|微囊藻毒素小麦麦清白蛋白纳米粒|雌三醇乳清白蛋白纳米粒Estriol-whey protein
- CAD删除全部文字(网页版)
- matlab实训助教总结,助教自我评价简历范文
- {“error“:“incorrect region, please use up-z1.qiniup.com“}
- Linux 文件系统(2)sda sdb 和 SATA IDE SCSI
- 认真学习设计模式之委派模式(Delegate Pattern)