webpack项目搭建
来源:互联网 发布:java开发工程师 拉钩 编辑:程序博客网 时间:2024/05/17 06:34
一、功能说明
1.热更新
2.支持less,es6,react的jsx转化
3.生产环境开发环境配置
4.chunkhash
5.文件打包压缩、图片压缩
6.自动生成html引入打包后的资源
7.css3浏览器自动兼容
二、创建文件目录
1.新建一个文件夹myReactWebapp
2.cmd进入这个文件夹下init,然后再进行插件安装(第三部分介绍)
3.新建一个index.html和index.js
三、插件下载
这里说明一下 --save-dev和--savede区别:前者是本地需要的依赖,就是在开发过程中需要的依赖,上线时候不用管这些插件,--save则是项目运行在浏览器上需要的依赖。
(注意一下packjson文件里面)
npm i webpack --save-dev
npm i webpack-dev-erver --save-dev //本地服务
npm i autoprefixer-loader --save-dev css前缀自动补全插件
npm i babel-core --save-dev
npm i babel-loader --save-dev
npm i babel-preset-es2015 --save-dev
npm i babel-preset-react --save-dev //这里如果是react项目就下载
npm i css-loader --save-dev
npm i file-loader --save-dev
npm i html-webpack-plugin --save-dev
npm i image-webpack-loader --save-dev
npm i less --save-dev
npm i less-loader --save-dev
npm i style-loader --save-dev
npm i uglifyjs-webpack-plugin --save-dev //文件压缩
这里我贴出我的package.json文件,可以按照里面的去下载,上述所列举的也已经够了,里面有些可以不需要。
{ "name": "suzhe", "version": "1.0.0", "description": "react webapp", "main": "index.js", "scripts": { ---------这里配置一些启动命令(npm run build---相当于直接执行webpack) "build": "webpack", "dev": "webpack-dev-server --devtool eval --progress --colors --content-base build", "dist": "webpack --devtool sourcemap --progress --profile --colors --config webpack.production.config.js" }, "author": "su", "license": "ISC", "devDependencies": {---------------------本地依赖的插件 "autoprefixer-loader": "^3.2.0", "babel-core": "^6.25.0", "babel-loader": "^7.1.1", "babel-preset-es2015": "^6.24.1", "babel-preset-react": "^6.24.1", "chunk-manifest-webpack-plugin": "^1.1.0", "css-loader": "^0.28.4", "file-loader": "^0.11.2", "html-webpack-plugin": "^2.29.0", "image-webpack-loader": "^3.3.1", "jsx-loader": "^0.13.2", "koa": "^2.3.0", "koa-body": "^2.3.0", "koa-router": "^7.2.1", "less": "^2.7.2", "less-loader": "^4.0.4", "style-loader": "^0.18.2", "uglifyjs-webpack-plugin": "^0.4.6", "url-loader": "^0.5.9", "webpack": "^2.2.1", "webpack-chunk-hash": "^0.4.0", "webpack-dev-server": "^2.5.0", "webpack-manifest-plugin": "^1.1.0" }, "dependencies": {-------------------线上依赖的插件 "es6-promise": "^4.1.1", "react": "^15.6.1", "react-dom": "^15.6.1", "react-redux": "^5.0.5", "react-router": "^4.1.1", "redux": "^3.7.1", "whatwg-fetch": "^2.0.3" }}四、webpack配置(webpack.config.js)
var path = require('path'), webpack = require('webpack'), HtmlWebpackPlugin = require('html-webpack-plugin');------------引入需要的插件module.exports = { entry: { main: "./index.js", ------这是入口文件 }, output: { path: path.join(__dirname, "build"), -----------打包之后的出口文件 filename: "bundle.js", }, devServer: {-----------------------------本地服务 监听8080端口 inline: true, port: 8080 }, module: { loaders: [ //less loader { test: /\.css$/, loaders: ['style-loader', 'css-loader', 'autoprefixer-loader'] }, { test: /\.less$/, loaders: ['style-loader', 'css-loader', 'autoprefixer-loader', 'less-loader'] }, { -------------------------------es6 jsx(注意babelrc) test: /\.js$/, exclude: /node_modules/, loader: "babel-loader", query: { presets:['es2015','react'] } }, { test: /\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/, loaders: [ 'file-loader?limit=25000&name=images/[hash:8].[name].[ext]',-----------------在build文件夹下生成images文件夹存放图片 'image-webpack-loader?{pngquant:{quality: "65-90", speed: 4}, mozjpeg: {quality: 65}}' ----------------图片压缩 ] } ] }, plugins: [ new HtmlWebpackPlugin({-----------自动生成html打包后并引入相关的资源 template: './index.html', favicon:'./src/img/1.jpg', cache:false, }), new webpack.HotModuleReplacementPlugin(), ---------------热更新 new webpack.optimize.UglifyJsPlugin({-----------------文件压缩 output: { comments: false, }, compress: { warnings: false } }) ]}如果要发布到生产环境
修改配置文件
var path = require('path'), webpack = require('webpack'), HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = { entry: { main: "./index.js" }, output: { path: path.join(__dirname, "product"), filename: "[name].[chunkhash].js",----------------增加一个chunkhash 文件缓存 }, module: { loaders: [ //less loader { test: /\.css$/, loaders: ['style-loader', 'css-loader', 'autoprefixer-loader'] }, { test: /\.less$/, loaders: ['style-loader', 'css-loader', 'autoprefixer-loader', 'less-loader'] }, { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader", query: { presets:['es2015','react'] } }, { test: /\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/, loaders: [ 'file-loader?limit=25000&name=images/[hash:8].[name].[ext]', 'image-webpack-loader?{pngquant:{quality: "65-90", speed: 4}, mozjpeg: {quality: 65}}' ] } ] }, devtool: 'sourcemap', plugins: [ new HtmlWebpackPlugin({ template: './index.html', favicon:'./src/img/1.jpg', cache:true,----------------设置为true,不知道生不生效没有测出来 }), new webpack.HotModuleReplacementPlugin(), new webpack.optimize.UglifyJsPlugin({ output: { comments: false, }, compress: { warnings: false } }), new webpack.optimize.CommonsChunkPlugin({-----------这个作用就是将公共代码提取出来放到commonjs里面 name:'common', // 注意不要.js后缀 filename: "commons.js", chunks: 'main' }), ]}
通过packjson里面script的配置我们可以使用npm命令来进行项目的打包运行
到这里基本上可以实现从项目创建到打包到运行,后续会在这个基础上实现一个react小项目,并补充文件的拆分,css、js、img等,webpack太深,继续学习。
代码地址:https://github.com/wineSu/myReact
- webpack项目搭建
- webpack + vue项目搭建
- webpack搭建项目入门
- express+webpack+react搭建项目
- React + webpack 快速搭建项目
- Angular2 + Webpack项目搭建Demo
- 搭建自己的Webpack项目
- 手动webpack搭建vue2项目
- 搭建vue + webpack项目环境
- vue + webpack 项目环境搭建
- 项目实战:webpack的搭建
- webpack & react项目搭建一:环境
- 基于React+webpack的项目环境搭建
- express+webpack+vue.js项目搭建
- vue-cli脚手架搭建webpack+vue项目
- 使用webpack搭建一个react项目
- Webpack+React+ES6项目搭建(一)
- 使用vue-cli搭建webpack模板项目
- 欢迎使用CSDN-markdown编辑器
- C/C++ 在处理文件所在路径下创建子目录
- struts2工作流程
- 利用一条SQL从表中抽取一定数据
- Plan
- webpack项目搭建
- jq 点击元素其他区域 该元素隐藏
- python学习5——集合
- 杭电 2048
- HBase性能优化方法总结
- 详解Hive-Driver——细读Hive源码(四)
- OFBIZ
- System.Data.SQLite错误,
- jzoj1277 最高的奶牛