webpack 六個主要的概念

webupack 六個主要的概念

  • Entry
  • Output
  • Loaders
  • Plugins
  • Mode
  • Browser Compatibility

Entry

entry 指示 webpack 應該使用哪一個模塊開始構建其內部依賴關係圖。html

entry 的 默認值是 ./src/index.js。webpack

能夠在 webpack.config.js(webpack 的配置文件)裏自定義。web

// webpack.config.js
module.exports = {
  entry: './path/to/my/entry/file.js'
}

Output

output 告訴 webpack 在何處派發出它建立的包,以及如何命名這些文件。npm

output 的默認值 是 ./dist/main.js瀏覽器

能夠在 webpack.config.js(webpack 的配置文件)裏自定義。babel

// webpack.config.js
const path = require('path');

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

Loaders

webpack 只能解析 JavaScript 和 JSON 文件。優化

Loader 容許 webpack 處理其餘類型的文件,並將它們轉換爲可由應用程序使用並添加到依賴關係圖中的有效模塊。ui

loaders 在 webpack 配置裏有兩個屬性:插件

  1. test 屬性標識應該轉換哪一個或哪些文件
  2. use 屬性指示應該使用哪一個 loader 進行轉換。
// webpack.config.js
const path = require('path');

module.exports = {
  output: {
    filename: 'my-first-webpack.bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        use: 'babel-loader'
      }
    ]
  }
};

Plugins

雖然 loader 用於轉換某些類型的模塊,可是能夠利用插件執行更普遍的任務,好比包優化、資產管理和環境變量注入。code

// webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
module.exports = {
  module: {
    rules: [
      {
        test: /\.txt$/,
        use: 'raw-loader'
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html'
    })
  ]
};

html-webpack-plugin 這個插件的用途是 爲應用程序自動生成 html 文件,而且自動注入。

Mode

經過將 mode 參數設置爲 development、production 或 none,你能夠啓用與每一個環境相對應的 webpack 內置優化。 默認值是 production。

mode

  • production
  • development
  • none
// webpack.config.js
module.exports = {
  mode: 'production' // mode default value is 'production'
};
// npm command line in Webpack Cli
webpack --mode=production

Browser Compatibility

瀏覽器兼容

相關文章
相關標籤/搜索