欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue-cli配置文件——config篇

 更新時(shí)間:2018年01月04日 10:01:19   作者:手撕黃油  
這篇文章主要介紹了vue-cli中的webpack是如何配置的,本篇文章主要是分析vue中關(guān)于config文件夾中的相關(guān)代碼,config的文件結(jié)構(gòu),感興趣的朋友參考下本文

最近一直在研究webpack,突然想看看vue-cli中的webpack是如何配置,查閱了很多相關(guān)的文章,所以也想出幾篇關(guān)于vue-cli配置的東西。正所謂“工欲善其事必先利其器”嘛!這一篇主要是分析vue中關(guān)于 config文件夾中的相關(guān)代碼 ;

首先我們先看一下config的文件結(jié)構(gòu):

|-config
|---dev.env.js
|---index.js
|---prod.env.js

打開(kāi)我們的vue項(xiàng)目文件夾我們可以清楚的看到文件夾下的三個(gè)文件, “dev.env.js” , “index.js” , “prod.env.js” ,我們先打開(kāi)prod.env.js的文件,看里面的內(nèi)容:

'use strict'
module.exports = {
 NODE_ENV: '"production"'
}

prod.env.js的內(nèi)容非常簡(jiǎn)單,僅僅是導(dǎo)出了一個(gè)對(duì)象,里面寫(xiě)明了執(zhí)行環(huán)境是“production(生產(chǎn)環(huán)境)”;我們接下來(lái)看與之對(duì)應(yīng)的“dev.env.js”文件:

'use strict'
//引入webpack-merge模塊
const merge = require('webpack-merge')
//引入剛才打開(kāi)的prod.env.js
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
  NODE_ENV: '"development"'
})

在“dev.env.js”中,先引入了webpack-merge這個(gè)模塊。這個(gè)模塊的作用是來(lái)合并兩個(gè)配置文件對(duì)象并生成一個(gè)新的配置文件,有點(diǎn)兒類(lèi)似于es6的object.assign();

vue-cli中將一些通用的配置抽出來(lái)放在一個(gè)文件內(nèi),在對(duì)不同的環(huán)境配置不同的代碼,最后使用webpack-merge來(lái)進(jìn)行合并,減少重復(fù)代碼,正如文檔中所說(shuō),“ webpack遵循不重復(fù)原則(Don't repeat yourself - DRY),不會(huì)再不同的環(huán)境中配置相同的代碼 ”

當(dāng)然,關(guān)于webpack-merge的內(nèi)容還遠(yuǎn)不止這些,想了解更多關(guān)于這個(gè)模塊的朋友請(qǐng)?jiān)L問(wèn) https://www.npmjs.com/package/webpack-merge

好,讓我們接著回到代碼中來(lái),引入webpack-merge后這個(gè)文件又引入了prod.env.js,接著就將prod.env.js的配置和新的配置,即指明開(kāi)發(fā)環(huán)境(development)進(jìn)行了merge。(我有點(diǎn)兒不太理解為什么要這樣做,如果不merge直接寫(xiě)module.exports={NODE_ENV:'"development'}也是可以的,難道是為了優(yōu)雅降級(jí)?)

還有一點(diǎn)需要注意是的, development和production一定要加雙引號(hào),不然會(huì)報(bào)錯(cuò)?。?!

最后,我們來(lái)看index.js:

