webpack-vue文件配置從零到全

剛才是接觸webpack時總會再配置文件那卡住壶辜,有時甚至花費1天的時間,有時甚至找不出問題所在担租。所以總結(jié)一下在項目使用遇到的問題砸民,也為自己記錄下來。

什么是webpack奋救,webpack有什么好處岭参,能做什么,自己搜搜就知道了尝艘。

首先演侯,確定電腦中安裝了nodeJS,npm利耍,最好安裝一下淘寶鏡像蚌本,國內(nèi)的網(wǎng)速,您懂的隘梨。好了,正式開始了

開始安裝

1舷嗡,打開cdm命令轴猎,選擇需要新建的項目位置,新建一個新文件夾webpack-demo进萄,輸入下面

//新建package.json文件 跟著提示一步一步來
npm init
npm install -g webpack       # 全局安裝依賴
npm install  webpack --save-dev      #安裝到當前所在的文件夾

2捻脖,在文件夾中新建一個文件src,再在src中新建兩個文件如index和components兩個文件中鼠,再index中新建index.html文件和index.js文件可婶,在components里面見a.vue(本文以vue框架為例,react同樣也可以)援雇,現(xiàn)在文件如下:

項目結(jié)構(gòu).png

index.html文件代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <my-component></my-component>
    </div>
</body>
</html>

3矛渴,新建webpack.config.js配置文件
webpack擁有很多功能主要是通過loaders和plugins來實現(xiàn)的(后面會介紹常用的loaders和plugins)。我們主要通過配置webpack.config.js文件來控制webpack惫搏。新建webpack.config.js具温,文件如下:

var path = require('path');
var ROOT_PATH = path.resolve(__dirname);
var APP_PATH = path.join(ROOT_PATH, 'src/index'); //__dirname 中的app目錄,以此類推
var APP_FILE = path.join(APP_PATH, 'index.js'); //根目錄文件index.js地址
var BUILD_PATH = path.join(ROOT_PATH, '/public'); //發(fā)布文件所存放的目錄
module.exports = {
      // 入口文件
      entry: path.join(__dirname, './src/index/index.js'),
      // 輸出配置
      output: {
        // 輸出路徑
        path: path.join(__dirname, './public'),
        filename: '[name].js'
    },
}

現(xiàn)在再命令行輸入webpack


輸入webpack命令.png

這時會發(fā)現(xiàn)項目結(jié)構(gòu)為

項目結(jié)構(gòu).png

好神奇筐赔!竟然多了一個public文件铣猩。
4,使用webpack構(gòu)建本地服務器 webpack-dev-server

npm install --save-dev webpack-dev-server

(如果安裝了淘寶鏡像茴丰,可以用cnpm代替npm這樣安裝速度會快很多)
再webpack.config文件添加命令达皿,如下

var path = require('path');
var ROOT_PATH = path.resolve(__dirname);
var APP_PATH = path.join(ROOT_PATH, 'src/index'); //__dirname 中的app目錄天吓,以此類推
var APP_FILE = path.join(APP_PATH, 'index.js'); //根目錄文件index.js地址
var BUILD_PATH = path.join(ROOT_PATH, '/public'); //發(fā)布文件所存放的目錄
module.exports = {
    // 入口文件
    entry: path.join(__dirname, './src/index/index.js'),
    // 輸出配置
    output: {
        // 輸出路徑
        path: path.join(__dirname, './public'),
        filename: '[name].js'
    },
    devServer: {
        contentBase: "./public", //本地服務器所加載的頁面所在的目錄 
        colors: true, //終端中輸出結(jié)果為彩色 
        historyApiFallback: true, //不跳轉(zhuǎn)
        inline: true //實時刷新 
    }
}

5,按時安裝loaders了
所有的loaders需要單獨安裝并且要再webpack.config文件的配置峦椰∈剩可以用下面的代碼來安裝loader

npm install xxx-loader --save

或者

npm install xxx-loader --save-dev

安裝依賴項

npm install autoprefixer babel-core babel-loader babel-plugin-transform-runtime babel-preset-es2015 babel-runtime  --save-dev

css/less/sass

npm install style-loader css-loader less  less-loader node-sass sass-loader --save-dev

圖片们何、字體萄焦、json文件依賴

npm install file-loader json-loader url-loader --save-dev

vue依賴

npm install vue-hot-reload-api vue-html-loader vue-loader vue-style-loader vue-template-compiler --save-dev
npm install vue --save

可以根據(jù)自己的項目增加或者刪除loaders
6冤竹,Plugins

cnpm install extract-text-webpack-plugin html-webpack-plugin --save-dev

7,webpack.config文件配置

var path = require('path');
var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var HtmlWebpackPlugin = require('html-webpack-plugin'); //生成html
var ROOT_PATH = path.resolve(__dirname);
var APP_PATH = path.join(ROOT_PATH, 'src/index'); //__dirname 中的app目錄鹦蠕,以此類推
var APP_FILE = path.join(APP_PATH, 'index.js'); //根目錄文件index.js地址
var BUILD_PATH = path.join(ROOT_PATH, '/public'); //發(fā)布文件所存放的目錄

