博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(入门)使用webpack 4.x定制自己的react开发环境
阅读量:5993 次
发布时间:2019-06-20

本文共 5423 字,大约阅读时间需要 18 分钟。

概述webpack配置,以及插件的使用和介绍

推荐升级webpack4,总结一下优势。

  • webpack 4 更快(速度提升98%)!
  • Mode, 零配置以及默认值 在配置中需要加上 --mode development 或者是--mode production 来标注你的开发环境 不加会warn不报错
  • WebAssembly 支持
  • 支持 webpack 4。甚至最流行的库例如 lodash-es, RxJS 已经支持 sideEffects 选项,因此使用它们的最新版后你会发现打包体积会大幅度的减小。
  • 太多了,详细请移步

工欲善其事必先利其器

温馨tips:默认已经装好node开发环境,版本不低于6.11。下载node->>>> 我这里使用的yarn来进行环境搭建。语法和npm差别不大。

npm install -g yarn        //创建目录  webpackEnv        //进入webpackEnv  yarn init,创建工程化目录已经一些信息,可以直接enter,项目目录下会自动生成package.json        yarn add webpack webpack-dev-server babel-core babel-loader babel-preset-es2015 babel-preset-stage-0 style-loader css-loader less-loader file-loader url-loader html-webpack-plugin  babel-preset-react webpack-cli --dev        or        npm install webpack webpack-dev-server babel-core babel-loader babel-preset-es2015 babel-preset-stage-0 style-loader css-loader less-loader file-loader url-loader html-webpack-plugin  babel-preset-react webpack-cli --save-dev        复制代码

package.json里面就是这些依赖包(文章最后我会解释一下这些包的作用)

