webpack中文文檔css
yarn add webpack@3.10.1 --dev
yarn add webpack-dev-server@2.9.7 --dev
建立webpack.config.js文件html
const path = require('path'); module.exports = { entry: './src/app.js', //入口文件 output: { path: path.resolve(__dirname, 'dist'), filename: 'app.js' } };
執行命令node
node_module/.bin/webpack
htmlWebpackPluginreact
// 安裝html-webpakc-plugin yarn add html-webpack-plugin --dev
自定義html模版(title,mate等信息)webpack
配置連接git
// webpack.config.js文件 plugins: [ new HtmlWebpackPlugin({ template: './src/index.html' }) ]
參考連接github
// 安裝 // 多個插件之間空格分隔 yarn add babel-core@6.26.0 babel-present-env@1.6.1 babel-loader@7.1.2 --dev // webpack.config.js配置 module: { rules: [ { test: /\.js$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'], plugins: [require('@babel/plugin-transform-object-rest-spread')] } } } ] }
babel-preset-react
web
//babel-preset-react yarn add babel-preset-react@6.24.1 --dev
// 安裝react react-dom yarn add react react-dom
style-loader
與css-loader
json
module:{ rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] }
ExtractTextWebpackPlugin
後端
ExtractTextWebpackPlugin: 將包或包中的文本提取到單獨的文件中。
配置
const ExtractTextPlugin = require('extract-text-webpack-plugin'); module:{ rules: [ { test: /\.css$/, use: ExtractTextPlugin.extract({ fallback: "style-loader", use: "css-loader" }) } ] }, plugins: [ new ExtractTextPlugin("styles.css"), ]
sass-loader
,sass-loader
依賴node-sass
與webpack
yarn add sass-loader node-sass
用
file-loader
與url-loader
處理圖片資源,url-loader
依賴file-loader
// 安裝 yarn add url-loader file-loader --dev // 配置 module: { rules: [ { test: /\.(png|jpg|gif)$/, use: [ { loader: 'url-loader', options: { limit: 8192 } } ] } ] }
yarn add font-awesome // jsx中引入css import 'font-awesome/css/font-awesome.min.css';
new webpack.optimize.CommonsChunkPlugin({ name: 'common', filename: 'js/base.js' })
// 安裝 yarn webpack-dev-server@2.9.7 // webpack.config.js中 配置 devServer: { contentBase: './dist' port: 8086 } // 更改啓動方式 package.json "scripts": { "dev" : "node_modulse/.bin/webpack-dev-server", "dist": "node_modules/.bin/webpack -p" //添加-p爲線上打包 }
object
配置模塊如何解析,例如,擋在ES2015中調用import "loadsh"
, resolve
選項可以對webpack查找"lodash"
的方式去作修改。
object
建立import
或require
的別名,來確保模塊引入變得更簡單,例如一些位於src/
文件夾下的經常使用模塊
// webpack.config.js 配置 module.exports = { // ... resolve: { alias: { Utilities: path.resolve(__dirname, 'src/utilities/'), Templates: path.resolve(__dirname, 'src/templates/') } } }
如今,替換【在導入時使用相對路徑】這種方式,就像這樣:
import Utility from '../../utilities/utility';
能夠這樣使用別名
import Utility from 'Utilities/utility';
當使用 HTML5 History API
時,任意的 404 響應均可能須要被替代爲 index.html
。經過傳入如下啓用:
module.exports = { // ... devServer = { historyApiFallback: { index: '/dist/index.html' } } }
devServer.proxy
若是你有單獨的後端開發服務器 API,而且但願在同域名下發送 API 請求 ,那麼代理某些 URL 會頗有用(能夠避免瀏覽器跨域報錯)。
在 localhost:3000 上有後端服務的話,你能夠這樣啓用代理:
// webpack.config.js配置 module.exports = { // ... devServer: { proxy: { '/api': 'http://localhost:3000' } } }
請求到 /api/users
如今會被代理到請求 http://localhost:3000/api/users
。
module.exports = { // ... devServer: { proxy: { '/manage': { target: 'http://admintest.happymmall.com', changeOrigin: true }, '/user/logout.do': { target: 'http://admintest.happymmall.com', changeOrigin: true } } } }