vue-cli腳手架build目錄中的webpack.base.conf.js配置文件

轉載自:http://www.cnblogs.com/ye-hcj/p/7082620.htmlcss

webpack.base.conf.js配置文件// 引入nodejs路徑模塊html

var path = require('path')
// 引入utils工具模塊,具體查看個人博客關於utils的解釋,utils主要用來處理css-loader和vue-style-loader的
var utils = require('./utils')
// 引入config目錄下的index.js配置文件,主要用來定義一些開發和生產環境的屬性
var config = require('../config')
// vue-loader.conf配置文件是用來解決各類css文件的,定義了諸如css,less,sass之類的和樣式有關的loader // 詳情請看(1)
var vueLoaderConfig = require('./vue-loader.conf') // 返回到dir爲止的絕對路徑 function resolve (dir) { return path.join(__dirname, '..', dir) } module.exports = { entry: {
// 入口文件是src目錄下的 index: [
'babel-polyfill', './src/index-main.js'], admin: ['babel-polyfill', './src/admin-main.js'] }, output: {
// 路徑是config目錄下的index.js中的build配置中的assetsRoot,也就是dist目錄 path: config.build.assetsRoot, filename:
'[name].js', //name就是入口文件前面的key值,此處是index和admin //資源發佈路徑 // 上線地址,也就是真正的文件引用路徑, publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath }, resolve: {
// resolve是webpack的內置選項,也就是說當使用 import "jquery",該如何去執行這件事
// 情就是resolve配置項要作的,import jQuery from "./additional/dist/js/jquery" 這樣會很麻煩,能夠起個別名簡化操做
extensions: [
'.js', '.vue', '.json'],// 省略擴展名,也就是說.js,.vue,.json文件導入能夠省略後綴名,這會覆蓋默認的配置,因此要省略擴展名在這裏必定要寫上 alias: {
//個人理解是此處指定別名 require('
vue/dist/vue.esm.js') 能夠簡化爲require('vue$')
// resolve('src') 其實在這裏就是項目根目錄中的src目錄,使用 import somejs from "@/some.js" 就能夠導入指定文件,是否是很高大上 '@': resolve('src') } },
// module用來解析不一樣的模塊 module: { rules: [ {
// 對vue文件使用vue-loader,該loader是vue單文件組件的實現核心,專門用來解析.vue文件的 test:
/\.vue$/, loader: 'vue-loader',
// 將vueLoaderConfig當作參數傳遞給vue-loader,就能夠解析文件中的css相關文件 options: vueLoaderConfig }, { test:
/\.js$/,
// 對js文件使用babel-loader轉碼,該插件是用來解析es6等代碼 loader:
'babel-loader',
// 指明src和test目錄下的js文件要使用該loader include: [resolve(
'src'), resolve('test')] }, {
// 對圖片相關的文件使用 url-loader 插件,這個插件的做用是將一個足夠小的文件生成一個64位的DataURL
// 可能有些老鐵還不知道 DataURL 是啥,當一個圖片足夠小,爲了不單獨請求能夠把圖片的二進制代碼變成64位的
test:
/\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: 'url-loader', options: {
    // 限制 10000 個字節如下轉base64,以上不轉 limit:
10000, name: utils.assetsPath('img/[name].[hash:7].[ext]'), //資源發佈路徑 //publicPath: 'http://vue.cn/' } }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
// 字體文件處理,和上面同樣 loader:
'url-loader', options: { limit: 10000, name: utils.assetsPath('fonts/[name].[hash:7].[ext]') } } ] } }

vueLoaderConfig就是下面的

{
    css: ExtractTextPlugin.extract({
              use: [{
                loader: 'css-loader',
                options: {
                  sourceMap: true,
                  extract: true
                }
              }],
              fallback: 'vue-style-loader'
            }),
    postcss: ExtractTextPlugin.extract({
              use: [{
                loader: 'css-loader',
                options: {
                  sourceMap: true,
                  extract: true
                }
              }],
              fallback: 'vue-style-loader'
            }),
    less: ExtractTextPlugin.extract({
              use: [
                      {
                        loader: 'css-loader',
                        options: {
                          sourceMap: true,
                          extract: true
                        }
                      },
                      {
                        loader: 'less-loader',
                        options: {
                          sourceMap: true,
                          extract: true
                        }
                      }
                 ],
              fallback: 'vue-style-loader'
            }),
    sass: ExtractTextPlugin.extract({
              use: [
                      {
                        loader: 'css-loader',
                        options: {
                          sourceMap: true,
                          extract: true
                        }
                      },
                      {
                        loader: 'sass-loader',
                        options: {
                          sourceMap: true,
                          extract: true,
                          indentedSyntax: true
                        }
                      }
                 ],
              fallback: 'vue-style-loader'
            }),
   //剩下的略
  }
相關文章
相關標籤/搜索