webpack

官方:

https://webpack.js.org/

http://webpack.github.io/

中文:

https://www.webpackjs.com/

资料:

https://segmentfault.com/a/1190000006178770


学习入口:

官网----->1 中文文档-->指南

     2 立即开始

安装webpack:

1、3.x

安装 cnpm i -D webpack@3.8.1

卸载 npm un -D webpack

2、4.x

安装 cnpm i -D webpack webpack-cli


局部安装验证版本:

webpack -v 错误 —— 全局安装

1、node_modules/.bin/webpack -v

2、npx webpack -v

3、工程文件 package.json

  1. "scripts": {
  2. "test": "webpack -v"
  3. },
  4. 运行npm run test

webpack3 翻译器 ES6-->ES5 babel

webpack src dist

npx webpack js/index.js dist/index.bundle.js

文件不会被压缩!


webpack4 翻译器 ES6-->ES5 babel

webpack --mode=development src -o dist 正确的格式

npx webpack --mode=development js/index.js dist/index.bundle.js --->main.js

npx webpack --mode=development js/index.js --output dist/index.bundle.js

文件会被压缩!

简写:webpack --mode=development

前提条件:

1、源src 必须是 src/index.js

       输出: 默认 dist/main.js


配置文件: webpack.config.js

执行:webpack

指定执行某一个具体的文件: 必须带上 --config

webpack --config webpack.dev.config.js


loader:处理资源 从右往左进行处理
cnpm i -D style-loader css-loader

css-loader:加载css文件

style-loader:处理样式 页面生成style标签

sass:

cnpm i -D sass-loader node-sass

less:

cnpm i -D less-loader less


cnpm i -D url-loader file-loader

file-loader:处理文件 单纯的把文件复制到目标路径 重命名

url-loader 依赖 file-loader :把文件转成base64

exp:


  1. module.exports = {
  2. mode:"development",
  3. entry:"./src/index.js", //引入模块 ./
  4. output:{
  5. path:`${__dirname}/dist/`, //必须是一个绝对路径
  6. filename:"index.bundle.js"
  7. },
  8. module: {
  9. rules: [
  10. {
  11. test: /\.css$/,
  12. use: ['style-loader','css-loader']
  13. },
  14. //sass
  15. {
  16. test: /\.scss$/,
  17. use: ['style-loader','css-loader','sass-loader']
  18. },
  19. //less
  20. {
  21. test: /\.less$/,
  22. use: ['style-loader','css-loader','less-loader']
  23. },
  24. {
  25. test: /\.(png|jp(e)?g|gif)$/,
  26. use: ["url-loader"]
  27. }
  28. ]
  29. }
  30. }

  1. model:{ 模块、包
  2. rules:[ //规则
  3. {test:/正则/use:[xxxx-loader]} use:使用什么
  4. loader进行处理
  5. ]
  6. }
  7. indes.js
  8. import $ from "jquery";
  9. import "./asset/1.css";
  10. import img from "./asset/111.jpg"
  11. $(function(){
  12. $("#div1").click(function(){
  13. //$(this).addClass("active");
  14. // alert(img);
  15. $(this).css({
  16. width:"330px",
  17. height:"495px",
  18. background:`url(${img})`
  19. });
  20. });
  21. });

res:




生成页面 index.html

cnpm i -D html-webpack-plugin

new HtmlWebpackPlugin()

  1. new HtmlWebpackPlugin({
  2. //title: 'My App',
  3. template: 'public/index.html',用户模板文件
  4. filename: 'index.html', 生成的页面 可以不写 默认就是index.html
  5. hash:true 防止js/css缓存
  6. })

ExtractTextWebpackPlugin 在 webpack4中被废弃 替换者 mini-css-extract-plugin

cnpm i -D mini-css-extract-plugin

mini-css-extract-plugin++应用场景只在开发阶段++!

++在生产阶段换成 style++


--watch 简写 -w 实时编译 问题 不能主动刷新页面
webpack-dev-server 服务器

不能实时编译,可以实时刷新页面

cnpm i -D webpack-dev-server

webpack.config.js

  1. const webpack = require('webpack');
  2. const path = require("path");
  3. const HtmlWebpackPlugin = require('html-webpack-plugin');
  4. const MiniCssExtractPlugin = require("mini-css-extract-plugin");
  5. // webpack --mode=development src/index.js --output dist/main.js
  6. module.exports = {
  7. mode:"development",
  8. entry:"./src/index.js",//模块 ./
  9. output:{
  10. path:path.resolve(__dirname,"dist"),//绝对路径
  11. filename:"main.js"
  12. },
  13. devServer: {
  14. contentBase: "./dist", //资源目录 www/public
  15. index: 'main.js',
  16. host:"localhost",
  17. port:9000,
  18. open:true,// --open
  19. hot: true,
  20. compress: true, //gzip压缩
  21. // proxy: {
  22. // '/api': {
  23. // target: 'https://other-server.example.com',
  24. // secure: false
  25. // }
  26. // }
  27. },
  28. module: {
  29. rules: [
  30. // { test: /\.css$/, use: ["style-loader","css-loader"] },
  31. {
  32. test: /\.css$/,
  33. use: [
  34. MiniCssExtractPlugin.loader,
  35. "css-loader"
  36. ]
  37. },
  38. { test: /\.(png|jp(e)?g|gif|svg|icon)$/,use: ["file-loader"] },
  39. ]
  40. },
  41. plugins: [
  42. new webpack.NamedModulesPlugin(),
  43. new webpack.HotModuleReplacementPlugin(),
  44. new webpack.BannerPlugin('版权所有,翻版必究'),
  45. //new HtmlWebpackPlugin()
  46. new HtmlWebpackPlugin({
  47. template: 'public/index.html',
  48. filename: 'index.html',
  49. hash:true
  50. }),
  51. new MiniCssExtractPlugin({
  52. filename: "[name].css",
  53. chunkFilename: "[id].css"
  54. })
  55. ]
  56. }

