我正在使用一个反应剩余过程,我们使用npm install --save-dev redux-devtools-extension安装了Redux,并像这样使用它:
import { composeWithDevTools } from 'redux-devtools-extension'
const store = createStore(
reducer,
composeWithDevTools()
)我的理解是--save-dev标志意味着这个包不会在生产中使用。本课程的下一节将介绍Redux并使用npm install redux-thunk进行安装。如果我没有弄错,这意味着这个包装将用于生产。然而,在本课程中使用的是以下内容:
import thunk from 'redux-thunk'
import { composeWithDevTools } from 'redux-devtools-extension'
const store = createStore(
reducer,
composeWithDevTools(
applyMiddleware(thunk)
)
)thunk在使用--save-dev安装的包函数中使用。由于该版本不会安装redux-devtools-扩展,这在生产中如何工作?
发布于 2021-08-16 13:40:26
-save-dev将第三方包添加到包的开发依赖项中。当有人运行npm安装直接安装你的软件包时,它不会被安装。通常只有当有人先克隆您的源存储库,然后在其中运行npm安装时,才会安装它。
发布于 2021-08-16 13:56:39
一个简单的答案是no,它不应该在生产中工作。当您在dev模式下安装依赖项时,它应该仅用于开发目的。当您通过--save-dev标志安装依赖项时,依赖项不会绑定到生产代码中。由于您在代码中包含了依赖项,而没有任何条件语句(if语句)来确定您是否处于开发模式,并且仅在dev模式下安装了依赖项,所以代码已经在
import { composeWithDevTools } from 'redux-devtools-extension'如果您确实希望只在dev环境中使用dev工具,请在非dev模式下安装它,并使用以下导入语句:
import { composeWithDevTools } from 'redux-devtools-extension/developmentOnly';同时,如果您只想在生产中使用它,请导入它。
import { composeWithDevTools } from 'redux-devtools-extension/logOnlyInProduction';如果您想以任何一种方式使用这个dev工具,那么您可以使用back第一个import语句,因为它不会检查您的环境。
如果第一条语句在生产环境中运行良好,那么作者/协作者就没有必要在库的源代码中包含developmentOnly和logOnlyInProduction变体。
每个变量的差异可在src代码中找到:
https://github.com/zalmoxisus/redux-devtools-extension/blob/master/npm-package/developmentOnly.js
https://stackoverflow.com/questions/68803474
复制相似问题