2021-02-26

React Webpack使用

1.webpack简介

项目中可能有多个 .js、.css 、image、其他资源。一些 js 资源彼此之前存在依赖关系,当一个页面需要加载多个 .js 的话,也会拖累整个页面的加载速度。为了解决这个问题,webpack将各种各样的静态资源,打包成了一个所谓的 assets. 这样浏览器加载起来就快多了。

2.webpack运行环境

node.js

3.使用前准备

a.安装 webpack  npm i -g webpack

b.项目根目录下新建webpack_config文件夹(即与src同级,命名文件夹不要使用webpack)

c.根据项目需求,建.js文件(base.js、development.js、staging.js、production.js)

d.package.json中写入脚本文件,npm 运行命令

"scripts": { 

"dev": "webpack-dev-server --host 0.0.0.0 --progress --config ./webpack_config/development.js", 

"test": "cross-env NODE_ENV=test webpack --progress --colors --config ./webpack_config/development.js",

 "staging": "cross-env NODE_ENV=staging webpack --progress --colors --config ./webpack_config/staging.js

"prod": "cross-env NODE_ENV=production webpack --progress --colors --config ./webpack_config/production.js"

}

4.process.env.NODE_ENV

a.NODE_ENV是一个由 Node.js 暴露给执行脚本的系统环境变量,赋值给process.env对象

b.cross-env提供跨平台的设置和使用环境变量

c.NODE_ENV定义方式有两种:npm脚本定义&DefinePlugin、mode选项定义,两种定义方式相互独立

c1:NODE_ENV=development定义(即npm脚本定义)的NODE_ENV只能在当前脚本中生效,runtime(运行时)生效

c2:base.js的mode设置为production,脚本中执行NODE_ENV=development,那么在模块中NODE_ENV的值为production,而配置文件base.js中的NODE_ENV值为development。如果没有在脚本中设置环境变量,只设置了mode,在webpack的配置文件中读取process.env.NODE_ENV为undefined

d.DefinePlugin和mode选项定义的NODE_ENV 作用于webpack入口文件下的业务代码,通常为src文件夹下的代码, 而 npm脚本里的设置多用于配置相关,例如在webpack.config.js里区分环境配置不同插件

Tips

a.webpack-dev-server :微服务器

b.热更新: 当base.js 中的 entry 文件改变,自动运行 webpack, 自动刷新页面(只针对入口文件.js,不作用于html、css)

c.babel:ES6转ES5

d.css-loader 、style-loader 把 css 文件作为一个模块打包到js 文件

e.****DefinePlugin设置环境变量:

plugins: [ new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('staging'), }, }), ]

f.publicPath:一定要是绝对路径


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • # 构建基础篇 3:env 文件与环境设置 在实际项目的开发中,我们一般会经历项目的开发阶段、测试阶段和最终上线阶...
    孙爽_5a56阅读 1,036评论 0 0
  • .env 文件在由 creact-react-app 生成的项目里是一个关于当环境的配置文件(先不去管这个文件的起...
    YeLqgd阅读 15,078评论 0 3
  • 鄙人已付费购买,粘贴出来给更多前端爱好者学习。若掘金小册禁止此类操作,请联系 在实际项目的开发中,我们一般会经历项...
    CyChen_c9ca阅读 2,720评论 0 0
  • 1、优化loader配置1.1 缩小文件匹配范围(include/exclude) 通过排除node_module...
    田成力阅读 3,434评论 0 0
  • 技术上讲, NODE_ENV是一个由 Node.js 暴露给执行脚本的系统环境变量。通常用于确定在开发环境还是生产...
    revert阅读 14,622评论 0 16

友情链接更多精彩内容