Node.jsの引数にパスを渡すときは引用符でくくる
引用符なしの場合、src/**/*.js
が文字列としてではなく、このパターンに一致するパスが引数に渡ってしまう。そのため「ダメな例」でtarget
を出力するとsrc/**/*.js
ではなくsrc/index.js
という文字列になる。
// glob.js
import { globSync } from 'node:fs'
import { argv } from 'node:process'
const [_node, _file, target] = argv
const paths = globSync(target)
console.log(paths)
ダメな例(引用符なし)
$ node glob.js src/**/*.js
["src/index.js"]
良い例(引用符あり)
$ node glob.js 'src/**/*.js'
[
"src/index.js",
"src/path/index.js",
"src/path/to/index.js"
]