解壓縮只取第二層目錄以下的檔案與目錄
Angular/Vue 這類的前端框架,在執行 npm run build
建置以後,會產生 dist 的資料夾,裏面就是要佈署的檔案。一般會使用 tar czf dist.tar.gz dist
將該資料夾裡的檔案打包為 tarball。
使用 Ansible 佈署時,需要使用 unarchive 模組解壓縮,這時會直接解壓縮出 dist 目錄。
通常解法會有兩種,第一種是在打包時,先進入 dist 資料夾,再進行打包。
第二種方法就是本文要介紹的小技巧。
這個小技巧是 Google 找到的,網址在這邊:Extract without first directory
方法就是利用 unarchive 模組的 extra_opts 參數,因為 tarball 檔案,unarchive 模組會使用 tar 去解壓縮,tar 有個參數:--strip-components=NUMBER
,利用這個參數就可以移除掉前面 NUMBER 層的目錄。
範例如下
- name: Extract archive
unarchive:
src: file.tar.gz
dest: /foo/bar
extra_opts:
- "--strip-components=1"
現在大家就知道可以透過 unarchive 模組的 extra_opts ,帶入解壓縮指令的參數來達到我們的目的了。