ज्ञानकोष

zinnector dev मार्फत स्थानीय विकास

zinnector dev ले कसरी तपाइँको आफ्नै मेसिनमा वास्तविक WordPress चलाउँछ: दुई रनटाइमहरू (Docker बिनाको WebAssembly, वा Docker मा नेटिभ PHP), PHP र WordPress संस्करण छनौट गर्ने, तपाइँको प्रोजेक्टबाट के सर्भ गरिन्छ, ५७० MB रनटाइम कहाँ बस्छ, र Node 26 मा के हुन्छ।

zinnector dev ले तपाइँको प्रोजेक्टमा रहेका प्लगइनहरू र थिमहरूलाई सेवा दिँदै, तपाइँले छान्नुभएको PHP संस्करण प्रयोग गरेर तपाइँको आफ्नै मेसिनमा वास्तविक WordPress चलाउँछ। यस लेखले यसले प्रयोग गर्न सक्ने दुई रनटाइमहरू, संस्करणहरू कसरी छान्ने, कुन कुरा कहाँबाट सेवा दिइन्छ, र रनटाइम डिस्कमा कहाँ बस्छ भन्ने कुराको व्याख्या गर्छ — ताकि तपाइँले स्थानीय रूपमा परीक्षण गर्ने कुरा नै तपाइँले डिप्लोय (deploy) गर्ने कुरा होस्।

दुई रनटाइमहरू, र दुवै किन वास्तविक हुन्

Playground पूर्वनिर्धारित हो। WordPress Playground ले PHP लाई WebAssembly मा कम्पाइल गर्छ र यसलाई Node भित्र चलाउँछ, त्यसैले Node बाहेक केही पनि नभएको ल्यापटपले पनि केही सेकेन्डमै WordPress बुट (boot) गर्छ। ५.२ देखि ८.५ सम्मको जुनसुकै PHP उपलब्ध छ। यसले PHP एक्सटेन्सनहरूको एउटा सानो सेट (intl, redis, memcached हालको निर्माणमा मापन गरिए अनुसार) बोकेको हुन्छ, जुन धेरैजसो प्लगइन र थिमको कामको लागि पर्याप्त हुन्छ।

Docker ले नेटिभ php-fpm र MariaDB कन्टेनरहरू चलाउँछ। यो ढिलो हुन्छ, यसलाई Docker डेमोन र करिब १.२ GB इमेजहरू चाहिन्छ, र यसले PHP ७.४ देखि ८.५ लाई समर्थन गर्छ — तर यसले imagickgd सहितको पूर्ण एक्सटेन्सन सेट भएको नेटिभ PHP चलाउँछ। WebAssembly निर्माणमा नभएको कुनै एक्सटेन्सनको परीक्षण गर्नुपर्दा यो सही विकल्प हो।

zinnector dev                       # playground
zinnector dev --runtime docker      # native PHP + MariaDB

Docker मा कहिल्यै पनि चुपचाप फर्किइँदैन। WebAssembly मा छु भन्ने ठानेको तर वास्तवमा Docker मा रहेको विकासकर्तालाई सहयोग गर्ने प्रयास गरिरहेको एउटा उपकरणले गलत उत्तर दिएको हुन्छ, त्यसैले यसलाई नाम लिएरै अनुरोध गर्नुपर्छ।

PHP र WordPress संस्करणहरू छान्दै

zinnector dev --php 8.1 --wp 6.7    # एउटा निश्चित जोडीको बिरुद्ध विकास गर्नुहोस्
zinnector dev --port 9401           # 9401 व्यस्त हुँदा
zinnector dev --no-login            # wp-admin मा स्वतः साइन इन नगर्नुहोस्
zinnector dev --verbose             # रनटाइमको आफ्नै आउटपुट देखाउनुहोस्

पूर्वनिर्धारित मानहरू प्रोजेक्टमा रहेको zinnector.json बाट आउँछन् — php, wordpress, runtimeport — जुन zinnector new ले लेख्छ र तपाइँले कमिट (commit) गर्नुपर्छ, ताकि प्रोजेक्टमा भएका सबैले उही संस्करणहरू चलाउन सकून्। त्यो रनटाइमको लागि कमाण्ड लाइनमा दिइएको फ्ल्याग फाइलभन्दा बढी प्रभावकारी हुन्छ।

