utils.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. var path = require('path')
  2. var config = require('../config')
  3. var ExtractTextPlugin = require('extract-text-webpack-plugin')
  4. exports.assetsPath = function (_path) {
  5. var assetsSubDirectory = process.env.NODE_ENV != 'development'
  6. ? config.build.assetsSubDirectory
  7. : config.dev.assetsSubDirectory
  8. return path.posix.join(assetsSubDirectory, _path)
  9. }
  10. exports.cssLoaders = function (options) {
  11. options = options || {}
  12. // generate loader string to be used with extract text plugin
  13. function generateLoaders (loaders) {
  14. var sourceLoader = loaders.map(function (loader) {
  15. var extraParamChar
  16. if (/\?/.test(loader)) {
  17. loader = loader.replace(/\?/, '-loader?')
  18. extraParamChar = '&'
  19. } else {
  20. loader = loader + '-loader'
  21. extraParamChar = '?'
  22. }
  23. return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '')
  24. }).join('!')
  25. // Extract CSS when that option is specified
  26. // (which is the case during production build)
  27. if (options.extract) {
  28. return ExtractTextPlugin.extract({
  29. use: sourceLoader,
  30. fallback: 'vue-style-loader',
  31. publicPath:'../../'
  32. })
  33. // return ExtractTextPlugin.extract('vue-style-loader', sourceLoader)
  34. } else {
  35. return ['vue-style-loader', sourceLoader].join('!')
  36. }
  37. }
  38. // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html
  39. return {
  40. css: generateLoaders(['css']),
  41. postcss: generateLoaders(['css']),
  42. less: generateLoaders(['css', 'less']),
  43. sass: generateLoaders(['css', 'sass?indentedSyntax']),
  44. scss: generateLoaders(['css', 'sass']),
  45. stylus: generateLoaders(['css', 'stylus']),
  46. styl: generateLoaders(['css', 'stylus'])
  47. }
  48. }
  49. // Generate loaders for standalone style files (outside of .vue)
  50. exports.styleLoaders = function (options) {
  51. var output = []
  52. var loaders = exports.cssLoaders(options)
  53. for (var extension in loaders) {
  54. var loader = loaders[extension]
  55. output.push({
  56. test: new RegExp('\\.' + extension + '$'),
  57. loader: loader
  58. })
  59. }
  60. return output
  61. }