webpack实例解析一(基础)

webpack的作用大家都知道:把项目中的各种资源,解析后打包打一起
安装

建议安装带本地 而不是全局,避免版本问题

cnpm i webpack webpack-cli -D

创建一个demo文件夹,结构如下
在这里插入图片描述
package,json
各种包

{
  "name": "webpack",
  "version": "1.0.0",
  "description": "",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "webpack": "webpack"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^3.0.0",
    "file-loader": "^4.0.0",
    "style-loader": "^0.23.1",
    "webpack": "^4.34.0",
    "webpack-cli": "^3.3.4"
  },
  "dependencies": {
    "jquery": "^3.4.1",
    "lodash": "^4.17.11",
    "node-sass": "^4.12.0",
    "sass-loader": "^7.1.0"
  }
}

webpack.config.js
webpack的配置文件

const path = require('path');

console.log(path.resolve(__dirname, 'dist'))//C:\Users\Administrator\Desktop\webpack\dist
module.exports = {
  entry: './src/index.js', // 相对当前文件的路径  =》 入口
  output: { //  输出目录 必须为绝对路径 =》输出目录,文件名
    filename: 'main.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {  // 解析除js json等外的文件类型的解析器
    rules: [
      {
        test: /\.css$/,
        use: [
          'style-loader',
          'css-loader'
        ]
      },
      {
        test: /\.scss$/,
        use: [
          'style-loader',
          'css-loader',
          'sass-loader'
        ]
      },
      {
        test: /\.(png|svg|jpg|gif)$/,
        use: [
          'file-loader'
        ]
      }
    ]
  }
};

我们执行

node webpack.config.js

打印出输出目录,发现输出必须是绝对路径,用相对路径报错

index.js

入口文件

import _ from 'lodash'; // js库
import $ from 'jquery';
import './index.css' //css
import './index.scss'// scss
import Icon from './headimg.png'// 图片
import jsonData from '../package.json' // json数据
function component () {
  let element = document.createElement('div');

  element.innerHTML = _.join(['Hello', 'webpack'], ' ');

  return element;
}

document.body.appendChild(component());

let div = $('<div style="coloe:red;">引入js包</div>')
$('body').append(div)

// 打包图片
var myIcon = new Image();
myIcon.src = Icon;
$('body').append(myIcon)

console.log(jsonData)

index.scss

.scss{
  color: black;
  font-size: 30px;
}
.img{
  width: 100px;
  height: 100px;
  background: url(./headimg.png);
  color: red;
}

index.css

.scss{
  color: black;
  font-size: 30px;
}
.img{
  width: 100px;
  height: 100px;
  background: url(./headimg.png);
  color: red;
}

index.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>

</head>

<body>
  <div class="hello">webpack 打包样式css</div>
  <div class="scss">webpack 打包样式scss</div>
  <div class="img">处理css里面的背景图</div>
  <script src="main.js"></script>
</body>

</html>

安装package.json的包

cnpm i

执行webpack打包命令

npm run webpack 

在这里插入图片描述
控制台打包完成,文件结构发生变化如下
在这里插入图片描述
可以看到我们的js 和图片被打包进设置的输出目录

在浏览器打开index.html
看到如下效果:
在这里插入图片描述

说明我们的js库, 图片 ,json文件 ,css ,scss都被打包成功

查看源码
在这里插入图片描述
可以看到图片的路径、名称被改为打包后的,css scss被加载到head里面
第一篇完结。期待下一篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值