当前位置: 首页 > 编程日记 > 正文

手撸 webpack4.x 配置(一)

现在的前端开发框架 ,都绕不开 webpack 打包 。 但绝大数前端开发人员 基本都是用 脚手架 自动生成 一套开发环境 如: vue-cli  , create-react-app等 , 但开发中总会遇到各种问题 ,基本都是 webpack 配置问题 , 每次遇到基本都是头疼的问题 ,根本不敢动里面的配置文件  。所以出于以后开发中 更好的理解 wepback配置问题 ,决定自己搭建一套 前端开发环境 !

一 先到node官方网站 下载 node

node官网: nodejs.org/en/

个人建议 下载稳定版本的即可 ,无需最新版的 !

新建文件夹   ( webpack-demo1 )

先创建两个文件 webpack-demo/src/index.js


二  安装webpack

(1) 全局安装

npm install webpack webpack-cli -gwebpack -v   // 查看是否安装成功复制代码

(2) 局部安装  安装项目中 (webpack-demo1)  里

进入 webpack-demo 目录  ,这里我们先初始化一个工程

npm init 复制代码

这里一路 回车就可以了 , 最后一个 yes  就初始化完了

npm install webpack webpack-cli --save-dev  // 或者 npm install webpack webpack-cli -D     复制代码

这样的话 webpack 就安装到项目中了 。

webpack -v      //   这波操作 其实打印出来的 版本还是 全局的复制代码

我们可以先把全局 webpack 删除 来测试下

npm uninstall webpack webpack-cli -g复制代码

这时我们再在终端里 输入:

webpack -v 复制代码

不管是在全局还是项目中 都会报错

这里稍微有一点变化 , 我们进入项目(webpack-demo1)中输入 :

npx webpack -v   //  这时就可以正确的显示 项目中安装的 webpack 版本号复制代码


这时我们就可以安装一些 依赖包了

npm install 复制代码

这时你的文件目录应该就和我的一样了


其实这时我们可以在 项目中 新建 (webpack-demo1/index.js) 文件 ,输入: console.log("ok");

这样我们就可以打包了 。

npm webpack index.js复制代码

这时项目中 就会多个 dist 目录 里面有 main.js 文件

说明我们已经打包成功了 ,这是 webpack 给我们默认的配置。


三  修改 webpack打包配置

这时我们需要新建一个 配置文件 ( webpack-demo1/webpack.config.js )

