两部分问题
我的步骤:
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的新手。 现在已经有一段时间了,我陷入了困境,任何人都可以看到我所缺少的东西?
答案 0 :(得分:2)
<强>!CSS-装载机强>
这是普通的css加载器。它将返回解释内部资源的css代码,但不会将其添加到页面中。 使用此加载器,@ import和url(...)将被解释为require()并将被解析。
!风格装载机
此加载器通过注入或标记将DOM添加到DOM。 要注入一个你需要获取css文件的内容,然后注入它。
require("style!raw!./file.css");
// => add rules in file.css to document
但是建议将它与css-loader结合使用,因为它将解释你的css文件中的所有资源,而不是只有原始的css。 (Check)
require("style!css!./file.css");
// => add rules in file.css to document
如果要添加到css文件,首先需要获取该文件的URL,因为您可以使用文件加载器。
require("style/url!file!./file.css");
// => add a <link rel="stylesheet"> to file.css to document
希望这有帮助!
参考:css-loader,style-loader 关于这个here
的好文章