css/url/file/babel/vue-loader

css分离(mini-css-extract-plugin)

HtmlWebpackPlugin

HtmlWebpackPlugin —— Clean...

babel

26.webpack 入门的更多相关文章

  1. Webpack 入门指南 - 3. Hello, Angular2!

    Webpack 入门指南 - 1.安装 Webpack 入门指南 - 2.模块 这一次,我们使用 Webpack 来打包 Angular 2 的应用. 与官方的 Hello, Angular 2 项目 ...

  2. webpack入门(2)

    webpack入门(2) ps:每个案例都是基于前一个案例改造的 webpack入门(1) 戳这里 案例源码戳这里 十二.ProvidePlugin 自动加载模块 new webpack.Provid ...

  3. 【一小时入门】webpack 入门指南

    什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 我们可以 ...

  4. webpack入门(1)

    webpack入门(1) 源码戳这里 ps:每个案例对应相应的demo,例如"案例1"对应"demo1" 一.webpack基本功能及简单案例 安装webpac ...

  5. webpack入门教程之Hello webpack(一)

    webpack入门教程系列为官网Tutorials的个人译文,旨在给予想要学习webpack的小伙伴一个另外的途径.如有不当之处,请大家指出. 看完入门教程系列后,你将会学习到如下内容: 1.如何安装 ...

  6. webpack入门——webpack的安装与使用

    一.简介 1.什么是webpack webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. ...

  7. 一小时包教会 —— webpack 入门指南

    什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 我们可以 ...

  8. Webpack 入门指南 - 2.模块

    这一次我们谈谈模块问题. 通常我们希望这个项目可以分为多个独立的模块,比如,上一次提高的 hello 函数,如果我们定义为一个模块,其它模块引用之后,直接调用就好了.在前端怎么使用模块呢?这可说来话长 ...

  9. Webpack 入门指南 - 1.安装

    Webpack 是目前流行的打包工具,如何安装它呢? 1. 安装 Node Js 首先,Webpack 是基于 NodeJs 的工具,你必须首先安装 NodeJs. NodeJs 仅仅只需要在你的系统 ...

随机推荐

  1. Mysql取随机数据效率测试(200W条中读取100条)

    第一种方案: SELECT * FROM `follow_record` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(record_id) FROM ...

  2. SpringCloud无废话入门05:Spring Cloud Gateway路由、filter、熔断

    1.什么是路由网关 截至目前为止的例子中,我们创建了一个service,叫做:HelloService,然后我们把它部署到了两台服务器(即提供了两个provider),然后我们又使用ribbon将其做 ...

  3. iOS:检测多媒体(相机、相册、麦克风)设备权限,弹框提示

    一.感言 新年伊始,万象更新,一转眼,就2019年了. 作为一个科班生,从事移动端开发好几年了,回顾曾经的摸爬滚打,兢兢业业,严格的来说,多少算是入行了. 过去成绩如何暂且不说,新的一年,我当加倍努力 ...

  4. grid - 通过网格线名称设置网格项目位置

    使用网格线名称设置网格项目位置和使用网格线号码设置网格项目位置类似. 1.引用网格线名称的时候不应该带方括号 <view class="grid"> <view ...

  5. protobuf 动态创建

    https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html https://originlee.com/2015/03/14/ana ...

  6. 机械臂运动学逆解(Analytical solution)

    计算机器人运动学逆解首先要考虑可解性(solvability),即考虑无解.多解等情况.在机器人工作空间外的目标点显然是无解的.对于多解的情况从下面的例子可以看出平面二杆机械臂(两个关节可以360°旋 ...

  7. linux 通过nvm安装node

    官方介绍:https://github.com/creationix/nvm#installation PS:通常不要用root权限安装软件,因为线上任何服务部署都不允许用root,其他软件用root ...

  8. 试水STF(smartphone test farm)

    STF简介 简介: STF , smartphone test farm, 是一款能够通过浏览器远程管理智能设备的系统, 能为移动自动化测试提供方便快捷的服务,免去测试工程师的后顾之忧. 功能点: 支 ...

  9. 快速搭建python程序

    公司对外提供了http接口服务,涉及到了des加密,有客户用Python开发,但搞不定加密,客户的问题就是大问题,虽然以前没接触过Python,也只能硬着头皮上,不停的baidu各种资料,从环境搭建. ...

  10. 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

    <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑  链接☛☛☛ <数据结构>课本源码合辑 习题集全解析  链接☛☛☛  ...