1. 程式人生 > >webpack3最新版本配置研究(一)loader

webpack3最新版本配置研究(一)loader

webpack這貨還是挺火的,目前前端不管是react和vue都用這個打包,還是挺好用的,本文剛開始寫的是webpack2,但後來發現webpack3可以無傷升級就升級了下,據說webpack3相對於2的生成的程式碼執行速度更快!在家裡裝了個最新版本的nodejs8.4.0,附帶的npm是5.3.0的,有的時候install的時候會爆Cannot read property ‘0’ of undefined,目前的辦法是npm install -g [email protected]退級,或者安裝nodejs6的穩定版,之後可能會處理這個bug

什麼是Webpack

WebPack可以看做是模組打包機:它做的事情是,分析你的專案結構,找到JavaScript模組以及其它的一些瀏覽器不能直接執行的拓展語言(Scss,TypeScript等),並將其打包為合適的格式以供瀏覽器使用。

WebPack和Grunt以及Gulp相比有什麼特性

其實Webpack和另外兩個並沒有太多的可比性,Gulp/Grunt是一種能夠優化前端的開發流程的工具,而WebPack是一種模組化的解決方案,不過Webpack的優點使得Webpack可以替代Gulp/Grunt類的工具。

webpack的安裝和其他的npm包類似

npm init  //一路回車,這裡要注意name最好不要取什麼webpack,grunt,glup之類的,不然可能會爆refusing to install xxxx as a dependency of itself

//全域性安裝
npm install -g webpack
//安裝到你的專案目錄,最好制定一個版本號
npm install --save-dev [email protected]3.4.0

首先是最簡單的webpack打包

//index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
  <div id="parent">

  </div>
</body>
<script src
="bundle.js">
</script> </html> //index.js const divItem = require('./div'); document.getElementById('parent').appendChild(divItem()); //div.js module.exports = () => { const divDom = document.createElement('div'); divDom.textContent = 'write something'; return divDom; } //webpack.config.js module.exports = { // 打包檔案的存放地址 entry: __dirname + "/index.js", output:{ // 打包後存放地址 path: __dirname, // 輸出後的檔名 filename: 'bundle.js' } } //package.json中將scripts修改,npm run webpack命令會呼叫webpack命令列 "scripts": { "webpack":"webpack" }

然後在當前資料夾使用命令列輸入npm run webpack 就可以將index的檔案和他的require全都打到bundle中了,首先先執行了npm中的script呼叫了webpack命令,webpack命令直接執行了webpack.config.js中的配置,將index.js打包到bundle檔案裡引入

Loader
webpack通過呼叫外部的指令碼可以對各種檔案進行處理,把下一代的ES6,ES7轉換為ES5。或者說對React的開發而言,可以把React的JSX檔案轉換為JS檔案。也可以將css打包到js中,例如style和css的loader,在webpack1中loader在module中是用loaders欄位的,在webpack2中使用的是rules欄位

babel
babel是loader中比較重要的,用來將es6和es7轉換成es5來進行瀏覽器的展示,用下列命令安裝它們
npm install –save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react

module: {
  rules: [
    {
        test: /\.js|jsx$/, //是一個正則,代表js或者jsx字尾的檔案要使用下面的loader
        loader: "babel-loader"
    }
  ]
}

//建立一個.babelrc,webpack中的babel會自動呼叫該檔案的配置到babel中轉換js
{
  "presets": ["react", "es2015"]
}

這時再執行下npm run webpack之後,發現之前index和div中的const寫法被轉換成es5的var了

cssloader
用來解析js中引入的css和sass,老規矩
npm install –save-dev style-loader css-loader

//webpack.config.js中修改module
module: {
    rules: [
      {
        test: /\.js|jsx$/, //是一個正則,代表js或者jsx字尾的檔案要使用下面的loader
        loader: "babel-loader"
      },
      {
        test: /\.css$/,
        loader: "style-loader!css-loader"//新增對樣式表的處理
      }
    ]
 }


//生成一個index.css檔案來新增一些樣式
#parent{
  color: red;
}


//index.js中新增樣式
require('./index.css');

執行npm run webpack之後開啟index.html是不是字型變紅了呢?

相關推薦

webpack3最新版本配置研究loader

webpack這貨還是挺火的,目前前端不管是react和vue都用這個打包,還是挺好用的,本文剛開始寫的是webpack2,但後來發現webpack3可以無傷升級就升級了下,據說webpack3相對於2的生成的程式碼執行速度更快!在家裡裝了個最新版本的nodej

[轉] webpack3最新版本配置研究 devtool,webpack-dev-server,CommonsChunkPlugin

war () 最新版本 獲取 報錯 key num clas 容易 devtool devtool是webpack中config自帶的屬性只要使用就可以了不用安裝 webpack官網的解釋如下 當 webpack 打包源代碼時,可能會很難追蹤到錯誤和警告在源代碼中的原始位

linux 配置文件.conf 非打印字符出錯的研究

highlight 運行錯誤 配置文件 檢查 bsp 換行符 span 字符 future linux 大量使用 .conf配置文件,經常從網上復制的配置信息,保存後,會出現運行錯誤。原因就是復制到了一個不可見的,無效的非打印字符。如何檢查並清除這些無效字符,今天探討一下。

Spring 事務配置實戰:過濾無需事務處理的查詢之類操作

log pla ssi pan spl tail gif aop img <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes

