邂逅Webpack和打包过程

1 认识webpack工具

2 webpack基本打包

3 webpack配置文件

4 编写和打包CSS文件

5 编写和打包LESS文件

6 postcss工具处理CSS

从脚手架打包成普通的html+css+js文件

内置模块path:

拼接路径

const path = require("path")

const filepath = "C://abc/cba/nba.txt"

// 1.可以从一个路径中获取一些信息
console.log(path.extname(filepath))
console.log(path.basename(filepath))
console.log(path.dirname(filepath))


const path1 = "/abc/cba"
const path2 = "../why/kobe/james.txt"
// console.log(path1 + path2)

// 2.将多个路径拼接在一起: path.join
// console.log(path.join(path1, path2))

拼接绝对路径(用的多)

// 将多个路径拼接一起, 最终一定返回一个绝对路径: path.resolve
console.log("-------resolve---------")
console.log(path.resolve("./abc/cba", "../why/kobe", "./abc.txt"))
console.log(path.resolve("./abc/cba", "../why/kobe", "/abc.txt"))
console.log(path.resolve("./abc/cba", "./why/kobe", "./abc.txt"))
console.log(path.resolve("/abc/cba", "../why/kobe", "./abc.txt"))

console.log(path.resolve())

在单独项目里面一般都是下载局部的webpack

一般下载两样东西 webpack  webpack-cli

npm install webpack webpack-cli -D

webpack-cli是提供一个在命令提示符里面可以使用webpack命令打包项目的环境

-D的意思是只在开发时候需要,不打包到生产环境

webpack在打包src底下的utils文件时,utils文件底下必须要有index.js文件,否则在webpack命令打包项目的时候会报错 

解决办法两个:

1、改成index.js文件、

2、在webpack打包的时候指定入口文件

npx webpack --entry ./src/utils/xxx.js

那如果打包好的文件夹名称dist不是自己想要的,并且打包出来的js文件名称也是自己想要的,我们可以通过命令提示符在webpack打包时候控制,但是一个一个控制很麻烦,

npx webpack --entry ./src/utils/xxx.js --output-filename xxx.js --output-path ./xxx

于是,我们可以在项目的根目录创建一个webpack的配置文件webpack.config.js

 文件里面的内容如下,其中output里面的path必须是绝对路径。于是我们使用绝对路径拼接的方法,把当前项目的路径和你想要的文件夹名称进行拼接形成绝对路径。

当然,webpack配置文件可以不一定叫webpack.config.js,我们可以在打包的时候指定一个我们创建的名称的webpack配置文件:

npx webpack --config wk.config.js

在最后,我们打包项目一般也不是直接通过命令 npx webpack来打包文件,我们可以在项目的package.json里面的script里面配置一个build命令,命令执行npx webpack来打包项目。

然后执行

npm run build

模块化是可以在js文件直接导入css文件的。

webpack本身是可以处理js文件进行打包的,但是对于css文件或者其他后缀的文件时,就没办法打包处理了,此时打包会报错。这个时候就需要用到loader了,需要在Webpack配置文件里面配置规则rules。

具体使用loader的方法有三种:

1、内联方式

2、cli方式,webpack5就不再使用了

3、配置方式(就是在webpack的配置文件里面配置,webpack.config.js)

下载对应的loader,比如css的loader就叫css-loader ,vue的loader就叫vue-loader等等。

记得是在开发环境使用,生产环境用不上这些,所以下载的时候加 -D

npm install css-loader -D

现在有css-loader之后,webpack可以打包解析css文件了,但是打包后的页面没有css效果,因为这个时候css可以解析了,但是没有插入到页面中,这时候是还缺一个style-loader处理。,注意一点就是use里面的执行顺序是从后向前,

npm install style-loader -D
const path = require("path")

module.exports = {
  entry: "./src/main.js",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "./build")
  },
  module: {
    rules: [
      {
        // 告诉webpack匹配什么文件
        test: /\.css$/,
        // use: [ // use中多个loader的使用顺序是从后往前
        //   { loader: "style-loader" },
        //   { loader: "css-loader" }
        // ],
        // 简写一: 如果loader只有一个
        // loader: "css-loader"
        // 简写二: 多个loader不需要其他属性时, 可以直接写loader字符串形式
        use: [ 
          "style-loader",
          "css-loader", 
          "postcss-loader"
        
        ]
      },
     
    ]
  }
}

对less文件的处理:

下载less-loader文件

npm install less-loader -D

在rules里面写新的test,注意一点就是use里面的执行顺序是从后向前,

const path = require("path")

