64 lines
1.6 KiB
JavaScript
64 lines
1.6 KiB
JavaScript
var path = require('path')
|
|
var config = require('../config')
|
|
var sass = require('sass')
|
|
var MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
|
|
exports.assetsPath = function (_path) {
|
|
var assetsSubDirectory = process.env.NODE_ENV === 'production'
|
|
? config.build.assetsSubDirectory
|
|
: config.dev.assetsSubDirectory
|
|
return path.posix.join(assetsSubDirectory, _path)
|
|
}
|
|
|
|
exports.cssLoaders = function (options) {
|
|
options = options || {}
|
|
|
|
function generateLoaders (loaders) {
|
|
// Extract CSS when that option is specified
|
|
// (which is the case during production build)
|
|
if (options.extract) {
|
|
return [MiniCssExtractPlugin.loader].concat(loaders)
|
|
} else {
|
|
return ['vue-style-loader'].concat(loaders)
|
|
}
|
|
}
|
|
|
|
// http://vuejs.github.io/vue-loader/configurations/extract-css.html
|
|
return [
|
|
{
|
|
test: /\.(post)?css$/,
|
|
use: generateLoaders(['css-loader', 'postcss-loader']),
|
|
},
|
|
{
|
|
test: /\.less$/,
|
|
use: generateLoaders(['css-loader', 'postcss-loader', 'less-loader']),
|
|
},
|
|
{
|
|
test: /\.sass$/,
|
|
use: generateLoaders([
|
|
'css-loader',
|
|
'postcss-loader',
|
|
{
|
|
loader: 'sass-loader',
|
|
options: {
|
|
indentedSyntax: true
|
|
}
|
|
}
|
|
])
|
|
},
|
|
{
|
|
test: /\.scss$/,
|
|
use: generateLoaders(['css-loader', 'postcss-loader', 'sass-loader'])
|
|
},
|
|
{
|
|
test: /\.styl(us)?$/,
|
|
use: generateLoaders(['css-loader', 'postcss-loader', 'stylus-loader']),
|
|
},
|
|
]
|
|
}
|
|
|
|
// Generate loaders for standalone style files (outside of .vue)
|
|
exports.styleLoaders = function (options) {
|
|
return exports.cssLoaders(options)
|
|
}
|