vue-webpack + lib-flexible + px2rem實現px自動轉化rem

第一,首先需要本地安裝node環境和配置。

第二,npm全域性安裝vue-cli。

第三,透過vue的腳手架初始化本地專案

vue init webapck project-name

這裡會自動安裝基礎依賴,先npn run dev一下,是否執行正常!

第四,安裝 npm install postcss-px2rem postcss postcss-loader--save

第五,需要在webpack.base.conf.js檔案新增配置

首先

引入這三個模組

const webpack = require(‘webpack’)

const px2rem = require(‘postcss-px2rem’)

const postcss = require(‘postcss’)

其次

在module中新增如下程式碼

plugins: [

new webpack。LoaderOptionsPlugin({

// webpack 2。0之後, 此配置不能直接寫在自定義配置項中, 必須寫在此處

vue: {

postcss: [require(‘postcss-px2rem’)({ remUnit: 37。5, propWhiteList: [] })]

},

})

最後

在rules中新增postcss-loader支援

{

test: /\。(css|less|scss)(\?。*)?$/,

loader: ‘style-loader!css-loader!postcss-loader’

}

完整配置程式碼如下:

‘use strict’

const path = require(‘path’)

const utils = require(‘。/utils’)

const config = require(‘。。/config’)

const vueLoaderConfig = require(‘。/vue-loader。conf’)

//這裡是新新增的

const webpack = require(‘webpack’)

const px2rem = require(‘postcss-px2rem’)

const postcss = require(‘postcss’)

function resolve (dir) {

return path。join(__dirname, ‘。。’, dir)

}

module。exports = {

context: path。resolve(__dirname, ‘。。/’),

entry: {

app: ‘。/src/main。js’

},

output: {

path: config。build。assetsRoot,

filename: ‘[name]。js’,

publicPath: process。env。NODE_ENV === ‘production’

? config。build。assetsPublicPath

: config。dev。assetsPublicPath

},

resolve: {

extensions: [‘。js’, ‘。vue’, ‘。json’],

alias: {

‘vue$’: ‘vue/dist/vue。esm。js’,

‘@’: resolve(‘src’),

}

},

module: {

rules: [

{

test: /\。vue$/,

loader: ‘vue-loader’,

options: vueLoaderConfig

},

{

test: /\。js$/,

loader: ‘babel-loader’,

include: [resolve(‘src’), resolve(‘test’), resolve(‘node_modules/webpack-dev-server/client’)]

},

{

test: /\。(png|jpe?g|gif|svg)(\?。*)?$/,

loader: ‘url-loader’,

options: {

limit: 10000,

name: utils。assetsPath(‘img/[name]。[hash:7]。[ext]’)

}

},

{

test: /\。(mp4|webm|ogg|mp3|wav|flac|aac)(\?。*)?$/,

loader: ‘url-loader’,

options: {

limit: 10000,

name: utils。assetsPath(‘media/[name]。[hash:7]。[ext]’)

}

},

{

test: /\。(woff2?|eot|ttf|otf)(\?。*)?$/,

loader: ‘url-loader’,

options: {

limit: 10000,

name: utils。assetsPath(‘fonts/[name]。[hash:7]。[ext]’)

}

},

//這裡是新新增的

{

test: /\。(css|less|scss)(\?。*)?$/,

loader: ‘style-loader!css-loader!postcss-loader’

}

},

//這裡是新新增的

plugins: [

new webpack。LoaderOptionsPlugin({

// webpack 2。0之後, 此配置不能直接寫在自定義配置項中, 必須寫在此處

vue: {

//這裡預設remUnit:是75,這裡用37。5,一般設計搞是按ios6設計的。

postcss: [require(‘postcss-px2rem’)({ remUnit: 37。5, propWhiteList: [] })]

},

})

],

node: {

// prevent webpack from injecting useless setImmediate polyfill because Vue

// source contains it (although only uses it if it‘s native)。

setImmediate: false,

// prevent webpack from injecting mocks to Node native modules

// that does not make sense for the client

dgram: ’empty‘,

fs: ’empty‘,

net: ’empty‘,

tls: ’empty‘,

child_process: ’empty‘

}

}

第六,在index.html的head中引入 lib-flexible檔案,具體程式碼百度,拿來直接用即可。

第七,測試配置是否生效

在HelloWorld。vue元件中修改樣式

h1, h2 {

font-weight: normal;

font-size: 20px;

}

修改完以後在瀏覽器檢視已生效,到此就大工告成。

別忘了點個訂閱哦!!!

vue-webpack + lib-flexible + px2rem實現px自動轉化rem