const path = require('path');
module.exports = {  entry: './src/index.js',   // 打包的入口文件   output: {    path: path.resolve(__dirname, 'dist'),   // 打包后的文件目录    filename: 'bundle.js'                   // 打包后生成的 JS 文件  }};复制代码

这时我们把打报入口改为 src/index.js 文件了

npx webpack src/index.js 复制代码

同样可以成功打包 !

我们修改下 打包命令 ,打开 package.json文件

{  "name": "webpack-demo1",  "version": "1.0.0",  "description": "",  "scripts": {    "build": "webpack"     // 注意这一行   },  "author": "",  "license": "ISC",  "devDependencies": {    "webpack": "^4.29.6",    "webpack-cli": "^3.2.3"  }}复制代码

这时候 我们就可以愉快的打包了

npm run build复制代码

同样的可以成功打包。

webpack 其实只是JS文件打包工具 , 但这很显然是远远不够的 ,工作中我们需要打包各种各样的 静态资源  !

那就需要我们的  loader 插件了  !


四  安装 loader 打包 图片资源

npm install file-loader --save-dve复制代码


这里我们继续修改 package.json 配置文件

const path = require('path');
module.exports = {  
entry: './src/index.js',  
output: {    path: path.resolve(__dirname, 'dist'),    
filename: 'bundle.js'  
},
module: {    
rules: [{        
test: /\.(png|jpg|gif)$/,
use: [{          loader: 'file-loader',          options: {}        
}]      
}    
]  
}
};复制代码

这是我们的配置就已经完成了 ,接下来我们可以测试下

打开 webpack-demo1/index.js  文件

import file from './assets/file.jpg'复制代码

这时候 我们在打包 , 这里我们需要 在 dist 目录下 新建 index.html 文件把 bundle.js文件引入里面 !

打开 index.html 我们就可以看到 我们的图片了 !

大家也可以使用安装  ( url-loader )

npm install url-loader --save-dev复制代码

主:  file-loader 能做的 , url-loader 都可以做到

只有一点区别

module.exports = {module: {rules: [{test: /\.(png|jpg|gif)$/,use: [{loader: 'url-loader',options: {limit: 8192    //区别: 当图片小于 8192时  , 会自动转化为 base64 位 引入方式 !}}]}]}
}复制代码

准备下班了  , 简单描述 , 直接贴代码了 !

五 安装 loader 打包 css 样式资源

同样安装 

npm install css-loader style-loader --save-dev
复制代码

const path = require('path');
module.exports = {  
entry: './src/index.js',  
output: {    
path: path.resolve(__dirname, 'dist'),    
filename: 'bundle.js'  
},module: {    
rules: [{        
test: /\.(png|jpg|gif)$/,        
use: [{
loader: 'file-loader',
options: {}
}]
},      
{ 
test: /\.(css)$/,
use: [{
loader: "style-loader" // 将 JS 字符串生成为 style 节点          
},
{
loader: "css-loader"   // 将 CSS 转化成 CommonJS 模块 
}
]
}
]
}
};复制代码

这样我们就可以打包 样式文件了  。

这里我们也可以安装 css 预处理器  ( 如: less, sass, stylus )

npm install stylus stylus-loader --save-dev复制代码

我们把上面的 配置文件稍微的改变下 就可以了


改天继续完善  -  要下班了  !

请大神门手下留情 , 本人也是刚刚学习 webpack 配置  哈哈 ! 

第一次写博客 , 代码被压缩了 不知为什么 ? 求大神们指点 ,所以最后贴图了 !


转载于:https://juejin.im/post/5c88afcff265da2dc538f7e0

相关文章:

MATLAB【七】———— matlab 高斯核使用,超像素图像模拟,矩阵转图像,深度相机模型实践实现

深度模型,图片转稀疏矩阵,稀疏矩阵转图片 %% mat to 2array temp_speckle ref_speckle; [row_index,col_index,v]find(temp_speckle); obj_matrix [row_index,col_index]; [obj_matrix_height,obj_matrix_width] size(obj_matrix);%% depth camera m…

jsp 出现cannot be resolved to a type问题解决办法

&#xff08;1&#xff09;检查<% page import>是否导入了相关的包。若是没有则需导入 &#xff08;2&#xff09;若导入相应的包后问题仍然存在则需创建相关的servlet转载于:https://www.cnblogs.com/wth21-1314/p/6126655.html

U盘中毒了?教你如何删除System Volume Information这个顽固文件夹

不得不说cmd命令很好用呢。最近我的U盘中毒了&#xff0c;格式化都删除不了System Volume Information这个顽固的文件夹&#xff0c;真心伤不起哇&#xff01;还好现在解决了问题。看来以后得好好对待U盘&#xff0c;不能乱用了。本篇文章教大家如何删除System Volume Informat…

69亿美元英伟达史上最大收购!这家基金又赢了

。另一方面&#xff0c;在虚拟货币的浪潮告一段落之后&#xff0c;英伟达需要给增速放缓的数据中心业务注入一枚强心剂。 有意思的是&#xff0c;英伟达对Mellanox的收购也成就了国际知名维权对冲基金Starboard Value LP的又一次投资胜利。 击败微软、英特尔&#xff0c;交易…

基础数据结构【一】————数组

二维数组相乘&#xff0c;矩阵相乘&#xff0c; #include <iostream> using namespace std;void MatrixMultiply(int*, int*, int*, int, int, int); int main() {int M, N, P;int i, j;//矩阵A部分 cout << "请输入矩阵A的维数(M,N): " << endl;…

Fragment 和 FragmentActivity的使用

Fragment 和 FragmentActivity的使用 http://blog.csdn.net/izy0001989624/article/details/17072211转载于:https://www.cnblogs.com/as3lib/p/6126761.html

win10 VMware15 安装 CentOS6.4 64位(慢慢弄吧,别急)

参考&#xff1a;CentOS 6.4安装&#xff08;超级详细图解教程&#xff09; 可以都不勾&#xff0c;有需要&#xff0c;以后使用中有需要再手动安装 除了KDE&#xff0c;其他都选就可以了 系统管理、虚拟化、负载平衡器、高可用性可以都不选

Nginx网站常见的跳转配置实例

相信大家在日常运维工作中如果你用到nginx作为前端反向代理服务器的话&#xff0c;你会对nginx的rewrite又爱又恨&#xff0c;爱它是因为你搞定了它&#xff0c;完成了开发人员的跳转需求后你会觉得很爽&#xff0c;觉得真的很强大&#xff0c;恨它是因为当一些稀奇古怪跳转的需…

基础数据结构【二】————动态数组,单向链表及链表的反转

DEMO1&#xff1a; 动态分配变量&#xff08;链表&#xff0c;而静态数组是线性表&#xff0c;意味着动态数组访问和遍历复杂度为O&#xff08;n&#xff09;,而插入和删除复杂度为O&#xff08;1&#xff09;&#xff0c;而静态数组线性表则完全相反&#xff09; int* in…

VMware15克隆虚拟机Centos

在克隆虚拟机之前&#xff0c;我们需要了解以下文件&#xff1a; 1、/etc/udev/rules.d/70-persistent-net.rules 这是网卡有关信息的配置文件&#xff0c;我们可以先查看一下master的网卡信息&#xff08;当然也可以用ifconfig命令查看&#xff09; 要注意的是网卡名称以及…

EXPDP 时ORA-27054 问题处置

现象&#xff1a;[oracleoracle1 ~]$ expdp xian/xian schemasxian directorydumpdir dumpfilexian.dmp LOGFILExian.logExport: Release 10.2.0.5.0 - 64bit Production on Friday, 02 December, 2016 20:19:48Copyright (c) 2003, 2007, Oracle. All rights reserved.Connec…

OSC源创会往期图文回顾链接地址收藏

为什么80%的码农都做不了架构师&#xff1f;>>> 格式&#xff1a;源创会报名链接地址 - 源创会结束后图文回顾链接地址 【深圳】第1期】- 图文回顾【广州】第2期】- 图文回顾【北京】第3期】- 图文回顾【珠海】第4期】- 图文回顾【深圳】第5期】- 图文回顾--------…

ionic + cordova+angularJs 搭建的H5 App完整版总结

为期半个月的项目实践开发&#xff0c;已完整告一段落&#xff0c;团队小组获得第一名&#xff0c;辛苦总算没有白费&#xff0c;想起有一天晚上&#xff0c;整个小组的人&#xff0c;联调到12点才从公司回去&#xff0c;真是心酸。这里总结一下&#xff0c;项目过程中遇到的问…

基础数据结构【三】————老鼠走迷宫问题————堆栈应用

假设&#xff1a;老鼠在一个二维地图中i行走&#xff0c;地图中大部分路径被墙阻断&#xff0c;无法前进。老鼠可以按照尝试错误的方法找到出口。只是&#xff0c;这只老鼠必须具备走错路时候就退回来&#xff0c;并且把走过的路记下来&#xff0c;避免下次走重复路&#xff0c…

eclipse Debug中step into功能失灵的问题

step into 和 step over功能一样&#xff0c;无法进入方法内部&#xff0c;解决方法如下&#xff1a; 需要使用jdk中的jre&#xff0c;而不是独立安装的jre 再次Debug&#xff0c;当运行到断点的时候&#xff0c;点击step into&#xff08;F5&#xff09;就可以看见println函数…

Linux 基金会宣布红队项目,致力于孵化开源安全工具

百度智能云 云生态狂欢季 热门云产品1折起>>> 谁都想软件有着很高的安全性吧。毕竟&#xff0c;每一天都会有不一样的安全漏洞&#xff0c;从糟糕软件的沼泽中冒出来。 在近期举办的开源领导力峰会上&#xff0c;Linux 基金会宣布了新的红队项目&#xff08;Red Tea…

基础数据结构【四】————环形链表与多项式

主要演示环形列表节点的创建插入&#xff0c; 删除&#xff0c;遍历&#xff0c;环形链表连接 。双向链表节点的建立与插入 &#xff0c;双向链表中节点的删除 以及环形链表在多项式中的应用 DEMO1:环形链表节点的创建与插入 /* [名称]:ch03_08.cpp [示范]:环形链表节点的创…

关联scala源码

首先需要去官网下载sources 将下载好的压缩包拷贝到scala安装的lib目录下&#xff0c;解压 ctrlb以后 查看源码, 选择要查看的方法或者类, 输入 ctrl b import scala.io.StdIn 如果想看StdIn的源码&#xff0c;则将光标放在StdIn处&#xff0c;ctrlb 如果想查看io包下的内容&…

MySQL安装使用的2个问题

问题:1.遇到不输入密码能登上 ,使用密码报错.2.(解压版的) 在cmd输入>mysql –u root –p 时&#xff0c;按enter回车时&#xff0c;会叫你输入密码Enter password____,否则出现错误&#xff1a;ERROR 1045(28000):Access denied for user’root’’localhost’(using passw…

Flink1.7.2 sql 批处理示例

Flink1.7.2 sql 批处理示例 源码 https://github.com/opensourceteams/flink-maven-scala概述 本文为Flink sql Dataset 示例主要操作包括:Scan / Select,as (table),as (column),limit,Where / Filter,between and (where),Sum,min,max,avg,(group by ),group by having,disti…

ISP 【一】————boost标准库使用——批量读取保存文件 /boost第三方库的使用及其cmake添加,图像gramma

CMakeLists.txt文件中需要添加第三方库&#xff0c;并企鹅在CMakeLists.txt中添加 include_directories(${PROJECT_SOURCE_DIR}/../3party/gflags-2.2.2/include) link_directories(${PROJECT_SOURCE_DIR}/../3party/boost-1.73.0/lib-import) target_link_libraries( gram…

简单ajax类, 比较小, 只用ajax功能时, 可以考虑它

忘了哪儿转来的了, 不时的能够用上, 留存一下<script language"javascript" type"text/javascript"> /***var ajaxAjax();/*get使用方式* /ajax.get("php_server.php?id1&namexxx", function(data){ alert(data); //d…

Hadoop 三大发行版本

Hadoop三大发行版本&#xff1a;Apache、Cloudera、Hortonworks。 Apache版本最原始&#xff08;最基础&#xff09;的版本&#xff0c;对于入门学习最好。 Cloudera在大型互联网企业中用的较多。 Hortonworks文档较好。 1. Apache Hadoop 官网地址&#xff1a;http://had…

MongoDB主动撤回SSPL的开源许可申请

2018年10月&#xff0c;MongoDB将其开源协议更换为SSPL&#xff0c;虽然在当时引起了很大的争议&#xff0c;但是MongoDB始终坚信SSPL符合符合开源计划的批准标准&#xff0c;并向Open Source Initiative &#xff08;以下简称OSI&#xff09;提交了申请。不过&#xff0c;近日…

MATLAB【八】———— matlab 读取单个(多个)文件夹中所有图像

0.matlab 移动&#xff08;复制&#xff09;文件到另一个文件夹 sourcePath .\Square_train; targetPath .\Square_test; fileList dir(sourcePath); for k 3 :5: length(fileList) movefile([sourcePath,\,fileList(k).name],targetPath); end %copyfile([sourcePat…

JAVA IO学习

2019独角兽企业重金招聘Python工程师标准>>> 很多初学者接触IO时&#xff0c;总是感觉东西太多&#xff0c;杂乱的分不清楚。其实里面用到了装饰器模式封装&#xff0c;把里面的接口梳理一下之后&#xff0c;就会觉得其实蛮清晰的 相关的接口和类 接口或类描述Input…

Java面向对象三大特征 之 多态性

1、理解多态性&#xff1a;可以理解为一个事物的多种形态 2、对象的多态性&#xff1a;父类的引用指向子类的对象&#xff08;子类的对象赋给父类的引用&#xff09; 3、多态的使用&#xff1a;虚拟方法的调用 子类中定义了与父类同名同参数的方法&#xff08;重写&#xff…

Bootstrap3基础 btn-group-vertical 按钮组(横着、竖着排列)

内容参数OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor Visual Studio Code 1.32.1 typesetting Markdowncode <!DOCTYPE html> <html lang"zh-CN"><head><meta charset&quo…

ISP【二】————camera ir图

1. 加串解串芯片作用&#xff1f; A: 加串和解串是成对出现的&#xff0c;串行器在模组内&#xff0c;将并行信号转换为串行信号&#xff0c;然后用一根线可以实现远距离传输。sensor输出的raw data如果不加串&#xff0c;需要&#xff18;根线传输&#xff0c;很难传输很远&a…

Hadoop运行模式 之 本地运行模式

Hadoop的运行模式包括&#xff1a;本地模式、伪分布式模式以及完全分布式模式 Hadoop官网地址&#xff1a;https://hadoop.apache.org/ 本次使用的Hadoop的版本是2.7.2 官网文档&#xff1a;https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/Single…