Во-первых, статическое решение:
Вы можете включить файл .npmignore
в каталог, который хотите исключить.Как указано в doc :
Как и в git, npm ищет файлы .npmignore и .gitignore во всех подкаталогах вашего пакета, а не только в корневом каталоге.
Я создал пример этого в https://github.com/dral/npmignore-example (и соответствующем пакете npmignore-example
).
Структура файла index.js .npmignore bar / index.js baz / index.jsfoo / index.js /.npmignore
корневой .npmignore удаляет только каталог baz.вложенный foo / .npmignore удаляет весь контент (с этого момента).
Установленный пакет включает в себя только
index.js
bar/index.js
Для динамического выполнения вы можете использовать скрипт, который добавляет изатем удаляет простой файл .npmignore
в выбранных папках.
echo '*' > .r2g/.npmignore && npm publish && rm .r2g/.npmignore
Затем, если вам нужно автоматизировать это, рассмотрите возможность использования сценариев prepublish
и postpublish
, которые учитывают переменную envтак что вы можете использовать что-то вроде NPM_IGNORE=.r2g npm publish
.
Надеюсь, это поможет.