第三步 Vue2 vue.config.js 集成 Less 配置 sourceMap+全局變量

安裝

項(xiàng)目根目錄下打開終端或命令行工具礼华,運(yùn)行以下命令來安裝相關(guān)依賴包:

npm install less-loader less --save-dev

這會(huì)將 Less 和 Less loader 作為開發(fā)依賴項(xiàng)安裝到你的項(xiàng)目中馁害。
如果沒有其他需求,安裝好就已經(jīng)可以在項(xiàng)目中直接使用了。

在項(xiàng)目中使用

1. Vue文件中使用

找到 src/App.vue 文件中 <style> 代碼塊懊直,添加 lang="less"scoped:

<style lang="less" scoped>
</style>

lang="less" 表示該<style>標(biāo)簽中的代碼將使用 Less 語法編寫。
scoped 是一個(gè)特殊的屬性火鼻,它告訴Vue要對(duì)該組件的樣式進(jìn)行作用域限制室囊。當(dāng)你使用scoped屬性時(shí),組件中的樣式只會(huì)應(yīng)用到該組件內(nèi)部凝危,不會(huì)影響其他組件波俄。

2. 引入獨(dú)立less樣式文件

src/assets/styles 文件夾下新建一個(gè),名為index.less的通用樣式文件,并添加自己習(xí)慣的通用樣式蛾默,可參考以下內(nèi)容:

body, html {
  min-height: 100%;
  font-size: 16px;
  color: #333;
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
body, ul, div, img, h5, h4, h3, h2, h1, p, span, table, figure, i, em, tt, li {
  list-style: none;
  margin: 0;
  padding: 0;
}
body > * {
  margin: auto;
}
a {
  cursor: pointer;
  text-decoration: none;
}
i {
  font-style: normal;
}
textarea {
  font-family: inherit;
}
.fl {
  float: left;
}
.fr {
  float: right;
}
.clearfix:after {
  visibility: hidden;
  display: block;
  font-size: 0;
  content: " ";
  clear: both;
  height: 0;
}
.none {
  position: absolute;
  height: 0;
  width: 0;
  padding: 0;
  margin: 0;
  border: none;
}
.cursor-p {
  cursor: pointer;
}
.ellipsis {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

然后在src/main.js中引入:

import '@css/index.less'

修改后的代碼如下:

import Vue from 'vue'
import App from './App.vue'
import '@css/index.less'

// 禁用生產(chǎn)環(huán)境提示
Vue.config.productionTip = false

new Vue({
  render: (h) => h(App)
}).$mount('#app')

@css 是上一章配置的路徑別名

Less具體語法可參考 Less官方文檔

配置 sourceMap

在你的項(xiàng)目根目錄下懦铺,找到 vue.config.js 文件,根據(jù)以下內(nèi)容進(jìn)行修改:

module.exports = {
  // 配置css相關(guān)選項(xiàng)
  css: {
    // 開啟 source map
    sourceMap: true
  },
}

Source Map 開啟后啟動(dòng)開發(fā)環(huán)境和生產(chǎn)環(huán)境都啟用了 Source Map支鸡,顯然不符合我們的預(yù)期冬念。
正常情況下,我們需要在開發(fā)環(huán)境下啟用Source Map牧挣,在生產(chǎn)環(huán)境下禁用Source Map急前。

可以通過環(huán)境來設(shè)置是否開啟此功能,代碼如下:

css: {
  sourceMap: process.env.NODE_ENV == 'development'
}

一般來說瀑构,process.env.NODE_ENV 會(huì)在開發(fā)環(huán)境中被設(shè)置為 'development'裆针,在生產(chǎn)環(huán)境中被設(shè)置為'production'。我們通過三目運(yùn)算判斷是否是開發(fā)環(huán)境寺晌,如果是開啟反之則關(guān)閉即可世吨。

vue.config.js 修改后的完整內(nèi)容:

const path = require('path')

module.exports = {
  // 靜態(tài)資源訪問路徑
  publicPath: './',
  // 指定構(gòu)建后的輸出目錄,默認(rèn)是 'dist'
  outputDir: 'dist',
  // 配置開發(fā)服務(wù)器選項(xiàng)
  devServer: {
    // 開發(fā)服務(wù)器啟動(dòng)時(shí)是否自動(dòng)打開瀏覽器
    open: true,
    // 端口號(hào)
    port: 3000
  },
  // 配置css相關(guān)選項(xiàng)
  css: {
    // 開啟 source map
    sourceMap: process.env.NODE_ENV == 'development'
  },
  // webpack 的配置對(duì)象
  configureWebpack: {
    // 配置Webpack模塊解析的方式呻征,使得你可以通過模塊名字而不是相對(duì)路徑來引入模塊
    resolve: {
      // 設(shè)置路徑別名
      alias: {
        '@': path.resolve('src'),
        '@public': path.resolve('public'),
        '@img': path.resolve('src/assets/images'),
        '@js': path.resolve('src/assets/scripts'),
        '@css': path.resolve('src/assets/styles')
      }
    }
  }
}

配置完成后耘婚,重新啟動(dòng)開發(fā)服務(wù)器就能看到效果了。

配置 Less 全局變量

在你的項(xiàng)目根目錄下陆赋,找到 vue.config.js 文件沐祷,根據(jù)以下內(nèi)容進(jìn)行修改:

module.exports = {
  css: {
    loaderOptions: {
      less: {
        lessOptions: {
          // 配置全局變量
          globalVars: {
            'logoName': 'logo'
          }
        }
      }
    }
  }
}

在less中使用配置的變量

.classname {
  background: url('@img/@{logoName}.png');
}



框架搭建整體流程

點(diǎn)擊下載步驟 1-7 配置完成的完整 Demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末攒岛,一起剝皮案震驚了整個(gè)濱河市赖临,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灾锯,老刑警劉巖思杯,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡色乾,警方通過查閱死者的電腦和手機(jī)誊册,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暖璧,“玉大人案怯,你說我怎么就攤上這事∨彀欤” “怎么了嘲碱?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)局蚀。 經(jīng)常有香客問我麦锯,道長(zhǎng),這世上最難降的妖魔是什么琅绅? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任扶欣,我火速辦了婚禮,結(jié)果婚禮上千扶,老公的妹妹穿的比我還像新娘料祠。我一直安慰自己,他們只是感情好澎羞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布髓绽。 她就那樣靜靜地躺著,像睡著了一般妆绞。 火紅的嫁衣襯著肌膚如雪顺呕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天括饶,我揣著相機(jī)與錄音塘匣,去河邊找鬼。 笑死巷帝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扫夜。 我是一名探鬼主播楞泼,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼笤闯!你這毒婦竟也來了堕阔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤颗味,失蹤者是張志新(化名)和其女友劉穎超陆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡时呀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年张漂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谨娜。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡航攒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出趴梢,到底是詐尸還是另有隱情漠畜,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布坞靶,位于F島的核電站憔狞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏彰阴。R本人自食惡果不足惜瘾敢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硝枉。 院中可真熱鬧廉丽,春花似錦、人聲如沸妻味。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)责球。三九已至焦履,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雏逾,已是汗流浹背嘉裤。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栖博,地道東北人屑宠。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像仇让,于是被迫代替她去往敵國(guó)和親典奉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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