विकास सेटअप
पूर्वापेक्षाएँ
- डॉकर / डॉकर कंपोज़
- नोड.जेएस (देखें
engines.nodeमेंpackage.json) - पीएनपीएम (देखें
engines.pnpm/packageManagerमेंpackage.json) - एसक्यूलाइट3
- इंकस्केप (दस्तावेज़ीकरण एसवीजी अनुवाद और पीएनजी निर्यात के लिए; केवल आवश्यक यदि आप
translateयाtranslate:svgचलाते हैं) - बैट/बैटकैट (
translate:helpका एक सुंदर संस्करण दिखाने के लिए) - डायरएनवी (स्वचालित रूप से
.env*फ़ाइलें लोड करने के लिए) - प्लेव्राइट क्रोमियम (
pnpm installके बादpnpm take-screenshots:installचलाएँ; यहplaywright install chromiumचलाता है)
चरण
1. रिपॉजिटरी क्लोन करें:
git clone https://github.com/wsj-br/duplistatus.git
cd duplistatus
2. निर्भरताएँ स्थापित करें (डेबियन/उबंटू):
sudo apt update
sudo apt install sqlite3 git inkscape bat -y
sudo apt install -y build-essential python3 python3-dev python3-setuptools make g++ gcc pkg-config
3. पुराने नोड.जेएस स्थापनाएँ निकालें (यदि आपके पास पहले से स्थापित है)
sudo apt-get purge nodejs npm -y
sudo apt-get autoremove -y
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/share/man/man1/node*
sudo rm -rf /usr/local/lib/dtrace/node.d
rm -rf ~/.npm
rm -rf ~/.node-gyp
sudo rm -rf /opt/local/bin/node
sudo rm -rf /opt/local/include/node
sudo rm -rf /opt/local/lib/node_modules
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/include/node*
sudo rm -rf /usr/local/bin/node*
4. नोड.जेएस और पीएनपीएम स्थापित करें:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
npm config set allow-scripts=pnpm --location=user
npm install -g pnpm npm-check-updates doctoc
5. डायरएनवी समर्थन सेट करें
अपनी ~/.bashrc फ़ाइल में ये पंक्तियाँ जोड़ें
# direnv support (apt install direnv)
eval "$(direnv hook bash)"
इस कमांड के साथ:
(echo "# direnv support (apt install direnv)"; echo 'eval "$(direnv hook bash)') >> ~/.bashrc
रिपॉजिटरी बेसडायर में, चलाएँ:
direnv allow
अपनी ~/.profile फ़ाइल में ये पंक्तियाँ जोड़ें
# export the Bash environment (needed for code editor or AI Agents to load it).
export BASH_ENV="$HOME/.bashrc"
इस कमांड के साथ:
(echo "# export the Bash environment (needed for code editor or AI Agents to load it)."; \
echo 'export BASH_ENV="$HOME/.bashrc"') >> ~/.profile
आपको टर्मिनल को फिर से खोलने की आवश्यकता है या कोड संपादक आईडीई (विजुअल स्टूडियो कोड, कर्सर, लिंगमा, एंटीग्रेविटी, जेड, ...) को बंद/फिर से खोलने की आवश्यकता हो सकती है ताकि ये परिवर्तन प्रभावी हो सकें।
6. रिपॉजिटरी बेसडायर पर .env फ़ाइल बनाएँ इन चरों के साथ।
-
आप
VERSIONके लिए कोई भी मान उपयोग कर सकते हैं; यह स्वचालित रूप से अद्यतन हो जाएगा जब आप विकास स्क्रिप्ट का उपयोग करेंगे। -
ADMIN_PASSWORDऔरUSER_PASSWORDके लिए यादृच्छिक पासवर्ड का उपयोग करें; ये पासवर्डpnpm take-screenshotsस्क्रिप्ट में उपयोग किए जाएंगे। -
आप openrouter.ai से
OPENROUTER_API_KEYप्राप्त कर सकते हैं।VERSION=x.x.x# Development user passwordsADMIN_PASSWORD="admin_secret"USER_PASSWORD="user_secret"# Openrouter.ai API key for translation scripts in documentationOPENROUTER_API_KEY=sk-or-v1-your-key-for-translate-files
उपलब्ध स्क्रिप्ट
परियोजना में विभिन्न विकास कार्यों के लिए कई एनपीएम स्क्रिप्ट शामिल हैं:
डेवलपमेंट स्क्रिप्ट्स
pnpm dev- Next.js डेवलपमेंट सर्वर (पोर्ट 8666) और क्रॉन सेवा (पोर्ट 8667) को एक साथconcurrentlyके माध्यम से प्रारंभ करें (प्री-चेक सहित)। CTRL-C दोनों को रोक देता है। Next.js के लिएNODE_OPTIONSscripts/dev-preload.cjsलोड करता है, जोscripts/peer-ip.cjs(IP अनुमति सूचियों के लिए TCP पीयर पता) और अनुरोध-लॉग टाइमस्टैम्प लागू करता है।pnpm dev:next- केवल पोर्ट 8666 पर Next.js डेवलपमेंट सर्वर प्रारंभ करें (कोई क्रॉन नहीं)।pnpm build- उत्पादन के लिए एप्लिकेशन बनाएं (प्री-चेक सहित)pnpm lint- कोड गुणवत्ता की जांच करने के लिए ESLint चलाएंpnpm typecheck- TypeScript प्रकार जांच चलाएंscripts/upgrade-dependencies.sh— हर वर्कस्पेस पैकेज का निर्माण-सुरक्षित अपग्रेड (ऑटो-डिटेक्ट किया गया)।npm-check-updatesके साथ नवीनतम संस्करणों को हल करता है, वर्कस्पेस रूट से स्थापित करता है, और केवल उन अपग्रेड को रखता है जो प्रत्येक पैकेज केtypecheck/lintको पार करते हैं (पीयर गेट्स पिनeslint/typescriptजब लिंट स्टैक नवीनतम मुख्य की अनुमति नहीं देता है)। फिरpnpm audit/audit --fixचलाता है और कोड परिवर्तन की आवश्यकता वाले किसी भी सुरक्षा सुधार को बलपूर्वक लागू (और रिपोर्ट) करता है। वर्कस्पेस लॉकफ़ाइल और ब्राउज़रसूचि को ताज़ा करता है। अपने शेल पर nvm लागू करने के लिएsource ./scripts/upgrade-dependencies.shको प्राथमिकता दें; CI या स्वचालन में फ़ाइल को सीधे निष्पादित करते समयCI=1याUPGRADE_ALLOW_EXEC=1का उपयोग करें। केवल Node/pnpm टूलिंग के लिएscripts/upgrade-tools.shभी देखें।scripts/clean-workspace.sh- वर्कस्पेस साफ़ करेंpnpm i18n:tools --local/--remote— एक सहोदरai-i18n-toolsचेकआउट लिंक करें या नवीनतम npm पैकेज पुनर्स्थापित करें (scripts/link-ai-i18n-tools.sh)।link:स्पेसिफ़ायर को प्रतिबद्ध न करें।
नोट: preinstall स्क्रिप्ट स्वचालित रूप से pnpm को पैकेज प्रबंधक के रूप में लागू करता है।
प्रलेखन स्क्रिप्ट्स
इन स्क्रिप्ट्स को documentation/ निर्देशिका से चलाना चाहिए:
pnpm start- उत्पादन मोड में प्रलेखन साइट बनाएं और सर्व करें (डिफ़ॉल्ट रूप से पोर्ट 3000)pnpm start:en- अंग्रेजी में प्रलेखन विकास सर्वर प्रारंभ करें (हॉट रीलोडिंग सक्षम)pnpm start:fr- फ्रेंच स्थानीयकरण में प्रलेखन विकास सर्वर प्रारंभ करें (हॉट रीलोडिंग सक्षम)pnpm start:de- जर्मन स्थानीयकरण में प्रलेखन विकास सर्वर प्रारंभ करें (हॉट रीलोडिंग सक्षम)pnpm start:es- स्पेनिश स्थानीयकरण में प्रलेखन विकास सर्वर प्रारंभ करें (हॉट रीलोडिंग सक्षम)pnpm start:pt-br- पुर्तगाली (ब्राजील) स्थानीयकरण में प्रलेखन विकास सर्वर प्रारंभ करें (हॉट रीलोडिंग सक्षम)pnpm build- उत्पादन के लिए प्रलेखन साइट बनाएंpnpm write-translations- प्रलेखन से अनुवाद योग्य स्ट्रिंग्स निकालेंpnpm translate- AI का उपयोग करके प्रलेखन फ़ाइलें अनुवादित करें (अनुवाद कार्यप्रवाह देखें)pnpm lint- प्रलेखन स्रोत फ़ाइलों पर ESLint चलाएं
विकास सर्वर (start:*) त्वरित विकास के लिए हॉट मॉड्यूल प्रतिस्थापन प्रदान करते हैं। डिफ़ॉल्ट पोर्ट 3000 है।
उत्पादन स्क्रिप्ट्स
pnpm build-local- स्थानीय उत्पादन के लिए बनाएं और तैयार करें (प्री-चेक सहित, स्थैतिक फ़ाइलों को स्टैंडअलोन निर्देशिका में कॉपी करें)pnpm start-local- स्थानीय रूप से उत्पादन सर्वर प्रारंभ करें (पोर्ट 8666, प्री-चेक सहित)। नोट: पहलेpnpm build-localचलाएं।--require ./scripts/peer-ip.cjsके साथ स्टैंडअलोन सर्वर प्रारंभ करता है।pnpm start- उत्पादन सर्वर (पोर्ट 9666) उसी पीयर-IP प्रीलोड के साथ प्रारंभ करें। डॉकरdocker-entrypoint.shका उपयोग करके उसी स्क्रिप्ट को लोड करता है।
डॉकर स्क्रिप्ट्स
pnpm docker:up- डॉकर कंपोज स्टैक प्रारंभ करेंpnpm docker:down- डॉकर कंपोज स्टैक बंद करेंpnpm docker:clean- डॉकर वातावरण और कैश साफ़ करेंpnpm docker:devel- एक विकास डॉकर छवि बनाएं जिसेwsj-br/duplistatus:develके रूप में टैग किया गया है
क्रॉन सेवा स्क्रिप्ट्स
pnpm cron:start- उत्पादन मोड में क्रॉन सेवा प्रारंभ करेंpnpm cron:dev- विकास मोड में केवल क्रॉन सेवा फ़ाइल देखने के साथ प्रारंभ करें (पोर्ट 8667)। आमतौर पर अनावश्यक जबpnpm devका उपयोग कर रहे हों, जो पहले से क्रॉन शुरू करता है।pnpm cron:start-local- परीक्षण के लिए स्थानीय रूप से क्रॉन सेवा प्रारंभ करें (पोर्ट 8667)
परीक्षण स्क्रिप्ट्स
pnpm generate-test-data- परीक्षण बैकअप डेटा उत्पन्न करें (--servers=N पैरामीटर की आवश्यकता है)pnpm validate-csv-export- CSV निर्यात कार्यक्षमता को मान्य करेंpnpm test-entrypoint- स्थानीय विकास में डॉकर एंट्रीपॉइंट स्क्रिप्ट का परीक्षण करें (परीक्षण स्क्रिप्ट्स देखें)pnpm take-screenshots- प्रलेखन के लिए स्क्रीनशॉट लें (प्रलेखन उपकरण देखें)
अतिदेय जांच, क्रॉन स्वास्थ्य जांच और SMTP परीक्षण चल रहे एप्लिकेशन और curl के माध्यम से किया जाता है (परीक्षण स्क्रिप्ट्स देखें); उनके लिए पुराने स्टैंडअलोन pnpm सहायक हटा दिए गए थे।