vue - utils.js


exports:導出功能函數或變量

module.exports:默認導出{}

 

-----------------------------------------------------------------------------------

module.exports 初始值為一個空對象 {}

exports 是指向的 module.exports 的引用

require() 返回的是 module.exports 而不是 exports

-------------------------------------------------------

 

關於module.exports和exports.js詳情請查看:https://cnodejs.org/topic/5231a630101e574521e45ef8

 

  1 'use strict'
  2 // 路徑
  3 const path = require('path')
  4 // 來自config/index.js
  5 const config = require('../config')
  6 
  7 const ExtractTextPlugin = require('extract-text-webpack-plugin')
  8 // 來自package.json
  9 const packageConfig = require('../package.json')
 10 
 11 exports.assetsPath = function (_path) {
 12   const assetsSubDirectory = process.env.NODE_ENV === 'production'
 13     ? config.build.assetsSubDirectory
 14     : config.dev.assetsSubDirectory
 15 
 16   return path.posix.join(assetsSubDirectory, _path)
 17 }
 18 
 19 exports.cssLoaders = function (options) {
 20   options = options || {}
 21 
 22   const cssLoader = {
 23     loader: 'css-loader',
 24     options: {
 25       sourceMap: options.sourceMap
 26     }
 27   }
 28 
 29   const postcssLoader = {
 30     loader: 'postcss-loader',
 31     options: {
 32       sourceMap: options.sourceMap
 33     }
 34   }
 35 
 36   // 生成與extract文本插件一起使用的加載器字符串
 37   function generateLoaders(loader, loaderOptions) {
 38     const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
 39 
 40     if (loader) {
 41       loaders.push({
 42         loader: loader + '-loader',
 43         options: Object.assign({}, loaderOptions, {
 44           sourceMap: options.sourceMap
 45         })
 46       })
 47     }
 48 
 49     //指定該選項時提取CSS
 50     //(在生產構建期間就是這種情況)
 51     if (options.extract) {
 52       return ExtractTextPlugin.extract({
 53         use: loaders,
 54         fallback: 'vue-style-loader'
 55       })
 56     } else {
 57       return ['vue-style-loader'].concat(loaders)
 58     }
 59   }
 60 
 61   // https://vue-loader.vuejs.org/en/configurations/extract-css.html
 62   return {
 63     css: generateLoaders(),
 64     postcss: generateLoaders(),
 65     less: generateLoaders('less'),
 66     sass: generateLoaders('sass', { indentedSyntax: true }),
 67     scss: generateLoaders('sass'),
 68     stylus: generateLoaders('stylus'),
 69     styl: generateLoaders('stylus')
 70   }
 71 }
 72 
 73 // 為單獨樣式文件生成加載器(.vue之外)
 74 exports.styleLoaders = function (options) {
 75   const output = []
 76   const loaders = exports.cssLoaders(options)
 77 
 78   for (const extension in loaders) {
 79     const loader = loaders[extension]
 80     output.push({
 81       test: new RegExp('\\.' + extension + '$'),
 82       use: loader
 83     })
 84   }
 85 
 86   return output
 87 }
 88 
 89 exports.createNotifierCallback = () => {
 90   const notifier = require('node-notifier')
 91 
 92   return (severity, errors) => {
 93     if (severity !== 'error') return
 94 
 95     const error = errors[0]
 96     const filename = error.file && error.file.split('!').pop()
 97 
 98     notifier.notify({
 99       title: packageConfig.name,
100       message: severity + ': ' + error.name,
101       subtitle: filename || '',
102       icon: path.join(__dirname, 'logo.png')
103     })
104   }
105 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM