webpack4.0入门学习笔记(一)

栏目: JavaScript · 发布时间: 5年前

初始化项目

  • 创建项目

mkdir webpack4-demo
cd webpack4-demo

npm init -y

npm install webpack --save-dev

  • 安装指定版本

npm install --save-dev webpack@<version>

  • webpack 4+ 版本,还需要安装webpack-cli

npm install webpack-cli --save-dev

建议本地安装webpack和webpack-cli

目前webpack最新版本为:4.30.0,也是本文学习webpack使用的版本

项目目录结构

webpack4.0入门学习笔记(一)

执行 npx webpack index.js 命令,生成 dist 目录, dist 目录下是对 index.js 打包后得到的文件,默认是 main.js 文件。

webpack4的简单配置

entryoutput 配置

webpack.config.js文件

const path = require('path')

module.exports={
  mode: 'development', //development: 开发环境 production:生产环境
  //入口文件配置
  //entry: './src/index.js',
  //等价于 
  /*entry: {
    main: './src/index.js'
  },*/
  
  entry: {
    index: './src/index.js'
  },
  
  //打包完成后文件存放位置配置
  output: {
    //filename 设置打包后文件的名字
    //如果不设置filename,则文件的名字跟入口文件路径的属性名一样
    filename: 'bundle.js',
    
    //path 设置打包完成后文件存放路径
    path: path.resolve(__dirname,'dist')
  }
}

在项目根目录下新建src文件夹,在src文件夹下新建index.js(入口文件)文件

执行npx webpack命令

npx webpack 等价于 npx webpack --config webpack.config.js

当配置文件命名为 webpack.config.js 时可以省略 --config *.js 直接执行 npx webpack 即可,否则执行 npx webpack --config 配置文件名

结果

webpack4.0入门学习笔记(一)

webpack4.0入门学习笔记(一)

package.json 中配置'script'来执行 npx webpack 命令。

"scripts": {
    "start": "webpack"
  }

添加 "start": "webpack" ,运行 npm run start 效果等价于执行 npx webpack 命令。

配置 webpack.config.jsmodoule 对象

modoule 对象主要是对loader的配置

file-loader 的使用

安装 file-loader
npm i file-loader --save-dev

webpack.config.js文件

const path = require('path')

module.exports={
  mode: 'development', //development: 开发环境 production:生产环境
  //入口文件配置
  //entry: './src/index.js',
  //等价于 
  /*entry: {
    main: './src/index.js'
  },*/
  entry: {
    index: './src/index.js'
  },
  //打包完成后文件存放位置配置
  output: {
    //filename 设置打包后文件的名字
    //如果不设置filename,则文件的名字跟入口文件路径的属性名一样
    filename: 'bundle.js',
    //path 设置打包完成后文件存放路径
    path: path.resolve(__dirname,'dist')
  },
  module: {
    rules:[
      {
        test: /\.(png|jpg|gif)$/,
        use: {
          loader: 'file-loader',
          options: {
            name: '[name].[ext]', //对打包后的图片命名
            outputPath: 'images/' //打包后图片放的位置 dist\images
          }
        }
      }
    ]
  }
}

index.js文件

//index.js

//import导入图片
import image from './images/11.png'

let img=new Image()
img.src=image
document.body.append(img)

npm run start 后的目录结构

webpack4.0入门学习笔记(一)

在dist目录下出现了images目录和图片,创建index.html,引入js文件,在浏览器中打开就可以看到图片。

url-loader 的使用

url-loader 安装

npm i url-loader -D

url-loader 的作用跟'file-loader'的作用很类似

webpack.config.js文件的 module 对象中添加 url-loader 配置

module: {
    rules:[
      {
        test: /\.(png|jpg|gif)$/,
        use: {
          loader: 'url-loader',
          options: {
            name: '[name].[ext]', //对打包后的图片命名
            outputPath: 'images/', //打包后图片放的位置 dist\images
            limit: 2048 
            //1024 == 1kb  
            //小于200kb时打包成base64编码的图片否则单独打包成图片
          }
        }
      }
    ]
  }
}

url-loader 打包的图片是字符串,base64编码的图片,并且打包进index.js文件中。

limit 属性:当图片大小大于属性值时打包成单独的图片,否则打包成base64编码的图片。

因为base64编码的图片比较大,所以图片比较小时打包成base64编码的图片,图片比较大时单独打包成一张图片。

cssscss 的打包

安装相应的loader

npm i css-loader style-loader -D
npm i node-sass sass-loader -D
npm i postcss-loader -D

npm i autoprefixer -D

在webpack.config.js文件的 module 对象中添加配置

module:{
  rules:[
    {
      test: /\.css$/,
       use:[
         'style-loader',
         'css-loader',
         'postcss-loader'  
         //加前缀  npm i autoprefixer -D
         //在项目根目录下配置postcss.config.js文件
       ]
     },
     {
        test: /\.scss$/,
        use:[
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              importLoaders: 2,
              //importLoaders
              //用于配置css-loader作用于@import的资源之前有多少个loader先作用于@import的资源
            }
          },
          'sass-loader',
          'postcss-loader'
        ]
      }
  ]
}
//index.js

import './style.css'
import image from './images/11.png'
import './index.scss'

let img=new Image()
img.src=image
let root=document.getElementById('root')
root.append(img)

css模块化

//webpack.config.js

module:{
  rules: [
    {
        test: /\.scss$/,
        use:[
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              importLoaders: 2,
              //importLoaders
              //用于配置css-loader作用于@import的资源之前有多少个loader先作用于@import的资源
              modules: true //加载css模块化打包,避免样式文件之间相互影响
            }
          },
          'sass-loader',
          'postcss-loader'
        ]
     }
  ]
}
//index.js

import image from './images/11.png'
import style from './index.scss'

let img=new Image()
img.src=image

//style.img .img是scss文件中写好的类名
img.classList.add(style.img)

let root=document.getElementById('root')
root.append(img)

//scss

.img{
  width: 150px;
  height: 150px;
  border: 10px solid goldenrod;
  background: red;
  border-radius: 30%;
}

结果

webpack4.0入门学习笔记(一)

可以看到添加了一个class,类名是一串比较复杂的字符串,从而避免这个样式对别的元素产生影响。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Squid: The Definitive Guide

Squid: The Definitive Guide

Duane Wessels / O'Reilly Media / 2004 / $44.95 US, $65.95 CA, £31.95 UK

Squid is the most popular Web caching software in use today, and it works on a variety of platforms including Linux, FreeBSD, and Windows. Squid improves network performance by reducing the amount of......一起来看看 《Squid: The Definitive Guide》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试