在Yarn工作区中嵌套package.json

时间:2019-10-18 08:03:35

标签: npm yarnpkg lerna monorepo yarn-workspaces

在使用毛线工作区时,是否可以嵌套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

这将使我们能够共享程序包的常见依赖关系...使它们保持同步并保持最新状态

1 个答案:

答案 0 :(得分: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安装。