{  "name": "zhReactNEW",  "version": "1.0.0",  "main": "index.js",  "license": "MIT",  "devDependencies": {    "babel-core": "^6.26.0", //编译源码到其他源码 babel主要工作的核心模块    "babel-loader": "^7.1.4",//babel加载其他loader的主要模块                                //babel-preset 系列打包了一组插件    "babel-preset-es2015": "^6.24.1", //打包了 es6 的特性    "babel-preset-react": "^6.24.1",//编译react  jsx的文件    "babel-preset-stage-0": "^6.24.1",//S7一些提案的支持,Babel通过插件的方式引入,让Babel可以编译ES7代码    "css-loader": "^0.28.11",   //css的兼容前缀prefx都会自动处理 配合style-loader使用    "file-loader": "^1.1.11",//引入其他文件    "html-webpack-plugin": "^3.2.0",//引入html模板    "less-loader": "^4.1.0", //编译less    "style-loader": "^0.20.3", //css文件作为

准备工作已经做好,开始配置环境

进入webpackEnv,此时有package.json,node_modules,yarn.lock。在当前位置创建index.html(如页面入口)和一个src文件夹(用来存放源文件)

创建webpack.config.js 来进行关键的 webpack配置。webpack.config.js文件通常放在项目的根目录中,它本身也是一个标准的Commonjs规范的模块。

1,首先要暴露出一个模块,这是webpack去引入的配置,作为模块开发最基本的东西。    module.exports  = {            }    2,定义主文件的入口和最终打包的位置已经名字。    let path = require('path');//这里需要引用path这个模块    module.exports  = {        entry:"./src/index.js",//webpack打包入口js文件,我在src下面创建了一个index.js        output:{            filename:'bundle.js',//打包输入文件的名字            path:path.resolve('./dist'),//这里需要引入node内置的模块path,path.resolve方便我们解析路径片段(./dist)为绝对路径        }    }        3,module--模块的加载相关,我们就定义在module.rules(为什么不是loaders,下面有解释)中。这里通过正则表达式去匹配不同后缀的文件名,然后给它们定义不同的加载器。比如说给less文件定义串联的三个加载器:    module.exports  = {        ...        module:{            rules:[                {                    test:/\.js$/,                    use:"babel-loader",                    exclude:/node_modules/                },                {                    test:/\.css$/,                    use:["style-loader","css-loader"],                },                {                    test:/\.less$/,                    use:["style-loader","css-loader","less-loader"],                }            ]        },    }    复制代码

有人问我为什么不是。module.loaders,这也算webpack升级的一个改进,因此这里为了避免兼容问题,小伙伴还是使用rules.好一点

同时介绍一个插件html-webpack-plugin 作用:这里同时会使用一个插件来渲染主页面html,简单做一个介绍 简化了html文件的创建,同时会把打包的webpack其他文件自动引入到html中,使用起来还是非常舒服的

...    let HtmlWebpackPlugin = require('html-webpack-plugin')    module.exports = {        ...        plugins:[            new HtmlWebpackPlugin({                template:'./index.html'            })        ]    }复制代码

最后配置一个Babel的presets配置,这里是来配置babel中的解析规则, 创建一个.babelrc文件

//"presets":["babel-preset-es2015","babel-preset-stage-0","babel-preset-react"]  这里babel-preset是可以省略不写的    "presets":["es2015","stage-0","react"]复制代码

我们现在来说明下这个配置文件是什么意思。首先,这个配置文件是针对babel 6的。Babel 6做了一系列模块化,不像Babel 5一样把所有的内容都加载。比如需要编译ES6,我们需要设置presets为"es2015",也就是预先加载es6编译的相关模块,如果需要编译jsx,需要预先加载"react"这个模块。那问题来了,这个"stage-0"又代表什么呢?

事实上, ”stage-0"是对ES7一些提案的支持,Babel通过插件的方式引入,让Babel可以编译ES7代码。当然由于ES7没有定下来,所以这些功能随时肯能被废弃掉的。

这里大体上就已经给webpack配置完毕了。

在src/index.js中加入一些内容来添加主文件。

alert(1);复制代码

见证奇迹的时候,

wait:在命令窗里输入webpack太low 我们来配置一下 快捷命令

打开pakepage.json

{    ...  "scripts": {    "dev": "webpack-dev-server --mode development",    "build": "webpack --mode production"  }}复制代码

这里配置scripts 之后就可以用 npm run *** (dev/build) 来启动webpack-dev-server 或者build了 为什么后面要加--mode development/production 这里也是webpack4的一些优化,制定开发环境 不写默认是development,会用warn警告但不会报错。

激动人心的时刻来了 执行 npm run dev 浏览器打来 localhost:8080

页面是否alert(1),,此时,一个webpack开发环境我们已经搭建好了。

如果想了解简单开发一个react jsx 请再耽误您几分钟时间

我们需要安装 react react-dom 俩个包。

yarn add react react-dom --dev    复制代码

我们还需要配置webpack支持我们编译jsx文件

//原来的编译js配置 添加一下jsx (为什么直接添加就可以,我们再babel里面配置了编译react,因此直接添加就可以了)   //修改之前的            {                test:/\.js$/,                use:"babel-loader",                exclude:/node_modules/            },                //修改之后的                {                test:/\.(js|jsx)$/,                use:"babel-loader",                exclude:/node_modules/            },       复制代码

修改一下我们的入口文件 在src/index.js中加入一些内容来添加主文件,在里面引入随便写的一个react组件。 //index.js

import React from 'react';import ReactDOM from 'react-dom';import App from './app.jsx';ReactDOM.render(
, document.getElementById('root'));复制代码

同级目录下创建一个app.jsx的文件 //app.jsx

import React, { Component } from 'react';class App extends Component {    render() {        return (            
hello,webpack
); }}export default App;复制代码

此时,重新执行一下 npm run dev, 打开浏览器 localhost:8080 是不是已经出现了内容,然后我们就可以进行我们需要的react开发了。

只有非常努力,才能看起来毫不费力

转载于:https://juejin.im/post/5ac9d052f265da237314b92c

你可能感兴趣的文章
spring源码阅读笔记(二)——自定义标签
查看>>
9.6 awk(上) 9.7 awk(下)
查看>>
单例模式泛型类
查看>>
Mac OS X的利器dtrace,能实现process/file monitor,特别便于排错
查看>>
android自定义属性
查看>>
maven私服安装
查看>>
RocketMQ消息堆积判断
查看>>
Ubuntu搭建FTP服务器
查看>>
URI和URL的区别与联系
查看>>
django signal
查看>>
方便理解的接口
查看>>
Spring 统一异常处理
查看>>
TM2012 Beta1体验版诚邀体验
查看>>
Eclipse 快捷键
查看>>
值类型与引用类型的区别
查看>>
Session的序列化
查看>>
我的友情链接
查看>>
数据中心服务器托管VMware虚拟化网络配置最佳实践
查看>>
汇总各浏览器核心(js引擎及排版引擎)深究
查看>>
SaltStack的配置管理--jinja
查看>>