![](/img/trans.png)
[英]Selecting all files of certain extensions in specified directory and below with Glob & Node.js
[英]npm script to remove all files in directory except files with certain extensions (mac os)
我知道這里有很多類似的問題,但我還沒有找到我正在尋找的答案。 這是我嘗試在 npm 腳本中使用的命令。
rm -rf public/!(*.md)
我通過使用命令shopt -s extglob
啟用了擴展全局連接,並且該命令在終端中運行良好。 我遇到的問題是,當我使用與 npm 腳本相同的命令時,它不會運行。
"scripts": {
// ...
"clean:public": "rm -rf public/!(*.md)",
//...
}
> rm -rf public/!(*.md)
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `rm -rf public/**/!(*.md)'
rm -rf 'public/!(*.md)'
我剛剛了解到 npm run 腳本不使用運行命令的用戶的 shell。 我不知道如何解決這個問題,除非安裝額外的 npm 包? 如果是這種情況,我應該安裝哪些軟件包?
在 bash 下運行你的腳本。 正如您從錯誤消息中看到的,即sh:
,這不是 bash。 如果腳本必須在 sh 下運行,請使用 sh-wrapper 腳本。 例如,如果您當前的 bash 腳本(包含rm
或您需要做的任何事情)是foo.sh
,請將命令寫為:
"clean:public": "bash /path/to/your/script/foo.sh"
遇到了同樣的問題,並在del-cli
包的推薦下讓它工作。
npm install --save-dev del-cli
然后在 package.json
"clean:public": "del public/** '!public/*.md'"
對於那些好奇的人,可以使用--force
標志在當前目錄之外使用del
"clean:public": "del ../some-upper-dir/** '!../some-upper-dir/*.md' -f"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.