vue 腳手架初始化項目中配置文件webpack.base.conf.js代碼含義

来源:https://www.cnblogs.com/520yh/archive/2020/03/18/12516527.html
-Advertisement-
Play Games

'use strict' //引入node.js路勁模塊 const path = require('path') //引入utils工具模塊,utils主要用來處理css-loader和vue-style-loader的 const utils = require('./utils') //引入c ...


'use strict'
//引入node.js路勁模塊
const path = require('path')
//引入utils工具模塊,utils主要用來處理css-loader和vue-style-loader的
const utils = require('./utils')
//引入config目錄下的index.js配置文件,主要來定義一些開發和生產環境的屬性
const config = require('../config')
//vue-loader.conf配置文件是用來解決各種CSS文件的,定義了諸如css,less,sass之類的和樣式有關的loader
const vueLoaderConfig = require('./vue-loader.conf')
//此函數是用來返回目前目錄的平行目錄的路徑,因為有個'..'
function resolve (dir) {
  return path.join(__dirname, '..', dir)
}
//eslint 的檢測規則
const createLintingRule = () => ({
   //對js和vue 文件進行eslint 檢查
  test: /\.(js|vue)$/,
  //使用eslint-loader
  loader: 'eslint-loader',
  //enforce執行的意思 有兩個值 pre post
    //pre是在其他規則執行之前執行 post是在其他規則執行之後執行
  enforce: 'pre',
  //進行檢測的文件目錄包括哪些 調用了路徑函數,
  include: [resolve('src'), resolve('test')],
  options: {
    //使用第三方的插件進行eslint 檢測
    formatter: require('eslint-friendly-formatter'),
    //是否輸出eslint報錯信息
    emitWarning: !config.dev.showEslintErrorsInOverlay
  }
})
//webpack的配置,可以理解成是開發環境和正式環境的一些公共配置
module.exports = {
  //webpack 解析時根目錄地址如果此文件在跟目錄這句話就不用寫
  context: path.resolve(__dirname, '../'),
  entry: {
    //入口文件是src目錄下的main.js
    app: './src/main.js'
  },
  output: {
    //路徑是config目錄下的index.js中的build配置中的assetsRoot,也就是dist目錄
    path: config.build.assetsRoot,
    //文件名稱這裡使用預設的name也就是main
    filename: '[name].js',
    //上線地址,也就是真正的文件引用路徑,如果是production生產環境,其實這裡都是'/'
    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: {
        //後面的$符號指精確匹配,也就是說只能使用 import vuejs from "vue" 這樣的方式導入vue.esm.js文件,不能在後面跟上 vue/vue.js
      'vue$': 'vue/dist/vue.esm.js',
      // resolve('src') 其實在這裡就是項目根目錄中的src目錄,使用 import somejs from "@/some.js" 就可以導入指定文件,是不是很高大上
      '@': resolve('src'),
    }
  },
  // module用來解析不同的模塊
  module: {
    //轉換解析規則
        //1.test是用來解析所有此尾碼名的文件,
        //2.loader我們用什麼npm什麼形式的loader去解析
        //3.include是代表我們解析的文件只包含那些東西
        //4.options解析文件參數設置 具體看下麵的解釋
    rules: [
      ...(config.dev.useEslint ? [createLintingRule()] : []),
      {
        test: /\.vue$/,
        // 對vue文件使用vue-loader,該loader是vue單文件組件的實現核心,專門用來解析.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'), resolve('node_modules/webpack-dev-server/client')]
      },
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
          // 對圖片相關的文件使用 url-loader 插件,這個插件的作用是將一個足夠小的文件生成一個64位的DataURL
        // 可能有些老鐵還不知道 DataURL 是啥,當一個圖片足夠小,為了避免單獨請求可以把圖片的二進位代碼變成64位的
        // DataURL,使用src載入,也就是把圖片當成一串代碼,避免請求,神不神奇??
        loader: 'url-loader',
        options: {
          // 限制 10000 個位元組一下的圖片才使用DataURL
          limit: 10000,
          name: utils.assetsPath('img/[name].[hash:7].[ext]')// 這個函數執行結果是 /img/[name].[hash:7].[ext]
           // 不知道吧 name 設置成 /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]')
        }
      }
    ]
  },
  node: {
    // 是否 polyfill 或 mock
        // prevent webpack from injecting useless setImmediate polyfill because Vue
        // 源包含它(雖然僅在本地使用)
    // source contains it (although only uses it if it's native).
    setImmediate: false,
    // 預防webpack從註入模擬節點到node原生模塊
    // prevent webpack from injecting mocks to Node native modules
     // that does not make sense for the client 這對客戶端沒有影響
    // that does not make sense for the client
    dgram: 'empty',
    fs: 'empty',
    net: 'empty',
    tls: 'empty',
    child_process: 'empty'
  }
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文主要是對CSS 的定位屬性基礎學習,寫了一些實際使用的示例。 屬性定義和語法 定義:指定一個元素在文檔中定位方式,可以通過left,right,top,bottom調整元素的位置。 用法: div{ positon:static; } 賦值: static:預設值。元素根據正常的文檔流進行排列, ...
  • 一、前言 把大象關進冰箱需要幾步?三步,把冰箱門打開,把大象關進去,把冰箱門關上。 用 CSS 實現 3D 效果需幾步?三步,設置透視效果 perspective,改變元素載體為 preserve-3d,對元素進行 3D 轉換操作。 perspective 屬性決定了我們從什麼地方查看元素,定義時的 ...
  • 上gif: 1.開局提示動畫 2.游戲中狀態提示 3.開掛模式提示 4.計時器 5.游戲模式掃雷成功,藍色進度條表示當次掃雷的完成度 6.若當次時間小於最佳記錄,則更新最佳記錄,如果最佳記錄小於設置的某個值,解鎖對應彩蛋 7.開掛模式全部掃雷成功不會記錄到最佳時間 ...
  • Alt+Insert 實現重載 tostring Alt+Enter 自動生成結果類型(定義類型變數) Ctrl+Shift+空格 可以在new關鍵字之後使用智能類型代碼完成來實例化期望類型的對象 Ctrl+B 跳轉到定義變數源 Alt+F7查找所有引用 ...
  • ready與onload的區別: <script> //DOM載入完畢(不包括圖片等) $(document).ready(function(){ }) //全部文件載入完畢(html文件+css文件+js文件+圖片等) window.onload=function(){ } </script> 綜 ...
  • 動畫原理 Document 動畫原理 Document 夏雨荷 動畫封裝 Document 點擊夏雨荷才走 夏雨荷 不同動畫緩動動畫 Document 點擊夏雨荷才走 夏雨荷 ... ...
  • 前端HTML基礎知識學什麼?初學HTML從基礎知識入手,學習瀏覽器內核、HTML基本結構標簽、HTML語法規範、VSCode編輯器、HTML常用標簽、相對路徑、錨點定位、表格、列表、表單等內容。 前端HTML基礎知識學習路線: 1 瀏覽器與瀏覽器內核 HTML 簡介導讀 網頁的相關概念 常用瀏覽器以 ...
  • css3相較於css2.1增加了許多新的特性功能,目前主流瀏覽器chrome、safari、firefox、opera、甚至360都已經支持了CSS3大部分功能了,IE10以後也開始全面支持CSS3了,需要註意的是css3樣式在不同的瀏覽器可能需要不同的首碼(是瀏覽器的私有屬性,相容性),此外在代碼... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...