繁体   English   中英

如何使用webpack导入CSS?

[英]How to import css with webpack?

两部分问题

我的步骤:

  1. 创建空文件夹
  2. 打开cmd
  3. 导航到文件夹并运行npm init -f
  4. 运行vue init webpack
  5. 运行npm install
  6. npm i bootstrap-vue
  7. npm run dev

我的main.js:

import Vue from 'vue'
import App from './App'
import router from './router'

import BootstrapVue from 'bootstrap-vue'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'

Vue.use(BootstrapVue);

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
    el: '#app',
    router,
    render: h => h(App)
})

webpack.base.conf.js:

var path = require('path')
var utils = require('./utils')
var config = require('../config')
var vueLoaderConfig = require('./vue-loader.conf')

function resolve(dir) {
    return path.join(__dirname, '..', dir)
}

module.exports = {
    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: {
            '@': resolve('src'),
        }
    },
    module: {
        rules: [{
                test: /\.vue$/,
                loader: 'vue-loader',
                options: vueLoaderConfig
            },
            {
                test: /\.js$/,
                loader: 'babel-loader',
                include: [resolve('src'), resolve('test')]
            },
            {
                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]')
                }
            },
            { //this rule will only be used for any vendors
                test: /\.css$/,
                loaders: ['style-loader', 'css-loader'],
                include: [/node_modules/]
            },
            {
                test: /\.css$/,
                loaders: ['to-string-loader', 'css-loader'],
                exclude: [/node_modules/] //add this line so we ignore css coming from node_modules
            },

            {
                test: /\.css$/,
                use: [
                    'style-loader',
                    'css-loader'
                ]
            }
        ]
    }
}

当我运行这个我得到:

模块构建失败:未知词(5:1)

在此处输入图片说明

第2部分:

经过一段时间后,通过安装加载程序包并将main.js更改为此,找到了解决上述问题的方法:

import Vue from 'vue'
import App from './App'
import router from './router'


import '!style-loader!css-loader!bootstrap/dist/css/bootstrap.css';


/* eslint-disable no-new */
new Vue({
    el: '#app',
    router,
    render: h => h(App)
})

这解决了我的第一个问题,

如果我尝试像这样添加本地CSS文件:

import Vue from 'vue'
import App from './App'
import router from './router'


import '!style-loader!css-loader!bootstrap/dist/css/bootstrap.css';
import './content/bootstrapGrid.css'

/* eslint-disable no-new */
new Vue({
    el: '#app',
    router,
    render: h => h(App)
})

我再次收到相同的错误:

模块构建失败:未知词(5:1)

在此处输入图片说明

我是webpack,vue和整个SPA的新手。 到现在已经有一段时间了,我被困住了,有人能看到我所缺少的吗?

!CSS-装载机

这是普通的CSS加载程序。 它将返回解释内部资源的css代码,但不会将其添加到页面中。 使用此加载器,@ import和url(...)的解释与require()相同,将被解析。

!风格装载机

该加载器通过注入或标记将CSS添加到DOM。 要注入a,您需要获取css文件的内容,然后注入它。

require("style!raw!./file.css");
// => add rules in file.css to document

但建议将其与css-loader结合使用,因为它将解释您css文件中的所有资源,而不仅仅是原始css。 检查

require("style!css!./file.css");
// => add rules in file.css to document

如果要向css文件中添加a,则首先需要具有该文件的url,为此您可以使用文件加载器。

require("style/url!file!./file.css");
// => add a <link rel="stylesheet"> to file.css to document

希望这可以帮助!

参见: CSS-装载机风格装载机在这方面的一个很好的文章在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM