成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

webpack簡(jiǎn)介與常用配置之插件

AlienZHOU / 1113人閱讀

摘要:安裝插件能幫忙每次打包之前先刪除文件夾。安裝插件提供了一種自定義編譯期間如何報(bào)告進(jìn)度的方法。插件能創(chuàng)建環(huán)境變量開(kāi)發(fā)與生產(chǎn)時(shí)的不同配置時(shí)使用選項(xiàng)設(shè)置不同的配置文件開(kāi)發(fā)生產(chǎn)能夠?yàn)槲覀兲峁┮粋€(gè)簡(jiǎn)單的并且具有實(shí)時(shí)重新加載功能。

寫(xiě)在前面,近期有想法整理一下前端工程化相關(guān)的知識(shí),就先從打包工具開(kāi)始吧;今天帶來(lái)的是webpack相關(guān)的一些常用插件配置,后期有時(shí)間話,也會(huì)出一些比較輕量級(jí)的打包工具的配置 gulp, rullup...相對(duì)于webpack學(xué)習(xí)成本更低一些

介紹 webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包工具。當(dāng) webpack 處理應(yīng)用程序時(shí),它會(huì)在內(nèi)部構(gòu)建一個(gè) 依賴圖(dependency graph),此依賴圖會(huì)映射項(xiàng)目所需的每個(gè)模塊,并生成一個(gè)或多個(gè) bundle 概念

入口

輸出

loader

插件

模式

配置文件

項(xiàng)目根目錄下創(chuàng)建 webpack.config.js

運(yùn)行啟動(dòng)

./node_modules/.bin/webpack

npx webpack

配置 npm 腳本

1.CopyWebpackPlugin (插件)

CopyWebpackPlugin 能夠?qū)崿F(xiàn)將某些文件或文件夾進(jìn)行拷貝

安裝

npm install --save-dev copy-webpack-plugin
webpack.config.js
const CopyPlugin = require("copy-webpack-plugin");

module.exports = {
  plugins: [
    new CopyPlugin([
      { from: "source", to: "dist" },
    ]),
  ],
};
2.HtmlWebpackPlugin (插件)

HtmlWebpackPlugin 簡(jiǎn)化了html的創(chuàng)建,以便為你的webpack包提供服務(wù)。

安裝

npm install --save-dev html-webpack-plugin
webpack.config.js
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  plugins: [
    new HtmlWebpackPlugin()
  ],
};
3.CleanWebpackPlugin (插件)

CleanWebpackPlugin 能幫忙每次打包之前先刪除dist文件夾。

安裝

npm install --save-dev clean-webpack-plugin
webpack.config.js
const CleanWebpackPlugin = require("clean-webpack-plugin");

module.exports = {
  plugins: [
    new CleanWebpackPlugin()
  ]
}
4.ProgressPlugin (插件)

ProgressPlugin 提供了一種自定義編譯期間如何報(bào)告進(jìn)度的方法。

webpack.config.js
const { ProgressPlugin } = require("webpack");

module.exports = {
  plugins: [
    new ProgressPlugin()
  ]
}
5.DefinePlugin (插件)
DefinePlugin 能創(chuàng)建環(huán)境變量

webpack.config.js
const { DefinePlugin } = require("webpack");

module.exports = {
  plugins: [
    new DefinePlugin()
  ]
}
6.開(kāi)發(fā)與生產(chǎn)時(shí)的不同配置

cli 時(shí)使用 --config 選項(xiàng)設(shè)置不同的配置文件
// 開(kāi)發(fā)

npx webpack --config webpack.config.js

// 生產(chǎn)

npx webpack --config webpack.config.prod.js

"scripts": {
  "dev": "webpack --config webpack.config.js",
  "build": "webpack --config webpac.config.prod.js"
},
7.webpack-dev-server

webpack-dev-server 能夠?yàn)槲覀兲峁┮粋€(gè)簡(jiǎn)單的 web server, 并且具有l(wèi)ive reloading(實(shí)時(shí)重新加載) 功能。

安裝
npm install --save-dev webpack-dev-server
使用
開(kāi)發(fā)時(shí),將 webpack 命令修改為 webpack-dev-server 命令。

8.webpack-merge 模塊

通過(guò) webpack-merge 可以抽取出 開(kāi)發(fā)與生產(chǎn)環(huán)境的相同的webapck配置。

安裝
npm install --save-dev webpack-merge
寫(xiě)一個(gè) webpack.config.base.js 并在這個(gè)文件中寫(xiě)入基本的webpack配置

在 webpack.config.dev.js 與 webpack.config.prod.js 中引入 webpack.config.base.js 然后使用 webpack-merge 進(jìn)行重寫(xiě)或合并的操作。

9.別名的配置

疼點(diǎn):
src 下面目錄結(jié)構(gòu)龐大且復(fù)雜的時(shí)候,可能引入模塊會(huì)出現(xiàn) ../../../../../../ 這種形式
那一天對(duì)文件路徑調(diào)整了一下。import 的路徑也得跟著修改一下。
定義別名規(guī)則

module.exports = {
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src")
    }
  }
}

最后,完整配置如下

webpack.config.base.js

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin")
const CopyWebpackPlugin = require("copy-webpack-plugin");
const CleanWebpackPlugin = require("clean-webpack-plugin");
const { ProgressPlugin } = require("webpack");

