webpack常用配置

1.加载CSS
命令行输入

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

webpack.config.js配置如下

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

文件结构如下

  webpack-demo|- package.json|- webpack.config.js|- /dist|- bundle.js|- index.html|- /src
+   |- style.css|- index.js|- /node_modules

style.css

.hello {color: red;
}

src/index.js

  import _ from 'lodash';
+ import './style.css';function component() {var element = document.createElement('div');// Lodash, now imported by this scriptelement.innerHTML = _.join(['Hello', 'webpack'], ' ');
+   element.classList.add('hello');return element;}document.body.appendChild(component());

命令行 npm run build

2.加载图片

npm install --save-dev file-loader

这里的文件结构将要发生变化,以下内容将于实际的开发调试相关


  webpack-demo|- package.json|- webpack.config.js|- /dist|- /src|- index.js
+   |- print.js|- /node_modules

3.HtmlWebpackPlugin 自动生成index.html

命令行

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

src/print.js

export default function printMe() {console.log('I get called from print.js!');
}

src/index.js

  import _ from 'lodash';
+ import printMe from './print.js';function component() {var element = document.createElement('div');
+   var btn = document.createElement('button');element.innerHTML = _.join(['Hello', 'webpack'], ' ');+   btn.innerHTML = 'Click me and check the console!';
+   btn.onclick = printMe;
+
+   element.appendChild(btn);return element;}document.body.appendChild(component());

webpack.config.js

  const path = require('path');
+ const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {entry: {
-     index: './src/index.js',
+     app: './src/index.js',
+     print: './src/print.js'},output: {
-     filename: 'bundle.js',
+     filename: '[name].bundle.js',path: path.resolve(__dirname, 'dist')},
+   plugins: [
+     new HtmlWebpackPlugin({
+       title: 'Output Management'
+     })
+   ],};

先删除dist/index.html,然后命令行 npm run build, 观察现象

4.Source maps
用于调试时,控制台精准定定位错误位置。这里只介绍一个简单的 'inline-source-map'。
webpack.config.js

 const path = require('path');const HtmlWebpackPlugin = require('html-webpack-plugin');const CleanWebpackPlugin = require('clean-webpack-plugin');module.exports = {entry: {app: './src/index.js',print: './src/print.js'},
+   devtool: 'inline-source-map',plugins: [new CleanWebpackPlugin(['dist']),new HtmlWebpackPlugin({title: 'Development'})],output: {filename: '[name].bundle.js',path: path.resolve(__dirname, 'dist')}};

5.webpack-dev-server 热更新
首先命令行

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

webpack.config.js

  const path = require('path');const HtmlWebpackPlugin = require('html-webpack-plugin');const CleanWebpackPlugin = require('clean-webpack-plugin');module.exports = {entry: {app: './src/index.js',print: './src/print.js'},devtool: 'inline-source-map',
+   devServer: {
+     contentBase: './dist'
+   },plugins: [new CleanWebpackPlugin(['dist']),new HtmlWebpackPlugin({title: 'Development'})],output: {filename: '[name].bundle.js',path: path.resolve(__dirname, 'dist')}};

package.json

 {"name": "development","version": "1.0.0","description": "","main": "webpack.config.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1",
+     "start": "webpack-dev-server --open","build": "webpack"},"keywords": [],"author": "","license": "ISC","devDependencies": {"clean-webpack-plugin": "^0.1.16","css-loader": "^0.28.4","csv-loader": "^2.1.1","file-loader": "^0.11.2","html-webpack-plugin": "^2.29.0","style-loader": "^0.18.2","webpack": "^3.0.0","xml-loader": "^1.2.1"}}

最后 npm start 启动热加载,更改文件浏览器会自动刷新。

关于热加载的配置还可以使用 watch mode 和webpack-dev-middleware。 其中watch mode就是在package.json文件的"scripts"属性下添加

.......
"scripts": {"watch": "webpack --progress --watch",},
.......

转载于:https://www.cnblogs.com/renzhiwei2017/p/7676926.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《实用软件架构:从系统环境到软件部署 》——2.4 架构视图与架构视点

本节书摘来自华章出版社《实用软件架构:从系统环境到软件部署》一书中的第2章,第2.4节,作者:[印]蒂拉克米特拉(Tilak Mitra)著,爱飞翔 译,更多章节内容可以访问云栖社区“华章计算机…

TCP:当初取代NCP,如今害怕被取代

我叫TCP(Transmission Control Protocol)也叫传输控制协议。不觉回忆1983年,亲手将NCP协议淘汰,取而代之的是我,成了火遍大江南北的网络红人之一。现如今,我感受到前所未有的恐惧,因为我一生的敌…

js截取字符串实例

// JS截取字符串可使用 substring()或者slice() // // 函数:substring() // 定义:substring(start,end)表示从start到end之间的字符串,包括start位置的字符但是不包括end位置的字符。 // 功能:字符串截取,…

PHP 使用 OSS 批量删除图片

1、控制器 OssImageController.php&#xff08;不必关注此层&#xff09; <?php declare(strict_types 1); namespace app\controllers; use app\services\OssImageService; class OssImageController extends BaseController {/*** oss 批量删除图片** throws null*/pub…

批处理中的IF详解

在CMD使用IF /?打开IF的系统帮助会发现IF有3种基本的用法! 第一种用法&#xff1a;IF [NOT] ERRORLEVEL number command 这种用法现在很少用了&#xff0c;因为它需要使用到CHOICE命令&#xff0c;这个命令现在被set /p代替了&#xff0c;它是判断CHOICE命令选择的选项的&…

fullcalendar 显示的时间间隔只有四十五分钟_【体能新视点】——女子篮球运动员比赛期间的心率、血乳酸浓度和时间运动分析...

