webpack基本配置

webpack

中间可能会出现cnpm , npm ,yarn等三种安装方式,其实最终安装的结果都是一样的,只是安装的方式不一样

1.安装webpack

 npm i webpack -g全局安装webpack
 //在项目根目录中运行npm i webpack --save-dev安装到项目依赖中

1.webpack配置文件

  1. 在项目根目录中创建webpack.config.js

  2. 由于运行webpack命令的时候,webpack需要指定入口文件和输出文件的路径,所以,我们需要在webpack.config.js中配置这两个路径:

 // 导入处理路径的模块
  var path = require('path');
 ​
 // 导出一个配置对象,将来webpack在启动的时候,会默认来查找webpack.config.js,并读取这个文件中导出的配置对象,来进行打包处理
  module.exports = {
  entry: path.resolve(__dirname, 'src/js/main.js'), // 项目入口文件
  output: { // 配置输出选项
  path: path.resolve(__dirname, 'dist'), // 配置输出的路径
  filename: 'bundle.js' // 配置输出的文件名
  }
  }

2.项目入口/项目出口

1.配置完之后,直接用webpack进行打包,就会输出对应的文件夹

3.下载html-webpack--plugin插件

 yarn add html-webpack-plugin --dev
//html-webpack-plugin。它会自动帮你生成一个 html 文件,并且引用相关的 assets 文件(如 css, js)。
 var HtmlWebpackPlugin = require('html-webpack-plugin');
 plugins: [new HtmlWebpackPlugin({
  template: './src/index.html' //输出的路径
  })]

4.打包js脚本

官方入口:https://webpack.js.org/loaders/babel-loader/#root

1.安装

npm install -D babel-loader @babel/core @babel/preset-env webpack
 module: {
  rules: [
  {
      test: /\.m?js$/,
      exclude:  /(node_modules|bower_components)/,
      use: {
        loader: 'babel-loader',
        options: {presets: ['@babel/preset-env']
          }
        }
      }
    ]
 }

8.启动热更新,配置端口号

  • 修改package.json的script节点

    • --open`表示自动打开浏览器

    • --port 4321表示打开的端口号为4321,

    • --hot`表示启用浏览器热更新,不开启就自动刷新:

 "dev": "webpack-dev-server --hot --port 4321 --open"

5.打包css文件

1.安装

 cnpm i style-loader css-loader --save-dev

2.配置(webpack.config.js)

 module: { // 用来配置第三方loader模块的
  rules: [ // 文件的匹配规则
    { test: /\.css$/, use: ['style-loader', 'css-loader'] }//处理css文件的规则 ]
  }
  • use表示使用哪些模块来处理test所匹配到的文件;use`中相关loader模块的调用顺序是从后向前调用的;

使用webpack打包less文件

1.安装

cnpm i less-loader less -D</pre>
  1. 修改webpack.config.js这个配置文件:
{ test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] }

使用webpack打包sass文件

  1. 安装
cnpm i sass-loader node-sass --save-dev
  1. webpack.config.js中添加处理sass文件的loader模块:
 { test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }

使用webpack处理css中的路径

1.安装

npm install --save-dev style-loader css-loader
   module: {
      rules: [
        {
          test: /\.css$/,
          use: [
            'style-loader',
            'css-loader'
          ]
        }
      ]
   }

使用babel处理高级ES6语法

1.安装

cnpm i babel-core babel-loader babel-plugin-transform-runtime --save-dev安装babel的相关loader包
//7.1.5版
npm install babel-loader@7.1.5

运行cnpm i babel-preset-es2015 babel-preset-stage-0 --save-dev安装babel转换的语法</pre>

  1. webpack.config.js中添加相关loader模块,其中需要注意的是,一定要把node_modules文件夹添加到排除项:
{ test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ }</pre>
  1. 在项目根目录中添加.babelrc文件,并修改这个配置文件如下:
 {
  "presets":["es2015", "stage-0"],
  "plugins":["transform-runtime"]
 }</pre>
  1. 注意:语法插件babel-preset-es2015可以更新为babel-preset-env,它包含了所有的ES相关的语法;*

处理图片

npm install --save-dev file-loader</pre>
 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' ] },
        { test: /\.(png|svg|jpg|gif)$/, use: [ 'file-loader' ]
        }
      ]
    }
  };

处理比较小的图片

 npm install url-loader --save-dev</pre>
module.exports = {
  module: {
      rules: [
      {test: /\.(png|jpg|gif)$/i,use: [{ loader: 'url-loader',options: { limit: 8192,} },
       ],
      },
    ],
   },
 };

<mark style="box-sizing: border-box; background: rgb(211, 212, 14); color: rgb(0, 0, 0);">一次性处理</mark>

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="js" cid="n122" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; margin-top: 0px; margin-bottom: 20px; background: rgb(51, 51, 51); font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; padding: 10px 10px 10px 0px; width: inherit; color: rgb(184, 191, 198); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> // //图片
// {test: /.(png|svg|jpg|gif)/, use: ['file-loader']}, // //字体 // {test: /\.(woff|woff2|eot|ttf|otf)/, use: ['file-loader']},
{
test: /.(png|jpg|gif|woff|woff2|eot|ttf|otf|svg)$/i,
use: [
{
loader: 'url-loader',
options: {
limit: 8192,
},
},
],
},</pre>

处理字体图标

 yarn add font-awesome</pre>
import 'font-awesome/css/fontawesome.min.css';

项目打包

 npm run build
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • webpack 前身 browserify,缺点只能转化js 一、作用: 一切都是模块化 webpack相当于一个...
    前端小华子阅读 1,183评论 0 1
  • webpack - 最热门的前端资源模块化管理和打包工具 简单设置(单页面) 先安装webpack npm ins...
    zz77zz阅读 503评论 0 2
  • webpack使用学习 本分享学习借鉴webpack中文官网,官网链接(中文文档):https://www.web...
    腿毛怪丶叔叔阅读 865评论 0 5
  • 一、入门loader可以看作是翻译员,配置module.rules数组里的规则,告诉webpack遇到哪些文件使用...
    zx_lau阅读 2,984评论 0 0
  • 我爱工作,工作使我快乐! 每天都是不停的发单,重样的工作,但是心态真的很重要,今天上午六点以前都是发单,没有加到微...
    dear仔仔阅读 129评论 0 0