module.exports = {
    // 入口文件
    entry: {
        index: APP_FILE
    },
    // 輸出配置
    output: {
        // 輸出路徑
        path: BUILD_PATH, // 輸出文件的保存路徑
        filename: '[name].[hash:5].js' // 輸出文件的名稱
    },
    resolve: {
        extensions: ['', '.js', '.vue', '.scss', '.css'], //后綴名自動補全
        alias: {
            'Vue': 'vue/dist/vue.js'
        }
    },
    module: {

        loaders: [
            // 使用vue-loader 加載 .vue 結(jié)尾的文件
            {
                test: /\.vue$/,
                exclude: /^node_modules$/,
                loader: 'vue'
            }, {
                test: /\.json$/,
                exclude: /^node_modules$/,
                loader: "json"
            }, {
                test: /\.css$/,
                exclude: /^node_modules$/,
                loader: ExtractTextPlugin.extract('style', ['css', 'autoprefixer'])
            }, {
                test: /\.scss$/,
                exclude: /^node_modules$/,
                loader: ExtractTextPlugin.extract('style', ['css', 'autoprefixer', 'sass'])
            }, {
                test: /\.(png|jpg)$/,
                exclude: /^node_modules$/,
                loader: 'url-loader?limit=8192&name=images/[hash:8].[name].[ext]'
            }, {
                test: /\.(eot|woff|svg|ttf|woff2|gif|appcache)(\?|$)/,
                exclude: /^node_modules$/,
                loader: 'file-loader?name=[name].[ext]'
            }, {
                test: /\.js$/,
                exclude: /^node_modules$/,
                loader: 'babel'
            }
        ]
    },
    Favlist: {
        loaders: {
            js: 'babel'
        }
    },
    plugins: [
        new webpack.DefinePlugin({
            'process.env': {
                NODE_ENV: JSON.stringify('development') //定義編譯環(huán)境
            }
        }),
        new HtmlWebpackPlugin({ //根據(jù)模板插入css/js等生成最終HTML
            filename: './index.html', //生成的html存放路徑,相對于 path
            template: './src/index/index.html', //html模板路徑
            hash: false,
        }),
        new ExtractTextPlugin('[name].css')
    ],
    devServer: {
        contentBase: "./public", //本地服務器所加載的頁面所在的目錄
        colors: true, //終端中輸出結(jié)果為彩色
        historyApiFallback: true, //不跳轉(zhuǎn)
        inline: true //實時刷新钟病,
    }
}

特別注意的是在vue2.0以上版本需要如下設(shè)置,不然匯報錯

resolve: {
        alias: {
            'Vue': 'vue/dist/vue.js'
        }
    }

ok這是以上的配置肠阱,現(xiàn)在我們來做一個簡單的示例吧票唆。
在components新建一個a.vue文件,代碼如下

<template id="template-home">
  <div>It is a webpack demo</div>
</template>
<style>
body {
    color: red;
    backgruond:#ccc;
}
</style>

再index.js中寫入下面代碼:

import Vue from 'Vue'
import Child from '../components/a.vue'
new Vue({
    el: '#app',
    components: {
        'my-component': Child
    }
});

index.html代碼如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>webpack-demo</title>
</head>
<body>
    <div id="app">
        <my-component></my-component>
    </div>
</body>
</html>

然后在控制臺運行webpack看目錄的變化屹徘,然后再運行webpack-dev-server,再瀏覽器打開:localhost:8080
github:https://github.com/sherely/webpack-vue

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末簿煌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姨伟,更是在濱河造成了極大的恐慌豆励,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肆糕,死亡現(xiàn)場離奇詭異,居然都是意外死亡淮摔,警方通過查閱死者的電腦和手機始赎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門仔燕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魔招,“玉大人,你說我怎么就攤上這事办斑。” “怎么了鳞疲?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵蠕蚜,是天一觀的道長。 經(jīng)常有香客問我腺毫,道長挣柬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任凛忿,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘委乌。我一直安慰自己,他們只是感情好戈咳,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布壕吹。 她就那樣靜靜地躺著,像睡著了一般耳贬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顷蟆,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音逐纬,去河邊找鬼。 笑死豁生,一個胖子當著我的面吹牛漫贞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绕辖,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仪际,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了树碱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤框舔,失蹤者是張志新(化名)和其女友劉穎赎婚,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挣输,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡撩嚼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年完丽,在試婚紗的時候發(fā)現(xiàn)自己被綠了逻族。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜻底。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡朱躺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出长搀,到底是詐尸還是另有隱情,我是刑警寧澤源请,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布谁尸,位于F島的核電站,受9級特大地震影響良蛮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜货徙,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一皮胡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屡贺,春花似錦、人聲如沸甩栈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽允蜈。三九已至蒿柳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間垒探,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工蛤克, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人构挤。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓筋现,卻偏偏與公主長得像唐础,于是被迫代替她去往敵國和親矾飞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

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