webpack4+react項目搭建(一)

webpack配置

1.初始化項目

npm init

安裝webpack

npm install webpack

2.創(chuàng)建配置目錄結(jié)構(gòu)

build---webpack配置
webpack.common.js webpack基礎(chǔ)配置
webpack.dev.js webpack開發(fā)配置
webpack.prod.js webpack生產(chǎn)配置
config---項目環(huán)境配置
scripts---node腳本文件
build.js 生產(chǎn)環(huán)境使用腳本
start.js 開發(fā)環(huán)境使用腳本
src---資源目錄

3.先嘗試一個簡單配置

1)配置啟動腳本命令

package.json
scripts: {
  "start": "node ./scripts/start.js", 
  "build": "node ./scripts/build.js"
}

2)編寫webpack配置

build/webpack.common.js
const path = require('path');
module.exports = {
  entry: "./src/index.js",
  output: {
    path: path.resolve(__dirname, "../dist"),
    filename: "bundle.js"
  }
}

3)編寫開發(fā)模式運行腳本

scripts/build.js
 
const webpack = require('webpack'); 
const webpackConfig = require('../build/webpack.common.js'); 
webpack(webpackConfig, (err, stats) => { 
    if(err || stats.hasErrors()){ 
     console.log("編譯失敗"); 
    } 
});

4)在入口編寫一點內(nèi)容

src/index.js
console.log('hello world');

5)執(zhí)行npm run build 命令抠艾,生成打包目錄dist
4.配置開發(fā)服務器-webpack-dev-server
1)安裝dev服務器和合并配置工具


npm install webpack-dev-server webpack-merge -D

  1. 改寫webpack配置文件朗恳,common文件導出一個可傳參數(shù)的基本配置生成器由蘑, prod和dev文件使用webpack-merge將通用配置和各自模式下的配置進行合并導出

build/webpack.common.js
const path = require('path');
function webpackCommonConfigCreator(options) {
  return {
    mode: options.mode,
    entry: "./src/index.js",
    output: {
      filename: "bundle.js",
      path: path.resolve(__dirname, "../dist")
   }
  }
}
module.exports = webpackCommonConfigCreator;

build/webpack.prod.js
const webpackConfigCreator = require('./webpack.common');
const merge = require('webpack-merge');
const config = { };
const options = {
   mode: 'production'
}
module.exports = merge(webpackConfigCreator(options), config)

build/webpack.dev.js
const webpackConfigCreator = require('./webpack.common');
const merge = require('webpack-merge');
const config = { };
const options = {
  mode: 'development'
}
module.exports = merge(webpackConfigCreator(options), config)

scripts/build.js
const webpack = require('webpack');
const webpackConfig = require('../build/webpack.prod.js’);
webpack(webpackConfig, (err, stats) => {
    if (err || stats.hasErrors()) {
      console.log("編譯失敗");
    }
})

npm run build 輸出正常
3)配置webpack-dev-server
build/webpack.dev.js
contentBase選項是server模式下的output, 開啟server后乐疆,webpack會實時編譯代碼到內(nèi)存

const path = require('path');
const config = {
    devServer: {

    }

}
scripts/start.js
const webpack = require('webpack'); 
const webpackDevServer = require('webpack-dev-server'); 
const webpackConfig = require('../build/webpack.dev.js'); 
const compiler = webpack(webpackConfig); 
const options = Object.assign({}, webpackConfig.devServer, { open: true }) 
const server = new webpackDevServer(compiler, options); 
server.listen(3000, '127.0.0.1', () => { 
    console.log('Starting server on http://localhost:8080'); 
})

運行命令npm run start, 瀏覽器自動彈出窗口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者刘绣。
  • 序言:七十年代末然磷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子轿亮,更是在濱河造成了極大的恐慌疮薇,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件我注,死亡現(xiàn)場離奇詭異按咒,居然都是意外死亡,警方通過查閱死者的電腦和手機但骨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門励七,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奔缠,你說我怎么就攤上這事掠抬。” “怎么了校哎?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵两波,是天一觀的道長瞳步。 經(jīng)常有香客問我,道長腰奋,這世上最難降的妖魔是什么单起? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮劣坊,結(jié)果婚禮上嘀倒,老公的妹妹穿的比我還像新娘。我一直安慰自己局冰,他們只是感情好测蘑,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锐想,像睡著了一般帮寻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赠摇,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天固逗,我揣著相機與錄音,去河邊找鬼藕帜。 笑死烫罩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的洽故。 我是一名探鬼主播贝攒,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼时甚!你這毒婦竟也來了隘弊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荒适,失蹤者是張志新(化名)和其女友劉穎梨熙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刀诬,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡咽扇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陕壹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片质欲。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖糠馆,靈堂內(nèi)的尸體忽然破棺而出嘶伟,到底是詐尸還是另有隱情,我是刑警寧澤又碌,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布奋早,位于F島的核電站盛霎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏耽装。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一期揪、第九天 我趴在偏房一處隱蔽的房頂上張望掉奄。 院中可真熱鬧,春花似錦凤薛、人聲如沸姓建。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽速兔。三九已至,卻和暖如春活玲,著一層夾襖步出監(jiān)牢的瞬間涣狗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工舒憾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留镀钓,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓镀迂,卻偏偏與公主長得像丁溅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子探遵,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

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