Связанная с npm локальная библиотека требует node_modules, а git - связанная библиотека (тоже самое) - PullRequest
1 голос
/ 25 июня 2019

Извините за плохой заголовок (на самом деле не знаю, какие еще названия я могу дать на этот вопрос).

Короче говоря, как первый разработчик библиотеки реагирующих компонентов. Я использую webpack 4 для передачи моего fancy-Reaction-component-lib в модуль.

Все идет хорошо, пока я не начну использовать npm-link для ускорения локальной скорости разработки.

Итак, главная проблема в том, что я указал следующее

//webpack.fancy-react-component-lib.config.js
...    
externals: {
        react: {
          root: 'React',
          commonjs2: 'react',
          commonjs: 'react',
          amd: 'react',
          umd: 'react',
        },
        'react-dom': {
          root: 'ReactDOM',
          commonjs2: 'react-dom',
          commonjs: 'react-dom',
          amd: 'react-dom',
          umd: 'react-dom',
        },
      }
...

//package.json
...
"dependencies": {},
  "devDependencies": {
   ...
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-redux": "^7.0.3",
    "react-router-dom": "^5.0.0",
    ...
  },
  "peerDependencies": {
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-redux": "^7.0.3",
    "react-router-dom": "^5.0.0"
  }
...

Так что, если я импортировал модуль через синтаксис git

"fancy-react-component-lib" :"git+ssh://git@bitbucket.org/fancy-react-component-lib.git#test1.0.11"

Все отлично работает, будет только одна копия реаги в окончательном комплекте js.

Но если я связался с npm-ссылкой на папку проекта, ко второй копии реаги будет добавлен финальный пакет js.

Может кто-нибудь сказать мне, почему?

Спасибо

1 Ответ

0 голосов
/ 08 июля 2019

Поскольку никто не дает лучшего ответа, я просто опубликую здесь, как я решил проблему.

Прежде всего, ссылка npm - это не более чем символическая ссылка.Вместо того, чтобы использовать ссылку npm, как предложено на странице решения реакции.Я попытался создать символические ссылки сам, и это работает.

ln -s [your_fancy_lib_project] [project/node_moduels/your_fancey_lib_project]

Также вам нужно создать ссылки в [your_fancy_lib] / node_modules / реагировать и [your_fancy_lib] / node_moduels / реагировать на дом до [проект] / node_moduels / реагировать и [проект] / node_moduels / реагировать на дом

ln -s [project/node_moduels/react] [your_fancey_lib_project/node_moduels/react]
ln -s [project/node_moduels/react-dom] [your_fancey_lib_project/node_moduels/react-dom]

Конечно, не забудьте очистить папку перед созданием символической ссылки.

...