一、概况

①webpack不仅可以打包JavaScript模块,甚至它把网页开发中的一切资源的都可以当作模块来打包处理

②但是webpack本身不支持,它只是一个打包平台,其他资源,例如css、less、sass、img等资源需要结合插件来实现,这些插件在webpack里被称为loader(加载器)

二、webpack打包其他资源

1、打包 css模块

①安装依赖:style-loader  css-loader

// css-loader 的作用是把css文件转为JavaScript模块
// style-loader的作用是动态的创建style节点插入到head中

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

②准备css文件,并加载

②配置(module部分)

// 该文件其实最终是要在node环境下执行的
const path = require('path')// 导出一个具有特殊属性配置的对象
module.exports = {entry:'./src/main.js',/* 入口文件模块路径 */output:{path:path.join(__dirname,'./dist/'),/* 出口文件模块所属目录,必须是一个绝对路径 */filename:'bundle.js'/* 打包的结果文件名称 */},module:{rules:[{test:/\.css$/,use:[//注意:这里的顺序很重要,不要乱了顺序'style-loader','css-loader']}]}
}

③打包

npm run build

2、打包图片资源

①安装依赖:file-loader

npm install --save-dev file-loader

②准备图片和其他文件

③配置

// 该文件其实最终是要在node环境下执行的
const path = require('path')// 导出一个具有特殊属性配置的对象
module.exports = {entry:'./src/main.js',/* 入口文件模块路径 */output:{path:path.join(__dirname,'./dist/'),/* 出口文件模块所属目录,必须是一个绝对路径 */filename:'bundle.js'/* 打包的结果文件名称 */},module:{rules:[{test:/\.css$/,use:[//注意:这里的顺序很重要,不要乱了顺序'style-loader','css-loader']},{test:/(jpg|png|gif|svg)$/,use:['file-loader']}]}
}

④问题:当运行打包指令,会发现图片已经打包成功,但是打开index.html会发现没有加载到图片,原因就是图片资源位于打包结果dist文件夹下,无法被访问到,解决方案就是把index.html放到dist目录里。但是dist是打包编译的结果,而非源码,所以把index.htm放到dist就不合适。而且,如果打包结果的文件名bundle.js一旦改变,则index.html里script引入也要手动修改。综合以上遇到的问题,可以使用一个插件html-web-plugin,解决上面两个问题

⑤安装依赖:html-webpack-plugin

npm install --save-dev html-webpack-plugin

⑥配置

// 该文件其实最终是要在node环境下执行的
const path = require('path')
const htmlWebpackPlugin = require('html-webpack-plugin')// 导出一个具有特殊属性配置的对象
module.exports = {entry:'./src/main.js',/* 入口文件模块路径 */output:{path:path.join(__dirname,'./dist/'),/* 出口文件模块所属目录,必须是一个绝对路径 */filename:'bundle.js'/* 打包的结果文件名称 */}, plugins:[// 该插件可以把index.html打包到bundle.js文件所属目录,跟着bundle走// 同时也会自动在index.html中注入script引用链接,并且引用的资源名称,也取决于打包的文件名称new htmlWebpackPlugin({template:'./index.html'}) ],module:{rules:[{test:/\.css$/,use:[//注意:这里的顺序很重要,不要乱了顺序'style-loader','css-loader']},{test:/(jpg|png|gif|svg)$/,use:['file-loader']}]}
}

可以把根目录index.html的script引用注释

    <!-- <script src="src/main.js"></script> --><!-- 需要把打包过后生成的文件引入 --><!-- <script src="dist/bundle.js""></script> -->

⑦打包

npm run build

3、打包less文件,Font字体、sass文件等更多资源查看文档:https://www.webpackjs.com/loaders/

4、补充:如果实时监控代码改变,并且自动打包和打包后自动刷新浏览器,可以使用插件 webpack-dev-server

①安装依赖

npm install --save-dev webpack-dev-server

②配置

// 该文件其实最终是要在node环境下执行的
const path = require('path')
const htmlWebpackPlugin = require('html-webpack-plugin')// 导出一个具有特殊属性配置的对象
module.exports = {entry:'./src/main.js',/* 入口文件模块路径 */output:{path:path.join(__dirname,'./dist/'),/* 出口文件模块所属目录,必须是一个绝对路径 */filename:'bundle.js'/* 打包的结果文件名称 */}, devServer:{// 配置webpack-dev-server的www目录 contentBase:'./dist'},plugins:[// 该插件可以把index.html打包到bundle.js文件所属目录,跟着bundle走// 同时也会自动在index.html中注入script引用链接,并且引用的资源名称,也取决于打包的文件名称new htmlWebpackPlugin({template:'./index.html'})],module:{rules:[{test:/\.css$/,use:[//注意:这里的顺序很重要,不要乱了顺序'style-loader','css-loader']},{test:/(jpg|png|gif|svg)$/,use:['file-loader']}]}
}

③配置npm script

{"name": "webpackdemo","version": "1.0.0","description": "","main": "webpack.config.js","scripts": {"build": "webpack","watch-build": "webpack --watch","dev": "webpack-dev-server --open"},"keywords": [],"author": "","license": "ISC","devDependencies": {"css-loader": "^1.0.0","file-loader": "^1.1.11","html-webpack-plugin": "^3.2.0","style-loader": "^0.21.0","webpack": "^4.16.3","webpack-cli": "^3.1.0","webpack-dev-server": "^3.1.5"}
}

④执行指令:该工具会自动打包,打包完毕后会自动开启一个服务器,默认监听8080端口,同时自动打开浏览器访问,接下来会自动监视代码的改变,然后自动编译,编译完毕,自动刷新浏览器。

npm run dev

转载于:https://www.cnblogs.com/EricZLin/p/9405413.html

webpack资源管理相关推荐

  1. Webpack 资源管理

    资源管理 提示: 版本问题 本文基于 webpack 2.x 版本.webpack 2.x 相比 webpack 1.x 有重大改变.所以,如果你的项目中已使用了 webpack 1.x ,本教程的示 ...

  2. Webpack 代码分离

    Webpack 代码分离 ? 提示: 版本问题 本文基于 webpack 2.x 版本.webpack 2.x 相比 webpack 1.x 有重大改变.所以,如果你的项目中已使用了 webpack ...

  3. 基于webpack搭建前端工程解决方案探索

    关于前端工程 \\ 下面是百科关于"软件工程"的名词解释: \\ \ 软件工程是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科. \ \\ 其中,工程化是方法,是 ...

  4. webpack:两小时极速入门

    目录 webpack webpack简介 webpack起步 webpack:管理静态资源 webpack:加载CSS资源 webpack:加载图片资源 webpack:加载字体资源 webpack: ...

  5. Webpack 概念

    概念 webpack 是一个现代的 JavaScript 应用程序的模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图表(dependency ...

  6. 十次方需求分析与技术架构、Node.js、包资源管理器NPM、Webpack

    1 十次方需求分析与技术架构 1.1 十次方是个什么样的网站 <十次方>是程序员的专属社交平台,包括头条.问答.活动.交友.吐槽.招聘六大 频道.如图所示: 十次方名称的由来:2的10次方 ...

  7. Webpack中Loader和Plugin的区别和编写思路

    由于webpack基于发布订阅模式,在运行的生命周期中会广播出许多事件,插件通过监听这些事件,就可以在特定的阶段执行自己的插件任务 一.区别 前面两节我们有提到Loader与Plugin对应的概念,先 ...

  8. webpack基础概念

    中文文档:https://webpack.docschina.org/concepts/ 一个现代 JavaScript 应用程序的静态模块打包器(static module bundler). 在 ...

  9. 用vue+webpack搭建的前端项目结构

    上个项目第一次用到vue+webpack,也是我第一次尝试自动化.模块化的开发方式,总的来说就是结构太烂,开发体验差,效率低,难维护.细数的罪状有如下几条 没有servies层,全部ajax接口都和逻 ...

最新文章

  1. 跟我一起写 Makefile(十三)
  2. 开源机器学习:R Meets Weka zz
  3. 【计算机网络】详解HttpURLConnection
  4. Python 把较长的一行代码分成多行的技巧
  5. PHP独特学习模式_php基础知识
  6. Django简介以及安装
  7. 基于深度学习模型WideDeep的推荐
  8. linux无法下载ftp,linux 不能下载怎么办
  9. 404 为什么是 404?
  10. Qt使用Qtxlsx读写xlsx文件
  11. 将一个数转化为二进制java_java将一个整数转化成二进制代码示例
  12. autojs- 联众识别
  13. 动态EXCEL数据透视表
  14. win10运行python没有硬编码器_windows下关于python的编解码问题
  15. python股票量化交易系统源码_经典的股票量化交易策略(含源码)
  16. 电脑提示文件或目录损坏且无法读取
  17. 领英常见问题,猎头如何导出Linkedin全球6亿人才资料
  18. 域控制器组策略:域用户加入域,默认加入本地管理员组
  19. 使用ST-LINK下载STM32程序
  20. 最新版本的Google Chrome浏览器如何设置网页编码?

热门文章

  1. MQ监听 linux,RabbitMQ的安装,配置,监控
  2. ajax页面载入动画,添加加载动画,jQuery的AJAX .load()
  3. transformers tokenizer_summary
  4. C语言 static
  5. CentOS7的安装和配置
  6. php7.1 伪静态失效,解决CodeIgniter伪静态失效
  7. vSAN 监测失败并显示错误:“未能生成 HTML 包:Gem::Package::TooLongFileName: (Failed to generate HTML bundle: Gem::Pac
  8. python中的字典和类的区别_Python:我应该使用类还是字典?
  9. LOJ 6281 数列分块入门 5
  10. 2018最有影响力的CRM系统排行榜