Webpack轻松入门(二)——CSS打包

简介: 上一节讲到如何使用Webpack实现最基础的打包功能,但是发现以下几个比较突出的问题:① 我们只打包了一个JS文件,多个文件该如何打包?② CSS样式该如何打包?③ 每次写完代码想要看运行结果都需要手动输命令打包,反而降低了开发效率没关系,本文就是为解决这些问题而来的。

上一节讲到如何使用Webpack实现最基础的打包功能,但是发现以下几个比较突出的问题:

① 我们只打包了一个JS文件,多个文件该如何打包?
② CSS样式该如何打包?
③ 每次写完代码想要看运行结果都需要手动输命令打包,反而降低了开发效率

没关系,本文就是为解决这些问题而来的。继续上节实例,开始吧!

一、JS模块化

使用Webpack成功打包多个JS文件最核心的一点就是使用模块化的开发方式,而Webpack支持CommonJS和ES6两种模块化规范,其中有关CommonJS的语法可以看我之前的一篇文章→JavaScript模块化编程规范。本文也将以CommonJS规范来讲解Webpack中的JS模块化。

我们在scripts目录下添加一个module.js文件,目录结构如下:

并写入以下代码:

// module.js
var text = 'Hello Webpack!';

module.exports = {   // CommonJS规范中模块输出语法
    text: text
};

然后在index.js中引入module.js文件:

// index.js
var module = require('./module.js');   // CommonJS规范中模块引入语法

alert(module.text);   // 打包后同样输出“Hello Webpack!”

由于我们在上一节中已经对Webpack的打包入口和输出路径进行了基本配置,所以我们只需同样执行npx webpack命令即可将两个JS文件进行打包输出到dist目录。

小贴士: 有时输入的命令比较长,我们可以将其写入package.json文件的"scripts"属性中。

改写后的package.json如下:

{
  "name": "webpackdemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack"   
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.5.0",
    "webpack-cli": "^2.0.14"
  }
}

接着我们只需执行npm run start命令即可(或直接输入npm start)。

二、打包CSS样式

1. loader简介

由于Webpack打包入口目前只配置了一个index.js文件,那么其他需要被打包的文件都必须通过模块化方式引入该文件才行,而默认情况下,引入的文件必须是js文件(如上面添加的module.js)。

那么其他文件类型该如何进行打包呢?

这时我们就要用到Webpack中所提供的各种loader,它就是专门用于处理除JS文件之外的其他格式文件的编译、提取、合并、打包等工作的。

其中CSS文件的打包需要用到css-loaderstyle-loader两个loader,css-loader只是用于加载css文件(并没有添加到页面),而style-loader则是将打包后的css代码以<style>标签形式添加到页面头部。

2. 安装loader

输入命令npm i -D css-loader style-loader同时安装这两个loader,安装结束后再在webpack.config.js文件中配置相应的loader,具体配置如下:

// webpack.config.js
module.exports = {
    entry: './src/scripts/index.js',   // 打包入口
    output: {   
        path: __dirname + '/dist',   // 输出路径
        filename: 'scripts/index.js'    //  输出文件名
    },
    module: {
        rules: [  
            {
                test: /\.css$/,   // 正则表达式,表示.css后缀的文件
                use: ['style-loader','css-loader']   // 针对css文件使用的loader,注意有先后顺序,数组项越靠后越先执行
            }
        ]
    }
};

3. 开始打包

在css目录下新建一个style.css文件,并写入样式:

/* style.css */
html{ background: #f00;}

然后在index.js中引入该文件:

// index.js
var module = require('./module.js');
require('../css/style.css');   // 引入css样式

alert(module.text);

最后输入命令npm start,打包完成后打开index.html页面后,你会发现除了弹出之前的“Hello Webpack!”外,页面背景颜色也变为红色,说明样式也已经打包成功。

三、自动化打包

通过上面的讲解你会发现,虽然我们已经将命令改成了npm start,然而实际操作上还是得每次手动输入命令打包,不开心。

我们能不能像以前不用Webpack时那样,写完了直接刷新页面就能看到效果呢?

答案当然是可以的,我们只需在webpack.config.js中添加watch: true就好。

module.exports = {
    entry: './src/scripts/index.js',
    output: {
        path: __dirname + '/dist',
        filename: 'scripts/index.js'
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: ['style-loader','css-loader']
            }
        ]
    },
    watch: true   // 监听修改自动打包
};

