1. 程式人生 > 程式設計 >vue-cli4使用全域性less檔案中的變數配置操作

vue-cli4使用全域性less檔案中的變數配置操作

目錄結構如下:

vue-cli4使用全域性less檔案中的變數配置操作

需求:

在Navgation.vue中使用global.less中的變數

vue-cli3的配置方法如下:傳送門

vue-cli4的配置方法如下:

安裝 style-resources-loader

npm i style-resources-loader -D

在 vue.config.js 中加上如下配置,沒有則建立該檔案,檔名不能改,如下:

// vue.config.js
const path = require('path')
 
module.exports = {
 lintOnSave: false,chainWebpack: config => {
 const types = ['vue-modules','vue','normal-modules','normal']
 types.forEach(type => addStyleResource(config.module.rule('less這裡寫你的樣樣式型別').oneOf(type)))
 },}
 
function addStyleResource (rule) {
 rule.use('style-resource')
 .loader('style-resources-loader')
 .options({
  patterns: [
  path.resolve(__dirname,'./src/assets/css/global.less這裡寫你的全域性樣式地址'),],})
}

補充知識:vue專案中配置LESS全域性變數注入

在日常專案中,很多人都用到了css前處理器 ,如sass,less, stylus,處理樣式非常方便,尤其是巢狀,變數,函式等,讓我們書寫css非常nice,在專案中一般會建立一個樣式資料夾(此處用less),存放公共樣式和公共變數如專案主體色,字型大小等等的變數,但是在專案中使用這些變數的時候通常都要在style標籤內用@import '***/***/***/***.less';這樣的方式來匯入公共變數,頁面一多,每個頁面一般都需要引入就會感到很繁瑣,所以此處就用到webpack的一些配置來達到全域性注入,單個檔案不需要單獨引入的目的。

此處說下自己用的之前的腳手架版本的配置

在build資料夾下的webpack.base.conf.js檔案中修改,主要藉助了sass-resources-loader。

配置的時候還需要在問價頭部引入path,const path = require('path')

然後在module模組下進行配置

module: {
  resolve: {
  extensions: ['.ts','.js','.vue','.json'],// 順帶說下 此處可以配置路徑別名,以後引入檔案就不需要../../../這樣了,直接@/就可以了,代表src下的路徑,當然可設定多個,可自行配製
  alias: {
   '@': utils.resolve('src')
  }
  },///
 rules: [
   ...(config.dev.useEslint ? [createLintingRule()] : []),// /-------------
  {
   test: /\.less$/,use: [{
    loader: process.env.NODE_ENV === 'production' ? MiniCssExtractPlugin.loader : 'vue-style-loader'
   },{
    loader: 'css-loader',options: {
    sourceMap: cssSourceMap
    }
   },{
    loader: 'less-loader',options: {
    sourceMap: cssSourceMap
    }
   }
   //此處開始------/ 
   {
    loader: 'sass-resources-loader',options: {
    resources: [
     path.resolve(__dirname,'此處寫自己配置的公共變數檔案路徑,比如../src/themes/publicStyle/common.less')
    ]
    }
    //此處結束-------/ 
   }]
  },

然後說下自己查資料研究的cli3下的全域性變數注入

cli3 與之前的cli不一樣了,build和config檔案沒有了 ,所有的配置都需要在自己新建的vue.config.js檔案裡進行配置,具體配置官方文件和各種資料都很詳細,在這就不詳述了,在這就說下自己練手的一些配置,僅供參考,主要看全域性變數注入那塊,主要用的是style-resources-loader ,npm i style-resources-loader -D

const path = require("path");
function resolve(dir) {
 return path.join(__dirname,dir);
}
module.exports = {
 publicPath: "./",outputDir: "dist",assetsDir: "assets",indexPath: "index.html",filenameHashing: true,pages: undefined,lintOnSave: true,runtimeCompiler: false,transpileDependencies: [],productionSourceMap: false,crossorigin: undefined,integrity: false,devServer: {
 proxy: {
  "/api": {
  target: "************",changeOrigin: true,pathRewrite: { "^/api": "" }
  }
 }
 },// ------------------此處開始,以下是全域性變數注入的配置--------------
 chainWebpack: config => {
 config.resolve.alias.set("@assets",resolve("src/assets"))
 // 這裡只寫了兩個個,你可以自己再加,按這種格式.set("",resolve(""))
 const types = ["vue-modules","vue","normal-modules","normal"]
 types.forEach(type =>
  addStyleResource(config.module.rule("less").oneOf(type))
 );
 },css: {
 loaderOptions: {
  less: {
  javascriptEnabled: true
  }
 }
 }
};
function addStyleResource(rule) {
 rule
 .use("style-resource")
 .loader("style-resources-loader")
 .options({
  patterns: [
  path.resolve(__dirname,"src/styles/index.less") // 需要全域性匯入的less
  ]
 })
}

大家一起加油! 如有不對之處,請大家不吝賜教。

之後看到另一個後臺管理系統的配置,發現另一種配法 (cli3)

安裝less less-loader style-resources-loader

npm install -D less-loader less
npm i style-resources-loader
npm i vue-cli-plugin-style-resources-loader

安裝完後,在vue.config.js中配置

const path = require('path');
module.exports = {
 pluginOptions: {
  'style-resources-loader': {
   preProcessor: 'less',patterns: [
    // 這個是加上自己的路徑,不能使用(如下:alias)中配置的別名路徑
    path.resolve(__dirname,'./src/style/params.less')
   ]
  }
 },……
 其他配置
 ……
}

安裝的時候也可以方法二:直接使用vue add style-resources-loader安裝,vue add pluginName 是vue-cli3提供的。

vue add 是用yarn安裝外掛的, yarn源的問題有可能導致失敗。

如果安裝失敗的話,就上面分別安裝的方法來

以上這篇vue-cli4使用全域性less檔案中的變數配置操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。