Загрузите пакет npm из локального каталога, не копируя ненужные файлы / папки, такие как node_modules

Давайте представим, что мне нужно разработать пакет npm my-package, который должен быть импортирован и использован my-project.

При разработке my-package мне нужно установить и использовать другие пакеты из npm. В конце разработки my-package я собрал все соответствующие файлы в каталоге dist. Поскольку я не хочу, чтобы все файлы в папке node_modules были частью опубликованного пакета, я указываю в .gitignore (или .npmignore) исключить папку node_modules. Итак, окончательная структура папки my-package выглядит примерно так:

my-package
  dist
    ... // all the code of the package to be distributed
  node_modules
    ... // all the node modules
  src
    ... // all source files
  package.json
  .gitignore

Теперь я публикую my-package в репозитории npm, а затем импортирую его в my-project с помощью команды npm i my-package,

В результате такого импорта структура директории, в которой размещается my-project, выглядит примерно так:

my-project
   ...  // stuff
   node_modules
      my-package
         dist
           ... // all the code of the package to be distributed
         src
           ... // all source files
         package.json

Как и ожидалось, папка node_modules не импортируется в папку my-package.

Поскольку я являюсь разработчиком как my-package, так и my-project, во время разработки я хотел бы импортировать my-package из локального пути с помощью команды, которая может выглядеть следующим образом:

npm -i ../my-package

Если я продолжу так, результат, который я вижу, состоит в том, что все файлы и папки, хранящиеся в каталоге my-package, копируются в папку node_modules my-project, т.е. исключения.gitignore (или .npmignore) не рассматриваются. Чистый результат представляет собой такую ​​структуру, как

my-project
   ...  // stuff
   node_modules
      my-package
         dist
           ... // all the code of the package to be distributed
         node_modules
           ... // all stuff imported by my-package
         src
           ... // all source files
         package.json
         ...  // any other file under my-package

Есть ли способ установить из локального пути только соответствующие файлы my-package, как это происходит, если пакет установлен из репозитория npm?

0 ответов

Сегодня у нас была такая же проблема. Разбираемся добавив в package.json локального пакета

“build”: “yarn run clean && yarn build-components && yarn pack”

А затем к проекту, который использует локальный пакет, который мы добавили к зависимостям package.json.

“yourpackage”: “file:../your-tgz.tgz”,

Надеюсь, это поможет

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

Другие вопросы по тегам