欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Webpack中路徑配置的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)Webpack中路徑配置的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)公司推出孝昌免費(fèi)做網(wǎng)站回饋大家。

context

context 是 webpack 編譯時(shí)的基礎(chǔ)目錄,入口起點(diǎn)(entry)會(huì)相對(duì)于此目錄查找。

默認(rèn)值為當(dāng)前目錄,webpack設(shè)置 context 默認(rèn)值代碼 可以本地下載:

this.set("context", process.cwd());

process.cwd()即webpack運(yùn)行所在的目錄(等同package.json所在目錄)。

context 應(yīng)該配置為絕對(duì)路徑,假如入口起點(diǎn)為src/main.js,則可以配置:

{
 context: path.resolve('./src'),
 entry: './main.js'
}

此時(shí) entry 不能再配置為'./src/main.js',因?yàn)?webpack 會(huì)相對(duì)于 context 配置的 src 目錄區(qū)查找入口起點(diǎn)(main.js),而 main.js 就在此目錄下,所以應(yīng)當(dāng)將 entry 配置為當(dāng)前目錄(./)。

context 有什么實(shí)際作用?官方文檔的解釋是使得你的配置獨(dú)立于工程目錄 「This makes your configuration independent from CWD (current working directory)」。怎么理解?舉個(gè)例子,在分離開(kāi)發(fā)生產(chǎn)配置文件時(shí)候,一般把 webpack.config 放到 build 文件夾下,此時(shí) entry 卻不用考慮相對(duì)于 build 目錄來(lái)配置,仍然要相對(duì)于 context 來(lái)配置,這也就是所謂的獨(dú)立于工程目錄。

需要注意的是,output 的配置項(xiàng)和 context 沒(méi)有關(guān)系,但是有些插件的配置項(xiàng)和 context 有關(guān),后面會(huì)說(shuō)明。

output

output.path

打包文件輸出的目錄,建議配置為絕對(duì)路徑(相對(duì)路徑不會(huì)報(bào)錯(cuò)),默認(rèn)值和 context 的默認(rèn)值一樣,都是process.cwd()

除了常規(guī)的配置方式,還可以在 path 中用使用 [hash] 模板,比如配置:

output: {
 path: path.resolve('./dist/[hash:8]/'),
 filename: '[name].js'
}

打包后的目錄如下:

Webpack中路徑配置的示例分析

這里的 hash 值是編譯過(guò)程的 hash,如果被打包進(jìn)來(lái)的內(nèi)容改變了,那么 hash 值也會(huì)發(fā)生改變。這個(gè)可以用于版本回滾。你也可以配置為path.resolve(`./dist/${Date.now()}/`)方便做持續(xù)集成等。

ouput.publicPath

記得最開(kāi)始學(xué)習(xí) Webpack 的時(shí)候,一直沒(méi)把 publiPath 理解透徹,甚至還錯(cuò)誤的認(rèn)為它和 output.path 有關(guān)聯(lián)。這個(gè)配置項(xiàng)在很多場(chǎng)景是非常重要的,如果不深入理解,就不能靈活運(yùn)用。

怎么快速又準(zhǔn)確的理解 publicPath,我覺(jué)得可以用下面的這個(gè)公式來(lái)表述:

靜態(tài)資源最終訪問(wèn)路徑 = output.publicPath + 資源loader或插件等配置路徑

舉例說(shuō)明:

output.publicPath = '/static/'

// 圖片 url-loader 配置
{
 name: 'img/[name].[ext]'
}
// 那么圖片最終的訪問(wèn)路徑為
output.publicPath + 'img/[name].[ext]' = '/static/img/[name].[ext]'

// JS output.filename 配置
{
 filename: 'js/[name].js'
}
// 那么JS最終訪問(wèn)路徑為 
output.publicPath + 'js/[name].js' = '/static/js/[name].js'

// CSS 
new ExtractTextPlugin("css/style.css")
// 那么最終CSS的訪問(wèn)路徑為
output.publicPath + 'css/style.css' = '/static/css/style.css'

publicPath 默認(rèn)值為空字符串,接下來(lái)看其他各種常見(jiàn)的 publicPath 配置的實(shí)際意義。

publicPath 設(shè)為相對(duì)路徑,相對(duì)路徑實(shí)際上是相對(duì)于index.html的路徑,為什么這么說(shuō)?比如publicPath:"./dist/" ,JS文件名為bundle.js,按上面的公式,最終訪問(wèn)JS的路徑為./dist/bundle.js, 這個(gè)路徑同時(shí)也是index.html引用bundle.js的路徑,既然要在index.html通過(guò)相對(duì)路徑引用bundle.js,那么index.html的位置就決定了 publicPath 的配置,比如index.html在A文件夾下,而發(fā)布的路徑不想放到A文件夾里,而是想和A文件夾同級(jí),那么就應(yīng)配置為publicPath :"../dist/" ,這就是相對(duì)于index.html的路徑來(lái)講,bundle.js在上一層的dist文件夾里。相對(duì)路徑的好處是本地可以訪問(wèn),比如一些混合 APP 用的file協(xié)議,用絕對(duì)路徑肯定是不行的。

