用webpack打包vue項(xiàng)目(單頁(yè)面應(yīng)用)的webpack.config設(shè)置詳解

場(chǎng)景:
vue項(xiàng)目(單頁(yè)面應(yīng)用)已完成像啼;
用webpack打包vue項(xiàng)目準(zhǔn)備上線模孩;

在項(xiàng)目根目錄(手寫(xiě))創(chuàng)建打包配置文件webpack.config.prod.js,框架及內(nèi)容如下杖玲。

//引包:打包成頁(yè)面用到的webpack+html
const webpack = require("webpack");
//htmlWebpackPlugin它的作用是根據(jù)chunk代碼塊生成文檔
const htmlWebpackPlugin = require("html-webpack-plugin");
//引包:output需要用到字符串拼接
const path = require("path");
//引包:刪除(舊的打包文件)dist目錄
var cleanWebpackPlugin = require("clean-webpack-plugin");
//引包:抽離css的插件
const ExtractTextPlugin = require("extract-text-webpack-plugin")

module.exports = {
    entry:{ //(按實(shí)際寫(xiě))這里放分解抽包后的入口文件-分解后的main.js
        // 在這里分了多少個(gè)口胧华,main.js及其引包的js庫(kù)與插件就會(huì)被分解抽包成多少個(gè)
        // 最后的 bundle:"./src/main.js"為拆解了各包后剩下的部分
        // 【格式】最終js文件名: ['vue包名1', "vue包名2"]
    },
    output:{  //(固定寫(xiě)法)為分解抽包的js文件指定路徑
        path: path.resolve(__dirname, 'dist'),  //需拼接路徑所以前面得引包path
        filename: 'js/[name].js'
    },
    module:{  //(按實(shí)際寫(xiě))加載器:文件loader温数,處理不同的靜態(tài)資源
        // 【格式】{ test:/\.后綴名$/,   use:['xx-loader'] },
        // 【格式】{ test:/\.(后綴|后綴)$/,   use:[ { loader:'xx-loader', opinions:{  }]  },
        // 【格式】{ test:/\.(后綴|后綴)$/,   use:插件.調(diào)用({ fallback:"xx-loader", use:[{ loader:'xx-loader', opinions:{  }}]  }),
    },
    resolve:{ //(固定寫(xiě)法)可以不加后綴, 直接使用 import xx from 'xx' 的語(yǔ)法
        extensions: ['.vue', '.js', '.css']
    },
    plugins:[ //(按實(shí)際寫(xiě))生成html前,打包專(zhuān)用組件的各種優(yōu)化操作驾荣,如刪舊dist外构、壓縮、抽出包等

        // (固定寫(xiě)法)刪除舊的dist打包文件夾
        new CleanWebpackPlugin('dist'),
        //其實(shí)要?jiǎng)h除文件的路徑可以是多個(gè)播掷,視具體情況而定

        //(固定寫(xiě)法) 配置html
        new htmlWebpackPlugin({
            template: './template.html',  //從這兒出發(fā)
            filename: 'index.html',    //導(dǎo)成這個(gè)
            minify:{    //(固定寫(xiě)法)html的壓縮配置
                removeComments: true,//移除注釋
                minifyJS: true,//壓縮js
                minifyCSS: true,//壓縮css
                collapseWhitespace: true,//去除空格
                // collapseWhitespace: true, //(段子黃未用)移除空白
                // removeAttributeQuotes: true  //(段子黃未用)移除屬性中的雙引號(hào)
            }
        }),

        new webpack.ProvidePlugin({//(固定寫(xiě)法)全局導(dǎo)入jquery,將jquery掛載到windows上
            // 用于有些庫(kù)审编,比如jquery、bootstrap歧匈,打包不會(huì)出錯(cuò)垒酬,但是放在瀏覽器下就出問(wèn)題,原因是bootstrap在初始化的時(shí)候要傳入全局的jQuery變量件炉,webpack中各模塊都是獨(dú)立的勘究,jquery也是,jQuery無(wú)法賦值到window上斟冕,導(dǎo)致報(bào)錯(cuò)口糕,這時(shí)候,這個(gè)插件就派上用場(chǎng)了磕蛇,將jquery模塊輸出到全局的jQuery變量上景描。讓bootstrap不再報(bào)錯(cuò)(沒(méi)用bootstrap用了jQuery的話也要全局導(dǎo)入jQuery)
            $: "jquery",
            jQuery: "jquery"
        }),
        
        //(固定寫(xiě)法)設(shè)置當(dāng)前環(huán)境為生產(chǎn)環(huán)境
        new webpack.DefinePlugin({
            'process.env': {
                NODE_ENV: '"production"'
            }
        }),

        //(固定寫(xiě)法)使用UglifyJs對(duì)js代碼進(jìn)行壓縮
        new webpack.optimize.UglifyJsPlugin({
            compress: {
                warnings: false, //去掉警告
                drop_debugger: true, //去掉調(diào)試器和調(diào)試語(yǔ)句
                drop_console: true //去除console.log
            },
            comments: false //去掉版權(quán)信息等注釋約1k,也可以保留
        }),

        //(按實(shí)際寫(xiě))抽離第三方包秀撇,這里不要寫(xiě)bundle.js
        new webpack.optimize.CommonsChunkPlugin({
            //(按實(shí)際寫(xiě))抽離的第三方包
            name: ["quanjiatong", "vue-lazyload", "v-distpicker", "vue-moment", "jquery", "axios"],
            // 對(duì)應(yīng) entry 中拆解打包后的js文件名超棺,除了bundle以外按順序倒著寫(xiě)
            // filename: "vendor.js" //這是干嘛的?樂(lè)東看到了請(qǐng)告訴我
            // (給 chunk 一個(gè)不同的名字)

            // (固定寫(xiě)法)(隨著 entry chunk 越來(lái)越多呵燕,這個(gè)配置保證沒(méi)其它的模塊會(huì)打包進(jìn) vendor chunk)
            minChunks: Infinity,
        }),

         // (固定寫(xiě)法)通過(guò)插件抽離 css
        new ExtractTextPlugin("css/styles.css")
            //參數(shù):傳入路徑棠绘,表示將抽離的css文件生成到哪個(gè)目錄中
    ]
}

