是切图仔还是工程师就看会不会它(webpack-1)

Webpack是什么

webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)

递归地构建一个依赖关系图(dependency graph),将前端所有的资源文件(js/css/img/json/…)作为模块处理。

将所有这些模块打包成一个或多个 bundle

113

五个核心概念

  • 入口(entry)

​ webpack以哪个文件为入口点开始打包,分析构建内部依赖图

  • 输出(output)

​ webpack打包后的资源bundles输出到哪里去,以及如何命名

  • loader

​ loader让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)

  • 插件(plugins)

​ plugins让webpack用于执行范围更广的任务

  • 模式(mode)

    通过选择 developmentproduction 之中的一个,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化

Webpack上手

mkdir webpackDemo && cd webpackDemo
npm init -y
npm i --save-dev webpack webpack-cli

注意:全局安装是可以的,但是webpack官方是不推荐的。这会将你项目中的 webpack 锁定到指定版本,并且在使用不同的 webpack 版本的项目中,可能会导致构建失败

  • 创建项目目录

    mkdir src build
    cd src
    touch index.js
    cd build
    touch index.html
    
    // index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <h1>hello webpack</h1>
      <script src="./build.js"></script>
    </body>
    </html>
    
    // index.js
    const add = (a, b) => {
      return a + b;
    }
    console.log('两数相加:', add(1, 2))
    

    这时我们还没有build/build.js文件,等会儿webpack将src/index.js编译之后就有了,敬请期待

  • 配置webpack.config.js

    cd webpackDemo
    touch webpack.config.js
    

    webpack.config.js是webpack的配置文件:指示webpack怎样运行

    我们开始配置

    const path = require('path')
    module.exports = {
      entry: './src/index.js',
      output: {
        filename: 'build.js',
        // __dirname nodejs的变量 表示当前文件目录的绝对路径
        path: path.resolve(__dirname, 'build')
      },
      module: {},
      plugins: [],
      mode: 'development'
    }
    

  • 查看效果

    // 在package.json中配置scripts: {"build": "webpack"}
    npm run build
    

    这时在build目录新增了build.js

    115

    浏览器打开build/index.html

    116

热更新

这时候在src/index.js中编写代码,需要重新build。作为一个优秀的切图仔怎么可以容忍

下载webpack-dev-server

npm i webpack-dev-server -D

webpack.cong.js中配置

devServer: {
	contentBase: path.resolve(__dirname, 'build'),
	// 启动 gzip 压缩
	compress: true,
	// 端口号
	port: 10086,
	// 自动打开浏览器
	open: true
}

查看效果

// 在package.json中配置scripts: {"server": "webpack-dev-server"}
npm run server

webpack-dev-server 为你提供了一个简单的 web 服务器,并且能够实时重新加载(live reloading)。

关注公众号: 页面仔小杨 【实战干货、原创分享】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值