webpack4+react項(xiàng)目搭建(一)

webpack配置

1.初始化項(xiàng)目

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---項(xiàng)目環(huán)境配置
scripts---node腳本文件
build.js 生產(chǎn)環(huán)境使用腳本
start.js 開發(fā)環(huán)境使用腳本
src---資源目錄

3.先嘗試一個(gè)簡單配置

1)配置啟動(dòng)腳本命令

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ā)模式運(yùn)行腳本

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)在入口編寫一點(diǎn)內(nèi)容

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

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


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

  1. 改寫webpack配置文件,common文件導(dǎo)出一個(gè)可傳參數(shù)的基本配置生成器, prod和dev文件使用webpack-merge將通用配置和各自模式下的配置進(jìn)行合并導(dǎo)出

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選項(xiàng)是server模式下的output, 開啟server后,webpack會(huì)實(shí)時(shí)編譯代碼到內(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'); 
})

運(yùn)行命令npm run start, 瀏覽器自動(dòng)彈出窗口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容