npm scripts에서 rimraf를 사용하지 않고 디렉터리 삭제
삼행
rimraf dist
가 node -e 'fs.rmSync(`dist`, {recursive:true, force:true})'
로 대체rimraf dist/*.bundle.js
등glob를 포함하는 교환불가장황한 설명
npm scripts에서 필요하지 않은 캐시나 구축된 출력 파일을 삭제하고 싶을 때rimraf POSIX의 포장
rm -rf
을 이 포장으로 대체하는 경우가 많다.명령 프롬프트(cmd.exe)에 없음npm run
을 비롯한 환경 종속 문제를 피하기 위해서다.그럼에도 불구하고 포장이 없으면 디렉터리를 차례로 삭제할 수 없기 때문에 좀 번거롭습니다.10.0
rm
fs.rmdir
fs.promises.rmdir
에 추가fs.rmdirSync
옵션은 설정recursive
을 통해 fs.rmdirSync('foo/', { recursive: true })
과rm -rf
에 접근할 수 있다.그나저나 glob을 사용할 수 없는 것 이외Windows에서 rimraf 실행.그러나 실제로 POSIX
rmdir
는 귀속 삭제 기능이 없기 때문에 recursive
를 rmdir
옵션에 추가하면 번거롭다는 의견이 있다.대안으로 추가rmtree
라는 함수를 고려한 것 같다.또 POSIX와의 통합성으로 볼 때rm
에 해당하는 것fs.unlink
도 복잡한 문제가 존재한다.그리하여14.0은 POSIX
rm
에 해당하는 rimraf 직접 사용fs.rmfs.promises.rm를 추가했다.리눅스의 케이스fs.rmSync
와 같이 rm -rf
로 분류하여 디렉터리를 삭제할 수 있다.따라서
fs.rmSync('foo/', { recursive: true, force: true })
의 코드를 문자열fs.rmSyncnode --eval
로 문자열에 전달하고 디렉터리를 삭제할 수 있다.node -e
및 node -e
에서는 REPL과 같은node -p
가져오기가 필요하지 않습니다.또 fs
를 선택한 이유는 fs.rmSync
는 fs.rm
부분, ,()=>{}
는 fs.promises.rm
부분이 조금 길다는 것이다..promises
귀속 삭제 옵션이 시스템에 추가되었기 때문에 fs.rm
시스템의 fs.rmdir
옵션은 recursive입니다.나중에 이 옵션을 지정해도 무시됩니다.[nix-shell:~/fs]$ node -v
v16.1.0
[nix-shell:~/fs]$ node -e "fs.rmdirSync('bin', {recursive: true})"
(node:11973) [DEP0147] DeprecationWarning: In future versions of Node.js, fs.rmdir(path, { recursive: true }) will be removed. Use fs.rm(path, { recursive: true }) instead
(Use `node --trace-deprecation ...` to show where the warning was created)
fs.rm
는 모든 기존 LTE에서 사용할 수 있는 것이 노드다.jsv12가 EOL 2022-04-30이 되면또는 v12fs.rm
가 반환될 수 있습니다.참조 링크
v16.0.0으로 deprecated
여기
fs.rmdir
의recursive
를 알고 문서를 보러 갔는데 deprecated가 됐어요. 놀랍게도 이 글을 쓴 계기가 됐어요.Reference
이 문제에 관하여(npm scripts에서 rimraf를 사용하지 않고 디렉터리 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/aumy/articles/node-e-fs-promises-rm-rimraf-recursive-true텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)