国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

WEBPACK

Turbo / 1519人閱讀

摘要:主要輸出文件的默認(rèn)值是,其他生成文件默認(rèn)放置在文件夾中。讓能夠去處理其他類型的文件,并將它們轉(zhuǎn)換為有效模塊,以供應(yīng)用程序使用,以及被添加到依賴圖中。屬性,表示進(jìn)行轉(zhuǎn)換時(shí),應(yīng)該使用哪個(gè)。

本質(zhì)上,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。
從 v4.0.0 開(kāi)始,webpack 可以不用再引入一個(gè)配置文件來(lái)打包項(xiàng)目,然而,但它仍然有著 高度可配置性,可以很好滿足你的需求。

核心概念

入口(entry)

輸出(output)

loader

插件(plugin)

模式(mode)

瀏覽器的兼容性(browser compatibility)

入口[entry]

入口起點(diǎn)(entry point)指示 webpack 應(yīng)該使用哪個(gè)模塊,來(lái)作為其內(nèi)部依賴圖的開(kāi)始。

默認(rèn)值是 ./src/index.js,但你可以通過(guò)在 webpack configuration 中配置 entry 屬性,來(lái)指定一個(gè)(或多個(gè))不同的入口起點(diǎn)。
webpack.config.js

module.exports = {
  entry: "./path/to/my/entry/file.js"
};
輸出[output]

output 屬性告訴 webpack 在哪里輸出它所創(chuàng)建的 bundle,以及如何命名這些文件。主要輸出文件的默認(rèn)值是 ./dist/main.js,其他生成文件默認(rèn)放置在 ./dist 文件夾中。

const path = require("path"); //可能你想要了解在代碼最上面導(dǎo)入的 path 模塊是什么,它是一個(gè) Node.js 核心模塊,用于操作文件路徑。

module.exports = {
  entry: "./path/to/my/entry/file.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "my-first-webpack.bundle.js"
  }
};
loader

webpack 只能理解 JavaScript 和 JSON 文件。loader 讓 webpack 能夠去處理其他類型的文件,并將它們轉(zhuǎn)換為有效 模塊,以供應(yīng)用程序使用,以及被添加到依賴圖中。
在更高層面,在 webpack 的配置中 loader 有兩個(gè)屬性:

test 屬性,用于標(biāo)識(shí)出應(yīng)該被對(duì)應(yīng)的 loader 進(jìn)行轉(zhuǎn)換的某個(gè)或某些文件。

use 屬性,表示進(jìn)行轉(zhuǎn)換時(shí),應(yīng)該使用哪個(gè) loader。

const path = require("path");

module.exports = {
  output: {
    filename: "my-first-webpack.bundle.js"
  },
  module: {
    rules: [
      { test: /.txt$/, use: "raw-loader" }
    ]
  }
};
插件[plugin]

loader 用于轉(zhuǎn)換某些類型的模塊,而插件則可以用于執(zhí)行范圍更廣的任務(wù)。包括:打包優(yōu)化,資源管理,注入環(huán)境變量。

想要使用一個(gè)插件,你只需要 require() 它,然后把它添加到 plugins 數(shù)組中。多數(shù)插件可以通過(guò)選項(xiàng)(option)自定義。你也可以在一個(gè)配置文件中因?yàn)椴煌康亩啻问褂猛粋€(gè)插件,這時(shí)需要通過(guò)使用 new 操作符來(lái)創(chuàng)建它的一個(gè)實(shí)例。

const HtmlWebpackPlugin = require("html-webpack-plugin"); // 通過(guò) npm 安裝
const webpack = require("webpack"); // 用于訪問(wèn)內(nèi)置插件