本文重点总结

① 打包多个文件为一个文件,必须使用模块化开发方式
② 先后使用css-loader和style-loader可以打包CSS样式并添加至页面
③ 想要自动化打包,只需在webpack.config.js文件中添加watch: true

相关文章
|
2月前
|
前端开发
【前端web入门第四天】02 CSS三大特性+背景图
本文详细介绍了CSS的三大特性:继承性、层叠性和优先级,并深入讲解了背景图的相关属性,包括背景属性、背景图的平铺方式、位置设定、缩放、固定以及复合属性。其中,继承性指子元素自动继承父元素的文字控制属性;层叠性指相同属性后定义覆盖前定义,不同属性可叠加;优先级涉及选择器权重,包括行内样式、ID选择器等。背景图部分则通过具体示例展示了如何设置背景图像的位置、大小及固定方式等。
250 91
|
20天前
|
缓存 前端开发 JavaScript
Webpack 打包的基本原理
【10月更文挑战第5天】
|
13天前
|
前端开发 UED
Webpack 中处理 CSS 和图片资源的多 Loader 配置
【10月更文挑战第12天】 处理 CSS 和图片资源是 Webpack 配置中的重要部分。通过合理选择和配置多个 Loader,可以实现对这些资源的精细处理和优化,提升项目的性能和用户体验。在实际应用中,需要不断探索和实践,根据项目的具体情况进行灵活调整和优化,以达到最佳的处理效果。通过对 Webpack 中多 Loader 处理 CSS 和图片资源的深入了解和掌握,你将能够更好地应对各种复杂的资源处理需求,为项目的成功构建和运行提供坚实的基础。
40 1
|
20天前
|
前端开发 JavaScript
ES6模块化和webpack打包
【10月更文挑战第5天】
|
15天前
|
缓存 前端开发 JavaScript
深入了解Webpack:模块打包的革命
【10月更文挑战第11天】深入了解Webpack:模块打包的革命
|
2月前
|
JavaScript 测试技术 Windows
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
本文介绍了如何使用vue-cli和webpack为Vue项目配置不同的生产和测试环境,包括修改`package.json`脚本、使用`cross-env`处理环境变量、创建不同环境的`.env`文件,并在`webpack.prod.conf.js`中使用`DefinePlugin`来应用这些环境变量。
61 2
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
|
2月前
|
前端开发
【前端web入门第三天】02 CSS字体和文本
本文详细介绍了CSS中字体和文本的相关属性。字体部分涵盖字体大小、粗细、样式、行高、字体族及`font`复合属性,通过具体示例展示了如何设置和使用这些属性。文本部分则讲解了文本缩进、对齐方式、修饰线及文字颜色等属性,并提供了实用的代码示例。此外,还简要介绍了调试工具中的一些细节,如错误属性标识和属性生效状态的控制。
62 28
|
13天前
|
缓存 前端开发 JavaScript
Webpack技术深度解析:模块打包与性能优化
【10月更文挑战第13天】Webpack技术深度解析:模块打包与性能优化
|
15天前
|
前端开发 JavaScript 开发者
深入了解Webpack:现代JavaScript应用的打包利器
【10月更文挑战第11天】 深入了解Webpack:现代JavaScript应用的打包利器
|
2月前
|
JSON 前端开发 JavaScript
不会webpack的前端可能是捡来的,万字总结webpack的超入门核心知识
该文章提供了Webpack的基础入门指南,涵盖安装配置、基本使用、加载器(Loaders)、插件(Plugins)的应用,以及如何通过Webpack优化前端项目的打包构建流程。
不会webpack的前端可能是捡来的,万字总结webpack的超入门核心知识