最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解webpack多頁(yè)面配置記錄

 更新時(shí)間:2018年01月22日 09:44:59   作者:CavinHuang  
本篇文章主要介紹了詳解webpack多頁(yè)面配置記錄,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

之前也寫(xiě)過(guò)webpack學(xué)習(xí)記錄,項(xiàng)目中需要一個(gè)常用的webpack多頁(yè)面配置,所以才動(dòng)手,本著能寫(xiě)一行是一行的原則,開(kāi)始了配置webpack之旅。

定目錄結(jié)構(gòu)

首先我只需要開(kāi)發(fā)環(huán)境(包含自動(dòng)更新)和打包環(huán)境,初定的目錄結(jié)構(gòu)是這樣的

app主要寫(xiě)業(yè)務(wù)代碼,config里寫(xiě)webpack配置和一些打包、開(kāi)發(fā)的配置,經(jīng)過(guò)一番計(jì)較,最后根據(jù)自己習(xí)慣,目錄結(jié)構(gòu)如下:

 

app
 -libs # 第三方插件庫(kù),可以是css也可以是js,eg:jq
 -static # 公共的靜態(tài)資源文件夾
 -temlates # 模板文件夾
  -*** # 模塊文件夾
  -css # 當(dāng)前模塊獨(dú)有的css文件需要在index.js中import
  -html # 模板文件,計(jì)劃支持html,pug兩種模板語(yǔ)言
  -index.js # 當(dāng)前模塊入口文件

配置webpack

按上面所說(shuō),建好文件后,在根目錄新建webpack.config.js

然后全局安裝webpack和webpack-dev-server

npm i webpack webpack-dev-server -g

然后局部安裝

npm i webpack webpack-dev-server --save-dev

這樣我們的項(xiàng)目就可以引入webpack了,并且可以使用webpack-dev-server的相關(guān)功能了,webpack.config.js內(nèi)容非常的簡(jiǎn)單,就是根據(jù)環(huán)境變量中指定的當(dāng)前環(huán)境來(lái)加載不同的webpack配置即可:

// 未指定這手動(dòng)指定為生產(chǎn)環(huán)境
process.env.NODE_ENV = process.env.NODE_ENV ? process.env.NODE_ENV : 'product';
// 獲取環(huán)境命令,并去除首尾空格
const env = process.env.NODE_ENV.replace( /(\s*$)|(^\s*)/ig, "" );
// 根據(jù)環(huán)境變量引用相關(guān)的配置文件
module.exports = require( `./config/webpack.config.${env}.js` )

在config文件夾下分別新建webpack.config.dev.js和webpack.config.product.js分別代表開(kāi)發(fā)環(huán)境的配置和生成打包文件的配置,考慮到很多配置都會(huì)相同,再建一個(gè)webpack.config.base.js用來(lái)寫(xiě)統(tǒng)一的配置。

webpack.config.dev.js和webpack.config.product.js的區(qū)別是一個(gè)runtime時(shí)的配置,一個(gè)文件生成的配置,簡(jiǎn)而言之,就是開(kāi)發(fā)環(huán)境的不同是配置webpack-dev-server,生產(chǎn)環(huán)境是壓縮,map等配置

webpack.config.base.js文件才是webpack配置的主菜,包括entry、output、modules、plugins等

獲得所有入口文件的文件夾

function getEntryDir() {
  let globPath = 'app/templates/**/*.' + config.tplLang
  // (\/|\\\\) 這種寫(xiě)法是為了兼容 windows和 mac系統(tǒng)目錄路徑的不同寫(xiě)法
  let pathDir = 'app(\/|\\\\)(.*?)(\/|\\\\)html'
  let files = glob.sync( globPath )
  let dirname, entries = []
  for ( let i = 0; i < files.length; i++ ) {
    dirname = path.dirname( files[ i ] )
    entries.push( dirname.replace( new RegExp( '^' + pathDir ), '$2' ) )
  }
  return entries;
}

注入entry和生成HTMLWebpackPlugin

getEntryDir()
  .forEach( ( page ) => {
    let moduleName = page.split( '/' )
    let moduleNameStr = moduleName[ moduleName.length - 1 ]
    const htmlPlugin = new HTMLWebpackPlugin( {
      filename: `${moduleNameStr}.html`,
      template: path.resolve( __dirname, `../app/${page}/html/index.${config.tplLang}` ),
      chunks: [ moduleNameStr, 'vendors' ],
    } );
    HTMLPlugins.push( htmlPlugin );
    Entries[ moduleNameStr ] = path.resolve( __dirname, `../app/${page}/index.js` );
  } )

關(guān)于HTMLWebpackPlugin的用法,可以參照html-webpack-plugin用法全解 以及 官方文檔 已經(jīng)寫(xiě)的非常詳盡了。

第三方庫(kù)入口自動(dòng)獲取

function getVendors() {
  let globPath = `app/${config.libraryDir}/**/*.*`
  let files = glob.sync( globPath )
  let libsArr = []
  files.forEach( ( v, i ) => {
    libsArr.push( './' + v )
  } )
  return libsArr
}
Entries[ 'vendors' ] = getVendors() // 第三方類(lèi)庫(kù)