module.exports = {
  // 1. 入口
  entry: "./src/index.js",
  // 2. 出口
  output: {
    path: path.resolve(__dirname, "./dist"),
    filename: "bundle.js"
  },
  // 3. loader 規(guī)則
  module: {
    rules: [
      { test: /.js$/, use: "babel-loader" }
    ]
  },
  // 4. 插件
  plugins: [
    new HtmlWebpackPlugin({
      template: path.resolve(__dirname, "./public/index.html")
    }),
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, "./public"),
        to: path.resolve(__dirname, "./dist")
      },
    ]),
    new CleanWebpackPlugin(),
    new ProgressPlugin(),
  ]
}

webpack.config.dev.js

   const merge = require("webpack-merge");
    const { DefinePlugin } = require("webpack");
    const baseConfig = require("./webpack.config.base");
    
    module.exports = merge(baseConfig, {
      plugins: [
        new DefinePlugin({
          "process.env": {
            "NODE_ENV": ""development""
          }
        })
      ],

  mode: "development",
  devServer: {
    contentBase: "/dist",
  }
})


webpack.config.prod.js

  const merge = require("webpack-merge");
const { DefinePlugin } = require("webpack");
const baseConfig = require("./webpack.config.base");

module.exports = merge(baseConfig, {
  plugins: [
    new DefinePlugin({
      "process.env": {
        "NODE_ENV": ""production""
      }
    })
  ],
  mode: "production"
})

package.josn script設(shè)置

 "scripts": {
    "serve": "webpack-dev-server --open --config webpack.config.dev.js",
    "build": "webpack --config webpack.config.prod.js"
  },
 

開(kāi)發(fā)運(yùn)行 npm run sreve

構(gòu)建上線運(yùn)行 npm run build

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/103951.html

相關(guān)文章

  • webpack4配置分享幾個(gè)常用插件

    摘要:去做想做的事,去愛(ài)值得的人去成為自己喜歡的模樣,去讓自己發(fā)光渾身充滿力量,充實(shí)的日子最美好各位早安,這里是平頭哥聯(lián)盟,我是首席填坑官蘇南,用心分享一起成長(zhǎng)做有溫度的攻城獅。 showImg(https://segmentfault.com/img/bVbjIcs?w=1008&h=298); 前言   繼上一次webpack的基礎(chǔ)配置分享之后,本次將分享一些工作中項(xiàng)目常用的配置插件、也...

    Jackwoo 評(píng)論0 收藏0
  • 前端開(kāi)發(fā)走進(jìn)Vue.js

    摘要:作為目前最熱門(mén)最具前景的前端框架之一,其提供了一種幫助我們快速構(gòu)建并開(kāi)發(fā)前端項(xiàng)目的新的思維模式。的新版本,的簡(jiǎn)稱。的包管理工具,用于同一管理我們前端項(xiàng)目中需要用到的包插件工具命令等,便于開(kāi)發(fā)和維護(hù)。 Vue.js作為目前最熱門(mén)最具前景的前端框架之一,其提供了一種幫助我們快速構(gòu)建并開(kāi)發(fā)前端項(xiàng)目的新的思維模式。本文旨在幫助大家認(rèn)識(shí)Vue.js,了解Vue.js的開(kāi)發(fā)流程,并進(jìn)一步理解如何通...

    zxhaaa 評(píng)論0 收藏0
  • 可視化爬蟲(chóng)配置chrome插件開(kāi)發(fā)搭建vue開(kāi)發(fā)環(huán)境

    摘要:使用開(kāi)發(fā)插件的好處本次開(kāi)發(fā)的插件是抓取配置插件,有很多的表單以及彈出層,如果純使用的話會(huì)有很多動(dòng)態(tài)創(chuàng)建的操作。使用和的語(yǔ)法以及的加載器相配合,可以減少大量動(dòng)態(tài)創(chuàng)建的代碼。 使用vue開(kāi)發(fā)chrome插件的好處 本次開(kāi)發(fā)的插件是抓取配置插件,有很多的form表單以及彈出層,如果純使用js的話會(huì)有很多動(dòng)態(tài)創(chuàng)建dom的操作。使用vue和ES6的import語(yǔ)法以及webpack的html加載...

    impig33 評(píng)論0 收藏0
  • webpack系列plugin及簡(jiǎn)單的使用

    摘要:系列之及簡(jiǎn)單的使用一有什么用是核心功能,通過(guò)插件可以實(shí)現(xiàn)所不能完成的復(fù)雜功能,使用豐富的自定義,可以控制編譯流程的每個(gè)環(huán)節(jié),實(shí)現(xiàn)對(duì)的自定義功能擴(kuò)展。三使用在配置文件中,向?qū)傩詡魅雽?shí)例即可。 webpack系列之plugin及簡(jiǎn)單的使用 一.plugin有什么用 plugin是webpack核心功能,通過(guò)plugin(插件)webpack可以實(shí)現(xiàn)loader所不能完成的復(fù)雜功能,使用p...

    TesterHome 評(píng)論0 收藏0
  • 前端文檔收集

    摘要:系列種優(yōu)化頁(yè)面加載速度的方法隨筆分類(lèi)中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁(yè)性能管理詳解離線緩存簡(jiǎn)介系列編寫(xiě)高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問(wèn)性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁(yè)面加載速度的方法 隨筆分類(lèi) - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁(yè)性能管理詳解 HTML5 ...

    jsbintask 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<