我有一个使用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和此命令)。
答案 0 :(得分:0)
最好的解决方案是-X
。
.npmignore
.git/*
__mocks__/*
.vscode/*
coverage/*
src/*
node_modules/*
junit.xml
请注意,我包括node_modules/
和.git
。 npm publish
已经不包含它们,但是我们不希望它们出现在存档中。现在,我们可以排除所需的任何文件/目录。
tar -X .npmignore -cvf filename.tar .
我注意到我们要排除的目录不包括目录的内容,但仍然包括目录本身,只是空的。我们怎么根本不包括目录?我尝试了.git/
,但没有排除任何文件。