Redis研究—簡介

創始人 存儲結構 隊列 cached tar 寫入 關系 退出 使用 http://blog.csdn.net/wtyvhreal/article/details/41855327 Redis是一個開源的高性能鍵值對數據庫。它通過提供多種鍵值數據類型來適應不同場景下的

SGI STL內存配置:內存泄漏?

分解 產生 for void 客戶端 lin call free 創建過程 閱讀了Alexander大神的SGI STL源碼,膜拜,很高質量的源碼,獲益匪淺。溫故而知新!下文中所有STL如無特殊說明均指SGI版本實現。 STL 內存配置器 STL對內存管理最核心部分我覺得是

hibernate框架在eclipse下的配置方法

java、 sql數據庫 文件目錄 測試表 any 配置 包名 ive 當我 一、ORM O:object 對象 R:Realtion 關系(關系型數據庫) M:Mapping 映射 ORM:對象關系型映射   目前流行的編程語言,如Java、C# ,它們都是面向對象的編程

Linux系統集群架構線上項目配置實戰

linux 項目 實戰 Linux系統集群架構線上項目配置實戰(一)本文出自 “民工哥博客” 博客,請務必保留此出處http://mingongge.blog.51cto.com/2429897/1971210Linux系統集群架構線上項目配置實戰(一)

CentOS7上安裝配置GitLab

gitlab GitLab CentOS7 GitLab 雖然GitHub已經很好了,但是我們必須聯上公網才可以使用並且如果不付費的話,你的代碼在網上就是公開的!但是在企業環境中,我們公司的代碼不希望被公開並且也不想付費給GitHub,這時怎麽辦呢?我們可以用GitLab搭建企業自己的Gi

cloudfoundry研究 ---- BOSH與monit

我們一般使用BOSH來部署cloudfoundry。使用bosh vms命令來檢視各個節點的執行情況,如下所示: 通過這種形式,我們可以一目瞭然的檢視到各節點的執行情況(running,failing等等),而這些資訊都是通過Monit來獲取的。 什麼是Monit?

安卓 dex 通用脫殼技術研究

注:以下4篇博文中,部分圖片引用自DexHunter作者zyqqyz在slide.pptx中的圖片,版本歸原作者所有; 0x01 背景介紹 安卓 APP 的保護一般分為下列幾個方面: JAVA/C程式碼混淆 dex檔案加殼 .so檔案加殼 反動態除錯技術 其中混淆

Alpha版本沖刺

roc 重要 平臺 估計 正則表達 初步使用 如何獲取 image 心理 目錄 摘要 團隊部分 個人部分 摘要 隊名:小白吃 組長博客:hjj 作業博客:來自雙十一的愛 團隊部分 後敬甲(組長) 過去兩天完成了哪些任務 文字描述 Alpha版本的任務細分

Elam的caffe筆記之配置:CentOS6.5編譯安裝gcc4.8.2

Elam的caffe筆記之配置篇(一):CentOS6.5編譯安裝gcc4.8.2 配置要求: 系統:centos6.5 目標:基於CUDA8.0+Opencv3.1+Cudnnv5.1+python3.6介面的caffe框架 任何對linux處於入門級別的小白都應

RabbitMQ研究

RabbitMQ是基於AMQP(Message Queue高階訊息佇列協議),是由erlang語言開發 使用rabbitMQ的優點 1、使得簡單,功能強大。 2、基於AMQP協議。 3、社群活躍,文件完善。 4、高併發效能好,這主要得益於Erlang語言。 5、Spring Boot預設

Jenkins持續整合介紹及外掛安裝版本更新演示--技術流ken

  Jenkins介紹    Jenkins是一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。 Jenkins功能包括: 1、持續的軟體版本釋出/測試專案。 2、監控外部呼叫執行

Linux —mysql資料庫配置服務

本章內容   關係型資料庫基礎 安裝MySQL 管理資料庫和表 使用者和許可權管理 函式和儲存過程 MySQL架構 儲存引擎 伺服器選項,系統和狀態變數 優化查詢和索引管理 鎖和

軟件安裝配置筆記——oracle的安裝與配置

管理器 系統 同時 acl 安裝配置 默認方法 network 設置 分號 註: 1、當ArcGIS Server 和 ArcMap 安裝在一臺服務器上,Oracle 安裝在另一臺服務器上時,ArcGIS Server 和 ArcMap的服務器需要同時安裝 32 位 和 6

軟體安裝配置筆記——oracle的安裝與配置

注: 1、當ArcGIS Server 和 ArcMap 安裝在一臺伺服器上,Oracle 安裝在另一臺伺服器上時,ArcGIS Server 和 ArcMap的伺服器需要同時安裝 32 位 和 64 位 Oracle 客戶端。 (server需64位,m

IDEA 2018.1.5版本 配置 SubversionSVN

  最近專案使用 svn 作程式碼管理軟體。IDEA 的版本比較新,是 2018.1.5 的版本。檢出 svn://  的路徑的專案時,idea 報錯  cannot run program  'svn' 。解決思路

mybatis 解析配置檔案之XML的DOM解析方式

簡介 在之前的文章《mybatis 初步使用(IDEA的Maven專案, 超詳細)》中, 講解了mybatis的初步使用, 並總結了以下mybatis的執行流程: 通過 Resources 工具類讀取 mybatis-config.xml, 存入 Reader; SqlSessionFactoryBuil