vue-cli中webpack配置之webpack.base.c
2018-03-14 本文已影响1907人
e93a88ffeabd
ps:本文中内容仅限于使用vue-cli的2.8.x版本生成的webpack项目
文件位置
文件位置在这个文件中,主要做了以下几项配置
- 配置webpack编译入口
- 配置webpack输出路径、名称和静态文件路径
- 配置不同模块的处理规则与命名规则
配置内容
var path = require('path')
var utils = require('./utils')
var config = require('../config')
var vueLoaderConfig = require('./vue-loader.conf')
// 获取根目录
function resolve(dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
// 定义入口文件
entry: {
app: './src/main.js'
},
output: {
// 输出路径
path: config.build.assetsRoot,
// 输出文件名称(name为entry中定义的key值)
filename: '[name].js',
// 静态资源路径(判断目前所处的环境)
// 在开发环境下,路径为根目录
// 在生产环境下,路径为根目录下的static文件夹
publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath
},
resolve: {
// 自动解析拓展,可以在引用文件的时候不用写后缀
extensions: ['.js', '.vue', '.json'],
// 配置别名,避免在结构嵌套过深的情况下出现../../../../xxx这种写法
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src')
}
},
module: {
// 配置不同模块处理规则
rules: [{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
}, {
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test')]
}, {
// 对于图片资源,当文件体积小于10kb时,将其生成为base64,直接插入html中
// 当大于10kb时,将图片名称进行按照命名规则进行更改
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
}, {
// 字体资源打包规则,与图片资源相同
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}]
}
}
关于url-loader的配置项name
- 它同时设置了src路径的名称与文件的名称
- 我们看到其设置为utils.assetsPath(‘img/[name].[hash:7].[ext]’),这里utils.assetsPath在调用后不论生产环境与开发环境返回的都是static/img/[图片名称].[7位哈希值].[该文件类型后缀名]
- 假如,我的一个img标签在html中的为
<img src="../logo.png">
,那么在开发环境中,经过webpack打包后,就将其变成了<img src="static/img/logo.dc7bce4.png">
。但这并不是最终的结果,其实还差一步,还要在路径前面拼接上之前在output中设置的publicPath,这样标签最后的结果就变成了:<img src="/static/img/logo.dc7bce4.png">
该系列全部文章
- vue-cli中webpack配置之build.js
- vue-cli中webpack配置读之check-versions.js
- vue-cli中webpack配置之dev-client.js
- vue-cli中webpack配置之dev-server.js
- vue-cli中webpack配置之utils.js
- vue-cli中webpack配置之vue-loader-conf.js
- vue-cli中webpack配置之webpack.base.conf.js
- vue-cli中webpack配置之webpack.dev.conf.js
- vue-cli中webpack配置之webpack.prod.conf.js