Vue.js 源碼構(gòu)建過程

Vue.js源碼是基于Rollup構(gòu)建的,它的構(gòu)建相關(guān)配置都在源碼scripts目錄下按咒。

Rollup 是一個(gè) 輕量的JavaScript 模塊打包器以將小塊代碼編譯成大塊復(fù)雜的代碼妻献,例如 library 或應(yīng)用程序糯耍。Rollup 對(duì)代碼模塊使用新的標(biāo)準(zhǔn)化格式,這些標(biāo)準(zhǔn)都包含在 JavaScript 的 ES6 版本中喂急,而不是以前的特殊解決方案格嘁,如 CommonJS 和 AMD。ES6 模塊可以使你自由廊移、無縫地使用你最喜愛的 library 中那些 最有用獨(dú)立函數(shù)糕簿,而你的項(xiàng)目不必?cái)y帶其他未使用的代碼。ES6 模塊最終還是要由瀏覽器原生實(shí)現(xiàn)狡孔,但當(dāng)前 Rollup 可以使你提前體驗(yàn)懂诗。

構(gòu)建腳本

通常一個(gè)基于 NPM 托管的項(xiàng)目都會(huì)有一個(gè) package.json 文件逼侦,它是對(duì)項(xiàng)目的描述文件孵睬,它的內(nèi)容實(shí)際上是一個(gè)標(biāo)準(zhǔn)的 JSON 對(duì)象。

我們通常配置script字段作為NPM的執(zhí)行腳本迂猴,Vue.js 源碼構(gòu)建的腳本如下:

這里總共有 3 條命令,作用都是構(gòu)建 Vue.js离唐,后面 2 條是在第一條命令的基礎(chǔ)上隆嗅,添加一些環(huán)境參數(shù)。

當(dāng)在命令行運(yùn)行?npm run build?的時(shí)候侯繁,實(shí)際上就會(huì)執(zhí)行?node scripts/build.js,接下來我們來看看它實(shí)際是怎么構(gòu)建的泡躯。

構(gòu)建過程


主要過程入口JS在scripts/build.js里面

? ? 1. 首先會(huì)從配置文件中讀取配置贮竟,然后根據(jù)命令行參數(shù)(process.argv[2])對(duì)配置文件做過濾,就可以構(gòu)建不同用途的Vue.js(Vue.js 是一個(gè)跨平臺(tái)的 MVVM 框架较剃,它可以跑在 web 上咕别,也可以配合 weex 跑在 native 客戶端上;所以有兩種Vue.js写穴,一種是web惰拱、一種是weex跨平臺(tái))

? ? 2. 而配置文件在scripts/config.js的builds對(duì)象里面,遵循Rollup構(gòu)建規(guī)則啊送。
? ? ? ? entry:構(gòu)建的入口 JS 文件地址
????????dest :表示構(gòu)建后的 JS 文件地址
????????format: 屬性表示構(gòu)建的格式偿短,cjs?表示構(gòu)建出來的文件遵循?CommonJS?規(guī)范,es?表示構(gòu)建出來的文件遵循?ES Module?規(guī)范馋没。?umd?表示構(gòu)建出來的文件遵循?UMD?規(guī)范昔逗。

? ? ? ? 其中dest涉及到resolve方法,根據(jù)scripts/alias下的別名找到找到了最終路徑篷朵。
? ? ? ? 最終在dist目錄下生成對(duì)應(yīng)打包文件勾怒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市声旺,隨后出現(xiàn)的幾起案子笔链,更是在濱河造成了極大的恐慌,老刑警劉巖腮猖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鉴扫,死亡現(xiàn)場離奇詭異,居然都是意外死亡缚够,警方通過查閱死者的電腦和手機(jī)幔妨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谍椅,“玉大人误堡,你說我怎么就攤上這事〕裕” “怎么了锁施?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我悉抵,道長肩狂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任姥饰,我火速辦了婚禮傻谁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘列粪。我一直安慰自己审磁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布岂座。 她就那樣靜靜地躺著态蒂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪费什。 梳的紋絲不亂的頭發(fā)上钾恢,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音鸳址,去河邊找鬼瘩蚪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛氯质,可吹牛的內(nèi)容都是我干的募舟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼闻察,長吁一口氣:“原來是場噩夢啊……” “哼拱礁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辕漂,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤呢灶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后钉嘹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸯乃,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年跋涣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缨睡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陈辱,死狀恐怖奖年,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沛贪,我是刑警寧澤陋守,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布震贵,位于F島的核電站,受9級(jí)特大地震影響水评,放射性物質(zhì)發(fā)生泄漏猩系。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一中燥、第九天 我趴在偏房一處隱蔽的房頂上張望寇甸。 院中可真熱鬧,春花似錦疗涉、人聲如沸幽纷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至峰尝,卻和暖如春偏窝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背武学。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工祭往, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人火窒。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓硼补,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熏矿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子已骇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容