publicPath 設(shè)為相對(duì)于協(xié)議url(//)或http地址(http://),比如publicPath:'http://wwww.qinshenxue.com/static/' ,開(kāi)發(fā)環(huán)境當(dāng)然是不能這么干,使用這個(gè)的場(chǎng)景是將資源托管到cdn,比如公司的靜態(tài)資源服務(wù)器等。

另外publicPath應(yīng)該以'/'結(jié)尾,同時(shí)其他loader或插件的配置不要以'/'開(kāi)頭。

webpack-dev-server

publicPath

上面講過(guò) webpack 的 publicPath,那么這里的 publicPath 和 上面的publicPath是不是一回事呢?答案是兩者區(qū)別很大,首先這里的publicPath用于開(kāi)發(fā)環(huán)境的,因此不會(huì)出現(xiàn)配置 http 地址的情況,那這兩者到底有啥區(qū)別呢?

我們知道 webpack-dev-server 打包的內(nèi)容是放在內(nèi)存中,通過(guò)express匹配請(qǐng)求路徑,然后讀取對(duì)應(yīng)的資源輸出。這些資源對(duì)外的根目錄就是publicPath,可以理解為和 outpu.path 的功能一樣,將所有資源放在此目錄下,在瀏覽器可以直接訪問(wèn)此目錄下的資源。

但是這個(gè)路徑僅僅只是為了提供瀏覽器訪問(wèn)打包資源的功能,webpack中的loader和插件仍然是取ouput.publicPath,比如CSS里面的圖片最終的路徑仍是"/static/img/xxxx.png",這也是為什么官方推薦 publicPath 和 webpack 配置的保持一致(除了http地址),配置一致才能正常訪問(wèn)其他靜態(tài)資源。

上面的解釋可能還是比較生硬,還是舉幾個(gè)例子來(lái)說(shuō)明:

本例將兩處 publicPath 配置成不一樣的,這樣更容易對(duì)比理解。

// webpack.config.js
output: {
 path: path.resolve(`./dist/`),
 filename: 'js/[name].js',
 publicPath: '/static/'
}
// api 調(diào)用 webpack-dev-server
var webpack = require('webpack');
var webpackDevServer = require('webpack-dev-server');
var config = require("./webpack.config");
var compiler = webpack(config);
var server = new webpackDevServer(compiler, {
 hot: true,
 publicPath: '/web/'
});
server.listen(8282, "0.0.0.0")

如何查看 webpack-dev-server 所有啟動(dòng)后的資源訪問(wèn)路徑呢?有個(gè)簡(jiǎn)單的方法,就是訪問(wèn)/webpack-dev-server,本例訪問(wèn)截圖如下:

Webpack中路徑配置的示例分析

上面的資源可以點(diǎn)擊查看,你會(huì)發(fā)現(xiàn),資源的路徑都是/web/*****,所以在index.html中引入JS的路徑應(yīng)為/web/js/main.js,同時(shí)也能看到,style.css中的圖片路徑仍然為/static/img/****.png,而不是/web/。

html-webpack-plugin

這個(gè)插件的幾處配置受路徑配置影響,因此需要專(zhuān)門(mén)說(shuō)明下。

template

template的路徑是相對(duì)于 output.context,源碼如下:

this.options.template = this.getFullTemplatePath(this.options.template, compiler.context);

因此 template 對(duì)應(yīng)的文件需要放在 ouput.context 配置的目錄下才能被識(shí)別。

filename

filename的路徑是相對(duì)于 output.path,源碼如下:

this.options.filename = path.relative(compiler.options.output.path, filename);

在 webpack-dev-server 中,則相對(duì)于 webpack-dev-server 配置的 publicPath。

若 webpack-dev-server 中的 publicPath 和 ouput.publicPath 不一致,在這種配置下使用html-webpack-plugin是有如下問(wèn)題:

  • 自動(dòng)引用的路徑仍然以 ouput.publicPath 為準(zhǔn),和 webpack-dev-server 提供的資源訪問(wèn)路徑不一致,從而不能正常訪問(wèn);

  • 瀏覽 index.html 需要加上 webpack-dev-server 配置的 publicPath 才能訪問(wèn)(http://localhost:8282/web/)。

這兩個(gè)問(wèn)題也反推出了最方便的配置為:

  • ouput.publicPath 和 webpack-dev-server 的publicPath 均配置為'/',vue-cli 就是這種配置

  • template 放在根目錄,html-webpack-plugin 不用修改參數(shù)的路徑,filename 采用默認(rèn)值。

關(guān)于“Webpack中路徑配置的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

本文標(biāo)題:Webpack中路徑配置的示例分析
網(wǎng)站URL:http://aaarwkj.com/article46/peipeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、定制網(wǎng)站、Google網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
国产精品日韩经典中文字幕| 久久久久精品久久久| 四虎在线观看最新入口| 伊人久久九九精品综合| 亚洲国产欧美日韩综合| 成人大片在线免费观看视频| 亚洲欧美日韩一区中文天国| 丝袜美腿一区二区三区动态图| 伊人久久九九精品综合| 国产男女免费完整视频| 一区二区三区欧美日韩在线| 中文字幕久久亚洲一区| 精品国产女同一区二区| 亚洲精品国产亚洲精品| 久久99精品久久久子伦| 偷拍福利视频一区二区三区 | 精品欧美高清免费视频| 欧美精品黑人三级精品| 国产一区国产二区中文字幕| 亚洲综合色一区二区三区四区 | 中文字幕乱码视频日本| 亚洲国产偷拍在线观看| 日韩欧美第一页在线观看| av资源天堂第一区第二区第三区| 青青草最新网址在线观看视频| 亚洲国产精品一区一区| 麻豆人妻少妇精品毛片| 韩国av毛片在线播放| 日本 影院 一区 二区| 午夜91激情福利视频| 国产乡下三级_三级全黄| 亚洲国产成人欧美日韩另类| 先锋影音女同中文字幕| 中文字幕av不卡一区| 国产尤物直播在线观看| 欧美另类精品一区二区三区| 亚洲中文字幕第11页| 免费女同一区二区三区| 婷婷六月亚洲中文字幕| 高清国产国产精品三级国产av| 日本黄色中文字幕网站|