【问题标题】:nested package.json in Yarn workspacesYarn 工作区中的嵌套 package.json
【发布时间】:2020-02-15 04:38:17
【问题描述】:

当使用 yarn 工作空间时,是否可以嵌套 package.json 文件来解决包子集的依赖关系?避免重复?

cra 是 create-react-apps,pkg 是这些站点使用的包。 例如

| /
| - package.json
|---- /sites
|-------- /cra-1
|         - package.json
|-------- /cra-2
|         - package.json
|---- /packages
|     - package.json   // <<---- Extra level here
|-------- /pkg-1
|         - package.json
|-------- /pkg-1
|         - package.json
|-------- /pkg-2
|         - package.json

这将允许我们共享我们的包的共同依赖项...使它们保持同步和最新

【问题讨论】:

  • 看起来像类似问题的答案:stackoverflow.com/a/31774097/7452021
  • 我认为这不是一个有效的答案。它没有按预期使用该工具,而是描述了一个自定义脚本。

标签: npm yarnpkg lerna monorepo yarn-workspaces


【解决方案1】:

这也可以与 bash 脚本一起使用,但试试这个:

var fs = require('fs')
var join = require('path').join
var os = require('os')
var cp = require('child_process')
var resolve = require('path').resolve

// library path
var lib = resolve(__dirname, '../lib/')

fs.readdirSync(lib)
  .forEach(function (mod) {
    var modPath = join(lib, mod)
// ensure path has package.json
if (!fs.existsSync(join(modPath, 'package.json'))) return

// npm binary based on OS
var npmCmd = os.platform().startsWith('win') ? 'npm.cmd' : 'npm'

// install folder
cp.spawn(npmCmd, ['i'], { env: process.env, cwd: modPath, stdio: 'inherit' })
})

您可以通过根目录中的 npm 和 main package.json 运行脚本。该脚本将访问每个子目录并执行 npm install。

【讨论】:

  • 这听起来充满了灾难。
猜你喜欢
  • 2020-06-30
  • 2021-12-15
  • 1970-01-01
  • 2012-07-22
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
相关资源
最近更新 更多