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/166086.html原文链接:https://javaforall.net

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


相关推荐

  • hdu 3001 Travelling (TSP问题 )

    hdu 3001 Travelling (TSP问题 )

    2022年1月8日
    42
  • 目前主流的nosql数据库有哪些_显示器主流评测

    目前主流的nosql数据库有哪些_显示器主流评测oSQL是伴随着web2.0的迅猛发展而在2009年被提出的一个概念,一般可以通俗的理解为高性能的KeyValue存储结构的数据库,当然也有其他更广泛的类型。它基于CAP和BASE理论,强调最终一致性,具有数据结构灵活、扩展方便、大数据量下读写性能高效等特点,在互联网行业被广泛采用。本系列文章将评测广受关注的几个NoSQL数据库产品。本文关注的是HandlerSocketPlugi…

    2022年8月24日
    6
  • Java IO用法详解

    Java IO用法详解一、javaio概述1.1相关概念JavaIOJavaIO即Java输入输出系统。不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒介进行IO(文件、控制台、网络),我们还要考虑具体和它们的通信方式(顺序、随机、二进制、按字符、按字、按行等等)。Java类库的设计者通过设计大量的类来攻克这些难题…

    2022年5月1日
    51
  • 双亲委派机制及打破双亲委派示例

    双亲委派机制在加载类的时候,会一级一级向上委托,判断是否已经加载,从自定义类加载器-》应用类加载器-》扩展类加载器-》启动类加载器,如果到最后都没有加载这个类,则回去加载自己的类。双亲委托有个弊端:不能向下委派,不能不委派怎么打破双亲委派机制:(也就是能向下委派和不委派)自定义类加载器(不委派)spi机制(向下委派)打破双亲委派打破双亲委派的两种方式:1.通过spi机制,使用ServiceLoader.load去加载2.通过自定义类加载器,继承classloade

    2022年4月8日
    940
  • 阿里云服务器如何配置开放端口

    阿里云服务器如何配置开放端口 1.进入ECS服务实例2.点击“资源管理”3.来到“实例”界面,点击“配置安全组规则”4.加入相应的端口号即可。5.这里说一句,避免入坑。你们别进到这个实例为0的安全组里面,这样你再

    2022年7月3日
    25
  • Ubuntu20.04安装cuda cudnn pytorch pycharm记录

    Ubuntu20.04安装cuda cudnn pytorch pycharm记录Ubuntu20.04安装cudacudnnpytorchpycharm记录0.安装NVIDIA驱动1.安装cuda(1)查看pytorch支持的cuda版本。(2)下载cuda安装包并安装2.安装cudnn3.安装Anaconda(略)4.conda换源、建立环境、pip换源(1)conda换源(2)建立conda环境(3)pip换源5.在环境中安装pytorch6.安装pycharm记录时间:2021年1月31日版本:Ubuntu20.04、cuda11.0、cudnn对应的版本、pytorc

    2025年7月27日
    3

发表回复

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

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