webpack起步一

使用 CLI 方式配置文件(基礎(chǔ))

一墩剖、基本安裝

mkdir webpack1.0 && cd webpack1.0
npm init -y       (初始化問題-yes)
npm install webpack webpack-cli --save-dev

會生成package.json文件:


需要創(chuàng)建以下目錄結(jié)構(gòu)、文件和內(nèi)容:

webpack1.0
  |- package.json
+ |- index.html
+ |- /src
+   |- index.js
  1. 調(diào)整 package.json 文件诉儒,以便確保我們安裝包是私有的(private),并且移除 main 入口。這可以防止意外發(fā)布你的代碼淮椰。


  2. src/index.js
function component() {
  var element = document.createElement('div');

  // Lodash(目前通過一個 script 腳本引入)對于執(zhí)行這一行是必需的
  element.innerHTML = _.join(['Hello', 'webpack'], ' ');

  return element;
}

document.body.appendChild(component());
  1. index.html
<!doctype html>
<html>
  <head>
    <title>webpack 1.0</title>
    <script src="https://unpkg.com/lodash@4.16.6"></script>
  </head>
  <body>
    <script src="./src/index.js"></script>
  </body>
</html>
在此示例中,<script> 標(biāo)簽之間存在隱式依賴關(guān)系纳寂。index.js 文件執(zhí)行之前主穗,還依賴于頁面中引入的 lodash。之所以說是隱式的是因為 index.js 并未顯式聲明需要引入 lodash毙芜,只是假定推測已經(jīng)存在一個全局變量 _ 忽媒。

使用這種方式去管理 JavaScript 項目會有一些問題:

  • 無法立即體現(xiàn),腳本的執(zhí)行依賴于外部擴(kuò)展庫(external library)腋粥。
  • 如果依賴不存在晦雨,或者引入順序錯誤,應(yīng)用程序?qū)o法正常運行隘冲。
  • 如果依賴被引入但是并沒有使用闹瞧,瀏覽器將被迫下載無用代碼。

讓我們使用 webpack 來管理這些腳本展辞。

二奥邮、創(chuàng)建一個 bundle 文件

  1. 首先,我們稍微調(diào)整下目錄結(jié)構(gòu)纵竖,將“源”代碼(/src)從我們的“分發(fā)”代碼(/dist)中分離出來漠烧⌒臃撸“源”代碼是用于書寫和編輯的代碼∫雅В“分發(fā)”代碼是構(gòu)建過程產(chǎn)生的代碼最小化和優(yōu)化后的“輸出”目錄珊楼,最終將在瀏覽器中加載:
webpack1.0
  |- package.json
+ |- /dist
+   |- index.html
- |- index.html
  |- /src
    |- index.js
  1. 要在 index.js 中打包 lodash 依賴,我們需要在本地安裝 library:
npm install --save lodash
注意:在安裝一個要打包到生產(chǎn)環(huán)境的安裝包時度液,你應(yīng)該使用 npm install --save厕宗,如果你在安裝一個用于開發(fā)環(huán)境的安裝包(例如,linter, 測試庫等)堕担,你應(yīng)該使用 npm install --save-dev已慢。請在 npm 文檔 中查找更多信息 。
  1. 可以在腳本中 import lodash:

src/index.js

+ import _ from 'lodash';
+
  function component() {
    var element = document.createElement('div');

-   // Lodash, currently included via a script, is required for this line to work
+   // Lodash, now imported by this script
    element.innerHTML = _.join(['Hello', 'webpack'], ' ');

    return element;
  }

  document.body.appendChild(component());
  1. 現(xiàn)在霹购,由于通過打包來合成腳本佑惠,我們必須更新 index.html 文件。因為現(xiàn)在是通過 import 引入 lodash齐疙,所以將 lodash <script> 刪除膜楷,然后修改另一個 <script> 標(biāo)簽來加載 bundle,而不是原始的 /src 文件:

dist/index.html

<!doctype html>
<html>
    <head>
        <title>Webpack1.0</title>
        <!-- <script src="https://unpkg.com/lodash@4.16.6"></script> -->
    </head>
    <body>
        <!-- <script src="./src/index.js"></script> -->
        <script src="main.js"></script>        
    </body>
</html>
在這個設(shè)置中贞奋,index.js 顯式要求引入的 lodash 必須存在赌厅,然后將它綁定為 _(沒有全局作用域污染)。通過聲明模塊所需的依賴轿塔,webpack 能夠利用這些信息去構(gòu)建依賴圖特愿,然后使用圖生成一個優(yōu)化過的,會以正確順序執(zhí)行的 bundle勾缭。
可以這樣說揍障,執(zhí)行 npx webpack,會將我們的腳本作為入口起點俩由,然后 輸出main.js亚兄。Node 8.2+ 版本提供的 npx 命令,可以運行在初始安裝的 webpack 包(package)的 webpack 二進(jìn)制文件(./node_modules/.bin/webpack):
構(gòu)建成功

構(gòu)建成功采驻,就可以在瀏覽器中打開 index.html,看到以下文本:'Hello webpack'匈勋。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末礼旅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子洽洁,更是在濱河造成了極大的恐慌痘系,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饿自,死亡現(xiàn)場離奇詭異汰翠,居然都是意外死亡龄坪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門复唤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來健田,“玉大人,你說我怎么就攤上這事佛纫〖司郑” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵呈宇,是天一觀的道長好爬。 經(jīng)常有香客問我,道長甥啄,這世上最難降的妖魔是什么存炮? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蜈漓,結(jié)果婚禮上穆桂,老公的妹妹穿的比我還像新娘。我一直安慰自己迎变,他們只是感情好充尉,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衣形,像睡著了一般驼侠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谆吴,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天倒源,我揣著相機(jī)與錄音,去河邊找鬼句狼。 笑死笋熬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腻菇。 我是一名探鬼主播胳螟,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼筹吐!你這毒婦竟也來了糖耸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丘薛,失蹤者是張志新(化名)和其女友劉穎嘉竟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡舍扰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年倦蚪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片边苹。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡陵且,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勾给,到底是詐尸還是另有隱情滩报,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布播急,位于F島的核電站脓钾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏桩警。R本人自食惡果不足惜可训,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捶枢。 院中可真熱鬧握截,春花似錦、人聲如沸烂叔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒜鸡。三九已至胯努,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逢防,已是汗流浹背叶沛。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留忘朝,地道東北人灰署。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像局嘁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子悦昵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

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