体验webpack
- npm init -y
- 局部安装webpack: (不推荐全局安装,全局安装会造成版本不稳定,如果多个项目依赖的版本不同,会造成构建失败)
- npm i webpack webpack-cli -D
- 查看webpack版本: npx webpack -v (去当前项目中去找)
- 创建src目录,新建 index.js 文件,写入 console.log('hello webpack')
- 打开 package.json 文件,将scripts下的 test命令修改为 "test": "webpack"
- 在命令行执行 npm run test后,此时发现目录中多个个dist文件夹,新建个 index.html 文件,然后引入dist中的 main.js 就可以查看到 hello webpack
webpack is a module bundle(模块打包工具)
Webpack是一个打包模块化JavaScript的工具,它会从入口模块出发,识别出源码中的模块化导入语句,递归的找出入口文件的所有依赖,将入口和其所有的依赖打包到一个单独的文件中。
是工程化、自动化思想在前端开发中的体现。
webpack的默认配置
- 默认入口模块
- ./src/index.js
- 默认输出模块
- 名称: main.js
- 路径:./dist
- webpack默认支持多种模块类型:commonJS、ESModule、AMD
- webpack默认支持 js 模块和 json 模块
webpack不适合用于 JavaScript 库的构建,因为不够纯粹,库一般用 rollup 构建
修改默认配置
新建 webpack.config.js 文件
const path = require('path') module.exports = { // webpack的执行入口 entry: './src/index.js', // 输出 output: { // 输出到哪里,必须是绝对路径 path: path.resolve(__dirname, "./dist"), filename: "main.js" }, // 模式(开发模式或生产模式) mode: "development" }
使用多份配置:
新建 webpack.dev.config.js 文件
const path = require('path') module.exports = { // webpack的执行入口 entry: './src/index.js', // 输出 output: { // 输出到哪里,必须是绝对路径 path: path.resolve(__dirname, "./build"), filename: "index.js" }, // 模式(开发模式或生产模式) mode: "development" }
在 package.json 文件的scripts下加入:
"dev": "webpack --config webpack.dev.config.js"
执行 npm run dev 就会执行 webpack.dev.config.js 这份配置
项目中使用图片,webpack需要使用 loader来解析图片
- 安装:npm i file-loader -D
- 在webpack的配置文件中使用loader
// 处理模块 module: { rules: [ // .css .png .ts .jsx等多种类型的格式文件 // 处理图片 { test: /.(jpe?g|png|gif)$/, use: ["file-loader"] } ] }
- 在项目中使用图片
import pic from './logo.jpg' var img = new Image() img.src = pic var app = document.getElementById('app') app.append(img)