Как слить несколько (npm) файлов package.json в один с Gulp?

Предположим, что у меня есть mainFolder и 3 подпапки (subFolderA, subfolderB, subfolderC).

И эти подпапки все содержат package.json с зависимостями и devDependencies. (Главная папка /subFolderA/package.json)

Я хочу объединить их в один package.json в mainFolder (mainFolder/package.json)

Существует ли существующий пакет gulp (или любое другое решение вне Gulp) для объединения и объединения зависимостей package.json и devDependencies?

(Предположим, что конфликт версий не будет. Если решение также охватывает этот случай, это здорово!)

Можете ли вы разместить пример gulpfile.js или объяснить другие способы/инструменты.

Спасибо

Ответ 1

Вы можете попробовать использовать этот пакет узла для объединения файлов package.json: https://www.npmjs.com/package/package-merge

Редактировать следующий комментарий @dur

Пример:

var merge = require('package-merge')
var fs = require('fs');

var dst = fs.readFileSync('package.a.json');
var src = fs.readFileSync('package.b.json');
fs.writeFile("/tmp/package.merged.json", merge(dst,src));

Ответ 2

Вот два варианта:

json-merge

json-merge package.json --parse="dependencies" package2.json --parse="devDependencies"

npm-deps сканирует подкаталоги для вложенных файлов package.json и объединяет все зависимости вместе в одном файле package.json, который выводится на стандартный вывод.

Базовый шаблон, прошедший через стандартный ввод, используется для создания корневого файла package.json. Это позволяет игнорировать package.json системами управления версиями, которые конфликтуют с автоматически сгенерированными файлами. Атрибуты базового пакета, такие как имя и версия, могут храниться в отдельном файле, таком как package-base.json, и сохраняться в контроле версий.

$ cd my_cool_project $ npm-deps < package-base.json > package.json

Ответ 3

Вы можете попробовать модуль package-json-merge npm. Чтобы установить его, используйте эту команду -

npm install -g package-json-merge

Затем просто используйте команду ниже, чтобы объединить несколько package.json в один -

package-json-merge package1.json package2.json.... packageN.json > package.json

Ответ 4

Вы можете попробовать плагин webpack с именем webpack-package-manager, автоматически проверить версию и объединить package.json