webpack(一)

606 阅读2分钟

webpack能做什么

webpack是一个静态模块打包工具,通过webpack,将模块化的代码整合好后展示在用户面前。

webpack的安装和运行

安装webpack、webpack-cli(可以本地安装,这样就不会破坏全局的webpack环境)

初始化package.json

npm init -y
npm i webpack webpack-cli --save-dev

新建webpack.config.js 

// webpack.config.js中导出一个对象
// 所有的配置都在这个对象中
const HtmlWebpackPlugin = require('html-webpack-plugin')
const path = require('path')
const webpack = require('webpack');
module.export = {
 entry: './src/main.js',
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.css$/, // 根据打包过程中所遇到文件路径匹配是否使用这个 loader
        use: [
          'style-loader',
          'css-loader'
        ] // 指定具体的 loader
      }
    ]
  },
    plugins:[
    new webpack.HotModuleReplacementPlugin(),
    new HtmlWebpackPlugin({
      title: 'Webpack Plugin Sample',
      template: './index.html'
    })
  ],
}

运行webpack

npx  webpack

或者

npx  webpack   --mode=node   //这样打包可以将打包的代码变为易于我们分析的样子

获得一个dist的文件夹,里面的bundle.js就是webpack打包之后的代码。

webpack的四大核心元素

webpack的四大核心元素:entry,output,loader和plugins

entry:它是webpack的打包入口;

output:它是文件打包好放置的位置。output 属性的值必须是一个对象,通过这个对象的 filename 指定输出文件的文件名称,path 指定输出的目录。如上面的配置,他最后的打包出口就在./dist/bundle.js

loader:loader可以将webpack不识别的资源,解析成javascript的代码。如scss,img等等这些资源,其实最后都是通过loader解析成了javascript代码然后打包到打包文件里面的。

plugins:plugins是为webpack插上了想象的翅膀,横向扩展了webpack的构建能力。如构建前清除原先的打包文件,将html单独拿出来。

搭建一个最简单的环境来看看webpack的打包代码

代码结构

 └─ -configuation

    ├── src
    │ ├── main.css
    
    │ ├── heading.js

    │ └── main.js

    ├── index.html

    ├── package.json

    └── webpack.config.js ···················· Webpack 配置文件

内部内容

// ./src/heading.js

export default () => {

  const element = document.createElement('h2')

  element.textContent = 'Hello webpack'

  element.addEventListener('click', () => alert('Hello webpack'))

  return element

}
// ./src/index.js

import createHeading from './heading.js'
import "./main.css"
const heading = createHeading()

document.body.append(heading)

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>Webpack - 快速上手</title>

</head>

<body>

  <script type="module" src="src/index.js"></script>

</body>

</html>

执行运行命令 npx webpack --mode=none ,这个命令在执行的过程中,Webpack 会自动从 src/index.js 文件开始打包,然后根据代码中的模块导入操作,自动将所有用到的模块代码打包到一起。打包之后就能看到生成了一个dist的文件,里面的bundle.js就是打包好的文件。