一、引入模块文件
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
-
const utils = require(’./utils’)
对vue-loader对于css预编译一些提取的工具模块,因为对于个人开发而言,在里面提供了,sass,less,stylus,possCss等一些列预编译解析的loader -
const config = require(’…/config’)
对开发环境和生产环境的一系列不同参数的,路径等配置 -
const vueLoaderConfig = require(’./vue-loader.conf’)
基础生产环境和开发环境对vue-loader进行的配置
二、封装函数
封装函数,进行传参,获取绝对路径,方便对import时引入地址的填写
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
三、打包入口函数
entry: {
app: './src/main.js'
},
四、打包的出口函数
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath
}
- path:打包目录
- filename:打包名称
- publicPath:静态文件访问的路径,根据静态文件的loader进行拼接配置,当进行环境是生产环境的话,我们就用config文件中的config.build.assetsPublicPath这个属性,如果不是生产环境,则用config.dev.assetsPulicPath
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
五、relove库
relove是用来对模块进行解析,就是所谓的Libary第三方库
- extensions:是对模块的后缀进行解析,当我们引入自己写的模块的时候,没有带js后缀,那文件会不会识别,本质上不会识别,但是有了这个配置,会先对.js后缀进行匹配,没有再匹配.vue,没有在匹配.json,还是没有找到的话,则会报错
- alias:配置别名,如果你在一个很深的文件引入其他文件中有一个很深的文件,我们就用@来代替src
六、module模块
对解析文件的参数配置
module: {
rules: [
...(config.dev.useEslint ? [createLintingRule()] : []),
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
},
{
test: /\.less$/,
loader: "style-loader!css-loader!less-loader"
}
]
}
- test:用来解析所有后缀为*的文件
- loader:用什么Npm的形式的loader去解析
- include:代表我们解析的文件只包含那些东西
- options:是对解析文件参数配置,对于url-loader来说limit1000代表当小时1000kb的文件我们则可以砖面base64,name对输出的内容进行地址转换