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:用來解析全部後綴爲*的文件css
loader:用什麼Npm的形式的loader去解析vue
include:表明咱們解析的文件只包含那些東西node
options:是對解析文件參數配置,對於url-loader來講limit1000表明當小時1000kb的文件咱們則能夠磚面base64,name對輸出的內容進行地址轉換json
對解析文件的參數配置sass