【问题标题】:Scoped css not copied in vue component范围内的 css 未在 vue 组件中复制
【发布时间】:2021-04-12 04:01:21
【问题描述】:

我的 vue 组件中有一个作用域样式标签:

<style scoped>
    .ttt{
        background-color: red;
    }
</style>

当我使用 npm 和 webpack 构建项目时,不会复制样式。我已经将 css 配置为由 postCss 解析来解决它:

var path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');

module.exports = {
    mode: 'development',
    devtool: 'source-map',
    entry: {
        build: './assets/js/main.js'
    },
    output: {
        path: path.resolve(__dirname, './dist'),
        publicPath: './dist/',
        filename: '[name].js'
    },
    module: {
        rules: [
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            },
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: "babel-loader",
                    options: {
                        presets: ['@babel/preset-env']
                    }
                }
            },
            {//required for css in vue components
                test: /\.css$/,
                use: [
                    'vue-style-loader',
                    {
                        loader: 'css-loader',
                        options: { importLoaders: 1 }
                    },
                    'postcss-loader'
                ]
            },
            {
                test: /\.svg$/,
                oneOf: [
                    {
                        resourceQuery: /inline/,
                        use: [
                            'babel-loader',
                            {
                                loader: 'vue-svg-loader',
                                options: {
                                    svgo: {
                                        plugins: [
                                            { cleanupIDs: false },
                                            { collapseGroups: false },
                                        ],
                                    },
                                }
                            },
                        ],
                    },
                    {
                        type: 'asset/resource',
                        generator: {
                            filename: '[name].[ext]?[hash]'
                        }
                    },
                ],
            },
        ]
    },
    resolve: { alias: { vue: 'vue/dist/vue.esm.js' } },
    plugins: [
        new VueLoaderPlugin()
    ],
    performance: {
        hints: 'warning'
    }
};

npm 或浏览器控制台没有输出错误。

我错过了什么吗?

版本:

"dependencies": {
    "axios": "^0.18.0",
    "vue": "^2.6.12",
    "vue-excel-editor": "1.3.90",
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ],
  "devDependencies": {
    "@babel/core": "^7.12.10",
    "babel-loader": "^8.2.2",
    "@babel/preset-env": "^7.12.11",
    "cross-env": "^5.0.5",
    "css-loader": "^5.0.1",
    "postcss": "^8.2.2",
    "postcss-loader": "^4.1.0",
    "terser-webpack-plugin": "^5.0.3",
    "vue-loader": "^15.9.6",
    "vue-style-loader": "^4.1.2",
    "vue-svg-loader": "^0.16.0",
    "vue-template-compiler": "^2.6.12",
    "webpack": "^5.11.1",
    "webpack-cli": "^4.1.1",
    "webpack-merge": "^5.7.3"
  }

【问题讨论】:

    标签: vue.js webpack vue-loader


    【解决方案1】:

    尝试将options: { importLoaders: 1 } 更改为options: { importLoaders: 2 }

    【讨论】:

      猜你喜欢
      • 2017-05-10
      • 2021-08-24
      • 2018-09-14
      • 2019-07-25
      • 1970-01-01
      • 2020-07-02
      • 2018-02-16
      • 2020-05-14
      • 2019-10-28
      相关资源
      最近更新 更多