webpack運(yùn)行配置(1)

webpack特點(diǎn)

- webpack本質(zhì)上是nodejs的一個(gè)包涤伐,所以webpack是基于node.exe來運(yùn)行的
- 想要運(yùn)行webpack就必須要安裝node.exe
- webpakc是在開發(fā)階段要被程序員使用的骡湖,但是在生成環(huán)節(jié)中是用不到的(生產(chǎn)環(huán)節(jié)已經(jīng)打包壓縮好了)

如何安裝webpack

  • 安裝node.exe的同事會(huì)自動(dòng)安裝好npm 包管理工具
  • npm 包這個(gè)管理器下載的包是來源于國外雇初,所以速度回很慢,甚至出錯(cuò)
    所以我們使用國內(nèi)taobao開發(fā)的一個(gè)cnpm來替代npm的使用

使用webpack之前的準(zhǔn)備工作

  • 安裝node環(huán)境
  • npm install cnpm -g 將cnpm全局安裝(使任何地方都可以使用)
  • cnpm install webpack -g 將webpack安裝成為全局包
  • cnpm install webpack --save-dev 當(dāng)前項(xiàng)目根目錄安裝webpack,給當(dāng)前項(xiàng)目使用
  • npm init -y 當(dāng)前項(xiàng)目根目錄初始化npm,會(huì)有package.json
  • 如果運(yùn)行 webpack 執(zhí)行webpack.config.js
  • 如果要執(zhí)行webpack.develop.config.js,就運(yùn)行webpack --config
    webpack.develop.config.js,當(dāng)然也可以在package.json中設(shè)置
{
  "name": "01webpack",
  "version": "1.0.0",
  "description": "",
  "main": "webpack.config.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
  //可以直接命令運(yùn)行npm run develop 來執(zhí)行webpack.develop.config.js文件
    "develop": "webpack --config webpack.develop.config.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-loader": "^7.1.0",
    "less": "^2.7.2",
    "less-loader": "^4.0.4",
    "node-sass": "^4.5.3",
    "sass-loader": "^6.0.6",
    "webpack": "^3.0.0",
    "webpack-dev-server": "^2.5.0"
  }
}

學(xué)習(xí)nodejs的模塊化開發(fā)(main.js依賴calc.js寫法)

    1、在nodejs中一切.js文件都可以是一個(gè)模塊
    2、calc.js
        function add(x,y){return x + y;}
        module.exports = add;

    3认境、main.js使用calc.js中的add方法
        導(dǎo)calc.js模塊
        // webpack的入口文件
var add = require('./calc.js');
// console.log(add(2,3));
// 獲取到頁面上面所有dom對(duì)象
var v1obj = document.getElementById('v1');
var v2obj = document.getElementById('v2');
var btobj = document.getElementById('bt');
var resobj = document.getElementById('res');
btobj.onclick = function(){
    // 實(shí)現(xiàn)一個(gè)加法功能
    var v1Val = (v1obj.value - 0);
    var v2Val = (v2obj.value - 0);

    resobj.value = add(v1Val,v2Val);
}   

webpack的基本使用方式

  • 第一種使用方式:webpack 入口文件.js的路徑 輸出文件.js的路徑
    在當(dāng)前要打包的入口.js文件的位置打開cmd ,輸入 webpack 入口文件.js  輸出文件.js 

  • 第二種使用方式:webpack 結(jié)合 webpack.config.js 配置文件進(jìn)行打包
    目的:在cmd面板中直接利用  webpack指令即可進(jìn)行打包挟鸠,
    特點(diǎn):如果直接指向 webpack 指令叉信,webpack指令會(huì)自動(dòng)去查找當(dāng)前目錄下的webpack.config.js文件
    
    編寫步驟:
    1、webpack.config.js中定義入口文件和輸出文件的 內(nèi)容
    module.exports={
        entry:path.resolve(__dirname,'src/main.js'), ---main.js的路徑
        output: {
            path: path.resolve(__dirname, 'dist'), ---自己創(chuàng)建的dist文件夾,用來放bundle.js
            filename: 'bundle.js',  
      },

    2艘希、在與webpack.config.js文件相同的目錄下打開cmd硼身,執(zhí)行webpack即可完成打包

利用webpack完成 css文件的打包

  • 利用webpack完成 css文件的打包
    注意點(diǎn):webpack是利用style-loader和css-loader這兩個(gè)nodejs的包來完成.css文件的打包工作
    步驟:
    1、cnpm i style-loader css-loader 安裝本地包
    style-loader與css-loader會(huì)依賴于其他的很多包覆享,所以一般我們?cè)趯⑦@個(gè)項(xiàng)目文件發(fā)送給其他人使用的時(shí)候佳遂,是要?jiǎng)h除 node_modeuls這個(gè)文件夾的,這時(shí)候就有可能不知道這個(gè)項(xiàng)目中依賴于哪些第三方包

          解決方案:
          node.exe中提供了一個(gè) package.json文件用來存放當(dāng)前安裝的所有包撒顿,
          這些包分為:
          1丑罪、開發(fā)階段使用的包      cnpm i 包名稱 --save-dev
           --save-dev對(duì)應(yīng)的是package.json devDependencies節(jié)點(diǎn)
          2、生產(chǎn)環(huán)境階段使用的包  cnpm i 包名稱 --save
              --save對(duì)應(yīng)的是package.json dependencies節(jié)點(diǎn)
    
          保存的步驟:
          1凤壁、利用 cnpm init 來生成一個(gè) package.json文件
          2吩屹、cnpm i style-loader css-loader  --save-dev
    
      2、將style-loader與css-loader配置在 webpack.config.js中拧抖,webpack才能使用這兩個(gè)loader文件
           webpack.config.js中定義入口文件和輸出文件的 內(nèi)容(見最后webpack.config.js的配置)
    

