webpack的配置

%就是我發表於2018-10-05

一、介紹

模組打包器

支援es6模組化、amd、common

二、不同

程式碼分割

loader

熱更新

外掛

三、安裝和命令列

mkdir webpack-text

進入資料夾,npm init ,npm install webpack --save-dev

打包:webpack hello.js hello.bundle.js

打包過程會生成自己所需的一些內建的函式,管理依賴關係然後根據依賴關係對模組進行編號

四、loader

npm install css-loader style-loader --save-dev

require('style-loader!css-loader!./style.css')

這樣我們寫的css就會包含在style標籤裡,插入文件頂部

還可以在命令列裡指定:webpack hello.js hello.bundle.js --module-bind 'css=style-loader!css-loader'

這是給模組繫結loader,

檔案改變的時候,使用--watch可以使webpack自動更新自動打包

--progress可以看到打包過程

--display-modules 看打包模組

--display-reasons為什麼打包模組的原因


五、建立webpack的配置檔案

從零開始新建一個專案

mkdir webpack-demo

cd webpack-demo

npm init

npm install webpack --save-dev

mkdir src

src目錄下script和style等檔案

mkdir dist

新建初始化頁面index.html

引入打包後的js檔案bundle.js

專案根目錄下新建webpack.config.js


複製程式碼

,webpack自動尋找這個檔案執行,

使用common。js的模組化輸出

module.exports = {    entry: './src/script/main.js',//專案的入口檔案
    output: {
        path: './dist/js',//打包後檔案存放路徑,如果沒有js資料夾,就會自動建立
        filename: 'bundle.js'//生成的檔名
}
在高版本的webpack裡,需要這樣寫:
const path = require('path')
module.exports = {
	entry : './src/scripts/main.js',
	output : {
		path: path.resolve(__dirname,'./dist/js'),
		filename: 'bundle.js'	
	}
}
複製程式碼

新建main.js檔案

function hello (){}複製程式碼

然後執行打包,直接執行webpack

可以用命令列執行  webpack --config webpack.dev.config.js來執行指定js檔案


配置npm指令碼,在package.js裡的scripts裡,

'webpack':'webpack --config webpack.config.js --progress  -dsiplay-module --colors --

display-reason'

然後在命令列裡執行npm run webpack,就會執行這段指令碼



複製程式碼


webpack單頁面,entry裡是一個入口檔案,如果是多個頁面,得用物件的形式傳入多個入口檔案

{
  entry: {
       app:'./src/app.js',
       search: './src/search.js'
  },
  output: {
       filename:'{name}.js',//'[name]-[hash].js'//[chunkhash]
       path:__dirname+'./built',
       publicPath: 'http://cdn.com/'//js連線前就會加上這個地址,線上地址
}
}複製程式碼

webpack外掛

上下文概念:在module.exports裡會有一個預設屬性:context為整個執行環境上下文,預設值為根目錄

npm install html-webpack-plugin --save-dev

var htmlWebpackPlugin = require('html-webpack-plugin')

mudule.exports = {

plugins:【

new htmlWebpackPlugin({

template:'index.html',

filename:'index-[index-[hash].html'//這裡可以指定生成index檔案

inject:'head'//制定指令碼放在head還是body標籤裡

title:'webpack is good'//檔案標題

date: new Date(),

minify:{//壓縮屬性

removeComments:true,//刪除註釋

collapseWhiteSpace: true,//刪除空格

})webpack的配置


output:{

path:'./dist',

filename:'js/[name]-[chunkhash].js'

這個外掛會讓index.html自動引用打包好的js檔案,如app.-dnjnfjs.js

webpack環境下的index.html預設支援ejs語法,可以利用這點往html裡傳入引數

<title><% htmlWebpackPlugin.options.title %></title>

htmlWebpackPlugin有files和opations兩個屬性

用這個外掛可以用來做多頁面,傳入模板和輸出的html,在chunk裡指定需要匯入的程式碼塊,就可以了,這個外掛還有excludechunk引數,可以指定除了某個引數外包含其餘所有引數webpack的配置

webpack的配置



loader的學習,對js、css以及圖片的處理

webpack的配置

需要安裝babel和lastest,通過query傳入引數,lastest告訴babel可以轉換es2015、es2016、es2017的js檔案

也可以在package》json裡直接寫入babel的配置webpack的配置

出入引數exclude可以指定某個目錄下的檔案,不讓babel進行處理,因為babel轉換是非常耗時的操作,這樣可以提高效率,include可以指定轉換範圍webpack的配置

webpack的配置匯入了path,使用絕對路徑path.resolve,解析的意思

webpack的配置

cssloader

postscss-loader可以自動補齊瀏覽器廠商字首

webpack的配置

對於@export引入的css檔案,可以通過loader:;'style-loader!css-loader?importLoaders=1!postcss-loader'傳參這樣的方法來補齊export進來的css檔案的瀏覽器廠商字首

使用less和sass

webpack的配置


webpack的配置

html-loader可以把模板檔案當作字串來進行處理

webpack的配置

傳參

webpack的配置

配置資訊

webpack的配置

處理專案中的圖片

安裝file-loader

webpack的配置

如果根據當前結構的相對路徑去查詢一個圖片,就會找不到

解決辦法

webpack的配置

傳參指定圖片名稱

webpack的配置

urlloader可以處理檔案或圖片,當圖片或檔案的大小超過了limit指定的大小之後,就會丟給fileloader去處理,小於這個值的時候,就會把圖片或者檔案轉為base64編碼的形式


webpack的配置

限制大小為20kb,這樣做可以減少網路請求,但是會增加檔案大小

網路請求可以使瀏覽器快取資源,下次訪問會更快

圖片壓縮image-loader

webpack的配置

webpack的配置

來源慕課網:webpack工程化https://www.imooc.com/video/14200


相關文章