后續(xù)更新...
還缺少npm三個(gè)包的安裝、.Babel文件es6轉(zhuǎn)es5的配置再扭、打包完成后的(字體圖標(biāo)等的)路徑校準(zhǔn)等.

  • package.json的scripts中增配置
    "build":"webpack --progress --config webpack.config.prod.js"

  • 打包命令行 npm run build

2018.3.26

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氧苍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子泛范,更是在濱河造成了極大的恐慌候引,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敦跌,死亡現(xiàn)場(chǎng)離奇詭異澄干,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)柠傍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)麸俘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人惧笛,你說(shuō)我怎么就攤上這事从媚。” “怎么了患整?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵拜效,是天一觀的道長(zhǎng)喷众。 經(jīng)常有香客問(wèn)我,道長(zhǎng)紧憾,這世上最難降的妖魔是什么到千? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮赴穗,結(jié)果婚禮上憔四,老公的妹妹穿的比我還像新娘。我一直安慰自己般眉,他們只是感情好了赵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著甸赃,像睡著了一般柿汛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上埠对,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天苛茂,我揣著相機(jī)與錄音,去河邊找鬼鸠窗。 笑死妓羊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稍计。 我是一名探鬼主播躁绸,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼臣嚣!你這毒婦竟也來(lái)了净刮?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤硅则,失蹤者是張志新(化名)和其女友劉穎淹父,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體怎虫,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡暑认,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了大审。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蘸际。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖徒扶,靈堂內(nèi)的尸體忽然破棺而出粮彤,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布导坟,位于F島的核電站屿良,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏惫周。R本人自食惡果不足惜尘惧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闯两。 院中可真熱鬧褥伴,春花似錦谅将、人聲如沸漾狼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逊躁。三九已至,卻和暖如春隅熙,著一層夾襖步出監(jiān)牢的瞬間稽煤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工囚戚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酵熙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓驰坊,卻偏偏與公主長(zhǎng)得像匾二,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拳芙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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

  • 喝酒 ------作者:蕭瑩 這天老公說(shuō)道察藐,明天是你的生日,要不讓大哥一家來(lái)家里聚聚吧舟扎。 好吧分飞,正好我也想喝酒了。...
    梁_木閱讀 350評(píng)論 0 2
  • 晚上補(bǔ)看了向往的生活删窒,印象深的其實(shí)還是他們吃飯時(shí)對(duì)于以前的追憶過(guò)往,對(duì)于這些我是百聽(tīng)不厭的顺囊。最開(kāi)始接觸這個(gè)節(jié)目肌索,驚...
    默默喜歡你閱讀 460評(píng)論 1 7