其中多頁(yè)面入口和第三方庫(kù)配置,請(qǐng)看這篇webpack中文站文檔分離 應(yīng)用程序(app) 和 第三方庫(kù)(vendor) 入口

output 配置

output: {
 filename: "static/js/[name].bundle.[hash].js",
 path: path.resolve( __dirname, config.devServerOutputPath )
}

webpack配置合并

主要用到一個(gè)webpack插件 webpack-merge,可把分開(kāi)配置的config合并,分開(kāi)生產(chǎn)環(huán)境和調(diào)試環(huán)境

最后奉上github地址: webpack-multi-skeleton ,有不對(duì)之處,請(qǐng)指正!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • layui動(dòng)態(tài)渲染生成select的option值方法

    layui動(dòng)態(tài)渲染生成select的option值方法

    今天小編就為大家分享一篇layui動(dòng)態(tài)渲染生成select的option值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • 使用js獲取圖片原始尺寸

    使用js獲取圖片原始尺寸

    本文給大家推薦的是一個(gè)使用js獲取圖片的原始尺寸的例子,從本人項(xiàng)目中摳出來(lái)的,這里奉獻(xiàn)給大家,有需要的直接拿走。
    2014-12-12
  • JavaScript實(shí)現(xiàn)飛舞的泡泡效果

    JavaScript實(shí)現(xiàn)飛舞的泡泡效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)飛舞的泡泡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • JS如何通過(guò)視頻鏈接獲取視頻時(shí)長(zhǎng)

    JS如何通過(guò)視頻鏈接獲取視頻時(shí)長(zhǎng)

    這篇文章主要介紹了JS如何通過(guò)視頻鏈接獲取視頻時(shí)長(zhǎng),這個(gè)函數(shù)用提供的URL創(chuàng)建一個(gè)新的Video元素,并在loadedmetadata事件被觸發(fā)時(shí)解析一個(gè)帶有視頻持續(xù)時(shí)間的Promise,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • 深入了解JavaScript的邏輯運(yùn)算符(與、或)

    深入了解JavaScript的邏輯運(yùn)算符(與、或)

    本篇文章分享的是 JS 當(dāng)中的邏輯運(yùn)算符與、或,也就是 && 、 || ,沒(méi)錯(cuò),別看這簡(jiǎn)簡(jiǎn)單單的幾個(gè)運(yùn)算符,雖然這是最基礎(chǔ)的知識(shí),但其中隱藏的奧秘卻十分耐人尋味,接下來(lái)本文就為大家一一揭開(kāi)這簡(jiǎn)單的運(yùn)算符背后的奇妙之處。
    2016-12-12
  • 微信小程序網(wǎng)絡(luò)層封裝的實(shí)現(xiàn)(promise, 登錄鎖)

    微信小程序網(wǎng)絡(luò)層封裝的實(shí)現(xiàn)(promise, 登錄鎖)

    這篇文章主要介紹了微信小程序網(wǎng)絡(luò)層封裝(promise, 登錄鎖),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • 淺談webpack打包過(guò)程中因?yàn)閳D片的路徑導(dǎo)致的問(wèn)題

    淺談webpack打包過(guò)程中因?yàn)閳D片的路徑導(dǎo)致的問(wèn)題

    下面小編就為大家分享一篇淺談webpack打包過(guò)程中因?yàn)閳D片的路徑導(dǎo)致的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • 9個(gè)javascript語(yǔ)法高亮插件 推薦

    9個(gè)javascript語(yǔ)法高亮插件 推薦

    語(yǔ)法高亮效果使用非常頻繁,特別是在博客里展示各種代碼的時(shí)候,可以讓代碼更易讀。我們身邊就有很多語(yǔ)法高亮的插件,其中大部分是用javascript寫(xiě)的,也有一些是通過(guò)server端語(yǔ)言實(shí)現(xiàn)(比如Phyton或Ruby)。
    2009-07-07
  • 使用webpack搭建pixi.js開(kāi)發(fā)環(huán)境

    使用webpack搭建pixi.js開(kāi)發(fā)環(huán)境

    這篇文章主要介紹了使用webpack搭建pixi.js開(kāi)發(fā)環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • JavaScript斷言與類(lèi)型守衛(wèi)及聯(lián)合聲明超詳細(xì)介紹

    JavaScript斷言與類(lèi)型守衛(wèi)及聯(lián)合聲明超詳細(xì)介紹

    這篇文章主要介紹了JavaScript斷言與類(lèi)型守衛(wèi)及聯(lián)合聲明,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-11-11

最新評(píng)論

承德县| 石台县| 锡林浩特市| 武威市| 襄樊市| 潜山县| 利川市| 白沙| 日土县| 延津县| 休宁县| 洞头县| 利津县| 溧水县| 清原| 隆昌县| 安阳县| 太谷县| 岐山县| 瑞安市| 蒙山县| 鹿泉市| 武义县| 和平县| 额济纳旗| 南木林县| 多伦县| 长兴县| 芦溪县| 平度市| 连平县| 松滋市| 玉山县| 鄂温| 定边县| 蕲春县| 兴文县| 临泉县| 克拉玛依市| 宁晋县| 波密县|