女子篮球运动员比赛期间的心率、血乳酸浓度和时间-运动分析—摘要—本研究的目的是检验女子篮球运动员在比赛规则改变后的生理需求和运动模式。在九场正式比赛中&#xff0c;对九名大学代表队队员进行了研究。每场比赛都被录像以确定主要动作的频率&#xff0c;连续记录心率&am…

《JavaScript机器人编程指南》——1.2 NodeBot是什么,基本词汇还有哪些

本节书摘来异步社区《JavaScript机器人编程指南》一书中的第1章&#xff0c;第1.2节&#xff0c;作者&#xff1a;【美】Kassandra Perch&#xff08;珀芝&#xff09;&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 NodeBot是什么&#xff0c;基本词…

解决在Python中使用Win32api报错的问题,No module named win32api

一、系统环境 操作系统: Win7 64位 Python&#xff1a;3.7.0 二、在使用import win32api时&#xff0c;报错:No module named win32api 网上查到有下面解决办法&#xff1a; 方法1&#xff1a;pip install pypiwin32或pip3 install pypiwin32 或 python -m pip install pypiwin…

web网页调用本地cs客户端程序exe

1.reg注册表文件注册WST Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\WST]"URL Protocol""C:\\WSTStart.exe""WSTProtocol"[HKEY_CLASSES_ROOT\WST\DefaultIcon]"C:\\WSTStart.exe,1"[HKEY_CLASSES_ROOT\WST\shell][HKEY…

国庆快乐!

加油我的国&#xff01;繁荣强大我的国&#xff01;

《Python游戏编程入门》——1.2 初识Python

本节书摘来自异步社区《Python游戏编程入门》一书中的第1章&#xff0c;第1.2节&#xff0c;作者[美]Jonathan S. Harbour &#xff0c;李强 译&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 初识Python Python既是一个软件工具包&#xff0c;也是一种…

大数据:Parquet文件存储格式

一、Parquet的组成 Parquet仅仅是一种存储格式&#xff0c;它是语言、平台无关的&#xff0c;并且不需要和任何一种数据处理框架绑定&#xff0c;目前能够和Parquet适配的组件包括下面这些&#xff0c;可以看出基本上通常使用的查询引擎和计算框架都已适配&#xff0c;并且可以…

“数据门”事件频发 如何避免人为因素导致数据泄露?

前段时间&#xff0c;某酒店集团数据泄露引起轩然大波&#xff0c;泄露的数据中包含了用户姓名、手机号、邮箱、号等多项信息。卖家对这个约5亿条数据打包出售价格为8比特币或520门罗币。而关于此次信息泄露事件的原因&#xff0c;目前尚未定论。据悉&#xff0c;由于集团某程序…

lamda获取参数集合去空_JAVA集合框架知识

1. Vector用法和ArrayList区别(1) Vector的特有方法有哪些&#xff1f;void addElement(E obj) 将指定的组件添加到此向量的末尾&#xff0c;将其大小增加1。(2) Vector与ArrayList的区别是什么&#xff1f;①Vector的add()方法是同步方法&#xff0c;ArrayList的add()方法是非…

阿里云ECS服务器多种实例规格如何选择

一、什么是 ECS 云服务器ECS&#xff08;Elastic Compute Service&#xff09;是一种简单高效、处理能力可弹性伸缩的计算服务。 二、常见的几种实例规格 &#xff11;、个人类 &#xff08;1&#xff09;突发型&#xff08;t5、t6&#xff09; 特点&#xff1a;性能基线和积…

Blazor学习之旅(2)第一个Blazor应用

【Blazor】| 总结/Edison Zhou大家好&#xff0c;我是Edison。最近在学习Blazor做全栈开发&#xff0c;因此根据老习惯&#xff0c;我会将我的学习过程记录下来&#xff0c;一来体系化整理&#xff0c;二来作为笔记供将来翻看。本篇我们来构建第一个Blazor Web应用&#xff0c;…

《深入理解Hadoop(原书第2版)》——2.6本章小结

本节书摘来自华章计算机《深入理解Hadoop&#xff08;原书第2版&#xff09;》一书中的第2章&#xff0c;第2.6节&#xff0c;作者 [美]萨米尔瓦德卡&#xff08;Sameer Wadkar&#xff09;&#xff0c;马杜西德林埃&#xff08;Madhu Siddalingaiah&#xff09;&#xff0c;杰…

HTTP与服务器的四种交互方式

Http定义了与服务器交互的不同方法&#xff0c;最基本的方法有4种&#xff0c;分别是GET&#xff0c;POST&#xff0c;PUT&#xff0c;DELETE。URL全称是资源描述符&#xff0c;我们可以这样认为&#xff1a;一个URL地址&#xff0c;它用于描述一个网络上的资源&#xff0c;而H…

ubuntu 以太网已连接但是无法联网_工业以太网有多“牛X”?两个案例告诉你

现代生活中&#xff0c;工业以太网发挥的作用愈来愈重要。为增进大家对工业以太网的认识&#xff0c;本文将基于3方面介绍工业以太网&#xff1a;何为工业以太网物理层&#xff1f;工业以太网具有哪些优势&#xff1f;工业以太网两大方案介绍。如果你对工业以太网具有兴趣&…

高可用架构可行性方案

一、动静分离 把静态的&#xff0c;耗费大量带宽资源、请求资源的数据独立出来&#xff0c;缓存到cdn里去&#xff0c;包括产品详情页&#xff0c;图片、视频、js、css通通打包放到cdn里去&#xff0c;封住一部分流量&#xff0c;用cdn去承担。 二、热数据预热缓存 将一些热点数…