安裝
1.cnpm i webpack webpack-cli
2.模塊局部安裝會在node_modules/.bin/webpack目錄創(chuàng)建軟鏈接
基礎(chǔ)
entry
依賴入口
// 單入口奶镶,SPA
entry: 'xx/xx.js'
// 多入口,MPA
entry: {
? ? app: './src/app.js',
? ? adminApp: './src/adminApp.js'
}
output
指定打包后的輸出
output: {
? ? filename: '[name].js',
? ? path: path.resolve(__dirname,'dist') // 單入口可以寫死文件名,多入口一定要使用占位符[name],來自動生成多個文件
}
Mode
有開發(fā)(development)和生產(chǎn)(production)模式
Plugins
Loaders
webpack開箱即用只支持JS和JSON兩種文件類型夜矗,通過Loader去支持其他文件類型并把他們轉(zhuǎn)化為有效的模塊狱从,并且可以添加到依賴圖中。
本身是一個函數(shù)海洼,接受源文件作為參數(shù),返回轉(zhuǎn)化的結(jié)果休里。
例如: babel/ts-loader蛆挫、css/less/scss-loader、url/file-loader妙黍、raw-loader(將.txt文件以字符串的形式導(dǎo)入)悴侵、thread-loader(多進程打包js和css)
module: {
? ? rules: [
? ? ? ? { test: /.txt$/,use: 'raw-loader' },
? ? ? ? { test: /.css$/,use: [
? ? ? ? ? ? loader: 'css-loader',
? ? ? ? ? ? options: {
? ? ? ? ? ? ? ? modules: {
? ? ? ? ? ? ? ? ? ? localIdentName: '[path][name]__[hash:base64:5]'
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ]}
? ? ]
}
解析ES6
1.使用babel-loader、babel的配置文件.babelrc
2.安裝babel-loader拭嫁、@babel/core@babel/preset-env
// webpack.config.js
module: {
? ? rules: [
? ? ? ? { test: /.js?x$/, use: 'babel-loader', exclude: /node_modules/ }
? ? ]
}
// .babelrc
{
? ? "presets": [
? ? ? ? "@babel/preset-env",
? ? ? ? "@babel/preset-react"
? ? ],
? ? "plugins": [
? ? ? ? // 各種插件
? ? ? ? "@babel/propsoal-class-properties"
? ? ]
}
css/less/scss-loader
1.css-loader用于加載.css文件可免,并且轉(zhuǎn)換成common對象
2.style-loader將樣式通過style標簽,插入到head中
// use: [ loader1,loader2,loader3 ] , loader的處理順序是3>2>1 , 從后往前
module: {
? ? rules: [
? ? ? ? {
? ? ? ? ? ? test: /.s?css$/,
? ? ? ? ? ? use: [
? ? ? ? ? ? ? ? isDev ? 'style-loader' : MiniCssExtractPlugin.loader
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? loader: 'css-loader',
? ? ? ? ? ? ? ? ? ? options: {
? ? ? ? ? ? ? ? ? ? ? ? importLoaders: 1,
? ? ? ? ? ? ? ? ? ? ? ? // css模塊化使用
? ? ? ? ? ? ? ? ? ? ? ? modules: {
? ? ? ? ? ? ? ? ? ? ? ? ? ? localIdentName: '[path][name]__[local]--[hash:base64:5]'
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? 'postcss-loader'
? ? ? ? ? ? ]
? ? ? ? }
? ? ]
}
url/file-loader
1.用于處理文件做粤、圖片浇借、字體、多媒體
2.url-loader實現(xiàn)較小的圖片轉(zhuǎn)成base64怕品,插入到代碼中妇垢,當(dāng)超過限制的limit后,會自動降級到file-loader
{
? ? test: /\. (png|jpg|jpeg|gif|eot|woff|woff2|ttf|svg|otf) $/,
? ? use: [
? ? ? ? loader: 'url-loader',
? ? ? ? options: {
? ? ? ? ? ? limit: 10 * 1024, // 10k? ? ?
? ? ? ? ? ? ? name: isDev ? 'images/[name].[ext]' : 'images/[name].[hash.[ext]',? ? ?
? ? ? ? ? ? ? publicPath: idDev ? '/' : 'cdn地址',
? ? ? ? },
? ? ? ? // production , 用于圖片壓縮
? ? ? ? {
? ? ? ? ? ? loader: 'image-webpack-loader',
? ? ? ? ? ? options: {
? ? ? ? ? ? ? ? bypassOnDebug: true
? ? ? ? ? ? }
? ? ? ? }
? ? ]
}