Advertisement
Guest User

Untitled

a guest
Mar 9th, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const path = require('path')
  2. const config = require('./config')
  3. const ExtractTextPlugin = require('extract-text-webpack-plugin')
  4. const packageConfig = require('../package.json')
  5.  
  6. exports.cssLoaders = function (options) {
  7.   options = options || {}
  8.   const cssLoader = {
  9.     loader: 'css-loader',
  10.     options: {
  11.       sourceMap: options.sourceMap
  12.     }
  13.   }
  14.  
  15.   const postcssLoader = {
  16.     loader: 'postcss-loader',
  17.     options: {
  18.       sourceMap: options.sourceMap
  19.     }
  20.   }
  21.  
  22.   // generate loader string to be used with extract text plugin
  23.   const generateLoaders = (loader, loaderOptions) => {
  24.     let loaders = options.useVue ? [cssLoader] : []
  25.     if (options.usePostCSS) {
  26.       loaders.push(postcssLoader)
  27.     }
  28.     if (loader) {
  29.       loaders.push({
  30.         loader: loader + '-loader',
  31.         options: Object.assign({}, loaderOptions, {
  32.           sourceMap: options.sourceMap
  33.         })
  34.       })
  35.     }
  36.     if (options.useVue) {
  37.       return ['vue-style-loader'].concat(loaders)
  38.     }
  39.     else {
  40.       return loaders
  41.     }
  42.   }
  43.  
  44.   // https://vue-loader.vuejs.org/en/configurations/extract-css.html
  45.   return {
  46.     less: generateLoaders('less'),
  47.     sass: generateLoaders('sass', { indentedSyntax: true }),
  48.     scss: generateLoaders('sass'),
  49.     stylus: generateLoaders('stylus'),
  50.     styl: generateLoaders('stylus'),
  51.     // pug: generateLoaders('pug')
  52.   }
  53. }
  54.  
  55. // Generate loaders for standalone style files (outside of .vue)
  56. exports.styleLoaders = function (options) {
  57.   const output = []
  58.   const loaders = exports.cssLoaders(options)
  59.  
  60.   for (const extension in loaders) {
  61.     const loader = loaders[extension]
  62.     output.push({
  63.       test: new RegExp('\\.' + extension + '$'),
  64.       use: loader
  65.     })
  66.   }
  67.  
  68.   return output
  69. }
  70.  
  71. exports.createNotifierCallback = () => {
  72.   const notifier = require('node-notifier')
  73.  
  74.   return (severity, errors) => {
  75.     if (severity !== 'error') return
  76.  
  77.     const error = errors[0]
  78.     const filename = error.file && error.file.split('!').pop()
  79.  
  80.     notifier.notify({
  81.       title: packageConfig.name,
  82.       message: severity + ': ' + error.name,
  83.       subtitle: filename || '',
  84.       icon: path.join(__dirname, 'logo.png')
  85.     })
  86.   }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement