#npm #tar
#npm #tar
Вопрос:
У меня есть пакет, который я создаю с использованием сервера 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 и эту команду) каждый раз, когда я добавляю файл / каталог в проект.
Комментарии:
1. Как вы относитесь к использованию такого инструмента, как npmjs.com/package/tartifacts ?
Ответ №1:
Лучшим решением является -X
.
.npmignore
.git/*
__mocks__/*
.vscode/*
coverage/*
src/*
node_modules/*
junit.xml
Обратите внимание, что я включаю node_modules/
и .git
. npm publish
они уже не включены, но мы не хотим, чтобы они были в нашем архиве. Теперь мы можем исключить любой файл / каталог, который захотим.
tar -X .npmignore -cvf filename.tar .
Я заметил, что каталоги, которые мы исключаем, не включают содержимое каталога, но по-прежнему включают сам каталог, просто пустой. Как нам вообще не включать каталог? Я попробовал .git/
, и это не исключило никаких файлов.