"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > अपने सीएलआई टूल में टेम्पलेट डाउनलोड करने के लिए डिजिट का उपयोग करें।

अपने सीएलआई टूल में टेम्पलेट डाउनलोड करने के लिए डिजिट का उपयोग करें।

2024-11-02 को प्रकाशित
ब्राउज़ करें:370

मुझे रेमोशन सोर्स कोड में "डिजिट" नाम की एक फ़ाइल मिली।
रिमोशन आपको प्रोग्रामेटिक रूप से वीडियो बनाने में मदद करता है।

इस लेख में, हम निम्नलिखित अवधारणाओं को देखेंगे:

  1. डिजिट क्या है?
  2. रिमोशन की डिजिट फ़ाइल से प्रेरित एक सरल डिजिट फ़ंक्शन बनाएं

डिजिट क्या है?

मुझे ओपन सोर्स में रीडमेस में से एक में "डिजिट" का उल्लेख देखना याद है, लेकिन मुझे याद नहीं आया कि यह कौन सा रिपॉजिटरी था इसलिए मैंने गूगल पर डिजिट का मतलब खोजा और यह डिजिट एनपीएम पैकेज पाया।

सरल शब्दों में, आप केवल नवीनतम कमिट डाउनलोड करके जीथब रिपॉजिटरी की एक प्रति बनाने के लिए डिजिट का उपयोग कर सकते हैं
संपूर्ण गिट इतिहास के बजाय।

इस पैकेज के बारे में अधिक पढ़ने के लिए डिजिट के लिए आधिकारिक एनपीएम पैकेज पर जाएं।

आप इस डिजिट पैकेज का उपयोग Gitlab या Bitbucket से रेपो डाउनलोड करने के लिए भी कर सकते हैं, इसलिए यह केवल Github रिपॉजिटरी तक सीमित नहीं है।

# download from GitLab
degit gitlab:user/repo

# download from BitBucket
degit bitbucket:user/repo

degit user/repo
# these commands are equivalent
degit github:user/repo

यहां जावास्क्रिप्ट में एक नमूना उपयोग है:

const degit = require('degit');

const emitter = degit('user/repo', {
    cache: true,
    force: true,
    verbose: true,
});

emitter.on('info', info => {
    console.log(info.message);
});

emitter.clone('path/to/dest').then(() => {
    console.log('done');
});

रेमोशन की डिजिट फ़ाइल से प्रेरित एक सरल डिजिट फ़ंक्शन बनाएं

एक सरल डिजिट फ़ंक्शन बनाने का तरीका समझने के लिए, आइए रेमोशन की डिजिट.ts फ़ाइल से कोड को तोड़ें। यह फ़ाइल डिजिट एनपीएम पैकेज के मूल संस्करण को लागू करती है: पूरा इतिहास डाउनलोड किए बिना GitHub रिपॉजिटरी की नवीनतम स्थिति प्राप्त करना।

1. आयात का उपयोग किया गया

import https from 'https';
import fs from 'node:fs';
import {tmpdir} from 'node:os';
import path from 'node:path';
import tar from 'tar';
import {mkdirp} from './mkdirp';
  • https: रिपॉजिटरी लाने के लिए नेटवर्क अनुरोध करने के लिए उपयोग किया जाता है।
  • fs: फ़ाइल सिस्टम के साथ इंटरैक्ट करता है, जैसे डाउनलोड की गई फ़ाइलें लिखना।
  • tmpdir: सिस्टम का अस्थायी निर्देशिका पथ प्रदान करता है।
  • पथ: फ़ाइल पथों को संभालता है और परिवर्तित करता है।
  • टार: टारबॉल (संपीड़ित फ़ाइल) की सामग्री को निकालता है।
  • mkdirp: निर्देशिकाओं को पुनरावर्ती रूप से बनाने के लिए एक सहायक फ़ंक्शन, एक अलग फ़ाइल में प्रदान किया गया।

2: रिपॉजिटरी लाना

