我正在开发一个Web应用程序,其中React client
应用程序和Node Express server
API存在于同一个存储库中,但具有单独的package.json
文件。结构如下:
root
-client/
--src/
--package.json // manages create-react-app dependencies, scripts
-controllers/
-models/
-routes/
-app.js
-package.json // manages node express server dependencies, scripts
看起来,这些单独的包是系统的子模块(即Web应用程序的子模块)。例如,考虑路由的处理方式,其中服务器无法识别的任何请求由client
路由器处理:
// app.js
require('./routes/...')(app) // api routes defined first
if (process.env.NODE_ENV === 'production') {
app.use(express.static('client/build'))
const path = require('path')
app.get('*', (req, res) => { // non match fall through to client
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'))
})
}
服务器API未启用cors。
这些package.json
文件应该共享相同的版本,还是单独版本化?
每个包都应单独版本化。将它们绑定到相同的版本号意味着在一个版本中修复一个简单的bug,在另一个版本中需要一个无意义的版本块。不要骗你的客户!包版本号适用于其内容,仅适用于其内容。即使是一揽子软件包也应该有自己的版本序列。
或者,您可以简单地运送单个包。