前端之家收集整理的这篇文章主要介绍了
webpack入门+react环境配置,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
小结放在前:这篇文章主要是为下一篇的react提前铺好路,webpack是一个前端资源模块化管理和打包工具,说白了就是方便我们管理自己的常用的一些代码,比如你开发中用到sass以及jade同时用到es6,开发时你不可能改动某个地方就挨个命令去转换在到浏览器去看效果,那样效率是非常低的。所以webpack帮我们省去了那些多余的步骤
webpack 基本安装
开始前还是万万不能缺少的安装:
npm install webpack -g
安装完接着是建个文件夹新建一个package.json依赖管理文件
npm init //运行后 按提示填写 当然嫌麻烦 就直接下一步 下一步就好 无伤大碍
现在安装我们的webpack
文件里
完后新建一个文件并命名为webpack.config.js(如同我们的常规的 gulpfile.js、Gruntfile.js),就是一个配置项,告诉 webpack 它需要做什么。
打开webpack.config.js引入webpack
var webpack = require('webpack');
webpack 基本入门
webpack主要结构分三个:入口文件配置(entry)、入口文件输出配置(output)、加载器配置(module)、其他配置(resolve)
入口文件配置
入口文件输出配置
文件存放的位置
output: {
path: 'dist/js',//编译后
文件所在的
文件夹
filename: '[name].js' //根据入口
文件名命名编译后的
文件名,编译后
文件还是叫main.js
},
加载器配置
文件都需要使用什么加载器来处理
loaders: [
{ test: /\.css$/,loader: 'style-loader!
css-loader' },{ test: /\.js$/,loader: 'jsx-loader?harmony' },{ test: /\.scss$/,loader: 'style!css!sass?sourceMap'},{ test: /\.(png|jpg)$/,loader: 'url-loader?limit=8192'}
]
},
其他配置
自动扩展
文件后缀名,意味着我们require模块可以省略不写后缀名
extensions: ['','.js','.json','.scss']
}
ok!好记忆不如烂笔头,现在我们来自己搭建一个react的开发环境吧!
先参考我的目录结构

文件,development存放react代码的文件夹,components存放react组件的文件夹,node_modules存放安装的依赖
我们先要安装一些项目依赖:
css-loader sass-loader url-loader
npm install --save-dev webpack-dev-server
//
自动刷新
修改后的结果,在webpack.config.js中配置webpack-dev-server,
//在这里需要
修改下entry的路径,给它加一个webpack/hot/dev-server,后文会提到
要是安装失败那就分开一个个装,还不行就用淘宝的cnpm装 ,还不行就看看你的node和npm的环境变量等配置(亲身体会T_T)
npm install cnpm -g
webpack.config.js
文件的配置如下:
文件并
添加了热加载
output: {
path: path.resolve(__dirname,'./build'),filename: 'bundle.js' //
输出文件
},module: {
loaders: [
{
test: /\.js?$/,exclude: /(node_modules|bower_components)/,loader: 'babel',query: {
presets: ['es2015','react']
} //将react编译成js
文件
},{ test: /\.css$/,//打包css
文件
{ test: /\.scss$/,//编译sass
文件
{ test: /\.(png|jpg)$/,loader: 'url-loader?limit=8192'}
//对
图片进行打包
]
},plugins: [
new webpack.HotModuleReplacementPlugin()
],resolve: {
//
自动扩展
文件后缀名
extensions: ['','.scss','.ts']
}
};
main.js
内容如下:
,document.getElementById('content'));