Create `npm publish` zipped artifact



我有一个正在使用CI服务器构建的软件包。我可以使用诸如tar -zcvf filename.tgz .之类的内容将整个目录汇总,但我不想在.npmignore中包含文件。例如,我不想包括/src.gitignorejunit.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和this命令)。

最好的解决方案是-X

.npmignore

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

请注意,我包括node_modules/.gitnpm publish已经不包括它们,但是我们不希望它们在我们的档案中。现在,我们可以排除我们想要的任何文件/目录。

tar -X .npmignore -cvf filename.tar .

我注意到,我们排除的目录不包括目录的内容,但仍然包括目录本身,只是空。我们如何根本不包括目录?我尝试了.git/,但没有排除任何文件。

最新更新