webpack--簡單的介紹以及使用

```js

//詳細(xì)的webpack.config.js結(jié)構(gòu)分析:

var path = require('path');

var webpack = require('webpack');

var HtmlWebpackPlugin = require('html-webpack-plugin');

var TransferWebpackPlugin = require('transfer-webpack-plugin');

module.exports = {

? ? devtool: 'source-map',//由于打包后的代碼是合并以后的代碼,不利于排錯和定位站削,只需要在config中添加搁廓,這樣出錯以后就會采用source-map的形式直接顯示你出錯代碼的位置珠十。

? ? //noParse:[/jquery/],//表示跳過jquery,不對其進(jìn)行編譯,這樣可以提高打包的速度

? ? //頁面入口文件配置

? ? entry: {

? ? ? ? page1: "./src/index.js",

? ? ? ? //page2: ["./src/index.js", "./src/main.js"],支持?jǐn)?shù)組形式挖诸,將加載數(shù)組中的所有模塊缩赛,但以最后一個模塊作為輸出

? ? },

? ? //入口文件輸出配置

? ? output: {

? ? ? ? path: "dist/js/page",

? ? ? ? filename: "[name].bundle.js",// page1.bundle.js 和 page2.bundle.js,并存放到 ./dist/js/page 文件夾下。

? ? ? ? publicPath: "/dist/"? ? //網(wǎng)站運行時的訪問路徑乖订。

? ? },

? ? resolveLoader: {

? ? ? ? //指定默認(rèn)的loader路徑,否則依賴走到上游會找不到loader

? ? ? ? root: path.join(__dirname, 'node_modules'),

? ? ? ? alias: {//給自己寫的loader設(shè)置別名

? ? ? ? ? ? "seajs-loader": path.resolve( __dirname, "./web_modules/seajs-loader.js" )

? ? ? ? }

? ? },

? ? //新建一個開發(fā)服務(wù)器具练,并且當(dāng)代碼更新的時候自動刷新瀏覽器乍构。

? ? devServer: {

? ? ? ? historyApiFallback: true,

? ? ? ? noInfo: true,

? ? ? ? hot: true,

? ? ? ? inline: true,

? ? ? ? progress: true,

? ? ? ? port:9090 //端口你可以自定義

? ? },

? ? module: {

? ? ? ? // module.loaders 是最關(guān)鍵的一塊配置。它告知 webpack每一種文件都需要使用什么加載器來處理:

? ? ? ? loaders: [

? ? ? ? { test: /\.css$/, loader: 'style-loader!css-loader' },//.css 文件使用 style-loader 和 css-loader 來處理.

? ? ? ? //{ test: /\.css$/, loader: 'style!css' },其他寫法1扛点、"-loader"其實是可以省略不寫的哥遮,多個loader之間用“!”連接起來。

? ? ? ? //{ test: /\.css$/, loaders: ["style", "css"] }陵究,其他寫法2眠饮、用loaders數(shù)組形式;

? ? ? ? //.scss 文件使用 style-loader、css-loader 和 sass-loader 來編譯處理铜邮。

? ? ? ? //在chrome中我們通過sourcemap可以直接調(diào)試less仪召、sass源文件文件

? ? ? ? { test: /\.scss$/, loader: 'style!css!sass?sourceMap'},

? ? ? ? { test: /\.less$/, loader: 'style!css!less?sourceMap'},//.less 文件使用 style-loader、css-loader 和 less-loader 來編譯處理

? ? ? ? //.js 文件使用babel-loader來編譯處理,設(shè)置exclude用來排除node_modules這個文件夾中的代碼

? ? ? ? { test: /\.js$/, loader: 'babel!jsx',exclude: /node_modules/ },

? ? ? ? { test: /\.jsx$/, loader: "jsx-loader?harmony" },//.jsx 文件使用 jsx-loader 來編譯處理

? ? ? ? { test: /\.json$/,loader: 'json'},

? ? ? ? //{ test: /\.(png|jpg|jpeg|gif)$/, loader: 'url-loader?limit=8192'}, //圖片文件使用 url-loader 來處理松蒜,小于8kb的直接轉(zhuǎn)為base64

? ? ? ? {test: /\.(png|jpg|gif|svg)$/,loader: 'url',

? ? ? ? ? ? query: {limit: 10000,name: '[name].[ext]?[hash]'}//設(shè)置圖片名稱擴展名

? ? ? ? },

? ? ? ? { test: /\.jade$/, loader: "jade-loader" },//.jade 文件使用 jade-loader 來編譯處理

? ? ? ? { test: /\.ejs$/, loader: "ejs-loader" },//.ejs 文件使用 ejs-loader 來編譯處理

? ? ? ? { test: /\.handlebars$/, loader: "handlebars-loader" },//.handlebars 文件使用handlebars-loader來編譯處理handlebars模板文件

? ? ? ? { test: /\.dot$/, loader: "dot-loader" },//.dot 文件使用 dot-loader 來編譯處理dot模板文件

? ? ? ? { test: /\.vue$/, loader: "vue-loader" },//.vue 文件使用 vue-loader 來編譯處理

? ? ? ? { test: /\.coffee$/, loader: 'coffee-loader' },//.coffee 文件使用 coffee-loader 來編譯處理

? ? ? ? { test: /\.html$/,loader: 'vue-html'},

? ? ? ? { test: /\.woff$/,loader: "url?limit=10000&minetype=application/font-woff"},

? ? ? ? { test: /\.ttf$/,loader: "file"},

? ? ? ? { test: /\.eot$/,loader: "file"},

? ? ? ? { test: /\.svg$/,loader: "file"}

? ? ? ? ]

? ? },

? ? //分內(nèi)置插件和外置插件

? ? plugins: [

? ? ? ? //使用了一個 CommonsChunkPlugin 的插件扔茅,它用于提取多個入口文件的公共腳本部分,然后生成一個common.js來方便多頁面之間進(jìn)行復(fù)用秸苗。

? ? ? ? new webpack.optimize.CommonsChunkPlugin('common.js'),

? ? ? ? new webpack.optimize.UglifyJsPlugin({//壓縮文件

? ? ? ? ? compressor: {

? ? ? ? ? ? warnings: false,//supresses warnings, usually from module minification

? ? ? ? ? },

? ? ? ? ? except: ['$super', '$', 'exports', 'require']? ? //排除關(guān)鍵字(可選)

? ? ? ? }),

? ? ? ? new webpack.DefinePlugin({// definePlugin 接收字符串插入到代碼當(dāng)中, 所以你需要的話可以寫上 JS 的字符串

? ? ? ? ? ? __DEV__: JSON.stringify(JSON.parse(process.env.BUILD_DEV || 'true')),

? ? ? ? ? ? __PRERELEASE__: JSON.stringify(JSON.parse(process.env.BUILD_PRERELEASE || 'false'))

? ? ? ? }),

? ? ? ? new webpack.ProvidePlugin({//把一個全局變量插入到所有的代碼中,支持jQuery plugin的使用;使用ProvidePlugin加載使用頻率高的模塊

? ? ? ? ? ? //provide $, jQuery and window.jQuery to every script

? ? ? ? ? ? $: "jquery",

? ? ? ? ? ? jQuery: "jquery",

? ? ? ? ? ? "window.jQuery": "jquery"

? ? ? ? }),

? ? ? ? new webpack.NoErrorsPlugin(), //允許錯誤不打斷程序

? ? ? ? new TransferWebpackPlugin([ //把指定文件夾下的文件復(fù)制到指定的目錄

? ? ? ? ? {from: 'www'}

? ? ? ? ], path.resolve(__dirname,"src")),

? ? ? ? new HtmlwebpackPlugin({//用于生產(chǎn)符合要求的html文件;

? ? ? ? ? title: 'Hello World app',

? ? ? ? ? filename: 'assets/admin.html'

? ? ? ? })

? ? ],

? ? //其它解決方案配置

? ? resolve: {

? ? ? ? root: 'E:/github/flux-example/src', //絕對路徑, 查找module的話從這里開始查找(可選)

? ? ? ? extensions: ['', '.js', '.html', '.css', '.scss'], //自動擴展文件后綴名咖摹,意味著我們require模塊可以省略不寫后綴名

? ? ? ? alias: {? ? ? ? ? ? ? ? ? ? ? ? ? ? //模塊別名定義,方便后續(xù)直接引用別名难述,無須多寫長長的地址//后續(xù)直接 require('AppStore') 即可

? ? ? ? ? ? AppStore : 'js/stores/AppStores.js',

? ? ? ? ? ? ActionType : 'js/actions/ActionType.js',

? ? ? ? ? ? AppAction : 'js/actions/AppAction.js'

? ? ? ? },

? ? ? ? modulesDirectories: [//取相對路徑萤晴,所以比起 root ,所以會多很多路徑胁后。查找module(可選)

? ? ? ? ? ? 'node_modules',

? ? ? ? ? ? 'bower_components',

? ? ? ? ? ? 'lib',

? ? ? ? ? ? 'src'

? ? ? ? ]

? ? }


};

if (process.env.NODE_ENV === 'production') {

? module.exports.devtool = '#source-map'

? // http://vue-loader.vuejs.org/en/workflow/production.html

? module.exports.plugins = (module.exports.plugins || []).concat([

? ? new webpack.DefinePlugin({

? ? ? 'process.env': {

? ? ? ? NODE_ENV: '"production"'

? ? ? }

? ? }),

? ? new webpack.optimize.UglifyJsPlugin({

? ? ? compress: {

? ? ? ? warnings: false

? ? ? }

? ? }),

? ? //為組件分配ID店读,通過這個插件webpack可以分析和優(yōu)先考慮使用最多的模塊,并為它們分配最小的ID

? ? new webpack.optimize.OccurenceOrderPlugin()

? ])

}

————————————————

版權(quán)聲明:本文為CSDN博主「Afantor」的原創(chuàng)文章攀芯,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議屯断,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/solar_lan/article/details/82751165

```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侣诺,一起剝皮案震驚了整個濱河市殖演,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌年鸳,老刑警劉巖趴久,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異搔确,居然都是意外死亡彼棍,警方通過查閱死者的電腦和手機灭忠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來座硕,“玉大人弛作,你說我怎么就攤上這事』遥” “怎么了映琳?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蜘拉。 經(jīng)常有香客問我萨西,道長,這世上最難降的妖魔是什么诸尽? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任原杂,我火速辦了婚禮印颤,結(jié)果婚禮上您机,老公的妹妹穿的比我還像新娘。我一直安慰自己年局,他們只是感情好际看,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著矢否,像睡著了一般仲闽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上僵朗,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天赖欣,我揣著相機與錄音,去河邊找鬼验庙。 笑死顶吮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粪薛。 我是一名探鬼主播悴了,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼违寿!你這毒婦竟也來了湃交?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤藤巢,失蹤者是張志新(化名)和其女友劉穎搞莺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掂咒,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡腮敌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年阱当,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糜工。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡弊添,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捌木,到底是詐尸還是另有隱情油坝,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布刨裆,位于F島的核電站澈圈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏帆啃。R本人自食惡果不足惜瞬女,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望努潘。 院中可真熱鬧诽偷,春花似錦、人聲如沸疯坤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽压怠。三九已至眠冈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菌瘫,已是汗流浹背蜗顽。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雨让,地道東北人雇盖。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像宫患,于是被迫代替她去往敵國和親刊懈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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

  • 堅持對于我來說是一個很困難很困難的事情属拾,缺少了一點確定需要去努力的一種方向吧将谊。 么什么樣子冷溶,對……會激發(fā)我要努力的...
    時城舊巷閱讀 182評論 0 1
  • 三舅家有只貓,乖得很尊浓。 每天晚上三舅下班逞频,它都會出去接三舅,然后和三舅一起回家栋齿。對于離異的三舅來說苗胀,這只貓給了三舅...
    析鷺閱讀 437評論 3 3
  • ▼ 王彩玲拒絕了老黃的求歡菇用。 “我還是個處女呢澜驮,我不想在這里發(fā)生愛情⊥锱福” 在床上全身赤裸的王彩玲對一眼就讓她心動的...
    劇透社閱讀 357評論 0 1
  • 寫在前面的話: 里約奧運會已經(jīng)結(jié)束杂穷,本屆奧運算是亮點與槽點齊飛的一屆,由最開始的史上最混亂揩慕、條件最差的吐槽開場亭畜,隨...
    岳小月是我閱讀 1,791評論 0 0
  • 心里好難受扮休,昨晚又睡那么晚那么晚迎卤,現(xiàn)在還不想起床。 很擔(dān)心這樣下去對自己身體不好玷坠,會熬倒自己的蜗搔。 特別特別的擔(dān)心,...
    窗前的小豆豆Y閱讀 36評論 0 0