[英]How to import css with webpack?
两部分问题
我的步骤:
cmd
npm init -f
vue init webpack
npm install
i bootstrap-vue
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
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.