var path = require('path') // node路徑模塊
var utils = require('./utils') // 對vue-loader對於css預編譯一些提取的工具模塊,因為對於個人開發而言,在里面提供了,sass,less,stylus,possCss等一些列預編譯解析的loader
var config = require('../config') // 對開發環境和生產環境的一系列不同參數的,路徑等配置
var vueLoaderConfig = require('./vue-loader.conf') // 基礎生產環境和開發環境對vue-loader進行的配置
function resolve (dir) { return path.join(__dirname, '..', dir) }
封裝函數,進行傳參,獲取絕對路徑,方便對import時引入地址的填寫
path.join :對多個字符串進行拼接
entry: { app: './src/main.js' },
打包的入口js文件
output: { path: config.build.assetsRoot, (config.build.assetsRoot===path.resolve(_dirname,'../dist')作者把想打包出來的文件領放在根目錄下的dist目錄下) filename: '[name].js', 用來打包出的文件名,因為會打包出來的文件是三個文件,一個是自己的源代碼文件,一個是runtime文件,一個是ventor文件 publicPath: process.env.NODE_ENV === 'production' 靜態文件訪問的路徑,根據靜態文件的loader進行拼接配置,當進行環境是生產環境的話,我們就用config文件中的config.build.assetsPublicPath這個屬性,如果是生產環境,則用config.dev.assetsPulicPath ? config.build.assetsPublicPath : config.dev.assetsPublicPath },
output是我們輸文件輸出的路徑
resolve: { extensions: ['.js', '.vue', '.json'],是對模塊的后綴進行解析,當我們引入自己寫的模塊的時候,沒有帶js后綴,那文件會不會識別,本質上不會識別,但是有了這個配置,會先對.js后綴進行匹配,沒有再匹配.vue,沒有在匹配.json,還是沒有找到的話,則會報錯
alias: {
'vue$': 'vue/dist/vue.esm.js', 配置別名,如果你在一個很深的文件引入其他文件中有一個很深的文件,我們就用@來代替src
'@': resolve('src')
}
},
relove是用來對模塊進行解析,就是所謂的Libary第三方庫
module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', options: vueLoaderConfig }, { test: /\.js$/, loader: 'babel-loader', include: [resolve('src'), resolve('test')] }, { 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]') } } ] }
test:用來解析所有后綴為*的文件
loader:用什么Npm的形式的loader去解析
include:代表我們解析的文件只包含那些東西
options:是對解析文件參數配置,對於url-loader來說limit1000代表當小時1000kb的文件我們則可以磚面base64,name對輸出的內容進行地址轉換
對解析文件的參數配置