簡單記錄一下webpack學習過程當中須要注意的點css
先背一遍基本概念:html
webpack最基本的css處理:css-loader + style-loader。其中css-loader用於處理css文件中的@import
和url(...)
,而style-loader用於將css-loader的輸出生成js中的函數調用將css動態添加到html文件中
vue
目錄結構以下node
在main.js中引入csswebpack
import base from './src/css/base.css'import common from './src/css/common.css'複製代碼
webpack.config.js中配置git
{
test:/\.css$/,
use: ExtractTextWebpackPlugin.extract({
fallback: {//編譯後應該使用什麼插件來處理css文件
loader: 'style-loader'
},
use:[
{//用什麼插件來編譯css文件
loader: 'css-loader'
},
{
loader: 'postcss-loader',
options: {
plugins:[
require('autoprefixer')({
browsers:['last 5 versions']
})
]
}
}
]
}),
exclude:/node_modules/
},
plugins:[ new ExtractTextWebpackPlugin({ filename:'css/[name].min.css' }),
]
複製代碼
具體配置咱們不談,咱們講講注意點,github
首先咱們的loader的加載順序是不能隨意改動的,webpack加載loader是從下到上,也就是先從post-loader->css-loader-->style-loader, web
除了css-loader + style-loader還用到了extract-text-webpack-plugin和postcss-loader,首先extract-text-webpack-plugin的做用是將css文件單獨打包出來,若是沒有這個插件,咱們的css將會和js文件打包到一塊兒,postcss-loader這裏咱們咱們結合Autoprefixer來使用,做用是能夠爲css屬性添加瀏覽器前綴。vue-cli
這裏用到的loader有url-loader和file-loader瀏覽器
{
test:/\.(png|jpg|jpeg|gif)$/,
use:[
{
loader:'url-loader',
options:{
limit:'15000',
name:'img/[hash:8].[ext]',
publicPath:'../'
}
}
]
}
複製代碼
這裏須要注意的點我注意到的有一點,若是咱們將項目中的圖片單獨放在一個文件夾下,publicPath也須要單獨配置,不然圖片的地址將會錯誤,咱們的 output 中也有一個相同的參數publicPath,當咱們單獨配置了url-loader下的publicPath時,output中的publicPath將會被覆蓋,在實際項目中咱們能夠配置對應的圖片域名,以下:
當咱們須要將vue-cli生成的項目部署到服務器時,須要將assetsPublicPath路徑修改成./也是同樣的道理。
new HtmlWebpackPlugin({
title: "處理靜態資源",
hash:true,
template: './index.html',
}),
複製代碼
這裏我糾結過js文件和css文件引入的問題,生成的html文件是按照什麼路徑規則引入依賴的,經過幾回實驗,我得出來的結果是這樣的:引入的路徑是由output中的publicPath和filename共同決定的(有點智障的我。。)。
遇到的問題總結起來很簡單,可是本身真正去寫一套配置的時候老是會遇到各類問題,而後感受到無從解決,只有本身寫過一遍才能說本身懂一點webpack,哈哈哈(代碼地址)