utils.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. var path = require('path')
  2. var config = require('../config')
  3. var sass = require('sass')
  4. var MiniCssExtractPlugin = require('mini-css-extract-plugin')
  5. exports.assetsPath = function (_path) {
  6. var assetsSubDirectory = process.env.NODE_ENV === 'production'
  7. ? config.build.assetsSubDirectory
  8. : config.dev.assetsSubDirectory
  9. return path.posix.join(assetsSubDirectory, _path)
  10. }
  11. exports.cssLoaders = function (options) {
  12. options = options || {}
  13. function generateLoaders (loaders) {
  14. // Extract CSS when that option is specified
  15. // (which is the case during production build)
  16. if (options.extract) {
  17. return [MiniCssExtractPlugin.loader].concat(loaders)
  18. } else {
  19. return ['vue-style-loader'].concat(loaders)
  20. }
  21. }
  22. // http://vuejs.github.io/vue-loader/configurations/extract-css.html
  23. return [
  24. {
  25. test: /\.(post)?css$/,
  26. use: generateLoaders(['css-loader']),
  27. },
  28. {
  29. test: /\.less$/,
  30. use: generateLoaders(['css-loader', 'less-loader']),
  31. },
  32. {
  33. test: /\.sass$/,
  34. use: generateLoaders([
  35. 'css-loader',
  36. {
  37. loader: 'sass-loader',
  38. options: {
  39. indentedSyntax: true
  40. }
  41. }
  42. ])
  43. },
  44. {
  45. test: /\.scss$/,
  46. use: generateLoaders(['css-loader', 'sass-loader'])
  47. },
  48. {
  49. test: /\.styl(us)?$/,
  50. use: generateLoaders(['css-loader', 'stylus-loader']),
  51. },
  52. ]
  53. }
  54. // Generate loaders for standalone style files (outside of .vue)
  55. exports.styleLoaders = function (options) {
  56. return exports.cssLoaders(options)
  57. }