Создайте заархивированный артефакт `npm publish`

У меня есть пакет, который я создаю с помощью сервера 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 и эту команду) каждый раз, когда я добавляю файл/каталог в проект.

Как вы относитесь к использованию такого инструмента, как npmjs.com/package/tartifacts?

Meg 20.03.2019 16:23
Настройка шаблона Metronic с помощью Webpack и Gulp
Настройка шаблона Metronic с помощью Webpack и Gulp
Я пишу эту статью, чтобы поделиться тем, как настроить макет Metronic с помощью Sass, поскольку Metronic предоставляет так много документации, и они...
0
1
491
1

Ответы 1

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

.npmignore

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

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

tar -X .npmignore -cvf filename.tar .

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

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