You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
说到环境区分,大家都知道在开发react项目工程的时候,开发环境已经在uba or ucf里面进行了区分,我们在不同的环境下去执行哪些功能,例如在uba里面是给出了devConfig和prodConfig配置节点,可以直接配置我们不同时机的运行插件等,在ucf里面也给出了env环境变量区别development和production的方法使用,但是我们疏忽了,给对方提供npm包组件的时候,没有去给对方使用的时候环境区分,这样是不可行的
环境区分
说到环境区分,大家都知道在开发react项目工程的时候,开发环境已经在
uba or ucf
里面进行了区分,我们在不同的环境下去执行哪些功能,例如在uba
里面是给出了devConfig
和prodConfig
配置节点,可以直接配置我们不同时机的运行插件等,在ucf里面也给出了env
环境变量区别development
和production
的方法使用,但是我们疏忽了,给对方提供npm包组件的时候,没有去给对方使用的时候环境区分,这样是不可行的分析
React
首先看下React的包的组成
. ├── LICENSE ├── README.md ├── build-info.json ├── cjs │ ├── react.development.js │ └── react.production.min.js ├── index.js ├── package.json └── umd ├── react.development.js ├── react.production.min.js └── react.profiling.min.js 2 directories, 10 files
可以看出提供的不是源码,而是打包好的两种格式
cjs
,umd
两种,然后我们打开看一下packages.json
里面的main对应的是什么?可以看出使用了
index.js
,但是在我们常规使用不应该是直接指向一个cjs里面的react不就好了吗?继续往下看打开index.js
噢,大家应该明白了吧,这里使用了node提供的能力,拿到环境变量,不同环境加载不同的js文件,这样在开发的时候webpack->mode 不同环境加载不同js就好了,开发可以调试,生产自动走生产的代码,很机智吧!
Mirror
下面看一下mirrorx框架如何处理打包的问题,打开 https://github.com/mirrorjs/mirror/blob/master/package.json
看下scripts如何写的:
这里主要看一下
build
命令,这里没有使用webpack打包,仅仅用了babel转换了代码而已,再看一下main
字段如何写的:是直接使用了我们的lib产出的ES5代码,很明确,使用
mirrorx
的时候让我们的babel-loader
从node_modules/mirrorx
里面拿es5的代码使用,这样做的目的是不需要转换,并且可以调试代码。bundle
命令是产出单独mirror.min.js压缩版的,可以直接使用。总结
通过分析react提供包的方法,可以学到用这种方式给对方提供资源,也不至于全部打包到index.js里面,产生过多的依赖、体积变大,无法调试等问题了,产出es的资源也是有必要的!
The text was updated successfully, but these errors were encountered: