官网

  官网:https://webpack.js.org

  中文网:https://www.webpackjs.com

一、介绍

  从webpack4.+进行介绍,会对Webpack常用配置一一讲解,各个功能点都有对应的详细例子,你如果能动手跟着本文中的例子完整写一次,你会觉得Webpack也不过如此。

1.1、webpack是什么

  webpack是一种前端资源构建工具(模块打包器),一个静态模块打包器.在webpack看来,前端的所有资源文件(js/json/css/image/less/sass...)都会作为模块处理。它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源。

从 v4.0.0 开始,webpack 可以不用再引入一个配置文件来打包项目,然而,它仍然有着高度可配置性,可以很好满足你的需求。
配置文件: webpack.config.js

1.2、webpack都能干些什么

1.3、webpack五个核心概念

  • mode                     模式    development / production ,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化
  • entry                     入口         本项目应该使用哪个模块,来作为构建其内部依赖图的开始(指定打包入口文件)
  • output                  输出          在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist
  • loader                   loader      让webpack能够去处理那些非js文件(webpack自身只理解js)
  • plugins                 插件    则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。

二、简单案例

2.1、准备工作

1、首先:webpack是运行在node环境中的,Node >= 8.10 和 npm >= 5.6(node环境链接:https://nodejs.org/en/     直接下载电脑对应的版本即可。)

  1、接下来新建项目文件夹这里我起名为:webpack_project

  2、打开终端切换到项目文件夹下

  3、执行命令初始化项目生成package.json:   npm init -y

  4、执行命令下载webpack与webpack-cli依赖: npm i -D webpack webpack-cli

 npm init -y
 npm i -D webpack webpack-cli

  

  tips:

    install    可简写为  i,

    --global   可简写为  -g,

    --save-dev  可简写为  -D

    --save    可简写为  -S

2、检查是否安装成功

  这里注意一下版本 有些版本会遇到一些坑 , 若运行不起来,可以复制我这个版本放到对应的位置上, 然后npm i初始化一下

3、使用npx来完成本项目中的命令执行

npm webpack --version

4、在package.json文件中配置webpack运行脚本命令

执行命令 npm run build

2.2、新建

webpack_project 中创建src,dist文件夹,接下来再创建三个文件:

index.html   --放在dist文件夹中;
hello.js    --放在src文件夹中;
index.js   --放在src文件夹中;

我们在index.html中写下html代码,它的作用是为了引入我们打包后的js文件:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Webpack Project</title>
</head>
<body>
<div id='root'></div>
<script src="bundle.js"></script> <!--这是打包之后的js文件,我们暂时命名为bundle.js-->
</body>
</html>
我们在hello.js中导出一个模块:

// hello.js
module.exports = function() {
let hello = document.createElement('div');
hello.innerHTML = "Long time no see!";
return hello;
};

然后在index.js中引入这个模块(hello.js):
//index.js
const hello = require('./hello.js');
document.querySelector("#root").appendChild(hello());

2.3 通过配置文件来使用webpack

在当前项目的根目录下新建一个配置文件webpack.config.js,我们写下如下简单配置代码,目前只涉及入口配置(相当于我们的index.js,从它开始打包)和出口配置(相当于我们打包生成的bundle.js)。

// webpack.config.js
module.exports = {
   mode:'development',
entry: __dirname + "/src/index.js",   // 入口文件
output: {
path: __dirname + "/dist",     //打包后的文件存放的地方
filename: "bundle.js"       //打包后输出文件的文件名
}
}
//注:__dirname是node.js中的一个全局变量,它指向当前执行脚本所在的目录,即C:\Users\sjt\DeskTop\webpack-project(这是我当前的目录)

但平时我们看到的脚手架配置也比较喜欢采用node.js的path模块来处理绝对路径,所以我们也可以采用如下的写法,和上述的效果是一样的:

// webpack.config.js
const path = require('path');
module.exports = {
   mode:'development',                //开发环境
entry: path.join(__dirname, "/src/index.js"), // 入口文件
output: {
path: path.join( __dirname, "/dist"),   //打包后的文件存放的地方
filename: "bundle.js"            //打包后输出文件的文件名
}
}
//注:path.join的功能是拼接路径片段。

扩展:这里再讲一下    filename 扩展写法

output: {   //项目出口
path: path.resolve('dist'), // 打包生成路径 绝对路径
/*
打包名称
filename:'js/[name]-[hash:8].js'
[name]文件名称变量 默认main
[hash]生成不重复字符串 :8 一般最少六位
*/
filename: 'bundle-[hash:8].js'
},

2.4 开始进行webpack打包

在终端中使用命令进行打包:

npm run build   ---这里前提是我们在 2.1第四步中package.json配置了"build":"server"
          注意:package.sjon 文件内不能用注释,不能单引号

上述就相当于把src文件夹下的index.js文件打包到dist文件下的bundle.js,这时就生成了bundle.jsindex.html文件引用

 运行结果:

三、基本开发环境配置

为了让我们的项目看起来更像真正的公司项目,这里我们要配置生产和开发环境两个版本,方便在以后的项目开发中针对不同的环境进行打包。

3.1、配置基本开发环境

  1、在项目根目录中创建一个config目录,专门用于存放webpack的相关配置文件

    dev:生产环境

    prod:开发环境

    这里由于配置文件修改   enrty入口与   path输出位置  也要做相应调整   

  2、在package.json文件中的scripts自定义命令中修改webpack打包命令

   "build-dev": "webpack --config ./config/webpack.config.dev.js",
"build": "webpack --config ./config/webpack.config.prod.js"

  3、运行成功:

3.2、html-webpack-plugin插件

首先根目录下面创建一个public目录,并在此目录中创建一个index.html文件,使用 html-webpack-plugin插件,可以将此文件用于项目web入口文件模块。

1、设计与回顾

  为了把上面的内容更好地吸收,我们重新撸一下思路。

  第一步:创建项目  webpackProject

  第二步:生成package.json  

      打开终端切换到 webpackProject工程下(win+r 输入cmd可以快速打开终端)

      执行命令:  npm init -y

  第三步:下载webpack相关依赖  

      执行命令:npm i -D webpack webpack-cli

      版本参考:"webpack": "^4.44.2", "webpack-cli": "^3.3.12"

  第四步:新建子文件

            

  第五步:webpack.config.dev.js内书写打包内容(这里稍稍有些区别)

const path = require('path');
module.exports = {
mode: 'development',                //开发环境
entry: "./src/index.js", // 入口文件
output: {
path: path.resolve('dist'),   //打包后的文件存放的地方
filename: "[name]-[hash:8].js"            //打包后输出文件的文件名
}
}

!!从现在开始是新的内容  

  第六步:安装html-webpack-plugin  ( 版本:"html-webpack-plugin": "^4.4.1",)

      执行命令:npm i -D html-webpack-plugin

  第七步:webpack.config.dev.js中配置  html-webpack-plugin

// 1、HWP引入
const HtmlWebpackPlugin = require('html-webpack-plugin')
const path = require('path');
module.exports = {
mode: 'development',                //开发环境
entry: "./src/index.js", // 入口文件
output: {
path: path.resolve('dist'),   //打包后的文件存放的地方
filename: "[name]-[hash:8].js"            //打包后输出文件的文件名
},
// 2、HWP使用
plugins:[
new HtmlWebpackPlugin({
title:'welcome Webpack',
template:path.resolve(__dirname,'../public/index.html')
})
]
}
//注:path.join的功能是拼接路径片段。
/*
path.resolve(__dirname,'../public/index.html')
相当于
cd config
cd ..
cd public
cd index.html
*/

# 模板中使用定义的title  index.html

<title><%= htmlWebpackPlugin.options.title %></title>

四、构建本地服务器

现在我们是通过打开本地文件来查看页面的,看起来总感觉比较low,看别人用vue,react框架时都是运行在本地服务器上的,那我们能不能也那样呢?那必须的!

4.1 webpack-dev-server配置本地服务器

  1、安装相关依赖  npm i -D webpack-dev-server

    配置参数说明:

    contentBase:'文件位置'    打包服务器所在位置  有变化从新reload 

       watchContentBase: true,      忽略文件,一版git忽略相关文件
          watchOptions: {ignored: /node_modules/},
    port:'8080'          端口号,不写默认8080
    host:'localhost'        域名
    open:true           自动打开浏览器 
       clientLogLevel: 'none',     不显示启动日志
            quiet: true,                  显示基本信息,其余不展示
            overlay: false,                  错误不全屏显示 
     inline: true,                     文件修改后实时刷新
             historyApiFallback: true,     不跳转 
               compress: true,                 gzip压缩
   2、配置webpack.config.dev.js
const HtmlWebpackPlugin = require('html-webpack-plugin')
const path = require('path');
module.exports = {
mode: 'development',                //开发环境
entry: "./src/index.js", // 入口文件
output: {
path: path.resolve('dist'),   //打包后的文件存放的地方
filename: "[name]-[hash:8].js"            //打包后输出文件的文件名
},
plugins: [
new HtmlWebpackPlugin({
title: 'welcom to Webpack',
template: path.resolve(__dirname, '../public/index.html'),
})
],
  //1、webpack-dev-server相关配置
devServer: {
contentBase:path.resolve(__dirname,'../dist'),//服务器所在位置
//忽略文件
watchContentBase:true,
watchOptions:{
ignored:/node_modules/
},
port:'8088', //端口号
host:'localhost', //域名
open:true, //自动打开浏览器
clientLogLevel:'none', //不显示启动日
quiet:true, //显示基本信息,其余不展示
overlay:false, //错误不全屏显示
//解决跨域
proxy:{
'/api':{
target:'http://localhost:3000',
pathRewrite:{
'^/api':''
}
}
}
}
}
//注:path.join的功能是拼接路径片段。
/*
path.resolve(__dirname,'../public/index.html')
相当于
cd config
cd ..
cd public
cd index.html
*/

  3、配置package.json文件件

 "server":"webpack-dev-server --config ./config/webpack.config.dev.js"

    注意:json文件中不能用‘’单引号,不能写注释

    

  4、终端运行  npm run server

  

    
    
    

    

webpack使用详解的更多相关文章

  1. webpack配置详解

    webpack配置详解 先点个赞吧,再挨个点下面的连接,觉得不值这个赞的回来骂我啊. Webpack傻瓜式指南(一) Webpack傻瓜指南(二)开发和部署技巧 Webpack傻瓜式指南 原生的官网详 ...

  2. webpack入门详解

    webpack入门详解(基于webpack 3.5.4  2017-8-22) webpack常用命令: webpack --display-error-details    //执行打包 webpa ...

  3. vue-cli 中的 webpack 配置详解

    本篇文章主要介绍了 vue-cli 2.8.2 中的 webpack 配置详解, 做个学习笔记 版本 vue-cli 2.8.1 (终端通过 vue -V 可查看) vue 2.2.2 webpack ...

  4. vue-cli中webpack配置详解

    vue-cli是构建vue单页应用的脚手架,命令行输入vue init <template-name> <project-name>从而自动生成的项目模板,比较常用的模板有we ...

  5. 10. vue之webpack打包详解

    一.什么是webpack webpack官网给出的定义是 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应 ...

  6. 从零学脚手架(三)---webpack属性详解

    如果此篇对您有所帮助,在此求一个star.项目地址: OrcasTeam/my-cli 在上一篇中,介绍了webpack的entry.output.plugins属性. 在这一篇,接着介绍其它配置属性 ...

  7. 详解前端模块化工具-webpack

    webpack是一个module bundler,抛开博大精深的汉字问题,我们暂且管他叫'模块管理工具'.随着js能做的事情越来越多,浏览器.服务器,js似乎无处不在,这时,使日渐增多的js代码变得合 ...

  8. webpack安装配置使用教程详解

    webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对 ...

  9. [js高手之路]深入浅出webpack系列2-配置文件webpack.config.js详解

    接着上文,重新在webpack文件夹下面新建一个项目文件夹demo2,然后用npm init --yes初始化项目的package.json配置文件,然后安装webpack( npm install ...

  10. [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)

    本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...

随机推荐

  1. [Go] 如何妥善处理 TCP 代理中连接的关闭

    如何妥善处理 TCP 代理中连接的关闭 相比较于直接关闭 TCP 连接,只关闭 TCP 连接读写使用单工连接的场景较少,但通用的 TCP 代理也需要考虑这部分场景. 背景 今天在看老代码的时候,发现一 ...

  2. 《大话设计模式》java实现:第一章-简单工厂模式

    在<大话设计模式>中,示例代码使用C#实现,所以我这里使用Java实现一遍书中的设计模式. 第一章是使用简单工厂实现计算器. 遇到了一个问题:在Operation父类中,我们可以定义两个操 ...

  3. Java,启动!

    即日起,Java启动!目标是年后找到大厂Java日常实习,特立此随笔作证. 学习路线: Java基础(Java基础用不了多少时间,因为之前有学习过,大概花费1~2周,做到理解案例代码,看懂知识点原理即 ...

  4. g++ error unrecognized command-line option ‘-std=c++23’; did you mean ‘-std=c++03’?

    编译一个C++的项目代码,报错: g++: error: unrecognized command-line option '-std=c++23'; did you mean '-std=c++03 ...

  5. 劉玥 的国内网站 —— https://spicy-gum.com

    劉玥 的国内网站 -- https://spicy-gum.com

  6. 推荐7款程序员常用的API管理工具

    前言 现如今API接口的编写与调试已成为开发人员不可或缺的技能,工欲善其事,必先利其器,选择一款优秀的API管理工具显得尤为重要.本文大姚给大家推荐7款程序员常用的API管理工具,大家可以根据自身和团 ...

  7. 解密prompt系列42. LLM通往动态复杂思维链之路

    最近大家都在探讨和尝试复现OpenAI O1的思考效果,解码出的关键技术方向,包括之前已经探讨过的Inference Time Scaling在推理过程中进行路径决策和选择.但想要更优的Inferen ...

  8. 高性能计算-openmp-多线程缓存一致性(9)

    1. 背景介绍 L1 L2 cache是单核独享,L3是多核共享.如果多线程访问共享一维数组的连续元素,先读入第一个线程的L1 缓存中,其他线程访问缓存不命中需要加载,并且数据的更改后,标记为脏数据, ...

  9. 探究内存泄露—Part1—编写泄露代码

    本文由 ImportNew - 黄索远 翻译自 captaindebug.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Ja ...

  10. 药企如何实现ERP系统与CRM系统的整合

    ERP系统与CRM系统整合的意义深远,对于企业尤其是药企来说,这种整合能够带来多方面的优势和改进.可以确保企业内部数据的一致性和准确性:优化业务流程.增强决策支持:从而提高企业的整体运营效率和市场竞争 ...