• build 文件夹中的 utils.js


      1 //此文件用来配置 assetsPath css-loader 和 vue-style-loader createNotifierCallback
      2 'use strict'
      3 const path = require('path')
      4 const config = require('../config')
      5 const MiniCssExtractPlugin = require('mini-css-extract-plugin') //将CSS提取为独立的文件的插件,对每个包含css的js文件都会创建一个CSS文件
      6 const packageConfig = require('../package.json')
      7 
      8 // 导出assetsPath
      9 exports.assetsPath = function (_path) {
     10   const assetsSubDirectory = process.env.NODE_ENV === 'production' ?
     11     config.build.assetsSubDirectory :
     12     config.dev.assetsSubDirectory
     13 
     14   // path.posix是处理跨操作系统 path.join是用拼接路径片
     15   return path.posix.join(assetsSubDirectory, _path)
     16 }
     17 
     18 // 导出lcssLoaders 该cssLoaders是为了下面的styleLoaders服务
     19 exports.cssLoaders = function (options) {
     20   options = options || {}
     21   // cssLoader基本配置
     22   const cssLoader = {
     23     // css-loader处理css
     24     loader: 'css-loader',
     25     options: {
     26       // 是否开启sourceMap 用来调试
     27       sourceMap: options.sourceMap
     28     }
     29   }
     30   // postcssLoader基本配置 用来添加浏览器前缀
     31   const postcssLoader = {
     32     loader: 'postcss-loader',
     33     options: {
     34       sourceMap: options.sourceMap
     35     }
     36   }
     37 
     38   // generate loader string to be used with extract text plugin
     39   function generateLoaders(loader, loaderOptions) {
     40     // 将上面的cssLoader放在一个数组中
     41     const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
     42     // 如果该函数传达了loader那就添加到loaders中,该loader可能是less/sass等
     43     if (loader) {
     44       loaders.push({
     45         // loader配置
     46         loader: loader + '-loader',
     47         // 参数配置 Object.assign是合并对象
     48         options: Object.assign({}, loaderOptions, {
     49           sourceMap: options.sourceMap
     50         })
     51       })
     52     }
     53 
     54     // 当指定该选项时提取CSS (生产构建期间的情况)
     55     if (options.extract) {
     56       //提取抽离css
     57       return [MiniCssExtractPlugin.loader].concat(loaders)
     58     } else {
     59       //不提取抽离css
     60       return ['vue-style-loader'].concat(loaders)
     61     }
     62   }
     63 
     64   // https://vue-loader.vuejs.org/en/configurations/extract-css.html
     65   return {
     66     css: generateLoaders(),
     67     postcss: generateLoaders(),
     68     less: generateLoaders('less'),
     69     sass: generateLoaders('sass', {
     70       indentedSyntax: true
     71     }),
     72     scss: generateLoaders('sass'),
     73     stylus: generateLoaders('stylus'),
     74     styl: generateLoaders('stylus')
     75   }
     76 }
     77 
     78 // 为独立样式文件生成 loader (.vue之外)
     79 exports.styleLoaders = function (options) {
     80   const output = []
     81   const loaders = exports.cssLoaders(options)
     82 
     83   for (const extension in loaders) {
     84     // 该loader是各种css文件生成的loader对象
     85     const loader = loaders[extension]
     86     output.push({
     87       // 用loader处理符合test正则的文件
     88       test: new RegExp('\.' + extension + '$'),
     89       use: loader
     90     })
     91   }
     92 
     93   return output
     94 }
     95 
     96 exports.createNotifierCallback = () => {
     97   // 发送桌面消息
     98   const notifier = require('node-notifier')
     99 
    100   return (severity, errors) => {
    101     if (severity !== 'error') return
    102 
    103     const error = errors[0]
    104     const filename = error.file && error.file.split('!').pop()
    105 
    106     notifier.notify({
    107       title: packageConfig.name,
    108       message: severity + ': ' + error.name,
    109       subtitle: filename || '',
    110       icon: path.join(__dirname, 'logo.png')
    111     })
    112   }
    113 }
  • 相关阅读:
    oracle表连接------>排序合并连接(Merge Sort Join)
    内存损坏问题的演示样例及分析
    HTML5 Canvas中9宫格的坑
    hive udaf 用maven打包运行create temporary function 时报错
    Re-installation failed due to different application signatures.
    UVA 6480 Zombie Invasion(模拟退火)
    POJ3436 ACM Computer Factory 【最大流】
    android图像处理系列之三--图片色调饱和度、色相、亮度处理
    android图像处理系列之四--给图片添加边框(上)
    android图像处理系列之五--给图片添加边框(中)
  • 原文地址:https://www.cnblogs.com/zhuyujie/p/14074609.html
Copyright © 2020-2023  润新知