鍍金池/ 問(wèn)答/HTML/ @import less樣式文件 只有css樣式生效, less樣式卻不生效

@import less樣式文件 只有css樣式生效, less樣式卻不生效

使用webpack構(gòu)建項(xiàng)目時(shí) @import less文件時(shí) 為什么只有文件里面css樣式生效, less樣式卻不生效

webpack.base.conf.js

    'use strict';
    const path = require('path');
    const prodConf = require('../config').build; 

    // 拼接路徑
    function resolve(dir) {
        return path.join(__dirname, '..', dir)
    }

    // 資源路徑
    function assetsPath(dir) {
        return path.join(prodConf.assetsPath, dir)
    }

    //webpack 基本設(shè)置
    module.exports = {
        //項(xiàng)目入口文件->webpack從此處開(kāi)始構(gòu)建!
        // entry: path.resolve(__dirname, '../src/main.js'),
        entry: {
            app: ['./src/main.js', 'babel-polyfill']
        },

        //配置模塊如何被解析
        resolve: {
            //自動(dòng)解析文件擴(kuò)展名(補(bǔ)全文件后綴)(從左->右)
            // import hello from './hello'  (!hello.js? -> !hello.vue? -> !hello.json)
            extensions: [".js", ".vue", ".json"],

            //配置別名映射
            alias: {
                'vue$': 'vue/dist/vue.esm.js',
                'src': resolve('src'),
                'components': resolve('src/components'),
                'assets': resolve('src/assets'),
            }
        },

        //處理模塊的規(guī)則(可在此處使用不同的loader來(lái)處理模塊!)
        module: {
            rules: [
                {
                    test: /\.js$/, //資源路徑
                    loader: 'babel-loader', //該路徑執(zhí)行的loader
                    // exclude: __dirname + '/node_modules/',  //指定哪個(gè)文件不需要loader
                    include: resolve("src") //指定哪個(gè)文件loader
                },
                {
                    test: /\.vue$/,
                    loader: 'vue-loader',
                    include: resolve("src")
                },
                {//使用vue-style-loader!css-loader!postcss-loader處理以css結(jié)尾的文件!
                    test: /\.css$/,
                    use: [
                        'vue-style-loader',
                        {
                            loader: 'css-loader',
                            options: {
                                sourceMap: true,
                                importLoaders: 1 //用于@import css
                            }
                        },
                        {
                            loader: 'postcss-loader',
                            options: {
                                sourceMap: true
                            }
                        }
                    ],
                    include: resolve("src")
                },
                {//使用vue-style-loader!css-loader!less-loader!postcss-loader處理以css結(jié)尾的文件!
                    test: /\.less$/,
                    use: [
                        'vue-style-loader',
                        {
                            loader: 'css-loader',
                            options: {
                                sourceMap: true
                            }
                        },
                        {
                            loader: 'less-loader',
                            options: {
                                sourceMap: true
                            }
                        },
                        {
                            loader: 'postcss-loader',
                            options: {
                                sourceMap: true
                            }
                        }
                    ],
                    include: resolve("src")
                },
                {
                    test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,  
                    loader: 'url-loader',
                    options: {
                        limit: 1000,
                        name: assetsPath("img/[name].[hash:8].[ext]")
                    }
                }
            ]
        }
    }
在main.js引入樣式文件
    // 在main.js中引入, 這時(shí)直接引入less樣式時(shí)是生效的
    import 'assets/css/index.less'



    //index.less

    @color: #fe4747;
    #app {  
        position: absolute;
        left:50%;top:50%;
        h1 {
            color: @color;
        }
    }

    h1 {
        font-size: 50px;
    }
但是 我在css文件里面 引入 less文件時(shí), 卻不生效了
    // 在main.js中引入
    import 'assets/css/style.css'



    // style.css

    @import 'index.less';
    html, body {
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, .1);
    }

這時(shí)less文件里面的樣式就不生效了, 但是其中的css樣式 卻是生效的

還有在vue中引入less文件也是跟上面一樣, 只有其中的css樣式生效, less樣式不生效, 而且都不報(bào)錯(cuò)
    <style lang="less">
        @import '../assets/css/home.less';
    </style>

請(qǐng)問(wèn)這是什么原因?

回答
編輯回答
陌南塵

css 引入less 語(yǔ)法是不起作用的 更何況你用js的import來(lái)引入
webpack 編譯less 是按照文件名來(lái)的 你css引入了less 當(dāng)然不編譯
想要編譯就把文件名改成.less

2017年10月9日 09:23