webpack

一、webpack简介

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

 

 二、使用步骤

1.使用webpack前的准备

1.新建一个webpack文件夹

2.在终端输入npm install -y初始化package.json文件(这是一个标准的npm说明文件,里面蕴含了丰富的信息,包括当前项目的依赖模块,自定义的脚本任务等等)

3.在webpack文件夹里新建src文件夹,创建index.html和.index.js

 index.html:

    <script src="../js/index.js"></script>
</head>
<body>
    <div id="box">我是测试文字</div>
</body>

index.js:

import $ from "jquery";

$(function() {
  $("#box").css("color", "green");
});

此时访问页面会报错因为因为浏览器不能识别es6中的import导入语法

Uncaught SyntaxError: Unexpected identifier

2.使用webpack

  • npm install webpack webpack-cli -D安装webpack
  • 新建webpack.config.js,配置代码如下:
module.exports = {
  mode: "development" //可以是development开发模式或者production生产上线模式
};
  • 修改package.json文件,添加代码如下:
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",//这个是本来就有的
    "dev": "webpack"
  },
  • npm run dev

然后我们在命令行终端执行npm run dev就可以执行webpack打包命令了。此时就会自动生成一个dist文件夹,里面有main.js就是我们打包好的文件。 我们在src/index.html中引入你打包好的main.js再重新运行就没有问题了。

    <script src="../dist/main.js"></script>
</head>
<body>
    <div id="box">我是测试文字</div>
</body>

3.配置打包的入口和出口

 webpack默认打包的入口文件是src/index.js,打包后的出口文件是dist/main.js文件。修改打包后的入口和出口文件需要如下操作。

  • 修改webpack.config.js文件如下:
const path = require("path"); //引入处理路径的path模块

module.exports = {
  mode: "development", //可以是development开发模式或者production生产上线模式
  entry: path.join(__dirname, "./src/index.js"),
  output: {
    path: path.join(__dirname, "./dist"), //指定输出文件路径
    filename: "bundle.js" //输出文件的名称
  }
};
  • 运行npm run dev ,就会在dist目录中重新生成新的打包文件bundle.js 

在index.html中引入并使用: 

    <script src="../dist/bundle.js"></script>
</head>
<body>
    <div id="box">我是测试文字</div>
</body>

 4.webpack自动打包

因为我们每次修改了index.js里面的代码,index.html并不会立马起作用,因为它引入的打包后的bundle.js文件,我们需要每次重新npm run dev打包再测试

  • npm install webpack-dev-server -D
  • 修改package.json文件 
 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",//这是原来就有的
    "dev": "webpack-dev-server"//把webpack修改如右侧的内容
  },
  •   修改index.html的引入路径
<script src="/bundle.js"></script>
  • npm run dev 启动webpack的自动打包
  • 测试 我们随便修改index.js代码的内容,浏览器访问index.html的时候页面效果都会跟着发生变化 注意: 我们默认访问路径是: http://localhost:8081/index.html

访问效果: 

 

 此时访问会出错,进行下一步才能正常显示

5.配置html-webpack-plugin 

  • 安装插件 npm install html-webpack-plugin -D
  • 修改webpack.config.js
const path = require("path"); //引入处理路径的path模块
const HtmlWebpackPlugin = require("html-webpack-plugin"); //导入模板处理插件
const HtmlPlugin = new HtmlWebpackPlugin({
  template: "./src/index.html",
  filename: "index.html"
});//指定复制的源文件地址
module.exports = {
  mode: "development", //可以是development开发模式或者production生产上线模式
  entry: path.join(__dirname, "./src/index.js"),
  output: {
    path: path.join(__dirname, "./dist"), //指定输出文件路径
    filename: "bundle.js" //输出文件的名称
  },
  plugins: [HtmlPlugin]//指明使用的插件
};

  • 运行 npm run dev
  • 浏览器访问 http://localhost:8080就能直接访问index.html页面了,不用再http://localhost:8080/src/index.html访问了

6.打包css文件

我们新建css/index.css文件,然后在index.js引入css文件,此时再打包的时候就会报错,引入它不能直接打包css文件

index.js: 

import $ from "jquery";
import "./css/index.css";

$(function() {
  $("#box").css("color", "green");
});

 解决方法:

  • npm install style-loader css-loader -D 安装对应处理loader
  • 修改webpack.config.js文件,添加module->rules规则
module.exports = {
  mode: "development", //可以是development开发模式或者production生产上线模式
  entry: path.join(__dirname, "./src/index.js"),
  output: {
    path: path.join(__dirname, "./dist"), //指定输出文件路径
    filename: "bundle.js" //输出文件的名称
  },
  plugins: [HtmlPlugin],
  module: {
    rules: [{ test: /\.css$/, use: ["style-loader", "css-loader"] }]
  }
};
  • 再次启动npm run dev

7.打包less文件

新建index.less文件

 index.less:

ul {
    li {
      list-style: none;
    }
}

在index.js中引入less文件 

 index.js:

import $ from "jquery";
import "./css/index.css";
import "./css/index.less";
$(function() {
  $("#box").css("color", "green");
});

 直接运行会报错

解决方法:

  • npm install less-loader less -D
  • 修改webpack-config.js
 module: {
    rules: [
      { test: /\.css$/, use: ["style-loader", "css-loader"] },
      { test: /\.less$/, use: ["style-loader", "css-loader", "less-loader"] }
    ]
  }
  • 运行npm run dev

8.配置postcss

配置postcss主要是配置css的前缀,主要是浏览器兼容性效果使用的。

  • npm install postcss-loader autoprefixer -D 安装解析包
  • 项目根目录新建postcss.config.js文件,配置如下:
const autoprefixer = require("autoprefixer");
module.exports = {
  plugins: [autoprefixer]
};
  • 修改webpack.config.js,添加postcss-loader
 module: {
    rules: [
      { test: /\.css$/, use: ["style-loader", "css-loader", "postcss-loader"] },
      { test: /\.less$/, use: ["style-loader", "css-loader", "less-loader"] }
    ]
  }
  • npm run dev重新启动服务 

9.配置图片和字体

我们在src下面新建images文件夹,里面提供图片2.jpg

index.css:

#box {
  width: 300px;
  height: 300px;
  background: url(../images/2.jpg) no-repeat center center;
}

此时npm run dev一执行也会报错

解决方法:

  • npm install url-loader file-loader -D
  • 修改webpack.config.js文件
 module: {
    rules: [
      { test: /\.css$/, use: ["style-loader", "css-loader", "postcss-loader"] },
      { test: /\.less$/, use: ["style-loader", "css-loader", "less-loader"] },
      {test: /\.jpg|png|gif|ttf|eot|woff|woff2/,}
    ]
  }
  • 运行npm run dev 此时再执行就不会有什么错误了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值