webpack入门

什么是Webpack,以及它的工作方式?

webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。


webpack入门_第1张图片
image.png

Webpack的优点?

  • JavaScript、CSS代码的合并和压缩
  • CSS预处理:Less、Sass、Stylus的编译
  • 生成雪碧图(CSS Sprite)
  • ES6 转成浏览器大多都支持的ES5
  • 模块化加载

理解四个核心概念:

  • 入口(entry)
  • 输出(output)
  • 加载器(loader)
  • 插件(plugins)
入口

入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的,在webpack.config.js中配置:
module.exports = { entry: './path/to/my/entry/file.js' };

输出

output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件。你可以通过webpack.config.js在配置中指定一个 output 字段,来配置这些处理过程:

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'
      }
};

我们通过 output.filename 和 output.path 属性,来告诉 webpack bundle 的名称,以及我们想要生成到哪里

loader

让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。
本质上,webpack loader 将所有类型的文件,转换为应用程序的依赖图可以直接引用的模块。
在更高层面,在 webpack 的配置中 loader 有两个目标。

  1. 识别出应该被对应的 loader 进行转换的那些文件。(使用 test 属性)
  2. 转换这些文件,从而使其能够被添加到依赖图中(并且最终添加到 bundle 中)(use 属性)
const path = require('path');
const config = {
    entry: './path/to/my/entry/file.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'my-first-webpack.bundle.js'
  },
  module: {
        rules: [
              { 
                  test: /\.txt$/, 
                  use: 'raw-loader' 
              }
        ]
    }
};
插件

loader 被用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。
想要使用一个插件,你只需要 require() 它,然后把它添加到 plugins 数组中。多数插件可以通过选项(option)自定义。你也可以在一个配置文件中因为不同目的而多次使用同一个插件,这时需要通过使用 new 操作符来创建它的一个实例。

const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装
const webpack = require('webpack'); // 用于访问内置插件
const path = require('path');
const config = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  },
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin(),
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};
module.exports = config;
webpack打包步骤
  1. 以管理员的身份运行cmd,并进入项目目录
  2. 运行npm install webpack --global,安装全局webpack
  3. 运行npm init,初始化项目生成package.json
  4. 运行npm install webpack --save-dev,安装本地webpack作为依赖
  5. 运行webpack +入口文件名+输出文件名,即可完成打包
webpack入门_第2张图片
1bb80950-1705-4b4c-8bcb-5e1a37308ff6.jpg

你可能感兴趣的:(webpack入门)