あなたのプロジェクトの中のあなたのファイルの間違ったURLを見つけてください.

4917 ワード

URL-fiは、あなたがファイルまたはファイルに間違ったURLがあるかどうかテストする必要があるとき、本当にものすごい、そして、使いやすいです.しかし、それはテストされるファイルのためのコマンドオプションだけをサポートしました.私が私のHTMLファイルにいくつかの悪いURLを見つけようとした時のほとんどは、私のプロジェクトには異なったHTMLファイルがあった.それで、私は「一つの引数オプションでプロジェクトで再帰的にテストしないのですか?」

スタート
URL - FiはhyunjiLeeTechで書かれています.私がこのプロジェクトに貢献する前に、私は最初にこのアイデアを提案するissueを掲示しました.幸いにも、彼女は「先に行く!」

ディレクトリ内のファイルを検索!
ディレクトリ内のファイルを見つけるには、ファイルがフォルダかフォルダでないかを調べる必要がありました.
それで、私はfs.readdirSync(path, { encoding: "utf-8",withFileTypes:true })を使いました.これはdirentクラスを返しました.クラスの中には、ファイルの名前とそれらの型があります(1は非フォルダで、2はフォルダです).JSでファイルをフィルタリングする最良の方法は.もちろんフィルタを使用する!
        files = files.filter(file=>{
            return !file.isDirectory()
        });   
それから、我々の間違ったURLを見つけましょう!
files.map(file=>{
            let content = 0;
            try {
                content = fs.readFileSync(`${path}/${file.name}`, {encoding: "utf-8"})
            } catch (error) {
                console.log(colors.yellow(`${error}`));
            }
            let links = content.match(regex);
            for (let i = 0; links && i < links.length; i++) {
                let link = links[i];
                if (link.startsWith("https://")) {
                    checkUrl(link);
                } else {
                    checkUrl(link);
                    if (sFlag) {
                        checkUrl(link.replace(/^http/, "https"));
                    }
                }
            }
        })

オプションを追加
次のコードとして、このプログラムは3つのオプションのみをサポートします.S、H、VのHTTPSテスト、ヘルプメッセージとバージョンごとにV.
        if (arg.includes("s")) {
            ...
        }
        if (arg.includes("h")) {
            ...
        }

        if (arg.includes("v")) {
            ...
        }
コードのすぐ下に、私は'再帰的'のためのRオプションを追加しました.
        if (arg.includes("r")) {
            findFilesInDir(process.argv[3])
        }

修正いくつかの問題
すべてのコードを実装した後、私は変更をコミットするが、以下の問題があった.
1 .以前のコードでは、ユーザーが同時に複数の引数を入力することができます(例えば、URL fi - hvs test . html).しかし、私があなたのコードを使うとき、それはこれをするのを許しません(例えば、URL fi - hs test . html).これをチェックしていただけますか.
ファイルを使って- r引数を使うとき(ディレクトリではありませんが)エラーが発生します( ENOTDIR :ディレクトリではなくscandir ' test . html ).エラーではなく印刷メッセージを作ることができますか?
だから私は
        if (arg.includes("r")) {
            findFilesInDir(process.argv[3])
        }
to
        if (arg.includes("r")) {
            rFlag = true;
            findFilesInDir(process.argv[3])
        }
といくつかのtryとcatchブロックを追加
それで、findfilesinr全体が見えるように
try {
        let files = fs.readdirSync(path, { encoding: "utf-8",withFileTypes:true })

        files = files.filter(file=>{
            return !file.isDirectory() && !file.name.endsWith('.js')
        });   

        files.map(file=>{
            let content = 0;
            try {
                content = fs.readFileSync(`${path}/${file.name}`, {encoding: "utf-8"})
            } catch (error) {
                console.log(colors.yellow(`${error}`));
            }
            let links = content.match(regex);
            for (let i = 0; links && i < links.length; i++) {
                let link = links[i];
                if (link.startsWith("https://")) {
                    checkUrl(link);
                } else {
                    checkUrl(link);
                    if (sFlag) {
                        checkUrl(link.replace(/^http/, "https"));
                    }
                }
            }
        })
    } catch (error) {
        console.log(colors.yellow(`${error}`));
    }

もっと貢献
この小さなプロジェクトPRに参加し、何かを発行してください!