【发布时间】:2021-10-18 13:02:05
【问题描述】:
我正在处理 React Redux course,我们使用 npm install --save-dev redux-devtools-extension 安装了 Redux devtools,并像这样使用它:
import { composeWithDevTools } from 'redux-devtools-extension'
const store = createStore(
reducer,
composeWithDevTools()
)
我的理解是--save-dev 标志意味着这个包不会在生产中使用。课程的下一部分介绍 Redux Thunk 并使用 npm install redux-thunk 安装。如果我没记错的话,这意味着这个包将用于生产。但是,thunk 在课程中是这样使用的:
import thunk from 'redux-thunk'
import { composeWithDevTools } from 'redux-devtools-extension'
const store = createStore(
reducer,
composeWithDevTools(
applyMiddleware(thunk)
)
)
thunk 在使用--save-dev 安装的包函数中使用。由于该版本不会安装 redux-devtools-extension,这将如何在生产中工作?
【问题讨论】:
-
这些包很可能在 build 时被 Webpack 打包 - 严格来说,在这种情况下没有运行时生产依赖项,您提供的是静态文件。
-
除非我弄错了,如果你的代码中引用了库,它们就会包含在你的包中。这就是它所需要的。在我看来,将它们分成
dependencies或devDependencies仍然是一种让事情更有条理的好习惯。因此,从技术上讲,即使您在dependencies中有例如webpack,它也不会被捆绑,因为您不会在应用程序中导入 webpack。 -
如果你想要更多的控制,你总是可以将某些导入(技术上
require())放在if (process.env.node_env === 'production')(或“开发”)子句中。
标签: javascript reactjs npm redux