接着上一节来,我们要解决上一节所遇到的一个问题。

上一节提到,要让生产环境使用 extract-text-webpack-plugin 这个插件,而开发环境不使用,如何做到呢?

其实原理很简单,只要能区分出哪个是开发环境,哪个是生产环境就可以,只要判断是生产环境的时候就用,不是的话,就不用,就可以了。

我们来试一下。

1. 增加环境变量

首先来看一下之前的开发环境和生产环境分别使用的编译命令:

webpack.config.js

"scripts": {"dev": "webpack-dev-server","prod": "webpack -p"
},
复制代码

分别是开发环境使用的 npm run dev 命令和生产环境使用的 npm run prod 命令。

我们把它改成下面这样:

"scripts": {"dev": "webpack-dev-server","prod": "NODE_ENV=production webpack -p"
},
复制代码

开发环境的部分不变,生产环境的加了一个环境变量:

NODE_ENV=production
复制代码

很简单,NODE_ENV 是变量名,而 productionNODE_ENV 是这个变量的值,这些都不是固定的,你可以改成你想要的任意内容,只要能引用到就行了。

那么我们如何来使用这个变量呢?

2. 使用环境变量

要引用我们之前创建的环境变量,也蛮简单的。

webpack.config.js 文件中:

var isProd = process.env.NODE_ENV === 'production'; // true or false
复制代码

process.env.NODE_ENV 就能得到之前设置的变量,如果运行的是 npm run prod,那么 process.env.NODE_ENV 的值就是 production,那 isProd 就是 true,如果运行的是 npm run devisProd 就是 false,因为 npm run dev 没有设置这个 NODE_ENV 这个环境变量嘛。

上一节,我们有类似下面这样的两段关于 extract-text-webpack-plugin 这个插件的代码。

new ExtractTextPlugin({filename: 'style.css',disable: false
}),test: /\.scss$/,use: ['style-loader', 'css-loader', 'sass-loader']
复制代码

我们把 webpack.config.js 中的代码更改如下:

...var isProd = process.env.NODE_ENV === 'production'; // true or false
var cssDev = ['style-loader', 'css-loader', 'sass-loader'];
var cssProd = ExtractTextPlugin.extract({fallback: 'style-loader',//resolve-url-loader may be chained before sass-loader if necessaryuse: ['css-loader', 'sass-loader']
})var cssConfig = isProd ? cssProd : cssDev;module.exports = {...plugins: [...new ExtractTextPlugin({filename: 'style.css',disable: !isProd}),...],module: {rules: [{test: /\.scss$/,use: cssConfig},...]}
};复制代码

上面的代码应该不难理解吧。

只要能区别出不同的环境,使用不同的配置内容就可以了。

现在就可以放心地使用 npm run devnpm run prod 命令了,再也不用临时关掉一些插件了。

这节就说这么多。

