在包含多个包的repo中,每个包的版本应该代表什么?

时间:2018-03-05 14:02:39

标签: npm versioning package.json semantic-versioning

我正在开发一个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文件是否应共享相同版本,还是单独版本化?

1 个答案:

答案 0 :(得分:2)

每个包都应单独版本化。将它们绑定到相同的版本号意味着在一个版本中修复一个简单的bug,在另一个版本中需要一个无意义的版本块。不要骗你的客户!包版本号适用于其内容,仅适用于其内容。即使是一揽子软件包也应该有自己的版本序列。

可选地,您可以简单地发送单个包。