走进webpack(1)--环境拆分及模块化

  初级的文章和demo已经基本完成了,代码也已经上传到了我的github上,如果你对webpack的使用并不是十分了解,那么建议你回头看下走近系列,里面包括了当前项目中使用频繁的插件,loader的讲解。以及基本的webpack配置,相关依赖等。如果你已经有了一定的webpack使用经验。那么你直接看这篇文章也是完全没问题的。

  这一系列会着重讲解webpack的进阶使用方法,前面文章讲解过的一些部分,就不会再去重复的解释。

  那么,还是先交代一下环境以及目录结构,这些你可以直接从github上获取到:

  下面是当前的环境配置版本:

  在实际的工作当中,我们会区分不同的环境来执行不同的webpack配置代码,以实现不同环境的要求,当前的主要环境其实就两个,一个开发环境,一个生产环境。开发环境更倾向于便捷的调试,开发的方便,比如热加载等。而生产环境希望代码的体积更小,http请求更少,页面的加载速度更快。甚至有些时候两个环境的要求是互斥的。所以才需要根据不同的环境来配置不同的代码。

  废话不多说,咱们直接进入正题吧。

  在前面的文章中,为了使静态资源找到正确的路径,我们设置了一个变量webpath,那么如果要区分环境,变量的值肯定是不同的,那么我们如何根据命令来使webpath获得不同的值呢,其实很简单:

  修改一下package.json中的build命令和dev命令,加上一个参数,然后我们在webpack.config.js中可以通过process.env来获取到这个参数。这样就可以区分不同的环境了。

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "build": "set type=build&webpack --mode production",
  "dev": "set type=dev&webpack-dev-server --mode development",
  "version": "webpack -v"
}

  那么修改完package.json中的命令后,我们还需要修改一下webpack.config.js中webpath那段代码:

/*根据参数的不同来区分不同的环境*/
if(process.env.type == "build"){
    var webpath={
/*这个地址目前是随便写的,只是为了区别于开发环境,真实上线的话要改成你上线的地址*/
        publicPath:"http://www.zaking.com/"
    }
}else{
    var webpath={
        publicPath:"http://192.168.199.124:9090/"
    }
}

  这样就可以了,运行不同的命令来试试效果如何吧。这里简单说明一下,process.env是什么,process是node的一个全局环境变量,process.env.type也就是你设置在scripts命令中的type值。更详细的内容不在这里多说,有强迫症的小伙伴可以去看看这里:https://nodejs.org/dist/latest-v8.x/docs/api/process.html#process_process_env

  那么环境拆分说完了,如何模块化配置webpack呢?其实也很简单,听起来比较高逼格罢了。简单说就是把通用变量放在一个单独的js文件中,然后通过export暴露接口,require引入接口而已!比如你在使用vue中一定写过很多这种东西,再简单也要说一下滴。

  我们新建一个与webpack.config.js同级的文件夹,名字就叫做entry.js(入口)。然后我们在entry.js中写入入口配置的代码:

const entry ={};
//声明路径属性
entry.path={
    main:‘./src/main.js‘
}
//导出该变量
module.exports = entry;

  然后在webpack.config.js中引入该模块,并且修改下入口处的配置代码:

/*在这里引入entry文件的路径*/
const entry =  require("./entry.js");
  /*入口文件*/
entry:entry.path

  这样就实现了所谓的模块化,当然这里只是举一个简单的例子,复杂的配置项目可能会有逻辑复杂的模块化配置。比如vue-cli那样的,现在你再去看看vue-cli的代码,应该也可以看懂一些了,只是它的功能更为复杂,模块的关联更强。那么这篇文章就暂时写到这里。下一篇会带大家一起看看如何打包第三方类库等更贴近生活的实用技能。本篇文章的代码也已经同步更新到github上了,以后随着文章的更新会实时同步代码,方便大家学习。

原文地址:https://www.cnblogs.com/zaking/p/8647377.html

时间: 2024-10-20 17:39:58

走进webpack(1)--环境拆分及模块化的相关文章

安装webpack命令环境

1.通过cnpm安装webpack命令环境,如图 2.安装完后查看webpack的版本,如图

最小白的webpack+react环境搭建

