構建前端自動化工作流環境

来源:https://www.cnblogs.com/Anderson-An/archive/2018/11/23/10007445.html
-Advertisement-
Play Games

目標:建一個自動化工作流環境 自動編譯 自動合併 自動刷新 自動部署 工作流: 1 全局安裝webpack 執行命令: 其中webpack-cil 是命令介面工具 2 初始化當前項目:npm init 然後一路回車即可 3 為了避免衝突,我們再進行局部安裝:npm install webpack w ...


目標:建一個自動化工作流環境

  自動編譯

  自動合併

  自動刷新

  自動部署

 

工作流:

1 全局安裝webpack

執行命令:

npm install webpack webpack-cli  -g    

 

其中webpack-cil 是命令介面工具

2 初始化當前項目:npm init

然後一路回車即可

3 為了避免衝突,我們再進行局部安裝:npm install webpack webpack-cli --save -d

說明:安裝到了開發環境下的工具

 

打開項目文件夾,發現多了兩個文件:

也多了一個文件夾:

當傳文件時,可以將該文件夾刪除,在新的項目中,執行:npm install  他將會幫忙將所有依賴全部下載下來;

 4 執行 webpack:

報錯如下

Insufficient number of arguments or no entry found.
Alternatively, run 'webpack(-cli) --help' for usage info.

這是因為需要一個入口文件,預設是從src 下的index.js文件為 入口文件

這時需要新建一個src 文件夾下,然後新建一個index.js 的入口文件;

重新執行沒有再報錯:

 這時候需要額外瞭解 webpack的4個核心概念:

入口 (entry)

出口 (output)

loader  解析器

插件  (plugins)

5 規定webpack處理打包方式——

有兩種方式:1shell 語句的方式 例如手動命令行寫入: webpack --mode=development  配置文件為開發環境

      2 配置文件的方式 ,新建一個webpack.config.js 的文件,然後將配置要求寫入該文件中,以本次項目為例,webpack.config.js  文件內容如下:

var UglifyJSPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
    entry: {
        index: './src/js/meituan.js',
        goodsInfo: './src/js/goodsInfo.js'
    },
    output: {
        filename: '[name].js',
        path: __dirname + '/out',
        // publicPath: 'http://localhost:8080/out',
    },
    module: {
        rules: [
            {test: /.js$/, use: ['babel-loader']},
            {test: /.(jpg|png|gif|svg|ttf|woff|eot)$/, use: ['url-loader?limit=1000&name=./[name].[ext]']},             
            {test: /.css$/, use: ['style-loader', 'css-loader']}
        ]
    },
    plugins: [
        new UglifyJSPlugin(),
    ],
    mode: 'development'

 

 

入口文件中需要配置依賴::

require('../css/reset.css');
require('../plug/css/swiper.min.css');
require('../webfont/iconfont.css');
require('../css/meituanIndex.css');

 

然後我們發現,每次修改完文件後都需要重新執行下打包 ;

webpack

 

 

6 這樣很不方便,因此我們可以開啟一個監聽: webpack --watch 

這樣每次修改完文件後不需要重新打包~!有木有很方便

7 更神奇的是webpack還可以幫我們開啟一個伺服器:webpack-dev-server

 

需要執行如下命令先安裝下webpack-dev-server:

npm install webpack-dev-server -D 

然後執行:webpack-dev-server 會自動開啟一個埠

8 應用loader:

  

 module: {
        rules: [
            {test: /.js$/, use: ['babel-loader']},
            {test: /.(jpg|png|gif|svg|ttf|woff|eot)$/, use: ['url-loader?limit=1000&name=./[name].[ext]']},             
            {test: /.css$/, use: ['style-loader', 'css-loader']}
        ]
    },

 

需要用到三個解析器

npm install file-loader html-loader extract-loader -D

html-loader:

{

  test:/ \.html$/,

  use:[

    //單獨抽離的html 文件進行配置

    {

       loader: ' file-loader',

       options:{

          name:'index.html'

        }

    },

    //單獨抽離

    {

    loader:‘extract-loader’

    },

    //找到html 文件

    {

    loader: ' html-loader'

    }

 

  ]

}

 

 

8  安裝插件 

 

壓縮js:

npm install uglifyjs-webpack-plugin -D

然後在webpack-config.js 下添加引用:

 

壓縮CSS  的插件

 首先安裝

  npm install mini-css-extract-plugin -D

 

簡單工作流程:

初始化 ——>編譯——>輸出—如果文件發生變化—>重新編譯——輸出

 

 

下一期隨筆寫: 熟練使用less/sass

 


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

-Advertisement-
Play Games
更多相關文章
  • 什麼是javascript? JavaScript是web開發中的一種腳本編程語言,也是一種通用的,跨平臺的,基於對象和事件驅動並具有安全性的腳本語言。 JavaScript的主要特點: 解釋性,基於對象,事件驅動,跨平臺,安全性 JavaScript的應用: 驗證用戶輸入的內容,動畫效果,視窗的應... ...
  • 前言:Webpack是一款基於node的前端打包工具,它可以將很多靜態文件打包起來,自動處理依賴關係後,生成一個.js文件,然後讓html來引用,不僅可以做到按需載入,而且可以減少HTTP請求,節約帶寬。 常用命令如下: npm install webpack -g // 全局安裝webpack n ...
  • 問題描述: 手頭有一個項目是使用 搭建的單頁面應用。項目分為了管理平臺和用戶查看頁面,用戶查看頁面是很簡單的頁面,但是在載入過程中,卻載入了整個應用的打包代碼,量重且影響了響應和體驗。我想要的效果是,查看頁面只載入查看頁面的代碼,不包含管理系統的代碼,因此著手將單頁面應用改造成多頁面應用,這裡分享下 ...
  • BUG現象 今天排查BUG遇到一個有趣的BUG,測試的截圖顯示 這個BUG只在IE11下出現。 BUG原因 這個問題的原因是keep alive機制引起。 當瀏覽器在向一個網址發起請求時,會建立一個tcp/ip連接,之後發起的請求會復用這個連接。 但是這個連接有兩個限制,就是連接超時時間和最大連接次 ...
  • 一共分為三捲的書,好多的內容,泛讀了一下,力推。 需要學習的朋友可以通過網盤免費下載pdf版 (先點擊普通下載 再選擇普通用戶就能免費下載了): http://putpan.com/fs/byi8beens3hu9e904/ 《TCP/IP詳解·捲2:實現》完整而詳細地介紹了TCP/IP協議是如何實 ...
  • CSS十大選擇器: 1、id選擇器 # 2、class選擇器 句號 . 3、標簽選擇器 標簽名稱 4、相鄰選擇器 加號 + 5、後代選擇器 空格 6、子元素選擇器 大於號 > 7、多元素 組選擇器 逗號 , 8、屬性選擇器 元素[條件:屬性 屬性=value 屬性^=value 屬性$=value] ...
  • 如果 傳入function的參數是 (數值、字元串、布爾值) 此時是以 傳值 的方式 進行。 如果 傳入function的參數是 (數組、對象、其他函數) 此時是以 傳引用 的方式 進行。 1 ...
  • Less (Leaner Style Sheets 的縮寫) 是一門向後相容的 CSS 擴展語言。包含了 Less 語言以及利用 JavaScript 開發的用於將 Less 樣式轉換成 CSS 樣式的 Less.js 工具。 因為 Less 和 CSS 非常像,學習很容易。而且 Less 僅對 C... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...