webpack基本配置项_webpack配置文件详解

webpack基本配置项_webpack配置文件详解前言上篇我们已经配置好了本地开发服务器,但是配置的相对比较凌乱,一个文件中有些是开发时用到的配置,有些是生成时用到的配置,有些是开发和生成都要用到的配置,所以我们这里把环境分为3个环境webpac

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

上篇我们已经配置好了本地开发服务器,但是配置的相对比较凌乱,一个文件中有些是开发时用到的配置,有些是生成时用到的配置,有些是开发和生成都要用到的配置,所以我们这里把环境分为3个环境

  • webpack.base.config.js:webpack基础配置,开发和生成环境都需要用到的配置
  • webpack.dev.config.js:开发环境的配置
  • webpack.prod.config.js:生成环境的配置
     

配置分离

development(开发环境) 和 production(生产环境) 这两个环境下的构建目标存在着巨大差异。在开发环境中,我们需要:强大的 source map 和一个有着 live reloading(实时重新加载) 或 hot module replacement(热模块替换) 能力的 localhost server。而生产环境目标则转移至其他方面,关注点在于压缩 bundle、更轻量的 source map、资源优化等,通过这些优化方式改善加载时间。由于要遵循逻辑分离,我们通常建议为每个环境编写彼此独立的 webpack 配置。

虽然,以上我们将 生产环境 和 开发环境 做了细微区分,但是,请注意,我们还是会遵循不重复原则(Don't repeat yourself - DRY),保留一个 "common(通用)" 配置。为了将这些配置合并在一起,我们将使用一个名为 webpack-merge 的工具。此工具会引用 "common" 配置,因此我们不必再在环境特定(environment-specific)的配置中编写重复代码。

我们先从安装 webpack-merge 开始,并将之前已经成型的那些代码进行分离:

npm install -D webpack-merge

安装完成以后,我们看下项目结构,我们新建一个build目录,然后再创建3个js文件,webpack.base.config.jswebpack.dev.config.jswebpack.prod.config.js
webpack基本配置项_webpack配置文件详解

webpack.base.config.js配置如下:

const { VueLoaderPlugin } = require('vue-loader')
const path = require('path')
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, '../dist'),
    filename: 'bundle.js',
    // publicPath: "dist/"
  },
  resolve: {
    extensions: ['.json', '.js', '.vue', '.css'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
    },
  },
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.less$/,
        use: [
          'vue-style-loader',
          'css-loader',
          'less-loader'
        ]
      },
      {
        test: /\.png/,
        type: 'asset'
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      }
    ],
  },
  plugins: [
    // 请确保引入这个插件!
    new VueLoaderPlugin(),
    new webpack.BannerPlugin("最终版权归jkc所有"),
    new HtmlWebpackPlugin({ template: 'index.html' }),
  ]
}

 

webpack.dev.config.js配置如下:

const { merge } = require('webpack-merge');
const common = require('./webpack.base.config.js');

module.exports = merge(common, {
  mode: 'development',
  devServer: {
    contentBase: "./dist",
    inline: true
  },
})

 

webpack.prod.config.js配置如下:

const { merge } = require('webpack-merge');
const common = require('./webpack.base.config.js');

module.exports = merge(common, {
  mode: 'production',
});

 

最后一步我们只需要把package.json文件中的scripts的脚本命令改成如下即可:

"scripts": {
    "build": "webpack --config ./build/webpack.prod.config.js",  // 生成环境打包
    "dev": "webpack serve --open --config ./build/webpack.dev.config.js"  // 本地开发环境
  },

如果我们正在处于开发阶段,就在终端执行npm run dev
如果我们已经开发完成,就在终端执行npm run build

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164843.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Flume学习笔记「建议收藏」

    Flume学习笔记「建议收藏」Flume学习笔记Flume定义Flume基础架构Flume安装部署监控端口数据实时监控单个追加文件实时监控目录下多个新文件Flume定义Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单.Flume最主要的作用就是:实时读取服务器本地磁盘的数据,将数据写入到HDFS.Flume基础架构AgentAgent是一个JVM进程,它以事件的形式将数据从源头送至目的。Agent主要有3个部

    2025年6月2日
    3
  • pytest运行_ios12清除缓存

    pytest运行_ios12清除缓存前言pytest运行完用例之后会生成一个.pytest_cache的缓存文件夹,用于记录用例的ids和上一次失败的用例。方便我们在运行用例的时候加上–lf和–ff参数,快速运行上一

    2022年7月31日
    5
  • fprintf函数的作用_c语言fopen函数的用法

    fprintf函数的作用_c语言fopen函数的用法fprintf(简介)fprintf是C/C++中的一个格式化库函数,位于头文件中,其作用是格式化输出到一个流文件中;函数原型为intfprintf(FILE*stream,constchar*format,[argument]…),fprintf()函数根据指定的格式(format),向输出流(stream)写入数据(argument)。以“分别用十进制,八进制,十六进制输…

    2022年10月19日
    3
  • DataGridView修改HeaderText

    dataGridView_htList为一个DataGridView(ht为HoverTree的缩写)方法一:dataGridView_htList.Columns["HtAddTime&

    2021年12月24日
    52
  • BS架构与CS架构_bs架构 可视化开发框架

    BS架构与CS架构_bs架构 可视化开发框架Client/Server结构1、传统的两层CS模式CS模式的主要特点:请求/响应工作方式、以消息交换作为通信方式、基于过程的服务访问、服务集中于特定的服务器。S为C提供了系统定义的各种服务,为用户提供了一种有效地资源共享手段。与传统的分时共享模式和资源共享模式相比较,C/S具有如下优点:a,优化网络利用率,减少网络流量;b,响应时间短;c,通过把应用程序同它们处理的数据隔离,可以使数据具有独立性…

    2022年9月10日
    1
  • 爬虫基本知识,如何发起请求,进行分析

    爬虫基本知识,如何发起请求,进行分析爬虫基础知识爬虫一个实战性很强的内容,下面是一些知识点,方便日后复习,具体还要去案例看看,随机应变。这是我的github爬虫仓库,欢迎大家clone进行学习和体验。一.网络爬虫概述定义网络蜘蛛(spider)、网络机器人(robot),抓取网络数据的程序其实就是用Python程序模仿人点击浏览器并访问网站,而且模仿的越像越好,让Web站点无法发现你不是人爬取数据的目的1、公司项目测试数据2、公司业务部门及其他部门所需数据3、数据分析企业获取数据方式1、公司自有数据2、第三方

    2022年10月3日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号