本文也同步发表在我的公众号"我的天空" 从零开始,用最少的配置.最少的代码.最少的依赖来搭建一个最简单的webpack+react环境. 最近在玩webpack+react+移动端,那么第一步自然是搭建相关的环境,本来网上的教程很不错,只是前端相关的东西发展太过迅猛,只相隔了半年有些东西的版本就不对了,有些配置.命令等照着之前的教程做就可能会掉到坑里去,别问我怎么知道的,我刚刚从坑里爬出来,因此赶紧写篇文章来记录一下,也算是让自己再巩固一下. 本篇完全是从零开始,用最少的配置.最少的代

规范开发目录 及 webpack多环境打包文件配置

规范开发目录 普通项目 开发目录: ├── project-name ├── README.md ├── .gitignore ├── assets ├── ├── js ├── ├── css ├── ├── images ├── ├── fonts├── index.html vue 项目开发目录:├── build├── config├── dist├── src├──├── api├──├── assets├──├──├── js├──├──├── style├──├──├──├── b

TypeScript(二)使用Webpack搭建环境

学习任何的开发,我们都需要对应的环境:包括TypeScript的编译环境和开发工具.这个章节里面,我们就来完成它们的搭建,后续就可以愉快的来写TypeScript代码了. 一. 环境搭建1.1. TypeScript环境安装已经配置好的环境,大家可以直接下载:https://github.com/coderwhy/HYLearnTS.git在上一个章节中我们说过,TypeScript最终会被编译成JavaScript代码:Image01TypeScript运行流程那么我们必然需要对应的编译环境:

从0构建webpack开发环境(二) 添加css,img的模块化支持

在一个简单的webpack.config.js中,构建了一个基础的webpack.config.js文件,但是只支持js模块的打包. 本篇中添加对css和img的模块化支持 首先需要安装三个个loader css-loader, style-loader,file-loader yarn add css-loader style-loader css-loader用于对css文件的解析,style-loader会将解析的css样式以style标签的形式插入到html文件中 安装好之后,需要修改w

初探webpack之环境配置

先感叹一句,前端的发展真是太快了,ng和bb还没怎么学好就要过时了.现在感觉react当是未来的一个大方向. 以前一直用的grunt,不过前段时间作者已经停止更新了.正好webpack风头正盛,咱也不能落伍,也来看看webpack到底是有什么出色的地方. 1.要安装webpack,首先需要安装nodejs 安装nodejs,你可以挫下面的地址:https://nodejs.org/en/ 下载完成以后就可以一直下一步安装了.我是安装在了d盘的根目录下 安装完成以后可以使用cmd输入命令查看是否安

React+Webpack+ES6环境搭建(自定义框架)

引言 目前React前端框架是今年最火的.而基于React的React Native也迅速发展.React有其独特的组件化功能与JSX的新语法,帮助前端设计有了更好的设计与便捷,而React Native更是扩大了前端的边界. 说道React,那就不得不说一下Webpack凭借它异步加载和可分离打包等优秀的特性,走在取代Grunt和Gulp的路上.而面向未来的ES6,更是支持模块化处理. 下面我就分享一下关于Webpack+React+ES6的环境搭建(通用)[附加发布版] 准备工作 首先需要准

webpack 通用环境快速搭建

能用babel编译es2015 . 能热编译.能加载静态资源(js/css/font/image).是一个很通用的开发环境,虽然不智能.但很好扩展 npm 安装列表: npm install babel-cli babel-core babel-loader babel-preset-es2015 babel-preset-stage-2 css-loader style-loader file-loader webpack-dev-server html-webpack-plugin --sa

试着用React写项目-利用Webpack搭环境

转载请注明出处:王亟亟的大牛之路 最近都赋闲,然后前些天开了个会就是关于"不加班就得死"的死命令,作为抵制加班的先头兵,我感觉我时日无多是时候加快武装自己的速度不然吃土都不配了,就在这个大条件下捡起我丢在地上的React. ok,那既然知道要做什么了,就要考虑用什么来发布项目,这里第一考虑到Webpack 那Webpack能干什么? 官方对他的解释很简单 This small tutorial will guide you through a simple example. 我们用We