export function fetch(url: string, dest: string) {
    return new Promise((resolve, reject) => {
        https.get(url, (response) => {
            const code = response.statusCode as number;
            if (code >= 400) {
                reject(
                    new Error(
                        `Network request to ${url} failed with code ${code} (${response.statusMessage})`,
                    ),
                );
            } else if (code >= 300) {
                fetch(response.headers.location as string, dest)
                    .then(resolve)
                    .catch(reject);
            } else {
                response
                    .pipe(fs.createWriteStream(dest))
                    .on('finish', () => resolve())
                    .on('error', reject);
            }
        }).on('error', reject);
    });
}
  • यूआरएल हैंडलिंग: फ़ंक्शन जांच करता है कि अनुरोध सफल है या नहीं (स्थिति कोड 300 से नीचे)। यदि यह रीडायरेक्ट है (300 और 399 के बीच कोड), तो यह नए यूआरएल का अनुसरण करता है। यदि यह एक त्रुटि है (कोड 400), तो यह वादे को अस्वीकार करता है।
  • फ़ाइल सेविंग: रिपॉजिटरी को डाउनलोड किया जाता है और fs.createWriteStream का उपयोग करके गंतव्य पथ पर सहेजा जाता है।

3: रिपॉजिटरी को निकालना

रिपॉजिटरी डाउनलोड करने के बाद, टारबॉल की सामग्री को निकालना आवश्यक है:

function untar(file: string, dest: string) {
    return tar.extract(
        {
            file,
            strip: 1,
            C: dest,
        },
        [],
    );
}
  • टार एक्सट्रैक्शन: यह फ़ंक्शन .tar.gz फ़ाइल की सामग्री को निर्दिष्ट गंतव्य निर्देशिका में निकालता है।

4: यह सब एक साथ रखना

मुख्य डिजिट फ़ंक्शन सब कुछ एक साथ जोड़ता है, निर्देशिका निर्माण को संभालता है, रिपॉजिटरी को लाता है और निकालता है:

export const degit = async ({
    repoOrg,
    repoName,
    dest,
}: {
    repoOrg: string;
    repoName: string;
    dest: string;
}) => {
    const base = path.join(tmpdir(), '.degit');
    const dir = path.join(base, repoOrg, repoName);
    const file = `${dir}/HEAD.tar.gz`;
    const url = `https://github.com/${repoOrg}/${repoName}/archive/HEAD.tar.gz`;

    mkdirp(path.dirname(file));
    await fetch(url, file);

    mkdirp(dest);
    await untar(file, dest);
    fs.unlinkSync(file);
};

mkdirp का उपयोग बनाने के लिए किया जाता है
एक निर्देशिका पुनरावर्ती रूप से।

निष्कर्ष:

मैंने पाया कि जब आप इंस्टॉलेशन कमांड चलाते हैं तो रेमोशन टेम्प्लेट डाउनलोड करने के लिए डिजिट का उपयोग करता है:

npx create-video@latest

यह कमांड आपको एक टेम्पलेट चुनने के लिए कहता है, यहीं पर डिजिट डाउनलोड करने के लिए क्रिया में आता है
चयनित टेम्पलेट की नवीनतम प्रतिबद्धता

आप सबूत के लिए क्रिएट-वीडियो पैकेज से इस कोड की जांच कर सकते हैं।

Use degit to download a template in your CLI tool.

ओपन सोर्स में उपयोग की जाने वाली सर्वोत्तम प्रथाओं से प्रेरित निःशुल्क पाठ्यक्रम प्राप्त करें।

मेरे बारे में:

वेबसाइट: https://ramunarasinga.com/

लिंक्डइन: https://www.linkedin.com/in/ramu-narasinga-189361128/

जीथब: https://github.com/Ramu-Narasinga

ईमेल: [email protected]

ओपन सोर्स में उपयोग की जाने वाली सर्वोत्तम प्रथाओं को जानें।

सन्दर्भ:

  1. https://github.com/Rich-Harris/degit
  2. https://github.com/remotion-dev/remotion/blob/main/packages/create-video/src/degit.ts
  3. https://github.com/remotion-dev/remotion/blob/c535e676 Badd055187d1ea8007f9ac76ab0ad315/packages/create-video/src/init.ts#L109
  4. https://github.com/remotion-dev/remotion/blob/main/packages/create-video/src/mkdirp.ts
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/ramunarasinga/use-degit-to-download-a-template-in-your-cli-tool-6hg?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3