'use strict'
// Template version: 1.2.4
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
module.exports = {
 dev: {
 // Paths
 assetsSubDirectory: 'static',
 assetsPublicPath: '/',
 proxyTable: {},
 // Various Dev Server settings
 host: 'localhost', // can be overwritten by process.env.HOST
 port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
 autoOpenBrowser: false,
 errorOverlay: true,
 notifyOnErrors: true,
 poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
 // Use Eslint Loader?
 // If true, your code will be linted during bundling and
 // linting errors and warnings will be shown in the console.
 useEslint: true,
 // If true, eslint errors and warnings will also be shown in the error overlay
 // in the browser.
 showEslintErrorsInOverlay: false,
 /**
  * Source Maps
  */
 // https://webpack.js.org/configuration/devtool/#development
 devtool: 'eval-source-map',
 // If you have problems debugging vue-files in devtools,
 // set this to false - it *may* help
 // https://vue-loader.vuejs.org/en/options.html#cachebusting
 cacheBusting: true,
 // CSS Sourcemaps off by default because relative paths are "buggy"
 // with this option, according to the CSS-Loader README
 // (https://github.com/webpack/css-loader#sourcemaps)
 // In our experience, they generally work as expected,
 // just be aware of this issue when enabling this option.
 cssSourceMap: false,
 },
 build: {
 // Template for index.html
 index: path.resolve(__dirname, '../dist/index.html'),
 // Paths
 assetsRoot: path.resolve(__dirname, '../dist'),
 assetsSubDirectory: 'static',
 assetsPublicPath: '/',
 /**
  * Source Maps
  */
 productionSourceMap: true,
 // https://webpack.js.org/configuration/devtool/#production
 devtool: '#source-map',
 // Gzip off by default as many popular static hosts such as
 // Surge or Netlify already gzip all static assets for you.
 // Before setting to `true`, make sure to:
 // npm install --save-dev compression-webpack-plugin
 productionGzip: false,
 productionGzipExtensions: ['js', 'css'],
 // Run the build command with an extra argument to
 // View the bundle analyzer report after build finishes:
 // `npm run build --report`
 // Set to `true` or `false` to always turn it on or off
 bundleAnalyzerReport: process.env.npm_config_report
 }
}

開(kāi)頭引入了node中的path模塊,

然后我們先來(lái)看dev下的配置內(nèi)容:

assetsSubDirectory指的是靜態(tài)資源文件夾,默認(rèn)“static”,

assetsPublicPath指的是發(fā)布路徑,

proxyTable是我們常用來(lái)配置代理API的地方,后面的host和port相信大家都知道,我就不細(xì)說(shuō)了,

autoOpenBrowser是否自動(dòng)打開(kāi)瀏覽器

errorOverlay查詢(xún)錯(cuò)誤

notifyOnErrors通知錯(cuò)誤
,poll是跟devserver相關(guān)的一個(gè)配置,webpack為我們提供的devserver是可以監(jiān)控文件改動(dòng)的,但在有些情況下卻不能工作,我們可以設(shè)置一個(gè)輪詢(xún)(poll)來(lái)解決

useEslint是否使用eslint

showEslintErrorsInOverlay是否展示eslint的錯(cuò)誤提示

devtool webpack提供的用來(lái)方便調(diào)試的配置,它有四種模式,可以查看webpack文檔了解更多

cacheBusting 一個(gè)配合devtool的配置,當(dāng)給文件名插入新的hash導(dǎo)致清楚緩存時(shí)是否生成souce maps,默認(rèn)在開(kāi)發(fā)環(huán)境下為true,不過(guò)文檔中還寫(xiě)了一句話:“Turning this off can help with source map debugging.”額。。。

cssSourceMap 是否開(kāi)啟cssSourceMap
我們?cè)賮?lái)看build下的配置內(nèi)容:
index 編譯后index.html的路徑,path.resolve(__dirname, '../dist')中

path.resolve(__dirname)指的是index.js所在的絕對(duì)路徑,再去找“../dist”這個(gè)路徑(node相關(guān)的知識(shí)),

assetsRoot打包后的文件根路徑,至于assetsSubDirectory和assetsPublicPath跟dev中的一樣,

productionSourceMap是否開(kāi)啟source-map,

devtool同dev,

productionGzip是否壓縮,

productionGzipExtensions gzip模式下需要壓縮的文件的擴(kuò)展名,設(shè)置后會(huì)對(duì)相應(yīng)擴(kuò)展名的文件進(jìn)行壓縮

bundleAnalyzerReport 是否開(kāi)啟打包后的分析報(bào)告

