webpack 3.8.1 learning

(1) entry

  1. single entry
const config = {
    entry: './path/to/my/entry/file.js'
}

module.exports = config;
  1. Object Syntax
const config = {
    entry: {
        app: './src/app.js',
        vendors: './src/vendors.js'
    }
}
  1. Multi Page Application
const config = {
    entry: {
       pageOne: './src/pageOne/index.js',
       pageTwo:'./src/pageTwo/index.js',
       pageThree: './src/pageThree/index.js'
    }
}

(2) output

  1. Usage
const config = {
    output: {
       filename: 'bundle.js',  
       path: '/home/proj/public/assets'  
    }
}
  1. Multiple Entry Points
ensure that each file has a unique name

const config = {
    entry: {
       app: './src/app.js',
       search: './src/search.js'
    },
    output: {
       filename: '[name].js'
       path: __dirname + '/dist'
    }
}
  1. Advanced
here is a more complicated example of using a CDN and hashes for assets:

const config = {
    output: {
       path: "home/proj/cdn/assets/[hash]",
       publicPath: "http://cdn.example.com/assets/[hash]/"
    }
}

(3) Loaders

  1. npm your loaders
npm install --save-dev css-loader  
npm install --save-dev ts-loader   

//instruct webpack to use the css-loader for every .css files
//instruct webpack to use the ts-loader for every .ts files

module.exports = {
    module: {
       rules: [
          { test: /\.css$/, use: 'css-loader'},
          { test: /\.ts$/, use: 'ts-loader'},
       ]
    }
}
  1. There are three ways to use loaders in your application:

(一) configuration

module: {
    rules: [
       {
          test: /\.css$/,
          user: [
            { loader: 'style-loader' },
            {
              loader: 'css-loader',
              options: {
                  modules: true
              }
            }
          ]
       }
    ]
}

(二) inline

import Styles from 'style-loader!css-loader?modules!./styles.css';

(三) CLI

webpack --module-bind jade-loader --module-bind 'css=style-loader!css-loader'

(4) Plugins

const Htmlwebpack = require('html-webpack-plugin');
const webpack = require('webpack');
const path = require('path');

plugins: [
   new webpack.optimize.UglifyJsPlugin(),
   new HtmlWebpackPlugin({template: './src/index.html'})
]

(5) configuration

the simplest configuration

var path = require('path');

module.exports = {
    entry: './foo.js',
    output: {
       path: path.resolve(__dirname, 'dist'),
       filename: 'foo.bundle.js'
    }
}

(6) modules

  1. what is a webpack module ?
   An ES2015 statement : import
   A CommonJS statement:require()
   An AMD statement:define and require
   An css/sass/less statement: @import 
  1. supported module types
The webpack community has built loaders for a wide variety of popular languages and language processors,

(7) module resolution

  1. a module can be required as a dependency from another module as:
import foo from 'path/to/module'
//or
require('path/to/module')
  1. resolving rules in webpack:

using enhanced-resolve, webpack can resolve three kinds of file paths:

Absolute paths

import "home/me/file"

import "C:\\User\\me\\file"

Relative paths

import "../src/file1";
import "./file2";

Module paths

import "module";
import "module/lib/file";

(8) Dependency Graph

任何時候廷粒,一個文件依賴于另一個文件,webpack 就把此視為文件之間有依賴關(guān)系晒他。這使得 webpack 可以接收非代碼資源(non-code asset)(例如圖像或 web 字體)同木,并且可以把它們作為依賴提供給你的應用程序。

(9) Targets
因為服務器和瀏覽器代碼都可以用 JavaScript 編寫捶码,所以 webpack 提供了多種構(gòu)建目標(target)汹押,

用法:
module.exports = {
target: 'node'
};

多個target :

盡管 webpack 不支持向 target 傳入多個字符串缘回,你可以通過打包兩份分離的配置來創(chuàng)建同構(gòu)的庫:

var path = require('path');
var serverConfig = {
target: 'node',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'lib.node.js'
}
//…
};

var clientConfig = {
target: 'web', // <=== 默認是 'web'剂公,可省略
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'lib.js'
}
//…
};

module.exports = [ serverConfig, clientConfig ];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末希俩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子纲辽,更是在濱河造成了極大的恐慌颜武,老刑警劉巖璃搜,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鳞上,居然都是意外死亡这吻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門篙议,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唾糯,“玉大人,你說我怎么就攤上這事鬼贱∫魄樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵吩愧,是天一觀的道長。 經(jīng)常有香客問我增显,道長雁佳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任同云,我火速辦了婚禮糖权,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炸站。我一直安慰自己星澳,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布旱易。 她就那樣靜靜地躺著禁偎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阀坏。 梳的紋絲不亂的頭發(fā)上如暖,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音忌堂,去河邊找鬼盒至。 笑死,一個胖子當著我的面吹牛士修,可吹牛的內(nèi)容都是我干的枷遂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼棋嘲,長吁一口氣:“原來是場噩夢啊……” “哼酒唉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沸移,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤黔州,失蹤者是張志新(化名)和其女友劉穎耍鬓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體流妻,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡牲蜀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绅这。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涣达。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖证薇,靈堂內(nèi)的尸體忽然破棺而出度苔,到底是詐尸還是另有隱情,我是刑警寧澤浑度,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布寇窑,位于F島的核電站,受9級特大地震影響箩张,放射性物質(zhì)發(fā)生泄漏甩骏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一先慷、第九天 我趴在偏房一處隱蔽的房頂上張望饮笛。 院中可真熱鬧,春花似錦论熙、人聲如沸福青。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽无午。三九已至,卻和暖如春祝谚,著一層夾襖步出監(jiān)牢的瞬間指厌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工踊跟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留踩验,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓商玫,卻偏偏與公主長得像箕憾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拳昌,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

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

  • GitChat技術(shù)雜談 前言 本文較長袭异,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack炬藤,它要...
    蕭玄辭閱讀 12,693評論 7 110
  • publicPath指定了一個在瀏覽器中被引用的URL地址御铃。 對于使用 和 加載器碴里,當文件路徑不同于他們的本地磁盤...
    飛呀飛哥閱讀 1,699評論 0 0
  • 版權(quán)聲明:本文為博主原創(chuàng)文章睡互,未經(jīng)博主允許不得轉(zhuǎn)載根竿。 webpack介紹和使用 一、webpack介紹 1就珠、由來 ...
    it筱竹閱讀 11,121評論 0 21
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺寇壳,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,164評論 7 35
  • 我還是會在閑下來的時候想你 我忍住了不給你發(fā)消息 上課點到你名字的時候 仍然覺得那是最好聽的...
    何小兮閱讀 149評論 0 0