美文网首页
Webpack配置文件抽离

Webpack配置文件抽离

作者: 微笑面对start | 来源:发表于2021-03-14 10:23 被阅读0次

前两篇文章说了webpack基础的模块使用和配置。本篇是webpack.config.js文件抽离。通俗来讲就是正式环境和开发环境使用不同的配置文件。主要分为3步

  • 安装webpack-merge
  • 创建多个配置文件,并且添加相应的代码
  • 在package.json修改运行脚本

1、执行命令,安装webpack-merge到本地目录

 npm install webpack-merge --save--dev

2、在项目根目录下新建build目录,并创建

  • 公用js文件base.config.js
  • 生产js文件prod.config.js
  • 开发js文件dev.config.js

在生产和开发文件中引入base.config.js和webpack-merge,使用案例

const baseConfig = require('./base.config.js');

const webpackMerge = require('webpack-merge');

module.exports = webpackMerge.merge(baseConfig,{
    devServer: {
        contentBase: path.join(__dirname, "../dist"), //本地服务根文件
        inline: true ,//实时刷新
        port: 8080
    }
})

3、在package.json中修改编译的文件

"scripts": {
    "dev": "webpack-dev-server --open --config build/dev.config.js",
    "build": "webpack --config build/prod.config.js",
},

项目结构:


image.png

完整的base.config.js代码


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

 const  path = require('path');

//一旦依赖node 就npm init day07-webpack配置文件合并

//定义base运行目录
 const baseBuildPath = "../dist";



module.exports = {
    entry : './src/main.js', //入口文件
    output : {
        path : path.resolve(__dirname,baseBuildPath),  //输出目录
        filename : 'bundle.js'  //输出文件名
    },
    mode: 'production',
    resolve : {
        //省略后缀名
        extensions : ['.js','.css','.vue'],
        alias : {
            '@':path.join(__dirname,'./src'),//这样 @就表示根目录src这个路径
            vue: 'vue/dist/vue.js',
        }
    },
    module: {
        rules: [
            {
                test: /\.m?js$/,
                exclude: /(node_modules|bower_components)/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env']
                    }
                }
            },
            {
                test: /\.vue$/,
                loader: 'vue-loader',
                // options:vueloaderOptions(isDev),
                // exclude:/node_modules/
            },
            {
                test: /\.css$/i,
                use: ["style-loader", "css-loader"],
            },
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: "index.html"
        })
    ]
}

完整的开发配置文件dev.config.js代码

/** 开发环境文件配置 **/
const baseConfig = require('./base.config.js');

const webpackMerge = require('webpack-merge');

const  path = require('path')

//一旦依赖node 就npm init day07-webpack配置文件合并

module.exports = webpackMerge.merge(baseConfig,{

    devServer: {
        contentBase: path.join(__dirname, "../dist"), //本地服务根文件
        inline: true ,//实时刷新
        port: 8080
    }

})

完整的生成环境prod.config.js代码

/** 生成环境文件配置 **/
//代码压缩
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

const webpack = require('webpack');

const webpackMerge = require('webpack-merge');
const baseConfig = require('./base.config.js');

//一旦依赖node 就npm init day07-webpack配置文件合并

module.exports = webpackMerge.merge(baseConfig, {
    plugins: [
        new webpack.BannerPlugin("版本归test所有."),

        new UglifyJsPlugin()
    ]
});

完整的package.json代码

{
  "name": "day06",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "webpack-dev-server --open --config build/dev.config.js",
    "build": "webpack --config build/prod.config.js",
    "beizhu": "--mode=development"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.13.10",
    "@babel/preset-env": "^7.13.10",
    "babel-loader": "^8.2.2",
    "css-loader": "^5.1.2",
    "html-webpack-plugin": "^5.3.1",
    "style-loader": "^2.0.0",
    "uglifyjs-webpack-plugin": "^2.2.0",
    "vue": "^2.6.12",
    "vue-loader": "^14.1.1",
    "vue-template-compiler": "^2.6.12",
    "webpack-cli": "^3.3.2",
    "webpack-dev-server": "^3.11.2",
    "webpack-merge": "^5.7.3"
  },
  "dependencies": {
    "vue": "^2.6.12"
  }
}

相关文章

  • Webpack配置文件抽离

    前两篇文章说了webpack基础的模块使用和配置。本篇是webpack.config.js文件抽离。通俗来讲就是正...

  • webpack(1) - 基本架构

    webpack 的核心功能,是抽离成很多个内部插件来实现的。 1、 webpack 配置文件处理 2、文件位置解析...

  • vue打包之后生成一个配置文件修改接口

    方法一 在 vue-cli 里把我们需要配置修改的文件直接进行抽离,不让 webpack 把配置文件进行编译。 第...

  • 金山WPS

    npm切换版本 webpack将抽离出来的css文件如何引用到文件中 webpack和gulp区别及webpack...

  • 4.10.1 如何通过 Webpack 提取公共代码

    4.10.1 如何通过 Webpack 提取公共代码问题一:如何通过 Webpack 提取公共代码? 1.抽离出公...

  • 开始使用webpack

    作者:叶茂;标签: webpack webpack配置文件 webpack配置文件是使用webpack的核心,会配...

  • 项目布局

    ├── build // webpack配置文件├── config // webpack配置文件├── dist...

  • webpack 基础一 1002

    webpack 基础一 1.webpack开篇 2.webpack配置文件 2.1 js代码如下 2.2 配置文件...

  • 二 webpack 配置文件

    webpack 默认配置文件是 webpack.config.js配置文件配置好后,就不用在执行 webpack ...

  • 阅读webpack4,核心内容精简手稿

    对webpack核心文件进行了抽离,webpack并没有使用promise、await这样的东西,布满了各种cal...

网友评论

      本文标题:Webpack配置文件抽离

      本文链接:https://www.haomeiwen.com/subject/bxcqcltx.html