利用webpack完成 sass文件的打包

步驟:
1煤搜、cnpm install sass-loader node-sass --save-dev
2、sass-loader 在webpack.config.js中增加一個(gè) loader節(jié)點(diǎn)

注意點(diǎn): sass文件的打包依賴于 sass-loader 解析成原生的 .css語法
所以要最終打包成功就必須要依賴于style-loader css-loader 
所以在配置 sass的時(shí)候唧席,
style-loader!css-loade!sass-loader

{
            test:/\.scss$/,   //表示當(dāng)前要打包的文件的后綴正則表達(dá)式
            loader:'style-loader!css-loader!sass-loader' //實(shí)現(xiàn)sass文件的打包
}

利用webpack完成 less文件的打包

步驟:
1擦盾、cnpm install less-loader less  --save-dev
2、less-loader 在webpack.config.js中增加一個(gè) loader節(jié)點(diǎn)
    注意點(diǎn): 在配置 loader:'' 對(duì)應(yīng)的loader的時(shí)候袱吆,要
   按照 style-loader!css-loade!less-loader 配置

利用webpack完成 url()導(dǎo)入資源文件的打包

例如需求:
    background-image: url(../imgs/home.png)
    那么webpack必須利用 url-loader 這個(gè)包去解析厌衙,而url-loader依賴file-loader,所以
    步驟:
    1绞绒、npm i url-loader file-loader --save-dev
    2婶希、url-loader在webpack.config.js中增加一個(gè) loader節(jié)點(diǎn)

利用webpack完成 es6轉(zhuǎn)es5

    步驟:
    1、npm install babel-core babel-loader babel-preset-es2015 babel-plugin-transform-runtime --save-dev

     注意:babel-plugin-transform-runtime 安裝是為了在后面能夠正常編譯.vue這個(gè)文件不出錯(cuò)

main.js配置

// webpack的入口文件
// 在此處main.js實(shí)現(xiàn)的是獲取到dom對(duì)象蓬衡,實(shí)現(xiàn)一個(gè)加法功能
var add = require('./calc.js');
// 導(dǎo)入site.css 以后webpack才能將site.css打包
require('./1.css');
require('./site1.scss');
require('./site2.less');
// console.log(add(2,3));
// 獲取到頁面上面所有dom對(duì)象
var v1obj = document.getElementById('v1');
var v2obj = document.getElementById('v2');
var btobj = document.getElementById('bt');
var resobj = document.getElementById('res');

btobj.onclick = function(){
    // 實(shí)現(xiàn)一個(gè)加法功能
    var v1Val = (v1obj.value - 0);
    var v2Val = (v2obj.value - 0);

    resobj.value = add(v1Val,v2Val);
}

webpack.config.js配置

var path = require('path');