module.exports = {
  entry: "./src/main.js",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "./build")
  },
  module: {
    rules: [
      {
        // 告诉webpack匹配什么文件
        test: /\.css$/,
        // use: [ // use中多个loader的使用顺序是从后往前
        //   { loader: "style-loader" },
        //   { loader: "css-loader" }
        // ],
        // 简写一: 如果loader只有一个
        // loader: "css-loader"
        // 简写二: 多个loader不需要其他属性时, 可以直接写loader字符串形式
        use: [ 
          "style-loader",
          "css-loader", 
          "postcss-loader"
         
        ]
      },
      {
        test: /\.less$/,
        use: [ "style-loader", "css-loader", "less-loader" ]
      }
    ]
  }
}

对css的某些样式兼容性作出自动化添加前缀,我们需要下载postcss-loader:

下面这个user-select可以控制用户是否可以选中页面中的文字,不同情况可能不能用

使用的方法就是放到webpack的配置文件的rules的use里面(但是目前还是不能添加前缀):

,注意一点就是use里面的执行顺序是从后向前,

 上面的postcss-loader下载完成之后还需要下载一个autoprefixer插件

npm install autoprefixer -D

在webpack的配置文件的rules的use里面

 这个postcss还有另外一种单独文件的写法,这里涉及到以后使用自动化生成项目的时候有一个选项,询问用户是否将配置集成到package.json里面或者单独文件的存在形式。

然后就作用在use里面写postcss-loader就好了

const path = require("path")

module.exports = {
  entry: "./src/main.js",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "./build")
  },
  module: {
    rules: [
      {
        // 告诉webpack匹配什么文件
        test: /\.css$/,
        // use: [ // use中多个loader的使用顺序是从后往前
        //   { loader: "style-loader" },
        //   { loader: "css-loader" }
        // ],
        // 简写一: 如果loader只有一个
        // loader: "css-loader"
        // 简写二: 多个loader不需要其他属性时, 可以直接写loader字符串形式
        use: [ 
          "style-loader",
          "css-loader", 
          "postcss-loader"
          // {
          //   loader: "postcss-loader",
          //   options: {
          //     postcssOptions: {
          //       plugins: [
          //         "autoprefixer"
          //       ]
          //     }
          //   }
          // }
        ]
      },
      {
        test: /\.less$/,
        use: [ "style-loader", "css-loader", "less-loader", "postcss-loader" ]
      }
    ]
  }
}

上述的下载autoprefixer只是postcss-loader的一个插件,我们可能以后还会遇到需要使用他的其他常用插件,这时候一个一个下载就很慢,于是有了一个postcss的一个预设的插件,已经包括了很多常用的插件postcss-preset-env

npm install postcss-preset-env -D

配置postcss的文件需要改动:

1

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Webpack 是一个现代的 JavaScript 应用程序的模块打包器。它可以将各种资源,如 JavaScript、CSS、图片等,打包成一个或多个静态资源文件。下面是 Webpack打包过程: 1. 配置:首先,你需要创建一个 webpack.config.js 文件来配置 Webpack。在配置文件中,你可以指定入口文件、输出目录、加载器、插件等。 2. 入口:Webpack 会根据配置中指定的入口文件来开始打包。入口文件是应用程序的起点,可以是一个或多个文件。 3. 加载器:Webpack 使用加载器来处理非 JavaScript 文件。加载器可以将其他类型的文件转换成 JavaScript 模块,以便在应用程序中使用。常见的加载器有 Babel(用于转换 ES6+ 语法)、CSS-loader(用于处理 CSS 文件)、file-loader(用于处理文件资源)等。 4. 解析:Webpack 会解析模块之间的依赖关系。它会分析入口文件,并递归地查找所有被引入的模块,然后构建一个依赖图。 5. 打包:根据依赖图,Webpack 将所有模块打包成一个或多个静态资源文件。通常情况下,Webpack 会将所有模块打包成一个 JavaScript 文件(通常称为 bundle.js),但也可以根据需要生成多个文件。 6. 插件:Webpack 的插件系统提供了很多功能扩展。插件可以用于优化打包结果、处理额外的任务等。常见的插件有 UglifyJsPlugin(用于压缩 JavaScript 代码)、HtmlWebpackPlugin(用于生成 HTML 文件)等。 7. 输出:最后,Webpack打包结果输出到指定的目录。输出文件可以是一个或多个静态资源文件,具体取决于配置中的设置。 以上就是 Webpack打包过程。通过配置、入口、加载器、解析、打包、插件和输出等步骤,Webpack 能够将多个模块打包成一个或多个静态资源文件,以便在浏览器中加载和运行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值