webpack-前置知识

前置知识-node的内置模块path

path模块用于对路径和文件进行处理,
从路径中获取信息
dirname: 获取文件的父文件夹。
basename:获取文件名。
extname: 获取文件拓展名。

 const path = require("path")
 const fileName = "C://test/a/b/c.txt"
 //.txt
 console.log(path.extname(fileName))
 //c.txt
 console.log(path.basename(fileName))
 //C://test/a/b
 console.log(path.dirname(fileName))

路径的拼接path.join()

如果希望将多个路径进行拼接时,由于不同的操作系统(Mac OS 和Linux的Unix操作系统上使用/来作为文件路径的分割符,window上使用\或 \作为文件的分割符,目前也支持/ )可能使用不同的分隔符,拼接时需要区分,但是使用path.join()就不用考虑操作系统的问题。
与path.resolve()相比path.join()用的比较少

//path.join()方法会将path2路径相对于path1路径进行拼接,得到最终的路径。由于path2是一个相对路径
const path = require("path")
const path1  = "/test/t"
const path2  = "../a/b/c.js"

console.log(path.join(path1,path2))
//结果: C://test/a/b\test\a\b\c.js
//path1是一个绝对路径(以/开头),而path2是一个相对路径(以..开头),在拼接时会根据相对路径的规则进行处理。在这种情况下,path2的..表示返回上一级目录,所以最终结果会是"/a/b/c.js"。
//结果中的斜杠符号可能会因为操作系统的不同而有所差异。在Windows系统中,路径分隔符通常是反斜杠\

拼接绝对路径:path.resolve()

  1. 会把一个路径或路径片段的序列解析为一个绝对路径,
console.log(path.resolve("/test/a.js"))
//结果: C:\test\a.js
  1. 给定的路径序列使用右往左被处理的,后面的path会依次被解析,直到构造完成一个绝对路径。
console.log(path.resolve("./a.js","./b.js","/c.js"))
console.log(path.resolve("./a.js","/b.js","./c.js"))
console.log(path.resolve("/a.js","./b.js","./c.js"))
// C:\c.js
// C:\b.js\c.js
// C:\a.js\b.js\c.js
  1. 如果在处理完所有给定的path片段后,还没有生成绝对路径,则使用当前工作目录。
console.log(path.resolve("./a.js","./b.js","./c.js"))
//  C:\Users\28376\Desktop\新建文件夹\a.js\b.js\c.js
  1. 生成的路径被规范化并删除尾部斜杠,零长度的path片段会被忽略。
console.log(path.resolve("/test/a.js/"))
//  C:\test\a.js
console.log(path.resolve("./a.js","","./c.js"))
//C:\Users\28376\Desktop\新建文件夹\a.js\c.js
console.log(path.resolve("./a.js"," ","./c.js"))
// C:\Users\28376\Desktop\新建文件夹\a.js\ \c.js
  1. 如果没有path片段,path.resolve() 将会返回当前工作目录的绝对路径。
    console.log(path.resolve())
    //  C:\Users\28376\Desktop\新建文件夹
    

webpack

webpack的概念

webpack是一个静态的模块化打包工具:
1.最终会把代码打包成静态资源,部署到静态服务器。
2. webpack默认支持各种模块化开发,如ES Module, CommonJS等
3. 可以解决现代前端开发中的各种问题,比如代码的压缩和并,实时监听文件的变化,并映射到浏览器上,提高开发效率,使用一些高级的语法。

需要打包的文件:
1.js将es6转换为es5,将ts转换为js.
2.css模块的加载,less,sass等预处理器的处理。
3.图片img和文字font文件的加载
4.打包html资源文件
5. 处理vue项目的sfc文件(Single File Component,的缩写,)

webpack的安装和使用

webpack的安装分为两个webpack,webpack-cli
webpack:

//通过代码运行,用的很少
const webpack =require(" webpack")
webpack.compile()

webpack-cli:

//命令行的形式,使用较多
webpack --entry

webpack,webpack-cli的关系:
执行webpack命令,会执行node_modules下的.bin目录下的webpack
webpack在执行时是依赖webpack-cli的,如果没有安装会报错
webpack-cli执行时,才是webpack进行编译和打包的过程。
安装webpack的同时还需要安装webpack-cli

npm install webpack webpack-cli -Dnpm install webpack webpack-cli -g
安装后直接运行npx webpack可以看到打包后生成了一个文件,

在这里插入图片描述
入口文件默认就是这里的Index.js文件名是固定的,改成其他的会报错:
在这里插入图片描述
这时候就需要指定打包的文件,即入口entry npx webpack --entry ./src/main.js

在这里插入图片描述
同理文件的出口也是默认的默认是dist/main.js ,如果要修改的话要通过--output-filename指定 npx webpack --entry ./src/main.js --output-filename bundle.js
在这里插入图片描述
如果还要修改打包的文件名output 要通过 --output-path
npx webpack --entry ./src/main.js --output-filename bundle.js --output-path ./build:
在这里插入图片描述
这样敲命令很麻烦,尤其是命令很长时,可以建立一个 webpack.config.js,然后在通过npx webpack运行

module.exports={
    "entry":"./src/main.js",
     "output":{
        "filename":"bundle.js",
        "path":"./build"
     }
}

在这里插入图片描述
可以通过path.resolve('path):
在这里插入图片描述
也可以进一步优化,在不同的操作系统中都没问题,需要使用__dirname获取当前文件所在的路径:

const path =require("path")
module.exports={
    "entry":"./src/main.js",
     "output":{
        "filename":"bundle.js",
        "path":path.resolve(__dirname,"./build")
     }
}

这里的webpack.config.js和入口和出口设置是一样的,文件名固定,如果要修改还要进行额外配置:
在这里插入图片描述
要修改webpack.config.js文件名要通过 --config 指定修改的文件名:
npx webpack --config wk.config.js
在这里插入图片描述

每次运行时都需要敲明了很麻烦,可以在package.json中编写脚本:
在这里插入图片描述

最终版本

使用webpack.config.js编写一些配置:
在这里插入图片描述

使用package.json的脚本执行命令:
在这里插入图片描述

相关推荐

  1. 知识:字符集

    2024-04-07 13:02:01       28 阅读
  2. 前端知识pnpm

    2024-04-07 13:02:01       21 阅读
  3. 微前端知识----webComponents

    2024-04-07 13:02:01       37 阅读
  4. 【机器学习知识】多项式分布

    2024-04-07 13:02:01       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-07 13:02:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-07 13:02:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-07 13:02:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-07 13:02:01       20 阅读

热门阅读

  1. ElasticSearch 中分词与倒排索引的原理

    2024-04-07 13:02:01       19 阅读
  2. PostgreSQL入门到实战-第一弹

    2024-04-07 13:02:01       19 阅读
  3. UML 架构图入门介绍 starUML

    2024-04-07 13:02:01       15 阅读
  4. C语言拾遗

    2024-04-07 13:02:01       20 阅读
  5. 统计天数C++

    2024-04-07 13:02:01       21 阅读
  6. 代码随想录打卡Day6

    2024-04-07 13:02:01       18 阅读