【发布时间】:2017-07-06 14:23:31
【问题描述】:
我还在学习 Vue,所以我正在努力弄清楚如何将内联 css 转换为 css 文件。
如果有人可以帮助我将 css(scss) 提取设置为单个 css 文件,我将不胜感激!
或者这会破坏 vue 的作用域样式的目的吗?
这是我的 webpack.config 代码:
var path = require('path')
var webpack = require('webpack')
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',
filename: 'build.js'
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
'scss': 'vue-style-loader!css-loader!sass-loader',
'sass': 'vue-style-loader!css-loader!sass-loader?indentedSyntax'
}
}
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
}
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js'
}
},
devServer: {
historyApiFallback: true,
noInfo: true
},
performance: {
hints: false
},
devtool: '#eval-source-map'
}
if (process.env.NODE_ENV === 'production') {
module.exports.devtool = '#source-map'
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
}),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
compress: {
warnings: false
}
}),
new webpack.LoaderOptionsPlugin({
minimize: true
})
])
}
【问题讨论】:
-
你试过运行
npm run build了吗?我有一个vue-cliWebpack 项目,npm run build自动将 CSS 从我的.vue文件中拉出并放入单独的.css文件中。此外,通过“内联 CSS”,您是否指的是.vue文件的<style>部分中的 CSS?或者您指的是在.vue文件的<template>部分的style=""属性中定义的CSS? -
我认为 webpack-simple cli 没有内置提取。它将 css 写入文件的头部,而不是 inline ofc。
-
好的,那么似乎一种快速的解决方案可能是创建一个“完整的”Webpack 项目并将您的代码移动到其中。我发现 Webpack 配置和构建文件非常难以理解,并且可能需要很长时间才能弄清楚如何手动设置以复制完整 Webpack 项目的行为。
-
是的,你是对的。要试试看。谢谢内森。