webpack 3 零基础入门教程 #13 - 生产环境 vs 开发环境相关推荐

  1. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  2. webpack 3 零基础入门教程 #12 - 如何使用模块热替换 HMR 来处理 CSS

    模块热替换 是什么意思? 以前我们使用的 webpack --watch 或 webpack-dev-server 的功能是监听文件改变,就自动刷新浏览器,而这个 模块热替换 不用刷新浏览器,它是只让 ...

  3. webpack 3 零基础入门教程 #4 - webpack 的配置文件 webpack.config.js

    在命令行中运行 webpack 命令确实可以实现 webpack 的功能,但是我们一般不这么做,我们要用配置文件来处理. 我们把之前学到的知识用 webpack 的配置文件来实现,配置文件的名字叫 w ...

  4. webpack 3 零基础入门教程 #6 - 使用 loader 处理 CSS 和 Sass

    1. 什么是 loader 官方的解释是这样的: loader 用于对模块的源代码进行转换.loader 可以使你在 import 或"加载"模块时预处理文件.因此,loader ...

  5. 视频教程-Python零基础入门教程-Python

    Python零基础入门教程 从2012年从事互联网至今有7年软件编程经验,曾任职国内北京互联网公司,中南林业大学授课Python 现任逻辑教育Python课程负责人,精通Python语言,精通人工智能 ...

  6. 视频教程-ARDUINO零基础入门教程【代码编程篇】-Arduino

    ARDUINO零基础入门教程[代码编程篇] 精通各种单片机编程,有十年以上ARDUINO,51单片机/STM32/PIC/AVR编程,硬件设计,绘图,编程经验.熟悉各种常用传感器使用和物联网通讯 赵勇 ...

  7. 初学HTML5--盒子模型,5.1 盒子模型 - Adobe Dreamweaver CC零基础入门教程 - 平面设计学院 - 勤学网...

    课时:42节课 时长:13.0小时 课级:基础入门 期待已久的Dreamweaver软件教程终于和大家见面啦!老师一贯的细致全面讲解风格,注重每个专业术语的概念介绍和软件实操相结合,帮助大家全面理解掌 ...

  8. python怎么输出浮点数_python 零基础入门教程第 2 章:基本数据类型 (一)

    一.什么是数据类型 编程语言通过一些复杂的计算机物理底层机制,创造不同类型的数据,用来表示现实世界中的不同信息,以便于计算机更好的存储和计算. 每种编程语言都会有一些基本的数据类型用来表示现实世界中的 ...

  9. SEO零基础入门教程(外链的发布和软文编写)

    seo的作用是众所周知的,对网站进行seo优化,可以给网站带来大量的搜索引擎流量.但是想要做好网站优化也有难度,尤其是对于seo新手来说,因为缺乏理论和实战,所以seo新手需要多加练习.那么具体seo ...

最新文章

  1. stream map方法_Java Stream中map和flatMap方法
  2. LINUX下用CTRL+R快速搜索HISTORY历史命令,快速索引到之前使用过的命令行语句
  3. NumPy Essentials 带注释源码 三、NumPy 数组使用
  4. Stream 与 byte[] 互转
  5. 转: Ubuntu 安装字体方法
  6. 玩转oracle 11g(38):rman备份-全库恢复
  7. java size_Java length() 方法,length 属性和 size() 方法的区别
  8. C#编码简单性之函数篇(如何编写简短的C#代码,随时更新)
  9. 信号检测与估计-理论与应用_信号R-实时应用
  10. PHP采集利器:phpQuery,像jQuery一样轻松采集内容
  11. 三阶魔方层先法 复原公式
  12. 中国首台云电脑全面解析——天霆云计算董事长谈天霆专访
  13. 把编程当小葵花妈妈课堂
  14. 百度谷歌搜索引擎研究,如何做SEO优化?网站优化实操(程序员必看)
  15. Visual C++编译错误:error C2220: 警告被视为错误 - 没有生成“object”文件
  16. 《西游记》中话“修行”【转】
  17. ARM裸机开发——双机异步串行通信
  18. 1. Resnet网络详解
  19. [转]Windows Mobile 常用键值(VK)对应表及系统文件夹简单介绍
  20. DirectX9.0C Aug.2007

热门文章

  1. linux ext4 文件大小,[svc]为何linux ext4文件系统目录默认大小是4k?
  2. 计算机网络和通讯原理图,第章 计算机网络通信原理.ppt
  3. 请简述什么是spring的ioc和di_绿茶用什么茶叶罐储存?有6种茶叶罐适合
  4. aix解压tgz_AIX 上压缩与解压缩 各种文件格式原理说明
  5. java十进制小数转化为二进制小数代码 乘二取整法_(四)改掉这些坏习惯,还怕写不出健壮的代码?...
  6. 第十七届全国大学智能车竞赛:第二波芯片申请向你袭来
  7. 信号与系统 2022 春季学期第一次作业-作业题目准备
  8. 学生科技周的讲座-2021-内容准备
  9. 今天诞生了智能车竞赛华南赛区三项最好成绩
  10. android 多个应用,Android中一个应用实现多个图标的几种方式