webpack 之 打包css文件操作

一.如何创建一个案例项目文件

案例如图

二.说明

dist:是发布的文件夹 (webpack执行时的目标文件)

src:开发时的文件夹

main.js 入口文件,这里一般是导入文件

index.html: 展示文件,会引用通过webpack打包生成的bundle.js

pageage.json 包管理配置文件

webpack.config.js  打包配置文件

三.实现步骤:

  第一步:创建文件和文件夹

 1/创建dist

 2/src文件夹

 3/main.js,mathUtils.js 

 4/index.html

 5/webpack.config.js 

 查看文件内容

mathUtils.js文件
function sum(num1, num2) {
  return num1 + num2;
}
function mul(num1, num2) {
  return num1 * num2;
}

export { sum, mul };
main.js
import { sum, mul } from "./mathUtils";

console.log(sum(10, 20));
console.log(mul(10, 20));
index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script src="./dist/bundle.js"></script>
  </body>
</html>

疑问:这个bundle.js是怎么来的?请看下面内容

webpack.config.js 
const path = require("path");
module.exports = {
  entry: "./src/main.js",
  output: {
    path: __dirname + "/dist",
    filename: "bundle.js",
  }
}

注:若没有这个文件,则可以在执行 "第二步:配置环境并执行命令"后,执行下面命令

webpack ./src/main.js ./dist/bundle.js

当然,正常是需要配置的,因为这样可以将后面的语句放在webpack.config.js文件中,之后只需要执行

webpack

第二步: 配置环境并执行命令

配置webpack环境

 npm i webpack@3.6.0 -g  //配置全局的webpack环境,请注意这里的版本,3.6.0是为了对应脚手架2.0的
 
 webpack -v //可以查看版本

执行命令

webpack

之后,就会在dist中生成相关的文件了,然后index.html中就需要引用bundle.js文件

第三步骤:配置package.json文件,简化执行命令,方便操作

npm init -y  //这个语句可以生成package.json

注意:所有的文件夹和文件名的命名都不能是中文和特殊符号,不然会报错

查看文件内容

package.json

{
  "name": "k04",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {  //脚本配置,这里可以简化命令
    "test": "echo "Error: no test specified" && exit 1",
"build" :"webpack"
}, "keywords": [], "author": "", "license": "ISC", "dependencies": { //开发环境的依赖 "webpack": "^3.6.0" }, }

执行命令

npm run build

注意:因为是开发环境的依赖,那么项目发布的时候,也是需要这个package.json文件的,那么就需要再执行一下配置局部环境

npm i webpack@3.6.0 -S --save-dev

第四步:如何打包css文件

(一) 创建文件和文件夹

1/css文件夹

2/normal.css文件

(二) 查看文件内容,添加配置内容

normal.css

body {
  background: yellow;
}

在main.js中,将css文件作为模块导入 (按照ES6的module规范来的,还可以是node的Common.js)

import { sum, mul } from "./mathUtils";

console.log(sum(10, 20));
console.log(mul(10, 20));

import "./css/normal.css";  //这里添加了一个导入模块

注意:webpack实际上是没有能力对css等文件进行打包的,所以需要通过他扩展的内容 loader来进行处理

(三) 执行命令,安装所需要的loader,同时配置webpack.config.js文件

npm install css-loader style-loader --save-dev

说明:css-loader 只负责将css文件进行加载
style-loader 只负责将样式添加到DOM中

注意:这里会有一个问题,执行该命令后,会出现版本问题,导致后面的npm run build时报错,因为版本问题,所有下面的内容是修改后的,那么在修改后再次执行 npm i 就可以解决

执行命令后,pageage.json文件内容会发生变化

{
  "name": "k04",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {    //开发时依赖
    "webpack": "^3.6.0"
  },
  "devDependencies": {    // 进行时依赖
    "css-loader": "^3.3.0",  //这里的版本是修改后的
    "style-loader": "^1.0.0" //这里的版本是修改后的
 } }

配置webpack.config.js文件

const path = require("path");
module.exports = {
  entry: "./src/main.js",
  output: {
    path: __dirname + "/dist",
    filename: "bundle.js",
  },
  module: {
    rules: [
      {
        test: /.css$/,
        use: ["style-loader", "css-loader"],
      },
    ],
  },
};

思考内容:为什么是先 style-loader 然后 css-loader
说明:css-loader  只负责将css文件进行加载
style-loader 只负责将样式添加到DOM中

答案:因为在使用多个loader时,webpack是从右到左的
 

(5) 执行命令,打开index.html运行起来

npm run build

alt+b 运行 index.html

页面变成黄色

        

原文地址:https://www.cnblogs.com/zmztya/p/14417778.html