module.exports = {
    entry:path.resolve(__dirname,'src/main.js'),
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js',
    },
  module:{
        loaders:[
            {
                // 將當(dāng)前項(xiàng)目中所有的.js文件都要進(jìn)行es6轉(zhuǎn)es5操作喻杈,node_moudels除外
                test:/\.js$/,   //表示當(dāng)前要打包的文件的后綴正則表達(dá)式
                // loader:'babel-loader?presets[]=es2015', //如果寫到這里彤枢,將來在打包.vue文件的時(shí)候會(huì)報(bào)錯(cuò),表示先利用css-loader解析.css文件筒饰,再調(diào)用style-loader打包
                loader:'babel-loader',
                exclude:/node_modules/ , //node_modules中的所有.js文件不去轉(zhuǎn)換缴啡,提高打包性能
                
            },
            {
                // 打包c(diǎn)ss文件
                test:/\.css$/,   //表示當(dāng)前要打包的文件的后綴正則表達(dá)式
                loader:'style-loader!css-loader' //表示先利用css-loader解析.css文件,再調(diào)用style-loader打包
            },
            {
                // 打包 sass文件
                test:/\.scss$/,   //表示當(dāng)前要打包的文件的后綴正則表達(dá)式
                loader:'style-loader!css-loader!sass-loader' //實(shí)現(xiàn)sass文件的打包
            },
            {
                // 打包less文件
                test:/\.less$/,   //表示當(dāng)前要打包的文件的后綴正則表達(dá)式
                loader:'style-loader!css-loader!less-loader' //實(shí)現(xiàn)sass文件的打包
            },
            {
                // 打包url()請(qǐng)求的資源文件
                test:/\.(png|jpg|gif|ttf)$/,   // 注意url可能請(qǐng)求多個(gè)資源瓷们,所以將來在項(xiàng)目中通過url導(dǎo)入的資源擴(kuò)展名必須配置在這里
                // loader:'url-loader'  //這種配置會(huì)將圖片變成一個(gè)base64的字符串存儲(chǔ)到build.js中业栅,如果圖片很大的話,那么會(huì)造成build.js也比較大谬晕,加載的時(shí)候會(huì)導(dǎo)致效率低下
                loader:'url-loader?limit=40000' //限制圖片的大小如果<40k則把他當(dāng)做base64字符串存儲(chǔ)到build.js中碘裕,如果>40k 則單獨(dú)將圖片存放到磁盤上,將路徑打包進(jìn)去bulid.js 
            }
        ]
    },
    babel:{
         presets: ['es2015'],  
         plugins: ['transform-runtime']  //這句代碼就是為了解決打包.vue文件不報(bào)錯(cuò)
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末攒钳,一起剝皮案震驚了整個(gè)濱河市帮孔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌不撑,老刑警劉巖文兢,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異焕檬,居然都是意外死亡姆坚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門揩页,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旷偿,“玉大人,你說我怎么就攤上這事爆侣∑汲蹋” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵兔仰,是天一觀的道長茫负。 經(jīng)常有香客問我,道長乎赴,這世上最難降的妖魔是什么忍法? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮榕吼,結(jié)果婚禮上饿序,老公的妹妹穿的比我還像新娘。我一直安慰自己羹蚣,他們只是感情好原探,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般咽弦。 火紅的嫁衣襯著肌膚如雪徒蟆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天型型,我揣著相機(jī)與錄音段审,去河邊找鬼。 笑死闹蒜,一個(gè)胖子當(dāng)著我的面吹牛寺枉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绷落,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼型凳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嘱函?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤埂蕊,失蹤者是張志新(化名)和其女友劉穎往弓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蓄氧,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡函似,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喉童。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撇寞。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖堂氯,靈堂內(nèi)的尸體忽然破棺而出蔑担,到底是詐尸還是另有隱情,我是刑警寧澤咽白,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布啤握,位于F島的核電站,受9級(jí)特大地震影響晶框,放射性物質(zhì)發(fā)生泄漏排抬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一授段、第九天 我趴在偏房一處隱蔽的房頂上張望蹲蒲。 院中可真熱鬧,春花似錦侵贵、人聲如沸届搁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咖祭。三九已至掩宜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間么翰,已是汗流浹背牺汤。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浩嫌,地道東北人檐迟。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像码耐,于是被迫代替她去往敵國和親追迟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載亏钩。 webpack介紹和使用 一、webpack介紹 1带猴、由來 ...
    it筱竹閱讀 11,122評(píng)論 0 21
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看懈万,也希望更多的人看到...
    小小字符閱讀 8,164評(píng)論 7 35
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,464評(píng)論 2 71
  • 學(xué)習(xí)流程 參考文檔:入門Webpack拴清,看這篇就夠了Webpack for React 一. 簡單使用webpac...
    Jason_Zeng閱讀 3,138評(píng)論 2 16
  • 一朝一暮思君容,醉把愛戀埋心頭会通; 一字一句吐心聲口予,愿攜君心永相隨。
    沐日閱讀 162評(píng)論 0 2