使用npm copyfiles复制dist内容至目标目录时排除dist文件夹的方法
解决copyfiles复制dist内容时避免嵌套dist目录的问题
我之前用copyfiles的时候也踩过这个路径匹配的坑!你想要的就是把dist目录里的所有内容(bundles、lib、package.json)直接放到目标目录,而不是套个dist文件夹在里面,对吧?给你几个靠谱的解决办法:
最稳妥的命令写法
直接用-u参数去掉dist这一级目录,同时递归复制所有内容:
copyfiles -u 1 -f dist/**/* 你的目标目录路径
来拆解一下每个部分的作用:
-u 1:告诉copyfiles移除源路径最外层的1级目录(也就是dist这一层),这样复制的就是dist里面的内容,而不是dist本身-f:强制覆盖目标目录里已有的同名文件,避免因为文件存在而报错dist/**/*:递归匹配dist目录下的所有文件和子目录(包括嵌套的内容)你的目标目录路径:换成你实际的目标路径,比如../publish-folder或者./output
另一种简洁写法
如果只需要复制dist下的直接子项(也就是你提到的bundles、lib、package.json,它们的子内容会被自动复制),可以不用-u参数,直接指定dist下的所有子元素:
copyfiles -f dist/* 你的目标目录路径
这个命令会把dist目录下的每个直接子项(文件夹和文件)都复制到目标目录里,效果和上面的命令一致。
避坑提醒:别犯这个常见错误
很多人会写成下面这样,结果就会把整个dist文件夹复制到目标目录里,形成嵌套:
# ❌ 错误写法:会导致目标目录出现 dist/bundles、dist/lib... copyfiles dist 你的目标目录路径
一定要记住:源路径要指向dist里面的内容,而不是dist目录本身!
内容的提问来源于stack exchange,提问作者ghiscoding
相关产品推荐
相关产品推荐

