gulp入坑系列(2)——初試JS代碼合併與壓縮

来源:http://www.cnblogs.com/YuuyaRin/archive/2016/12/12/6165526.html
-Advertisement-
Play Games

在上一篇里成功安裝了gulp到項目中,現在來測試一下gulp的合併與壓縮功能 gulp入坑系列(1)——安裝gulp(傳送門):http://www.cnblogs.com/YuuyaRin/p/6159809.html 在之前建立的項目中寫入,在根目錄新建js文件夾,併在文件夾中新建兩個js文件, ...


在上一篇里成功安裝了gulp到項目中,現在來測試一下gulp的合併與壓縮功能

gulp入坑系列(1)——安裝gulp(傳送門):http://www.cnblogs.com/YuuyaRin/p/6159809.html

 

在之前建立的項目中寫入,在根目錄新建js文件夾,併在文件夾中新建兩個js文件,代碼如下:

index.js:

  1. var index={};  
  2. index={  
  3.     test:function(argument){  
  4.         console.log('test');  
  5.     }  
  6. }  
  7. index.test();  


main.js:

  1. var main = {};  
  2. main.test=function(argument){  
  3.     console.log("main test");  
  4. }  
  5. main.test();  

 

 

在根目錄新建文件夾build,併在build里新建一個空的js文件:all.min.js

在根目錄下新建index.html ,在其中引用build下的all.min.js。

index.html:

  1. <script type="text/javascript" src="build/all.min.js"></script>  

接下來編輯gulpfile.js文件,來告訴gulp我們要把index.js,main.js合併起來壓縮再寫入all.min.js中

 

gulpfile.js:

  1. var gulp = require('gulp');//gulp自身  
  2. var uglify= require('gulp-uglify');//<span style="font-family: Arial, Helvetica, sans-serif;">引入壓縮組件</span>  
  3. var concat = require('gulp-concat');//<span style="font-family: Arial, Helvetica, sans-serif;">引入合併組建</span>  
  4.   
  5. var paths = {  
  6.     scripts:['js/index.js','js/main.js']  
  7. //定義要操作的文件路徑  
  8.   
  9.   
  10. gulp.task('default', function() {   
  11.   gulp.src(paths.script)//找到項目下paths變數所定義的script文件  
  12.   .pipe(uglify())//壓縮  
  13.   .pipe(concat('all.min.js'))//輸入到all.min.js中  
  14.   .pipe(gulp.dest('build'));//指定目錄  
  15. });  

 

 

tips:gulp的執行流程採用了流式操作,每一個pipe()可以理解成,上一個操作的輸出,就是下一個操作的輸入,比如uglify()壓縮後輸出的,就是concat要輸入到文件中的,而concat輸出的文件,是gulp.dest要加入的目錄中的,可以理解成每部操作都return了下一步要使用的東西。

 

最終目錄結構如下:

接下來就可以在命令行工具中cd到項目的根目錄中執行gulp指令了。

此時也許會出現 Cannot find module 'gulp-uglify'這樣的報錯,是因為gulpfile所require的gulp-uglify和gulp-concat插件並不存在,所以可以利用npm在項目中裝入即可:

npm install --save-dev gulp-uglify    回車

npm install --save-dev gulp-concat   回車

 

安裝完成後再次執行gulp指令,成功後,可以查看一下我們原本空的all.min.js文件,可以看到main.js和index.js已經在all.min.js中壓縮合併了

  1. var index={};index={test:function(e){console.log("test")}},index.test();  
  2. var main={};main.test=function(n){console.log("main test")},main.test();  

 

然後運行一下我們的index.html,打開瀏覽器控制台,會發現兩個js的內容成功輸出:



說明gulp成功執行了JS文件的合併與壓縮的操作。

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、前言 保證一個類僅有一個實例,並提供一個該實例的全局訪問點。 二、代碼 ...
  • 一項新技術的出現肯定是為瞭解決一些問題,那麼ES6的出現主要是解決了哪些問題?它的出現給我們帶來了什麼便利?當它沒有出現的時候,某些問題怎麼處理?ES6的方法和以前的方法比較又有什麼不同呢?根據提出的這些問題,我開始了ES6學習之旅。 ES6是在ES5的基礎上對語法進行了修正以及添加了一些新的功能, ...
  • 第1種,居中效果 <div class="box"> <div class="center">居中效果</div> </div> 第2種 圖片居中 <div class="box2"> <img class="center2" src="yz_p5.jpeg" alt=""/> <span clas ...
  • <!-- 聲明文檔類型 為 html5 --><!DOCTYPE html><!-- 聲明頁面內容主要為 中文簡體 --><html lang="zh-CN"> <head> <!-- 聲明頁面編碼 為 utf-8 --> <meta charset="utf-8"> <!-- X-UA-Compa ...
  • 1.基本類型和應用類型的值 ECMAScript變數可能包含兩種不同數據類型的值: 基本類型值——簡單的數據段。(5種基本的數據類型,按值訪問,因為可以操作保存在變數中的實際的值。) 引用類型值——多個值構成的對象。(引用類型的值是保存在記憶體中的對象。) 註意: javascript不允許直接訪問內 ...
  • 【說明】第一個圖為塌陷圖,第二個圖為解決後的圖。 1、父元素maigin-top與子元素margin-top塌陷:設置border或者padding or 創建BFC 2、大兄弟margin-bottom與二兄弟margin-top塌陷:創建BFC 3、子元素float->父元素高度坍塌:偽類清除浮 ...
  • 這個故事是什麼時候存在腦子裡面的我已經不記得了,也許是高中閑暇時隨便翻閱的課外書,也許是大學圖書館偶然翻閱偶然瀏覽的一篇小文章; 在那一刻,我的腦海就已經種下了一顆種子; 我很榮欣,從事開發行業,因為他讓我學會了思考,學會了面對和解決問題,學會了面對自己,瞭解自己; 之所以今天要說這則寓言,是因為近 ...
  • 在工作中我們常常需要實現響應式佈局,這個可以使用bootstrap的柵格系統來實現,我們在列里也需要實現一部分的響應式。比如下麵的效果圖,需要實現左邊圖標固定,右邊的自適應 : 左邊固定寬度,右邊自適應,這個時候我就想到了兩列佈局,將左右設置float,左邊設置固定寬度,右邊的寬度為calc(100 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...