У меня есть пакет, который я создаю с помощью сервера CI. Я могу заархивировать весь свой каталог, используя что-то вроде tar -zcvf filename.tgz ., но я не хочу включать файлы в свой .npmignore. Например, я не хочу включать /src, .gitignore, junit.xml и некоторые другие каталоги.
Как создать артефакт, похожий на опубликованную версию пакета?
Думаю, одно из решений — использовать --exclude.
tar --exclude = "./src" --exclude = ".gitignore" --exclude = "junit.xml" -zcvf filename.tgz .
Или используйте --include:
tar -zcvf filename.tgz --include = "./lib" --include = ".babelrc.js" --include = ".eslint.js" --include = "package.json"
Однако мне не нравится ни одно из этих решений, потому что мне приходится вручную обновлять два места (.npmignore и эту команду) каждый раз, когда я добавляю файл/каталог в проект.

Лучшее решение -X.
.npmignore
.git/*
__mocks__/*
.vscode/*
coverage/*
src/*
node_modules/*
junit.xml
Обратите внимание, что я включаю node_modules/ и .git. npm publish уже не включает их, но мы не хотим, чтобы они были в нашем архиве. Теперь мы можем исключить любой файл/каталог, который захотим.
tar -X .npmignore -cvf filename.tar .
Я заметил, что каталоги, которые мы исключаем, не включают содержимое каталога, но по-прежнему включают сам каталог, просто пустой. Как мы вообще не включаем каталог? Я попробовал .git/, и он не исключил никаких файлов.
Как вы относитесь к использованию такого инструмента, как npmjs.com/package/tartifacts?