webpack文檔——學(xué)習(xí)筆記(一)

  • webpack 是什么
    webpack不僅是一個js應(yīng)用的打包工具(能支持ES Modules和Common JS),也能支持不同的資源(比如圖片华临,字體和樣式表)础淤,關(guān)注加載次數(shù)和性能

入口 Entry points

  • 單個入口
// 簡寫版
const config = {
  entry: './path/to/my/entry/file.js'
}

module.exports = config;

等同于

const config = {
  entry: {
    main: './path/to/my/entry/file.js'
  }
};

若給entry屬性资铡,傳一個文件路徑數(shù)組怕犁,則創(chuàng)建多個主入口(multi-main entry)

  • 對象語法(定義入口的方法中最可擴展的)
const config = {
  entry: {
    app: './src/app.js',
    vendors: './src/vendors.js'
  }
};
  • 常見場景
  1. 分離應(yīng)用程序(app)和第三方庫(vendor)入口
const config = {
  entry: {
    app: './src/app.js',
    vendors: './src/vendors.js'
  }
};
  1. 多頁面應(yīng)用
module.exports = {
  entry: {
    pageOne: './src/pageOne/index.js',
    pageTwo: './src/pageTwo/index.js',
    pageThree: './src/pageThree/index.js'
  }
};

輸出Output

  • 用法
module.exports = {
  output: {
    filename: 'bundle.js',
  }
};
  • 多入口
    filename需要使用變量边篮,保證每個文件有獨立的文件名
module.exports = {
  entry: {
    app: './src/app.js',
    search: './src/search.js'
  },
  output: {
    filename: '[name].js',
    path: __dirname + '/dist'
  }
};

// writes to disk: ./dist/app.js, ./dist/search.js

mode

值有development, production(默認), none,可以啟用不同模式下的webpack內(nèi)置優(yōu)化

module.exports = {
  mode: 'production'
};

development:將process.env.NODE_ENV設(shè)為development奏甫,啟用 NamedChunksPlugin 和 NamedModulesPlugin戈轿。;

production: 將process.env.NODE_ENV設(shè)為production阵子,啟用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 UglifyJsPlugin.思杯;

  • 根據(jù)mode的值設(shè)置config,要export function而非對象
var config = {
  entry: './app.js'
  //...
};

module.exports = (env, argv) => {

  if (argv.mode === 'development') {
    config.devtool = 'source-map';
  }

  if (argv.mode === 'production') {
    //...
  }

  return config;
};

Loaders

使用loader的三種方法:

  • 配置(推薦):在 webpack.config.js 文件中指定 loader。
  • 內(nèi)聯(lián):在每個 import 語句中顯式指定 loader挠进。
  • CLI:在 shell 命令中指定它們色乾。

具體如下:

  • 配置webpack.config.js : loader執(zhí)行的順序為從右向左執(zhí)行,先sass-loader领突,再css-loader暖璧,最后style-loader
module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          { loader: 'style-loader' },
          {
            loader: 'css-loader',
            options: {
              modules: true
            }
          },
          { loader: 'sass-loader' }
        ]
      }
    ]
  }
};

插件

插件是一個具有 apply 屬性的 JavaScript 對象

需要使用插件時,先require()再添加到plugins數(shù)組
插件可以通過options選項自定義攘须,可以在一個配置文件中多次使用同一個插件漆撞,使用new操作符創(chuàng)建實例

// webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
const webpack = require('webpack'); //to access built-in plugins

module.exports = {
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市于宙,隨后出現(xiàn)的幾起案子浮驳,更是在濱河造成了極大的恐慌,老刑警劉巖捞魁,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件至会,死亡現(xiàn)場離奇詭異,居然都是意外死亡谱俭,警方通過查閱死者的電腦和手機奉件,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昆著,“玉大人县貌,你說我怎么就攤上這事〈斩” “怎么了煤痕?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長接谨。 經(jīng)常有香客問我摆碉,道長,這世上最難降的妖魔是什么脓豪? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任巷帝,我火速辦了婚禮,結(jié)果婚禮上扫夜,老公的妹妹穿的比我還像新娘楞泼。我一直安慰自己,他們只是感情好历谍,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布现拒。 她就那樣靜靜地躺著,像睡著了一般望侈。 火紅的嫁衣襯著肌膚如雪印蔬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天脱衙,我揣著相機與錄音侥猬,去河邊找鬼。 笑死捐韩,一個胖子當(dāng)著我的面吹牛退唠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荤胁,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼瞧预,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起垢油,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤盆驹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后滩愁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躯喇,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年硝枉,在試婚紗的時候發(fā)現(xiàn)自己被綠了廉丽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡妻味,死狀恐怖正压,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情责球,我是刑警寧澤蔑匣,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站棕诵,受9級特大地震影響裁良,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜校套,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一价脾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧笛匙,春花似錦侨把、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蠢正,卻和暖如春骇笔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嚣崭。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工笨触, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雹舀。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓芦劣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親说榆。 傳聞我的和親對象是個殘疾皇子虚吟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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

  • 1 Webpack 1.1 概念簡介 1.1.1 WebPack是什么 1寸认、一個打包工具 2、一個模塊加載工具 3...
    Kevin_Junbaozi閱讀 6,638評論 0 16
  • 寫在前面的話 閱讀本文之前串慰,先看下面這個webpack的配置文件废麻,如果每一項你都懂,那本文能帶給你的收獲也許就比較...
    不忘初心_9a16閱讀 3,231評論 0 17
  • GitChat技術(shù)雜談 前言 本文較長模庐,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack油宜,它要...
    蕭玄辭閱讀 12,674評論 7 110
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理掂碱,服務(wù)發(fā)現(xiàn),斷路器慎冤,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 有時候只是單純的想聽聽你的聲音疼燥,無關(guān)其他,二十七歲的我跟二十七歲的你蚁堤,一個尷尬的年紀(jì)醉者,最近心態(tài)有點失衡,歸根到底還...
    瘋小樣閱讀 292評論 0 0