webpack 介绍
- webpack 下载
npm install webpack -g全局安装webpack - webpack官网=>戳我!
- webpack是现代JavaScript应用程序的模块打包器,他会递归的构建一个依赖关系图,其中包括应用程序需要的每个模块,然后将这些模块打包成一个或多个 bundle
- 它是高度可配置的,但是在开始前需要先理解四个核心概念:
- 入口(entry) 所有的依赖项
- 输出(output) 打包后的结果
- loader:webpack默认只能打包js,如果需要打包其他文件需要使用相应的loder
- 插件(plugins) 热启动等
webpack 基本使用
首先,我们可以使用vue-cli工具,直接创建项目文件并配置模块,让以下步骤一步完成,但下面步骤可以使我们更好的了解webpack的各项配置
初始化npm,在本地安装webpack
123mkdir webpack-demo && cd webpack-demonpm init -ynpm install --save-dev webpack其他js模块导出到app.js
123456789101112131415161718192021// add.js// 简单演示,这里不处理数据了module.exports = {add: function (n1, n2) {n1 = n1-0n2 = n2-0return n1 + n2}}// app.jsconst addObj = require('./add')// 引入css模块// require('../style/main.css');require('../style/main.less');let btn = document.getElementById('btn');btn.onclick = function () {let num1 = document.getElementById('num1').value;let num2 = document.getElementById('num2').value;document.getElementById('num3').value = addObj.add(num1, num2);}
|
|
- webpack.config.js配置文件1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677// 引入path模块const path = require('path')// 自动在output的path目录中生成html文件const HtmlWebpackPlugin = require('html-webpack-plugin');// 清理指定的文件夹const CleanWebpackPlugin = require('clean-webpack-plugin');module.exports = {entry: './src/app.js',output:{// 给输出文件一个名字filename: 'build.js',// 输出文件的路径,路径必须是绝对路径,拼接路径, resolve会处理./path: path.resolve(__dirname,'./dist')},// 当我们需要打包其他资源时候,找到官方文档对应的loader下载并按照说明配置好就可以了// 以添加css loader为例 ,npm输入`npm install --save-dev style-loader css-loader` 安装到dev本地开发环境中module: {rules: [{test: /\.js$/,// 排除文件exclude: /(node_modules|bower_components)/,use: [{loader: 'babel-loader',options: {presets: ['@babel/preset-env']}}]},{test: /\.css$/,// 把css当做模块来处理// 执行从右到左// autoprefixer-loader 自动给样式属性加前缀// css-loader 把css作为模块来处理// style-loader 把样式插入到页面的head中use: ['style-loader', 'css-loader', 'autoprefixer-loader'] // 执行顺序从右到左},{test: /\.less$/,// 处理lessuse: ['style-loader', 'css-loader', 'autoprefixer-loader', 'less-loader']},{test: /\.scss$/,// 处理sassuse: ['style-loader', 'css-loader', 'autoprefixer-loader', 'sass-loader']},{// 处理图片和字体// 当文件小于limit (limit单位是字节)会把文件转换成base64编码的字符串// 当文件大于limit 会使用file-loader来处理// url-loader 和 file-loader会处理任何类型的文件// url-loader 可以把文件转成base64编码的字符串test: /\.(png|jpg|gif|woff|woff2|eot|ttf|otf|svg)$/,// use: ['url-loader']use: [{loader: 'url-loader',options: {limit: 10240}}]}]},// npm安装,然后在配置文件中引入插件,再在模块配置中进行配置plugins: [// 引入之后在插件模块中 new一个对象new CleanWebpackPlugin(['dist']),new HtmlWebpackPlugin({title: 'Output Management',template: 'index.html', // 自动以哪个模板生成文件filename: 'index.html' // 设置生成的html的文件名})]}
loader:
babel-loader es6语法降级等
安装npm install babel-loader babel-core babel-preset-env webpack 安装到dev中
插件:
CleanWebpackPlugin清理指定文件夹
HtmlWebpackPlugin自动生成html文件
工具:
webpack-dev-server热启动
在package.json中scripts中配置"dev": "webpack-dev-server --inline --hot --open --port 3000" 之后只要在npm中键入npm run dev就可以打开网页并热启动