分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

webpack4(1)

发布时间:2023-09-06 02:35责任编辑:赖小花关键词:webpack

webpack4

  如果你说你不知道webpack,我是不信的,可能一知半解的,但没关系,今天简单学习一下webpack。本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。现在不太懂没关系,我们一步一步来,毕竟实践是检验真理的唯一标准

  安装

   本地安装 与 全局安装,安装之前要确保node的版本,最新的最好,低版本的可能会有问题。对于大多数项目,我们建议本地安装。这可以使我们在引入破坏式变更(breaking change)的依赖时,更容易分别升级项目。不推荐全局安装 webpack。这会将你项目中的 webpack 锁定到指定版本,并且在使用不同的 webpack 版本的项目中,可能会导致构建失败。

  

mkdir webpack-demo && cd webpack-demonpm init -ynpm install webpack webpack-cli --save-dev

 我们新建一个src目录,在src文件下新建index.js 文件。并新建一个index.html文件。目录如下

  

  index.js 内容

  

console.log(‘qzy‘);

  然后打开命令行窗口输入 npx webpack, 可以看到如下内容,项目中会生成dist文件里面有main.js 文件,我们在index.html文件中引入该文件,会看到控制台输出qzy。

  

  mode 代表的开发与生产环境,这个暂且不论。后面会再说,打包后的文件又是什么、我们后面一起说。

  配置文件

  在 webpack 4 中,可以无须任何配置使用,然而大多数项目会需要很复杂的设置,我们可以自己配置文件,我们在src同级目录下新建 webpack.config.js。

  

const path = require(‘path‘);// path.resolve(__dirname,‘dist‘) 将相对地址转化成 绝对路径module.exports = { ???mode: ‘development‘, // development 开发环境 ?、production 生成环境 ???entry: ‘./src/index.js‘, // 需要打包文件的入口 ???output: { ???????filename: ‘main.js‘, //打包后的文件名字 ???????path: path.resolve(__dirname, ‘dist‘) // 必须是绝对路径 ???????}}

  其中 path 是node.js 包含的核心模块 因为webpack是nod写出来,所以是node的写法。

  path.resolve(__dirname,‘dist‘)==》转化为绝对路径是什么呢,其实就是这个C:\Users\dullwinnie\Desktop\webpack-demo\dist,每个人的目录应该都是不一样的,是文件的存放地址的。

   那么这个配置文件名字必须这么写嘛?其实不是的,运行webpack 时 会默认运行webpack-cli 我们可以看一下 node_module 下的 这个文件 node_modules\webpack-cli\bin的config-yargs.js文件。

  

  webpack.config.js  或者 webpackfile.js  都是可以的,你如果不信 修改一下试试,那如果我想改成 my.config.js 这样行吗?可以的。我们输入以下命令行

  

npx webpack --config my.config.js

  运行的结果都是一样的。现在我们每次打包都要写这么多,有点麻烦,我们在package.json 文件夹下做如此修改

  

  修改后运行 npm run build ,毫无瑕疵。 现在当我们修改js文件是,需要先打包,然后打开index.html文件才能查看结果,实际开发时我们更希望修改后刷新浏览器就能看到变化。而不是每次都打包,再去打开

  webpack-dev-server

  它为你提供了一个简单的 web 服务器,并且能够实时重新加载(live reloading),现在需要安装一下

  

npm install --save-dev webpack-dev-server

  然后在 my.config.js 文件中新增

  

const path = require(‘path‘);console.log(path.resolve(__dirname,‘dist‘))// 将相对地址转化成 绝对路径module.exports = { ???mode: ‘development‘, // development 开发环境 ?、production 生成环境 ???????entry: ‘./src/index.js‘, // 需要打包文件的入口 ???output: { ???????filename: ‘main.js‘, //打包后的文件名字 ???????path: path.resolve(__dirname, ‘dist‘) // 必须是绝对路径 ???????}, ???// 开发服务器配置 ???devServer:{ ???????port:80,//端口号 ???????compress:true,// 启用压缩 ???????contentBase:‘./dist‘//告诉服务器从哪里提供内容 ???}}

  package.json 配置 dev

  

{ ???"name": "webpack-demo", ???"version": "1.0.0", ???"description": "", ???"main": "index.js", ???"scripts": { ???????"test": "echo \"Error: no test specified\" && exit 1", ???????"build": "webpack --config my.config.js", ???????"dev": "webpack-dev-server" ???}, ???"keywords": [], ???"author": "", ???"license": "ISC", ???"devDependencies": { ???????"webpack": "^4.29.6", ???????"webpack-cli": "^3.3.0", ???????"webpack-dev-server": "^3.2.1" ???}}

   现在我们在dist 新增 index.html 文件  并引入此js 文件,最外面那个index.html 文件先不论。

    

  运行  npm run dev 修改 src 下的index.js 文件 控制台也会做相应的修改,你会发现 一切如此美好。但是如果你是按步骤来的,我们是先打包,再启动的服务器,现在我们把dist 文件删掉,就会发现报错了。并且我们希望 在外面的index.html 引入 src 下的文件,自动插入,此时我们引入插件。

  HtmlWebpackPlugin

    

npm install --save-dev html-webpack-plugin

  修改后的配置文件

  

const path = require(‘path‘);const htmlWebpackPlugin = require(‘html-webpack-plugin‘);console.log(path.resolve(__dirname, ‘dist‘)) // 将相对地址转化成 绝对路径module.exports = { ???mode: ‘development‘, // development 开发环境 ?、production 生成环境 ???entry: ‘./src/index.js‘, // 需要打包文件的入口 ???output: { ???????filename: ‘main.js‘, //打包后的文件名字 ???????path: path.resolve(__dirname, ‘dist‘) // 必须是绝对路径 ???????}, ???// 开发服务器配置 ???devServer: { ???????port: 80, //端口号 ???????compress: true, // 启用压缩 ???????contentBase: ‘./dist‘ // ???}, ???// 数组 包含所有的插件 都有很多熟悉 只简单列取几个 ???plugins: [ ???????new htmlWebpackPlugin({ ???????????template: ‘./index.html‘, //本地模板文件的位置 ???????????filename: ‘index.html‘, //输出文件的文件名称,默认为index.html, ???????????minify: { ???????????????removeAttributeQuotes: true, //删除引号 ???????????????collapseWhitespace: true, // 删除空格不换行 ???????????}, ???????????hash: true ???????}) ???]}

  

  这里面都是可以修改的,修改后打包可以查看dist文件夹下index.html文件的变化。 现在我们是在控制台显示的,我们该怎么引入css呢 ,期待一下。

  

  

  

webpack4(1)

原文地址:https://www.cnblogs.com/xqzi/p/10579057.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved