美文网首页
webpack 环境变量(18)

webpack 环境变量(18)

作者: 瓦力博客 | 来源:发表于2019-06-26 16:07 被阅读0次

获取全套webpack 4.x教程,请访问瓦力博客

小菜之前在webpack配置中区分开发环境和生产环境,但是在源代码中还不能区分当前是开发环境还是生产环境。我们可能会遇到这种情况,如在开发的时候请求地址http://www.waliblog.com/login但是项目上线后,请求地址就变成http://www.baidu.com/login。我们需要完成这种操作,需要用到DefinePlugin 文档{:target="_blank"}插件

1.安装

DefinePlugin 允许创建一个在编译时可以配置的全局常量。这可能会对开发模式和生产模式的构建允许不同的行为非常有用。如果在开发构建中,而不在发布构建中执行日志记录,则可以使用全局常量来决定是否记录日志。这就是 DefinePlugin 的用处,设置它,就可以忘记开发环境和生产环境构建的规则。之前安装过webpack就不需要安装了

yarn add webpack

2.配置

build/plugins.js

const dirpath = require('./base/path');
const config = require('./base/config');

const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');    //生成html文件
const { CleanWebpackPlugin } = require('clean-webpack-plugin');  //清除
const MiniCssExtractPlugin = require("mini-css-extract-plugin");  //css样式提取


let plugins = [
    new HtmlWebpackPlugin({
        title: '瓦力博客',
        template: dirpath.src + '/index.html'   //以src/index.html为编译模板
    }),
    new  MiniCssExtractPlugin({
        filename: config.NODE_ENV == 'development'?'[name.css]': `${dirpath.css}/[name].[hash].css`,
        chunkFilename: config.NODE_ENV == 'development'?'[id].css': `${dirpath.css}/[id].[hash].css`
    }),   //css提取
    new webpack.ProvidePlugin({
        _:'loadsh',
        url: ['../src/api/apipath', 'url']
    }),
+   new webpack.DefinePlugin({ 
+       IS_PRODUCTION: config.NODE_ENV == 'development'?JSON.stringify(false):JSON.stringify(true),
+   }),
    new CleanWebpackPlugin()
]

if('development' == config.NODE_ENV){
    plugins.push(new webpack.HotModuleReplacementPlugin());
}

module.exports = plugins;

api/apipath.js

let host

if(IS_PRODUCTION){
    host = 'http://www.baidu.com'
}else {
    host = 'http://www.walibo.com'
}

export const url = {
    login: `${host}/login`,         //登录
    signout: `${host}/signout`      //退出登录
}

index.js

console.log(url)

开发webpack

yarn run dev

打开控制台,会看到控制台输出:

Object
login: "http://www.walibo.com/login"
signout: "http://www.walibo.com/signout"

生产webpack

yarn run prod

打开控制台,会看到控制台输出:

{login: "http://www.baidu.com/login", signout: "http://www.baidu.com/signout"}

到此本小节就结束了,小伙伴们继续加油

相关文章

  • webpack 环境变量(18)

    获取全套webpack 4.x教程,请访问瓦力博客 小菜之前在webpack配置中区分开发环境和生产环境,但是在源...

  • Webpack配置环境变量 - 避免踩坑

    前言 今天来讲一下Webpack配置环境变量,那么环境变量是干啥的。我们在开发项目中都会遇到这种场景,区分开发环境...

  • webpack定义环境变量

    需求:我们在开发环境当中需要设置本地环境的域名,生产环境需要设置服务器的域名,这时我们可以利用webpack配置环...

  • Vue

    vue-cli启动项目 vue项目文件介绍 build:webpack配置 config:环境变量的配置 stat...

  • NodeJs/Vue项目中对process.env的使用

    NODE_ENV获取环境变量 在webpack 打包的项目/Node JS项目中,可以安装 cross-env(跨...

  • React获取环境变量

    -获取内置环境变量 1、首先,运行脚本npm run eject把webpack配置解封出来注意:谨慎使用npm ...

  • 15、webpack DefinePlugin环境变量定义

    webpack中提供了DefinePlugin插件,可以设置环境变量注意:定义的值 ''是变量的定义,不是字符串 ...

  • crontab执行nodejs失败

    cron不会加载用户原有的环境变量需要自己export环境变量,例如: 3,18,33,48, * * * * e...

  • webpack 配置不同环境变量

    根据不同的命令引用不同环境下代码进行打包e.g: npm run build_dev -> 测试环境打包npm...

  • vue不是内部或外部指令--解决办法

    vue -V显示vue不是内部或外部指令,webpack也同vue。原因是环境变量没有加上。 找到npm的位置: ...

网友评论

      本文标题:webpack 环境变量(18)

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