vue项目的build文件夹的utils.js文件说明

阅读: 评论:0

vue项目的build文件夹的utils.js文件说明

vue项目的build文件夹的utils.js文件说明

utils是工具的意思,是一个用来处理css的文件,这个文件包含了三个工具函数:

生成静态资源的路径
生成 ExtractTextPlugin对象或loader字符串
生成 style-loader的配置

var path = require(‘path’)// node自带的文件路径工具

var config = require(’…/config’)// 配置文件

var ExtractTextPlugin = require(‘extract-text-webpack-plugin’)// 提取css的插件

/** @method assertsPath 生成静态资源的路径(判断开发环境和生产环境,为config文件中index.js文件中定义assetsSubDirectory)

  • @param {String} _path 相对于静态资源文件夹的文件路径

  • @return {String} 静态资源完整路径

*/

exports.assetsPath = function (_path) {

var assetsSubDirectory = v.NODE_ENV === ‘production’

? config.build.assetsSubDirectory
config.dev.assetsSubDirectory

//nodeJs path提供用于处理文件路径的工具;path.posix提供对路径方法的POSIX(可移植性操作系统接口)特定实现的访问(可跨平台); path.posix.join与path.join一样,不过总是以 posix 兼容的方式交互

return path.posix.join(assetsSubDirectory, _path)

}

/**@method cssLoaders 生成处理css的loaders配置,使用css-loader和postcssLoader,通过options.usePostCSS属性来判断是否使用postcssLoader中压缩等方法

  • @param {Object} option = {sourceMap: true,// 是否开启 sourceMapextract: true // 是否提取css}生成配置

  • @return {Object} 处理css的loaders配置对象

*/

exports.cssLoaders = function (options) {

options = options || {}

var cssLoader = {

loader: ‘css-loader’,

options: {

minimize: v.NODE_ENV === ‘production’,

sourceMap: options.sourceMap

}

}

/**@method generateLoaders 生成 ExtractTextPlugin对象或loader字符串

  • @param {Array} loaders loader名称数组

  • @return {String|Object} ExtractTextPlugin对象或loader字符串

*/

function generateLoaders (loader, loaderOptions) {

var loaders = [cssLoader]

if (loader) {

loaders.push({

loader: loader + ‘-loader’,

options: Object.assign({}, loaderOptions, {

sourceMap: options.sourceMap

})

})

}

// ExtractTextPlugin提取css(当上面的loaders未能正确引入时,使用vue-style-loader)

if (act) {// 生产环境中,默认为true

act({

use: loaders,

fallback: ‘vue-style-loader’

})

} else {//返回vue-style-loader连接loaders的最终值

return [‘vue-style-loader’].concat(loaders)

}

}

return {

css: generateLoaders(),//需要css-loader 和 vue-style-loader

postcss: generateLoaders(),//需要css-loader、postcssLoader 和 vue-style-loader

less: generateLoaders(‘less’),//需要less-loader 和 vue-style-loader

sass: generateLoaders(‘sass’, { indentedSyntax: true }),//需要sass-loader 和 vue-style-loader

scss: generateLoaders(‘sass’),//需要sass-loader 和 vue-style-loader

stylus: generateLoaders(‘stylus’),//需要stylus-loader 和 vue-style-loader

styl: generateLoaders(‘stylus’)//需要stylus-loader 和 vue-style-loader

}

}

/**@method styleLoaders 生成 style-loader的配置

  • @param {Object} options 生成配置

  • @return {Array} style-loader的配置

*/

exports.styleLoaders = function (options) {

var output = []

var loaders = exports.cssLoaders(options)

//将各种css,less,sass等综合在一起得出结果输出output

for (var extension in loaders) {

var loader = loaders[extension]

output.push({

test: new RegExp(’.’ + extension + ‘$’),

use: loader

})

}

return output

}

本文发布于:2024-02-05 05:35:22,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170725314163482.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件夹   文件   项目   vue   build
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23