तपाइँले घोषणा गर्नुभएको संस्करण र चलिरहेको संस्करण फरक कुराहरू हुन्। zinnector dev --once ले रनटाइम बुट गर्छ, यसले वास्तवमा रिपोर्ट गर्ने कुराहरू — PHP संस्करण, WordPress संस्करण, लोड भएका एक्सटेन्सनहरू — प्रिन्ट गर्छ र रोकिन्छ। zinnector check --probe ले तपाइँको प्रोजेक्टलाई होस्टिङ स्लटसँग तुलना गर्दा यही मापन प्रयोग गर्छ।

तपाइँको प्रोजेक्टबाट के सेवा दिइन्छ

रनटाइमले तपाइँको प्रोजेक्टको wp-content/plugins, wp-content/themeswp-content/mu-plugins डाइरेक्टरीहरूलाई सीधै माउन्ट (mount) गर्छ, त्यसैले तपाइँले सेभ गरेको फाइल अर्को पटक रिफ्रेस गर्दा प्रत्यक्ष देखिन्छ। अवस्थित तर वास्तविक सामग्री नभएका डाइरेक्टरीहरू जानाजानी माउन्ट गरिंदैनन्: रनटाइमको आफ्नै थिमहरूमाथि माउन्ट गरिएको खाली themes/ ले WordPress सँग कुनै पनि थिम नभएको अवस्था सिर्जना गर्दछ, जुन तपाइँको साइटको सट्टा खाली ५०० त्रुटि हो। त्यसैले स्क्याफोल्ड (scaffold) ले खाली डाइरेक्टरीहरूलाई .gitkeep का साथ राख्छ र तपाइँले तीभित्र थिम नराखेसम्म तिनले कुनै पनि कुरालाई छेक्दैनन् (shadow गर्दैनन्)।

रनटाइम कहाँ बस्छ

WordPress रनटाइमलाई CLI सँग पठाउनुभन्दा पनि पहिलो पटक प्रयोग गर्दा डाउनलोड गरिन्छ — प्रत्येक PHP बिल्ड बोक्ने प्याकेज करिब ५७० MB को हुन्छ, र साइटहरूको सूची मात्र हेर्ने विकासकर्ताले त्यसको मूल्य चुकाउनु पर्दैन। यो Zinnector® को आफ्नै क्यास (cache), ~/.cache/zinnector/runtimes/playground/<version> (वा ZINNECTOR_CACHE_DIR ले संकेत गर्ने ठाउँमा) राखिन्छ, तपाइँको प्रोजेक्टमा कहिल्यै राखिंदैन, त्यसैले यो तपाइँको रिपोजिटरीमा वा zinnector push ले मापन गर्ने ट्रीमा पर्न सक्दैन। डाउनलोड तपाइँको आफ्नै npm द्वारा गरिन्छ, जुन node node-cli.js को रूपमा चलेको हुन्छ — कहिल्यै पनि शेल (shell) मार्फत होइन।

रनटाइम संस्करण CLI संस्करणमा पिन गरिएको हुन्छ, त्यसैले एउटै प्रोजेक्टमा भएका दुई विकासकर्ताहरूले उही PHP बिल्डहरू चलाउँछन्। zinnector dev --reset-runtime ले स्थापना गरिएको रनटाइमलाई फ्याँक्छ र यसलाई फेरि स्थापना गर्छ, जुन स्थापना त भयो तर बुट नहुने रनटाइमको लागि समाधान हो।

Node २६ वा सोभन्दा नयाँ संस्करणमा

CLI आफैंमा २४ देखि माथिको जुनसुकै Node मा चल्छ। यद्यपि, रनटाइमको नेटिभ मोड्युलले Node २४ र २५ (सेप्टेम्बर २०२६ सम्मको अवस्था अनुसार) का लागि मात्र पूर्व-निर्मित बाइनरीहरू पठाउँछ। केही पनि कम्पाइल गर्नुको सट्टा — जसको अर्थ Windows मा Visual Studio स्थापना गर्नु हो — Zinnector® ले रनटाइमका लागि मात्र एउटा Node २४ ल्याउँछ, जुन करिब ३० MB को हुन्छ, र nodejs.org ले प्रकाशित गरेका चेकसम (checksums) सँग प्रमाणित गरेर उही क्यासमा राख्छ। यसले लागू हुँदा स्थापना प्रम्प्टमा सोही कुरा भन्छ। तपाइँको आफ्नै Node को बारेमा कुनै पनि कुरा परिवर्तन हुँदैन।

सम्बन्धित

अझै पनि अल्झिनुभयो?

प्रत्येक प्लानमा सहयोग समावेश छ र तपाईंको आफ्नै भाषामा उत्तरहरू पाइन्छ।

सम्पर्क समर्थन सबै लेखहरू
zinnector dev मार्फत स्थानीय विकास