webpack 1.x构建react项目简单配置
来源:互联网 发布:知乎 渡边信一郎 编辑:程序博客网 时间:2024/06/06 03:45
这是我16年下半年开始接手的项目,当时刚学react和webpack相关的东西,这里稍微整理下。
直接上配置代码
这是开发配置
var path = require('path');var webpack = require('webpack');// var OpenBrowserPlugin = require('open-browser-webpack-plugin');var HtmlwebpackPlugin = require('html-webpack-plugin');var ExtractTextPlugin = require("extract-text-webpack-plugin"); //css单独打包//定义了一些文件夹的路径var ROOT_PATH = path.resolve(__dirname);// var APP_PATH = path.resolve(ROOT_PATH, 'app/js');var APP_PATH = path.resolve(ROOT_PATH, 'app');var BUILD_PATH = path.resolve(ROOT_PATH, 'build');//Template的文件夹路径var TEM_PATH = path.resolve(ROOT_PATH, 'app/templates');module.exports = { //项目的文件夹 可以直接用文件夹名称 默认会找index.js 也可以确定是哪个文件名字 entry: { //入口文件 index: path.resolve(APP_PATH, 'index.js') //添加要打包在commons里面的库 // vendors: ['jquery', 'react', 'react-dom' ] // utils: ['./common/url', './common/formatDate'] }, //输出的文件名 合并以后的js会命名为bundle.js output: { path: BUILD_PATH, //注意 我们修改了bundle.js 用一个数组[name]来代替,他会根据entry的入口文件名称生成多个js文件,这里就是(app.js,mobile.js和vendors.js) //上hash这个参数生成Hash名称的script来防止缓存 filename: '[name].[chunk:5].js' }, externals: { 'jquery': 'jQuery', 'react': 'React', 'react-dom': 'ReactDOM', 'antd': 'antd' }, devtool: 'cheap-module-eval-source-map', devServer: { historyApiFallback: true, hot: true, inline: true, colors: true, port: 8888, proxy: { '/api/*': { target: 'http://localhost:8080', changeOrigin: true, secure: false } } }, resolve: { extensions: ['', '.js', '.jsx', '.less', '.scss', '.css']//后缀名自动补全 }, module: { loaders: [ { test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader') }, { test: /\.(png|jpg)$/, //注意后面那个limit的参数,当你图片大小小于这个限制的时候,会自动启用base64编码图 // loader: 'url?limit=8192&name=images/[hash:8].[name].[ext]' loader: 'url?limit=8192&name=images/[name].[ext]' }, { test: /\.jsx?$/, loader: 'babel-loader', // include: APP_PATH, exclude: /node_modules/, query: { plugins: [ ["import", { libraryName: "antd", style: "css" }] ],// `style: true` 会加载 less 文件 presets: ['es2015', 'react'] } }, { test: /\.less$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader!less-loader') } ] }, plugins: [ new ExtractTextPlugin('[name].css'), //创建了两个HtmlWebpackPlugin的实例,生成两个页面 new HtmlwebpackPlugin({ title: 'demo', template: path.resolve(TEM_PATH, 'index.html'), filename: 'index.html', //chunks这个参数告诉插件要引用entry里面的哪几个入口 chunks: ['index'], //要把script插入到标签里 inject: 'body' }), //自动打开该页面 // new OpenBrowserPlugin({ // url: 'http://127.0.0.1:8888' // }), new webpack.HotModuleReplacementPlugin() ]};
这是生产配置
var path = require('path');var webpack = require('webpack');// var OpenBrowserPlugin = require('open-browser-webpack-plugin');var HtmlwebpackPlugin = require('html-webpack-plugin');var ExtractTextPlugin = require("extract-text-webpack-plugin"); //css单独打包var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin'); // 压缩css的插件//定义了一些文件夹的路径var ROOT_PATH = path.resolve(__dirname);// var APP_PATH = path.resolve(ROOT_PATH, 'app/js');var APP_PATH = path.resolve(ROOT_PATH, 'app');var BUILD_PATH = path.resolve(ROOT_PATH, 'dist');//Template的文件夹路径var TEM_PATH = path.resolve(ROOT_PATH, 'app/templates');var config = module.exports = { //项目的文件夹 可以直接用文件夹名称 默认会找index.js 也可以确定是哪个文件名字 entry: { //入口文件 index: path.resolve(APP_PATH, 'index.js') // mobile: path.resolve(APP_PATH, 'mobile.js'), //添加要打包在commons里面的库 // vendors: ['jquery', 'react', 'react-dom' ] // antd: ['antd'] // utils: ['./common/url', './common/formatDate'] }, //输出的文件名 合并以后的js会命名为bundle.js output: { path: BUILD_PATH, //注意 我们修改了bundle.js 用一个数组[name]来代替,他会根据entry的入口文件名称生成多个js文件,这里就是(app.js,mobile.js和vendors.js) //上hash这个参数生成Hash名称的script来防止缓存 filename: '[name].[chunkhash:6].js', }, externals: {//剔除单独引入的第三方库 'antd': 'antd', // 'react': 'React', // 'react-dom': 'ReactDOM', // 'jquery': 'jQuery' }, devtool: 'source-map', resolve: { extensions: ['', '.js', '.jsx', '.less', '.scss', '.css']//后缀名自动补全 }, module: { loaders: [ { test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader') }, { test: /\.(png|jpg)$/, //注意后面那个limit的参数,当你图片大小小于这个限制的时候,会自动启用base64编码图 loader: 'url?limit=8192&name=images/[hash:8].[name].[ext]' }, { test: /\.jsx?$/, loader: 'babel-loader', // include: APP_PATH, exclude: /node_modules/, query: { presets: ['es2015', 'react'], plugins: ['transform-runtime', ['import', { libraryName: 'antd', style: 'css' }]] } }, { test: /\.less$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader!less-loader') } ] }, plugins: [ //以下配置可以告诉 React 当前是生产环境,请最小化压缩 js ,即把开发环境中的一些提示、警告、判断通通去掉,直流以下发布之后可用的代码。 new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify('production') //定义生产环境 } }), //把入口文件里面的数组打包成verdors.js // new webpack.optimize.CommonsChunkPlugin('vendors','commons/vendors.js'), // new webpack.optimize.CommonsChunkPlugin( // { // names: ['vendors'], // // filenames: ['vendors.js', 'utils.js'], // filename: '/js/[name].[chunkhash:6].js', // minChunks: Infinity // }), new ExtractTextPlugin('[name].[chunkhash:6].css'), //创建了两个HtmlWebpackPlugin的实例,生成两个页面 new HtmlwebpackPlugin({ title: 'title', template: path.resolve(TEM_PATH, 'index.html'), filename: 'dist/tggl.html', //chunks这个参数告诉插件要引用entry里面的哪几个入口 // chunks: ['posterManage', 'vendors'], chunks: ['extendManage'], //要把script插入到标签里 inject: 'body' }), //压缩css new OptimizeCssAssetsPlugin({ assetNameRegExp: /\.optimize\.css$/g, cssProcessor: require('cssnano'), cssProcessorOptions: { discardComments: {removeAll: true } }, canPrint: true }), //这个使用uglifyJs压缩你的js代码 new webpack.optimize.UglifyJsPlugin({ output: { comments: false, // 去掉所有注释 }, compress: {//去掉警告和打印之类的 warnings: false, drop_debugger: true, drop_console: true } }) ]};
阅读全文
1 0
- webpack 1.x构建react项目简单配置
- webpack构建react项目
- React配合Webpack构建项目
- ES6+React+Webpack初步构建项目流程
- React+Webpack+Nodejs+Express快速构建项目
- webpack构建React应用一:创建项目
- 前端学习 | 使用webpack构建React项目
- webpack+es6+angular1.x项目构建
- react+webpack构建步骤
- React+Webpack构建环境
- 开始一个React项目(一)一个最简单的webpack配置
- webpack构建vue项目(配置篇)
- webpack构建vue项目(配置篇)
- webpack构建vue项目(配置篇)
- vue配置 webpack构建vue项目
- webpack构建vue项目(配置篇)
- webpack构建react项目和处理组件的依赖
- 从零开始-使用React+Webpack+Nodejs+Express快速构建项目
- hiho #1532 : 最美和弦(记忆化搜索思路的DP写法)
- 笨方法学python(本文为阅读时从此书摘录的笔记) 第四天
- 免费的h5下载网站,资源。
- CNTK API文档翻译(9)——使用自编码器压缩MNIST数据
- 5-30 字符串的冒泡排序 (20分)
- webpack 1.x构建react项目简单配置
- React 开发必备插件 React Developer Tools
- 割点
- 驱动框架3——初步分析led驱动框架源码
- ubuntu16.04+caffe训练mnist数据集
- C++面试问题详解
- 自定义枚举相关。
- 二维数组中的查找+旋转数组的最小数字+跳台阶迭代+求幂次+调整数组使奇数位于偶数之前
- Leetcode# 268. Missing Number(异或)