Объединить библиотечные пакеты в один узел - PullRequest
0 голосов
/ 03 мая 2018

Я использую несколько библиотек снова и снова в нескольких проектах, и я хочу внедрить определенные версии в проекты.

Проект 1

{
  "name": "project_1",
  "version": "0.1.0",
  "dependencies": {
    "react": "^16.3.2",
    "react-dom": "^16.3.2",
    "react-router": "^4.2.0",
    "react-router-dom": "^4.2.2"
  }
}

Проект 2

{
  "name": "project_1",
  "version": "0.1.0",
  "dependencies": {
    "react": "^16.3.2",
    "react-dom": "^16.3.2",
    "react-router": "^4.2.0",
    "react-router-dom": "^4.2.2"
  }
}

Для любого проекта я бы хотел поместить все пакеты выше react, react-dom, react-router и react-route-dom в один узел (all-libs), как показано ниже. Таким образом, я могу заморозить версии во всех проектах.

Любой проект

{
  "name": "project_1",
  "version": "0.1.0",
  "dependencies": {
    "all-libs": "0.0.1"
  }
}

Причина выбора такого подхода:

  1. Централизованные обновления версий во избежание проблем совместимости версий.

Мой вопрос здесь, как создать этот пакет (all-libs)?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Если вы хотите, чтобы эти пакеты были в одном пакете, вам нужно как-то представить эти библиотеки в этом пакете:

import { React, BrowserHistory, ReactDOM } from 'all-libs';

Но я бы подумал, если это действительно имеет смысл. Обратите внимание, что все зрелые библиотеки, такие как create-react-app и nextjs, требуют, чтобы вы сами устанавливали определенные версии.

0 голосов
/ 03 мая 2018

Вы можете разместить собственный пакет npm, в котором эти пакеты являются зависимостями. Вы можете настроить собственный сервер Nexus, который может разместить ваш пакет, или вы можете поместить его в npmjs.

Добавьте эти строки в свой package.json:

"name": "all-libs",
"version": "0.0.1",
"description": "My Libs for every project",
"author": "Me",
"license": "MIT",
"engines": {
    "node": ">=8.9.3"
},
"publishConfig": {
    "registry": "http://myRegistry.com"
},
"devDependencies": {},
"dependencies": {
    "react": "^16.3.2",
    "react-dom": "^16.3.2",
    "react-router": "^4.2.0",
    "react-router-dom": "^4.2.2"
}

И затем вы можете опубликовать его через NPM следующим образом: npm publish.

Для получения дополнительной информации см. Документацию по публикации пакетов: https://docs.npmjs.com/cli/publish

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...