module.exports = {
  module: {
    rules: [
      { test: /.txt$/, use: "raw-loader" }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({template: "./src/index.html"})
  ]
};
模式[mode]

通過(guò)選擇 development, production 或 none 之中的一個(gè),來(lái)設(shè)置 mode 參數(shù),你可以啟用 webpack 內(nèi)置在相應(yīng)環(huán)境下的優(yōu)化。其默認(rèn)值為 production。

module.exports = {
  mode: "production"
};
const path = require("path");

module.exports = {
  mode: "production", // "production" | "development" | "none"  // Chosen mode tells webpack to use its built-in optimizations accordingly.
  entry: "./app/entry", // string | object | array  // 默認(rèn)為 "./src"
  // 這里應(yīng)用程序開(kāi)始執(zhí)行
  // webpack 開(kāi)始打包
  output: {
    // webpack 如何輸出結(jié)果的相關(guān)選項(xiàng)
    path: path.resolve(__dirname, "dist"), // string
    // 所有輸出文件的目標(biāo)路徑
    // 必須是絕對(duì)路徑(使用 Node.js 的 path 模塊)
    filename: "bundle.js", // string    // 「入口分塊(entry chunk)」的文件名模板
    publicPath: "/assets/", // string    // 輸出解析文件的目錄,url 相對(duì)于 HTML 頁(yè)面
    library: "MyLibrary", // string,
    // 導(dǎo)出庫(kù)(exported library)的名稱
    libraryTarget: "umd", // 通用模塊定義    // 導(dǎo)出庫(kù)(exported library)的類型
    /* 高級(jí)輸出配置(點(diǎn)擊顯示) */  },
  module: {
    // 關(guān)于模塊配置
    rules: [
      // 模塊規(guī)則(配置 loader、解析器等選項(xiàng))
      {
        test: /.jsx?$/,
        include: [
          path.resolve(__dirname, "app")
        ],
        exclude: [
          path.resolve(__dirname, "app/demo-files")
        ],
        // 這里是匹配條件,每個(gè)選項(xiàng)都接收一個(gè)正則表達(dá)式或字符串
        // test 和 include 具有相同的作用,都是必須匹配選項(xiàng)
        // exclude 是必不匹配選項(xiàng)(優(yōu)先于 test 和 include)
        // 最佳實(shí)踐:
        // - 只在 test 和 文件名匹配 中使用正則表達(dá)式
        // - 在 include 和 exclude 中使用絕對(duì)路徑數(shù)組
        // - 盡量避免 exclude,更傾向于使用 include
        issuer: { test, include, exclude },
        // issuer 條件(導(dǎo)入源)
        enforce: "pre",
        enforce: "post",
        // 標(biāo)識(shí)應(yīng)用這些規(guī)則,即使規(guī)則覆蓋(高級(jí)選項(xiàng))
        loader: "babel-loader",
        // 應(yīng)該應(yīng)用的 loader,它相對(duì)上下文解析
        // 為了更清晰,`-loader` 后綴在 webpack 2 中不再是可選的
        // 查看 webpack 1 升級(jí)指南。
        options: {
          presets: ["es2015"]
        },
        // loader 的可選項(xiàng)
      },
      {
        test: /.html$/,
        use: [
          // 應(yīng)用多個(gè) loader 和選項(xiàng)
          "htmllint-loader",
          {
            loader: "html-loader",
            options: {
              /* ... */
            }
          }
        ]
      },
      { oneOf: [ /* rules */ ] },
      // 只使用這些嵌套規(guī)則之一
      { rules: [ /* rules */ ] },
      // 使用所有這些嵌套規(guī)則(合并可用條件)
      { resource: { and: [ /* 條件 */ ] } },
      // 僅當(dāng)所有條件都匹配時(shí)才匹配
      { resource: { or: [ /* 條件 */ ] } },
      { resource: [ /* 條件 */ ] },
      // 任意條件匹配時(shí)匹配(默認(rèn)為數(shù)組)
      { resource: { not: /* 條件 */ } }
      // 條件不匹配時(shí)匹配
    ],
    /* 高級(jí)模塊配置(點(diǎn)擊展示) */  },
  resolve: {
    // 解析模塊請(qǐng)求的選項(xiàng)
    // (不適用于對(duì) loader 解析)
    modules: [
      "node_modules",
      path.resolve(__dirname, "app")
    ],
    // 用于查找模塊的目錄
    extensions: [".js", ".json", ".jsx", ".css"],
    // 使用的擴(kuò)展名
    alias: {
      // 模塊別名列表
      "module": "new-module",
      // 起別名:"module" -> "new-module" 和 "module/path/file" -> "new-module/path/file"
      "only-module$": "new-module",
      // 起別名 "only-module" -> "new-module",但不匹配 "only-module/path/file" -> "new-module/path/file"
      "module": path.resolve(__dirname, "app/third/module.js"),
      // 起別名 "module" -> "./app/third/module.js" 和 "module/file" 會(huì)導(dǎo)致錯(cuò)誤
      // 模塊別名相對(duì)于當(dāng)前上下文導(dǎo)入
    },
    /* 可供選擇的別名語(yǔ)法(點(diǎn)擊展示) */
    /* 高級(jí)解析選項(xiàng)(點(diǎn)擊展示) */  },
  performance: {
    hints: "warning", // 枚舉    maxAssetSize: 200000, // 整數(shù)類型(以字節(jié)為單位)
    maxEntrypointSize: 400000, // 整數(shù)類型(以字節(jié)為單位)
    assetFilter: function(assetFilename) {
      // 提供資源文件名的斷言函數(shù)
      return assetFilename.endsWith(".css") || assetFilename.endsWith(".js");
    }
  },
  devtool: "source-map", // enum  // 通過(guò)在瀏覽器調(diào)試工具(browser devtools)中添加元信息(meta info)增強(qiáng)調(diào)試
  // 犧牲了構(gòu)建速度的 `source-map" 是最詳細(xì)的。
  context: __dirname, // string(絕對(duì)路徑!)
  // webpack 的主目錄
  // entry 和 module.rules.loader 選項(xiàng)
  // 相對(duì)于此目錄解析
  target: "web", // 枚舉  // bundle 應(yīng)該運(yùn)行的環(huán)境
  // 更改 塊加載行為(chunk loading behavior) 和 可用模塊(available module)
  externals: ["react", /^@angular//],  // 不要遵循/打包這些模塊,而是在運(yùn)行時(shí)從環(huán)境中請(qǐng)求他們
  serve: { //object
    port: 1337,
    content: "./dist",
    // ...
  },
  // 為 webpack-serve 提供選項(xiàng)
  stats: "errors-only",  // 精確控制要顯示的 bundle 信息
  devServer: {
    proxy: { // proxy URLs to backend development server
      "/api": "http://localhost:3000"
    },
    contentBase: path.join(__dirname, "public"), // boolean | string | array, static file location
    compress: true, // enable gzip compression
    historyApiFallback: true, // true for index.html upon 404, object for multiple paths
    hot: true, // hot module replacement. Depends on HotModuleReplacementPlugin
    https: false, // true for self-signed, object for cert authority
    noInfo: true, // only errors & warns on hot reload
    // ...
  },
  plugins: [
    // ...
  ],
  // 附加插件列表
  /* 高級(jí)配置(點(diǎn)擊展示) */}

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/103097.html

相關(guān)文章

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

    摘要:安裝插件能幫忙每次打包之前先刪除文件夾。安裝插件提供了一種自定義編譯期間如何報(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í)重新加載功能。 寫在前面,近期有想法整理一下前端工程化相關(guān)的知識(shí),就先從打包工具開(kāi)始吧;今天帶來(lái)的是webpack相關(guān)的一些常用插件配置,后期有時(shí)間話,也會(huì)出一些比較輕量級(jí)的打包工具的...

    AlienZHOU 評(píng)論0 收藏0
  • webpack 教程資源收集

    學(xué)習(xí)的過(guò)程中收藏了這些優(yōu)秀教程和的項(xiàng)目,希望對(duì)你有幫助。 github地址, 有不錯(cuò)的就更新 官方文檔 中文指南 初級(jí)教程 webpack-howto 作者:Pete Hunt Webpack 入門指迷 作者:題葉   webpack-demos 作者:ruanyf 一小時(shí)包教會(huì) —— webpack 入門指南 作者:VaJoy Larn   webpack 入門及實(shí)踐 作者:...

    Backache 評(píng)論0 收藏0
  • webpack 項(xiàng)目構(gòu)建:(三)開(kāi)發(fā)環(huán)境——本地服務(wù)器搭建

    摘要:上一章我們了解了的編譯環(huán)境搭建項(xiàng)目構(gòu)建二編譯環(huán)境搭建這一章我們會(huì)結(jié)合的,介紹本地測(cè)試服務(wù)器的搭建過(guò)程。三開(kāi)發(fā)環(huán)境有一些特性是專門用于開(kāi)發(fā)環(huán)境的,可以幫助我們搭建一個(gè)更好的開(kāi)發(fā)環(huán)境。我們可以通過(guò)配合使用來(lái)搭建本地服務(wù)。 注:以下教程均在 windows 環(huán)境實(shí)現(xiàn),使用其他操作系統(tǒng)的同學(xué)實(shí)踐過(guò)程可能會(huì)有些出入。 ??上一章我們了解了 webpack 的 ES6 編譯環(huán)境搭建:webpack...

    tolerious 評(píng)論0 收藏0
  • 什么是 Webpack?【Webpack Book 翻譯】

    摘要:資源哈希編碼使用可以為每個(gè)包的名稱注入一個(gè)哈希值例如,,以便在版本更新后使客戶端上舊版本的包無(wú)效重新下載。如此受人喜愛(ài)的原因之一是熱模塊更換。可以為文件名生成哈希值,在內(nèi)容更改時(shí),可以作廢瀏覽器緩存中上個(gè)版本的包。 原文鏈接:https://survivejs.com/webpack...翻譯計(jì)劃:https://segmentfault.com/a/11... 涉及到的未翻譯單詞 ...

    tainzhi 評(píng)論0 收藏0
  • 從零開(kāi)始的webpack生活-0x001:webpack初次相逢

    摘要:同時(shí)不能直接單純的指定輸出的文件名稱,比如,將會(huì)報(bào)錯(cuò),可以換成以下方式指定,或者其他類似方式。如果打包過(guò)程出現(xiàn)錯(cuò)誤,比如語(yǔ)法錯(cuò)誤,將會(huì)在控制臺(tái)以紅色文字顯示,并且在你修復(fù)之后會(huì)再次打包。 0x001 概述 其實(shí)我不知道怎么寫,所以決定就一塊一塊的寫點(diǎn)平常配置的過(guò)程,根據(jù)不同東西稍微分區(qū)一下就好了 0x002 初始化項(xiàng)目結(jié)構(gòu) $ mkdir webpack_study $ cd webp...

    Turbo 評(píng)論0 收藏0
  • WEBPACK 入門

    摘要:入門什么是官網(wǎng)介紹是一個(gè)模塊打包器。處理帶有依賴關(guān)系的模塊,生成一系列表示這些模塊的靜態(tài)資源。。我們?cè)诋?dāng)前項(xiàng)目根目錄下新建一個(gè)文件,為命令配置選項(xiàng)。引入生成的在瀏覽器中打開(kāi)。我們刷新頁(yè)面,可以發(fā)現(xiàn)頁(yè)面發(fā)生了變化。 webpack 入門 1. 什么是webpack 官網(wǎng)介紹:webpack是一個(gè)模塊打包器。webpack 處理帶有依賴關(guān)系的模塊,生成一系列表示這些模塊的靜態(tài)資源。(web...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<