七、webpack的基本使用,source-map,dev-server,eslint(Mhua)

source-map

类似于debug的功能,可用于快速定位错误信息。
source-map 配置有七个值。

  • eval:每个module会封装到eval里面包裹起来执行,并且会在末尾追加注释 //@sourceURL
  • source-map:生成一个SourceMap 文件
  • hidden-source-map:和source-map一样,但不会在bundle末尾追加注释
  • inline-source-map:生成一个DataUrl 形式的 SourceMap 文件
  • eval-source-map:每个 module 会通过 eval() 来执行,并且生成一个DataUrl 形式的 SourceMap.
  • cheap-source-map:生成一个没有列信息的 SourceMaps 文件,不包含loader的 sourcemap(比如:babel的sourcemap)
  • cheap-module-source-map:生成一个没有列信息的 sourceMaps 文件,同时 loader 的 sourcemap 也被简化为只包含对应行的。

注意:生产环境我们一般不会开启 sourcemap功能,主要原因有两点:
1、通过 bundle 和 sourcemap 文件可以编译源码,也就是说线上有sourcemap 文件的话,增加暴露源码的风险。
2、sourcemap 文件体积相对比较巨大,生产环境追求更小更轻量的bundle。

首先快速搭建一个环境:

# 生产 package.json
npm init -y

# 安装 webpack webpack-dev-server webpack-cli html-webpack-plugin
npm install webpack webpack-dev-server webpack-cli html-webpack-plugin -D

新建 webpack.config.js 。

const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {

  entry: "./app.js",

  mode: "development",

  devtool: "source-map", // 默认值

  plugins: [
    new HtmlWebpackPlugin()
  ]
}

新建 app.js 文件

console.log("hello world")

执行打包命令:

npx webpack

打包后,在dist目录下的 main.js 文件,内容如下所示:

eval("console.log(\"hello webpack\")\n\n//# sourceURL=webpack://test/./app.js?");

并且在控制台也能精准找出 输出的文件的第几行。
在这里插入图片描述

开发环境中:推荐使用 cheap-module-source-map,它可以单独生成一个文件,且只记录行数,同时对babel解析的混杂进来后,也不会导致代码行数的识别问题。

devServer

在 webpack.config.js 配置 开发服务器。

devServer: {
  static: path.resolve(__dirname, './dist'),
  # 传输文件是否压缩 Content-Encoding: gzip
  compress: true,
  # 端口号
  port: 3000,
  # response headers 携带
  headers: {
    'X-Access-token': "aaaaaa"
  },
  /# 代理,当访问 url 为 /api 时访问 http://localhost:9000
  proxy: {
    '/api': "http://localhost:9000"
  },
  # 浏览器输入不存在的路径,都是访问根目录。
  historyApiFallback: true,

  # 配置 https (两种方式)
  #  https: true,
  http2: true,

  # 修改代码后,页面之前通过 点击或者其它操作添加的代码是不会消失的,默认值 true
  hot: true, 

  # 修改代码后,刷新浏览器,默认值 是 true
  liveReload: true  
},

eslint

eslint 是扫描代码是否符合规范的工具。 eslint 配置是和webpack无关的,但是在工程化开发环境中,是不可缺少的。

npm install eslint -D

通过 eslint 创建一个 配置文件

npx eslint --init

# 选择第三种,检查语法,发现问题,规范代码格式。
To check syntax, find problems, and enforce code style

# 使用 JavaScript modules (import/export) 模块化
#  None of these
# Does your project use TypeScript? »    No
# Where does your code run?   运行环境:Browser
# Use a popular style guide  选择流行的代码规范
# 选择:Airbnb: https://github.com/airbnb/javascript
# 配置文件 格式   JSON

生成 .eslintrc.json 配置文件

{
    "env": {
        // 浏览器 环境
        "browser": true,
        // 并且支持 es2021
        "es2021": true
    },
    "extends": [
        "airbnb-base"
    ],
    "parserOptions": {
        // 指定 ECMA 版本
        "ecmaVersion": "latest",
        "sourceType": "module"
    },
    "rules": {
      "no-console": 0   // 代码有 console.log 是否警告, 0 表示 不输出警告
    },
    "globals": {
    }
}

webpack 结合 eslint 使用

# 首先安装
npm install babel-loader eslint-loader @babel/core -d

新建 webpack.config.js 文件

const path = require("path")
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {

  entry: "./src/app.js",

  plugins: [
    new HtmlWebpackPlugin()
  ],

  module: {
    rules: [
      {
        test: /\.js$/,
        use: ['babel-loader', 'eslint-loader']
      }
    ]
  }
}
<think>嗯,用户想安装Webpackwebpack-cli和webpack-dev-server作为开发依赖。他们可能遇到了版本兼容的问题,因为引用里提到过版本不兼容时需要卸载重装。首先,我需要确定正确的安装命令,并且确保版本兼容。 根据引用[2],安装时需要指定兼容版本。用户可能之前装过其他版本,导致错误,所以应该先卸载旧版本。然后,安装特定版本的包。例如,webpack@5.42.1、webpack-cli@4.7.2和webpack-dev-server@3.11.2。这样组合应该是兼容的,因为引用[1]和[2]都提到了这些版本。 用户的问题是如何用npm安装并添加到devDependencies。正确的命令应该是npm install -D加上具体版本号。还要提醒用户检查package.json里的devDependencies是否正确,以及是否需要配置scripts和webpack.config.js。此外,可能还要提到版本冲突时的解决方法,比如使用npx或查看官方文档确认兼容性。 需要分步骤回答,先卸载旧版本,再安装新版本,并验证安装。还要注意不同项目可能需要不同的版本,所以最好根据项目需求调整。最后,可能还需要初始化npm项目,如果还没有package.json的话,但用户可能已经执行过npm init -y了,如引用[1]所示。</think>要正确安装 Webpack 及其相关工具作为开发依赖,请按以下步骤操作: ### 1. 清理旧版本(可选) 若之前安装过不兼容版本,建议先执行全局卸载: ```bash npm uninstall webpack webpack-cli webpack-dev-server -g ``` 本地项目卸载: ```bash npm uninstall webpack webpack-cli webpack-dev-server ``` ### 2. 安装指定版本组合 ```bash npm install webpack@5.42.1 webpack-cli@4.7.2 webpack-dev-server@3.11.2 --save-dev ``` 该版本组合经过验证兼容性[^1][^2] ### 3. 验证安装 查看 package.json 的 devDependencies 字段应包含: ```json "devDependencies": { "webpack": "^5.42.1", "webpack-cli": "^4.7.2", "webpack-dev-server": "^3.11.2" } ``` ### 4. 补充配置 在 package.json 中添加启动脚本: ```json "scripts": { "start": "webpack-dev-server --mode development" } ``` ### 版本冲突处理建议 若需安装其他版本,可参考官方兼容性对照表: $$ \text{Webpack 5.x} \leftrightarrow \text{webpack-cli 4.x} \leftrightarrow \text{webpack-dev-server 3.x/4.x} $$ 最新版本建议使用: ```bash npm install webpack@latest webpack-cli@latest webpack-dev-server@latest --save-dev ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值