截止到這兒,config文件夾下的內(nèi)容基本上就過(guò)完了,正如名字告訴我們的,這三個(gè)文件僅僅是寫(xiě)死的配置文件,截止目前還沒(méi)遇到太多

總結(jié)

以上所述是小編給大家介紹的vue-cli配置文件——config篇,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 前端vue3打印功能實(shí)現(xiàn)(多頁(yè)打印、不使用插件)

    前端vue3打印功能實(shí)現(xiàn)(多頁(yè)打印、不使用插件)

    在Vue項(xiàng)目中實(shí)現(xiàn)打印功能是前端開(kāi)發(fā)中常見(jiàn)需求之一,這篇文章主要介紹了前端vue3打印功能實(shí)現(xiàn)的全部過(guò)程,文中介紹的方法實(shí)現(xiàn)了多頁(yè)打印并且不使用插件,需要的朋友可以參考下
    2024-09-09
  • 寫(xiě)一個(gè)Vue Popup組件

    寫(xiě)一個(gè)Vue Popup組件

    這篇文章主要介紹了寫(xiě)一個(gè)Vue Popup組件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑)

    vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑)

    這篇文章主要介紹了vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • vue?3.0?使用ref獲取dom元素的示例

    vue?3.0?使用ref獲取dom元素的示例

    這篇文章主要介紹了vue?3.0?使用ref獲取dom元素,包括vue2.x獲取dom和vue3.0獲取單個(gè)dom,通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 一文搞懂Vue2中的組件通信

    一文搞懂Vue2中的組件通信

    這篇文章主要為大家介紹了Vue2中的組件通信方式,文中通過(guò)示例進(jìn)行了詳細(xì)的介紹,對(duì)我們學(xué)習(xí)Vue有一定的幫助,感興趣的小伙伴可以了解一下
    2022-07-07
  • Vue?echarts實(shí)例項(xiàng)目商家銷(xiāo)量統(tǒng)計(jì)圖實(shí)現(xiàn)詳解

    Vue?echarts實(shí)例項(xiàng)目商家銷(xiāo)量統(tǒng)計(jì)圖實(shí)現(xiàn)詳解

    Echarts,它是一個(gè)與框架無(wú)關(guān)的?JS?圖表庫(kù),但是它基于Js,這樣很多框架都能使用它,例如Vue,估計(jì)IONIC也能用,因?yàn)槲业牧?xí)慣,每次新嘗試做一個(gè)功能的時(shí)候,總要新創(chuàng)建個(gè)小項(xiàng)目,做做Demo
    2022-09-09
  • 十分鐘封裝一個(gè)好用的axios步驟示例

    十分鐘封裝一個(gè)好用的axios步驟示例

    這篇文章主要為大家介紹了十分鐘封裝一個(gè)好用的axios步驟示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Vue混入與插件的使用介紹

    Vue混入與插件的使用介紹

    這篇文章主要介紹了Vue混入與插件的使用,mixins(混入),官方的描述是一種分發(fā) Vue 組件中可復(fù)用功能的非常靈活的方式,mixins是一個(gè)js對(duì)象,它可以包含我們組件中script項(xiàng)中的任意功能選項(xiàng),如data、components、methods 、created、computed等等
    2022-09-09
  • Vue.js實(shí)現(xiàn)watch屬性的示例詳解

    Vue.js實(shí)現(xiàn)watch屬性的示例詳解

    本文討論了watch函數(shù)是如何利用副作用函數(shù)和options進(jìn)行封裝實(shí)現(xiàn)的,也通過(guò)調(diào)度函數(shù)去控制回調(diào)函數(shù)的立即執(zhí)行和執(zhí)行時(shí)機(jī),還可以解決競(jìng)態(tài)問(wèn)題,感興趣的可以了解一下
    2022-04-04
  • vue登錄頁(yè)面設(shè)置驗(yàn)證碼input框的方法

    vue登錄頁(yè)面設(shè)置驗(yàn)證碼input框的方法

    這篇文章主要為大家詳細(xì)介紹了vue登錄頁(yè)面設(shè)置驗(yàn)證碼input框的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評(píng)論