Создать `npm publish` архивированный артефакт - PullRequest
0 голосов
/ 20 марта 2019

У меня есть пакет, который я создаю с помощью 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 Ответ

0 голосов
/ 20 марта 2019

Лучшее решение - -X.

.npmignore

.git/*
__mocks__/*
.vscode/*
coverage/*
src/*
node_modules/*
junit.xml

Обратите внимание, что я включаю node_modules/ и .git.npm publish уже не включает их, но мы не хотим, чтобы они были в нашем архиве.Теперь мы можем исключить любой файл / каталог, который нам нужен.

tar -X .npmignore -cvf filename.tar .

Я заметил, что каталоги, которые мы исключаем, не включают в себя содержимое каталога, но по-прежнему включают сам каталог,просто пустоКак мы вообще не включаем каталог?Я попытался .git/, и он не исключил никаких файлов.

...