โœจ The Prompt Phrase
node --no-warnings app.js

๐Ÿ’ป Code Preview

๐Ÿ“ฆ All-in-One Code
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Disable all warnings - Interactive Tutorial</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600;700;900&family=Fira+Code:wght@400;500;600&display=swap" rel="stylesheet">
    <style>
        :root {
            --bg-primary: #0a0e27;
            --bg-secondary: #151932;
            --bg-card: #1e2139;
            --accent-purple: #a855f7;
            --accent-blue: #3b82f6;
            --accent-green: #10b981;
            --accent-red: #ef4444;
            --accent-yellow: #f59e0b;
            --accent-pink: #ec4899;
            --accent-cyan: #06b6d4;
            --accent-orange: #f97316;
            --text-primary: #f8fafc;
            --text-secondary: #94a3b8;
            --gradient-silence: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
            --gradient-quiet: linear-gradient(135deg, #8b5cf6 0%, #a855f7 100%);
            --shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Poppins', sans-serif;
            background: var(--bg-primary);
            color: var(--text-primary);
            line-height: 1.6;
            overflow-x: hidden;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
        }

        .progress-container {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 5px;
            background: var(--bg-secondary);
            z-index: 1000;
        }

        .progress-bar {
            height: 100%;
            background: var(--gradient-silence);
            width: 0%;
            transition: width 0.3s ease;
        }

        .hero {
            text-align: center;
            padding: 100px 20px;
            background: var(--gradient-silence);
            position: relative;
            overflow: hidden;
            border-radius: 0 0 50px 50px;
        }

        .hero::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: url('data:image/svg+xml,<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="2" fill="white" opacity="0.1"/></svg>');
            animation: float 20s linear infinite;
        }

        @keyframes float {
            from { transform: translateY(0); }
            to { transform: translateY(-100px); }
        }

        .hero-content {
            position: relative;
            z-index: 1;
        }

        .silence-icon {
            font-size: 5rem;
            margin-bottom: 20px;
            animation: silencePulse 3s ease-in-out infinite;
        }

        @keyframes silencePulse {
            0%, 100% { transform: scale(1); opacity: 1; }
            50% { transform: scale(1.1); opacity: 0.7; }
        }

        .command-display {
            display: inline-block;
            background: rgba(0, 0, 0, 0.4);
            padding: 25px 40px;
            border-radius: 15px;
            font-family: 'Fira Code', monospace;
            font-size: 1.5rem;
            margin: 30px 0;
            border: 3px solid rgba(255, 255, 255, 0.3);
            animation: pulse 2s ease-in-out infinite;
            color: white;
            font-weight: 600;
        }

        @keyframes pulse {
            0%, 100% { transform: scale(1); }
            50% { transform: scale(1.05); }
        }

        .hero h1 {
            font-size: 3.5rem;
            font-weight: 900;
            margin-bottom: 20px;
            color: white;
            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
        }

        .hero p {
            font-size: 1.4rem;
            opacity: 0.95;
            color: white;
        }

        .section {
            margin: 60px 0;
        }

        .section-title {
            font-size: 2.5rem;
            margin-bottom: 30px;
            background: var(--gradient-silence);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            display: inline-block;
            font-weight: 700;
        }

        .card {
            background: var(--bg-card);
            border-radius: 20px;
            padding: 40px;
            margin: 30px 0;
            box-shadow: var(--shadow);
            border: 1px solid rgba(255, 255, 255, 0.05);
            transition: transform 0.3s ease;
        }

        .card:hover {
            transform: translateY(-5px);
        }

        .code-block {
            background: #1e1e1e;
            border-radius: 15px;
            padding: 25px;
            margin: 20px 0;
            font-family: 'Fira Code', monospace;
            position: relative;
        }

        .code-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 15px;
            padding-bottom: 15px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        }

        .terminal-dots {
            display: flex;
            gap: 6px;
        }

        .terminal-dot {
            width: 12px;
            height: 12px;
            border-radius: 50%;
        }

        .dot-red { background: #ff5f56; }
        .dot-yellow { background: #ffbd2e; }
        .dot-green { background: #27c93f; }

        .copy-btn {
            background: var(--accent-purple);
            color: white;
            border: none;
            padding: 8px 16px;
            border-radius: 8px;
            cursor: pointer;
            font-size: 0.9rem;
            transition: all 0.3s ease;
        }

        .copy-btn:hover {
            background: var(--accent-blue);
            transform: scale(1.05);
        }

        .copy-btn.copied {
            background: var(--accent-green);
        }

        pre {
            margin: 0;
            overflow-x: auto;
        }

        code {
            color: #e0e0e0;
            font-size: 0.95rem;
            line-height: 1.8;
        }

        .code-comment { color: #6a9955; }
        .code-string { color: #ce9178; }
        .code-keyword { color: #569cd6; }
        .code-flag { color: #a855f7; font-weight: 600; }
        .code-node { color: #10b981; font-weight: 600; }

        .steps {
            counter-reset: step-counter;
        }

        .step {
            background: var(--bg-secondary);
            border-radius: 15px;
            padding: 30px;
            margin: 20px 0;
            position: relative;
            padding-left: 100px;
            transition: all 0.3s ease;
        }

        .step:hover {
            background: var(--bg-card);
            transform: translateX(10px);
        }

        .step::before {
            counter-increment: step-counter;
            content: counter(step-counter);
            position: absolute;
            left: 20px;
            top: 50%;
            transform: translateY(-50%);
            width: 60px;
            height: 60px;
            background: var(--gradient-silence);
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 1.8rem;
            font-weight: 900;
            color: white;
        }

        .step h3 {
            color: var(--accent-purple);
            margin-bottom: 10px;
            font-size: 1.5rem;
        }

        .feature-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 25px;
            margin: 30px 0;
        }

        .feature-card {
            background: var(--bg-secondary);
            padding: 30px;
            border-radius: 15px;
            text-align: center;
            transition: all 0.3s ease;
            border: 2px solid transparent;
        }

        .feature-card:hover {
            border-color: var(--accent-purple);
            transform: translateY(-10px);
        }

        .feature-icon {
            font-size: 3.5rem;
            margin-bottom: 15px;
        }

        .feature-title {
            font-weight: 600;
            color: var(--accent-purple);
            margin-bottom: 10px;
            font-size: 1.3rem;
        }

        .demo-container {
            background: var(--bg-secondary);
            border-radius: 20px;
            padding: 40px;
            margin: 30px 0;
        }

        .comparison {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 20px;
            margin: 30px 0;
        }

        .comparison-box {
            background: var(--bg-card);
            padding: 30px;
            border-radius: 15px;
        }

        .with-warnings {
            border: 2px solid var(--accent-orange);
        }

        .without-warnings {
            border: 2px solid var(--accent-green);
        }

        .warning-line {
            color: var(--accent-orange);
            padding: 5px;
            margin: 5px 0;
            font-family: 'Fira Code', monospace;
            font-size: 0.85rem;
        }

        .clean-line {
            color: var(--accent-green);
            padding: 5px;
            margin: 5px 0;
            font-family: 'Fira Code', monospace;
            font-size: 0.85rem;
        }

        .terminal {
            background: #1e1e1e;
            border-radius: 15px;
            padding: 20px;
            font-family: 'Fira Code', monospace;
            min-height: 250px;
            margin: 20px 0;
            overflow-y: auto;
            max-height: 500px;
        }

        .terminal-line {
            margin: 10px 0;
        }

        .terminal-prompt {
            color: var(--accent-green);
        }

        .demo-button {
            background: var(--gradient-silence);
            color: white;
            border: none;
            padding: 15px 40px;
            border-radius: 50px;
            font-size: 1.1rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.3s ease;
            display: inline-flex;
            align-items: center;
            gap: 10px;
            margin: 10px;
        }

        .demo-button:hover {
            transform: scale(1.05);
            box-shadow: 0 10px 30px rgba(139, 92, 246, 0.4);
        }

        .tabs {
            display: flex;
            gap: 10px;
            margin-bottom: 20px;
            flex-wrap: wrap;
        }

        .tab {
            padding: 12px 24px;
            background: var(--bg-secondary);
            border: none;
            border-radius: 10px;
            color: var(--text-primary);
            cursor: pointer;
            transition: all 0.3s ease;
            font-size: 1rem;
        }

        .tab:hover {
            background: var(--bg-card);
        }

        .tab.active {
            background: var(--gradient-silence);
            color: white;
        }

        .tab-content {
            display: none;
        }

        .tab-content.active {
            display: block;
        }

        .accordion-header {
            cursor: pointer;
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 20px;
            background: var(--bg-secondary);
            border-radius: 12px;
            margin: 15px 0;
            transition: all 0.3s ease;
        }

        .accordion-header:hover {
            background: var(--bg-card);
        }

        .accordion-icon {
            transition: transform 0.3s ease;
            font-size: 1.2rem;
        }

        .accordion-icon.active {
            transform: rotate(180deg);
        }

        .accordion-content {
            max-height: 0;
            overflow: hidden;
            transition: max-height 0.3s ease;
        }

        .accordion-content.active {
            max-height: 2000px;
        }

        .accordion-body {
            padding: 20px;
            background: var(--bg-secondary);
            border-radius: 12px;
            margin-top: 5px;
        }

        .tip, .warning, .success, .info {
            padding: 20px;
            border-radius: 10px;
            margin: 20px 0;
        }

        .tip {
            background: rgba(59, 130, 246, 0.1);
            border-left: 4px solid var(--accent-blue);
        }

        .tip::before { content: '๐Ÿ’ก '; font-size: 1.5rem; }

        .warning {
            background: rgba(239, 68, 68, 0.1);
            border-left: 4px solid var(--accent-red);
        }

        .warning::before { content: 'โš ๏ธ '; font-size: 1.5rem; }

        .success {
            background: rgba(16, 185, 129, 0.1);
            border-left: 4px solid var(--accent-green);
        }

        .success::before { content: 'โœ… '; font-size: 1.5rem; }

        .info {
            background: rgba(236, 72, 153, 0.1);
            border-left: 4px solid var(--accent-pink);
        }

        .info::before { content: '๐Ÿ” '; font-size: 1.5rem; }

        .quiz-container {
            background: var(--bg-card);
            border-radius: 20px;
            padding: 40px;
            margin: 30px 0;
        }

        .quiz-question {
            margin: 30px 0;
        }

        .quiz-question h3 {
            color: var(--accent-purple);
            margin-bottom: 20px;
            font-size: 1.3rem;
        }

        .quiz-options {
            display: flex;
            flex-direction: column;
            gap: 15px;
        }

        .quiz-option {
            background: var(--bg-secondary);
            padding: 20px;
            border-radius: 12px;
            cursor: pointer;
            transition: all 0.3s ease;
            border: 2px solid transparent;
        }

        .quiz-option:hover {
            border-color: var(--accent-blue);
            transform: translateX(10px);
        }

        .quiz-option.correct {
            border-color: var(--accent-green);
            background: rgba(16, 185, 129, 0.1);
        }

        .quiz-option.incorrect {
            border-color: var(--accent-red);
            background: rgba(239, 68, 68, 0.1);
        }

        .quiz-feedback {
            margin-top: 15px;
            padding: 15px;
            border-radius: 10px;
            display: none;
        }

        .quiz-feedback.show {
            display: block;
        }

        .quiz-feedback.correct {
            background: rgba(16, 185, 129, 0.1);
            border-left: 4px solid var(--accent-green);
        }

        .quiz-feedback.incorrect {
            background: rgba(239, 68, 68, 0.1);
            border-left: 4px solid var(--accent-red);
        }

        .cheat-sheet {
            background: var(--gradient-silence);
            border-radius: 20px;
            padding: 40px;
            margin: 30px 0;
            color: white;
        }

        .cheat-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 20px;
            margin-top: 30px;
        }

        .cheat-item {
            background: rgba(255, 255, 255, 0.15);
            backdrop-filter: blur(10px);
            padding: 20px;
            border-radius: 15px;
            border: 1px solid rgba(255, 255, 255, 0.2);
        }

        .cheat-item h4 {
            color: white;
            margin-bottom: 10px;
            font-weight: 600;
        }

        .cheat-item code {
            background: rgba(0, 0, 0, 0.3);
            padding: 4px 8px;
            border-radius: 5px;
            font-size: 0.9rem;
            color: white;
        }

        .highlight {
            color: var(--accent-yellow);
            font-weight: 600;
        }

        .footer {
            text-align: center;
            padding: 40px 20px;
            background: var(--bg-secondary);
            margin-top: 80px;
            border-radius: 20px;
        }

        .footer p {
            color: var(--text-secondary);
            margin: 10px 0;
        }

        .badge {
            display: inline-block;
            padding: 6px 12px;
            background: var(--gradient-silence);
            border-radius: 20px;
            font-size: 0.85rem;
            font-weight: 600;
            margin: 5px;
        }

        .confetti {
            position: fixed;
            width: 10px;
            height: 10px;
            background: var(--accent-purple);
            animation: confetti-fall 3s linear forwards;
            z-index: 9999;
        }

        @keyframes confetti-fall {
            to {
                transform: translateY(100vh) rotate(360deg);
                opacity: 0;
            }
        }

        @media (max-width: 768px) {
            .hero h1 { font-size: 2rem; }
            .command-display { font-size: 1rem; padding: 15px 20px; }
            .section-title { font-size: 1.8rem; }
            .card { padding: 25px; }
            .step { padding-left: 80px; }
            .step::before { width: 50px; height: 50px; font-size: 1.5rem; }
            .comparison { grid-template-columns: 1fr; }
        }
    </style>
</head>
<body>
    <div class="progress-container">
        <div class="progress-bar" id="progressBar"></div>
    </div>

    <div class="hero">
        <div class="hero-content">
            <div class="silence-icon">๐Ÿคซ</div>
            <h1>Silence Node Warnings!</h1>
            <div class="command-display">node --no-warnings app.js</div>
            <p>Clean, quiet output! ๐Ÿ”‡</p>
        </div>
    </div>

    <div class="container">
        <!-- What Is It -->
        <section class="section">
            <h2 class="section-title">๐Ÿค” What Is --no-warnings?</h2>
            <div class="card">
                <p style="font-size: 1.2rem; margin-bottom: 20px;">
                    <code>--no-warnings</code> is a <span class="highlight">Node.js flag</span> that suppresses all warning messages - giving you clean, distraction-free output! ๐Ÿคซ
                </p>
                <p style="margin-bottom: 20px;">
                    Think of it like putting your app on "silent mode"! ๐Ÿ“ต Node.js normally shows warnings about deprecations, experimental features, or potential issues. While these are helpful, sometimes you want clean output without the noise - that's where <code>--no-warnings</code> comes in!
                </p>
                <div class="info">
                    <strong>Breaking It Down:</strong>
                    <ul style="margin-left: 30px; margin-top: 10px; line-height: 2;">
                        <li><code class="code-node">node</code> - Node.js runtime</li>
                        <li><code class="code-flag">--no-warnings</code> - Suppress warnings flag</li>
                        <li><code>app.js</code> - Your application file</li>
                        <li>Silences deprecation warnings</li>
                        <li>Hides experimental feature warnings</li>
                        <li>Errors still show (important!)</li>
                    </ul>
                </div>
                <div style="margin-top: 30px;">
                    <h3 style="color: var(--accent-pink); margin-bottom: 15px;">What Gets Hidden? ๐Ÿ”</h3>
                    <p>Warnings about deprecated APIs, experimental features, unhandled promise rejections (warnings only), and other non-critical alerts. <strong>Errors still appear</strong> - only warnings are suppressed!</p>
                </div>
                <div class="warning" style="margin-top: 20px;">
                    <strong>Important:</strong> Use this carefully! Warnings exist for a reason - hiding them might mask real issues you should address.
                </div>
            </div>
        </section>

        <!-- Visual Comparison -->
        <section class="section">
            <h2 class="section-title">๐Ÿ“Š With vs Without Warnings</h2>
            <div class="card">
                <h3 style="margin-bottom: 20px; text-align: center;">See The Difference! ๐Ÿ”‡</h3>
                <div class="comparison">
                    <div class="comparison-box with-warnings">
                        <h4 style="color: var(--accent-orange); margin-bottom: 15px;">โš ๏ธ With Warnings (Default)</h4>
                        <div class="warning-line">(node:12345) Warning: Accessing non-existent property</div>
                        <div class="warning-line">(node:12345) DeprecationWarning: Buffer() is deprecated</div>
                        <div class="warning-line">(node:12345) ExperimentalWarning: VM Modules is experimental</div>
                        <div class="clean-line" style="margin-top: 10px;">Server started on port 3000</div>
                        <p style="margin-top: 15px; font-size: 0.9rem; color: var(--text-secondary);">๐Ÿ˜ฐ Cluttered with warnings</p>
                    </div>
                    <div class="comparison-box without-warnings">
                        <h4 style="color: var(--accent-green); margin-bottom: 15px;">โœ… Without Warnings</h4>
                        <div class="clean-line" style="margin-top: 45px;">Server started on port 3000</div>
                        <p style="margin-top: 15px; font-size: 0.9rem; color: var(--text-secondary);">๐ŸŽ‰ Clean and clear!</p>
                    </div>
                </div>
            </div>
        </section>

        <!-- Why Use It -->
        <section class="section">
            <h2 class="section-title">โœจ Why Suppress Warnings?</h2>
            <div class="card">
                <div class="feature-grid">
                    <div class="feature-card">
                        <div class="feature-icon">๐Ÿงน</div>
                        <div class="feature-title">Clean Output</div>
                        <p style="color: var(--text-secondary);">No clutter!</p>
                    </div>
                    <div class="feature-card">
                        <div class="feature-icon">๐Ÿ“ธ</div>
                        <div class="feature-title">Demos</div>
                        <p style="color: var(--text-secondary);">Professional screenshots!</p>
                    </div>
                    <div class="feature-card">
                        <div class="feature-icon">๐ŸŽฏ</div>
                        <div class="feature-title">Focus</div>
                        <p style="color: var(--text-secondary);">See what matters!</p>
                    </div>
                    <div class="feature-card">
                        <div class="feature-icon">๐Ÿ”ง</div>
                        <div class="feature-title">CI/CD</div>
                        <p style="color: var(--text-secondary);">Cleaner logs!</p>
                    </div>
                    <div class="feature-card">
                        <div class="feature-icon">๐Ÿ“ฆ</div>
                        <div class="feature-title">Legacy Code</div>
                        <p style="color: var(--text-secondary);">Known deprecations!</p>
                    </div>
                    <div class="feature-card">
                        <div class="feature-icon">๐ŸŽจ</div>
                        <div class="feature-title">Production</div>
                        <p style="color: var(--text-secondary);">Less noise!</p>
                    </div>
                </div>
            </div>
        </section>

        <!-- How It Works -->
        <section class="section">
            <h2 class="section-title">โš™๏ธ How Does It Work?</h2>
            <div class="card">
                <div class="steps">
                    <div class="step">
                        <h3>Step 1: Node Starts</h3>
                        <p>Node.js runtime launches with the --no-warnings flag.</p>
                    </div>
                    <div class="step">
                        <h3>Step 2: Warning Detection</h3>
                        <p>Node detects situations that would normally trigger warnings.</p>
                    </div>
                    <div class="step">
                        <h3>Step 3: Suppress Output</h3>
                        <p>Instead of printing warnings, Node silently ignores them.</p>
                    </div>
                    <div class="step">
                        <h3>Step 4: Errors Still Show</h3>
                        <p>Critical errors are NOT suppressed - they still appear.</p>
                    </div>
                    <div class="step">
                        <h3>Step 5: Clean Execution</h3>
                        <p>Your app runs with only essential output.</p>
                    </div>
                    <div class="step">
                        <h3>Step 6: Done!</h3>
                        <p>Clean, professional output! ๐ŸŽ‰</p>
                    </div>
                </div>
            </div>
        </section>

        <!-- Live Demo -->
        <section class="section">
            <h2 class="section-title">๐ŸŽฎ Interactive Demo</h2>
            <div class="demo-container">
                <div style="margin-bottom: 30px; text-align: center;">
                    <h4 style="margin-bottom: 15px;">See Warning Suppression! ๐Ÿคซ</h4>
                    <button class="demo-button" onclick="simulateWithWarnings()">
                        <span>โš ๏ธ</span>
                        <span>With Warnings</span>
                    </button>
                    <button class="demo-button" onclick="simulateNoWarnings()">
                        <span>๐Ÿ”‡</span>
                        <span>No Warnings</span>
                    </button>
                    <button class="demo-button" onclick="simulateComparison()">
                        <span>๐Ÿ”„</span>
                        <span>Side by Side</span>
                    </button>
                </div>
                <div class="terminal" id="terminal">
                    <div class="terminal-line">
                        <span class="terminal-prompt">$</span>
                        <span style="color: var(--text-secondary);"> Ready to compare outputs...</span>
                    </div>
                </div>
            </div>
        </section>

        <!-- Code Breakdown -->
        <section class="section">
            <h2 class="section-title">๐Ÿ’ป Usage Examples</h2>
            <div class="card">
                <div class="tabs">
                    <button class="tab active" onclick="switchTab('basic')">Basic Usage</button>
                    <button class="tab" onclick="switchTab('specific')">Specific Warnings</button>
                    <button class="tab" onclick="switchTab('environment')">Environment</button>
                    <button class="tab" onclick="switchTab('alternatives')">Alternatives</button>
                </div>
                <div id="basic" class="tab-content active">
                    <h3 style="color: var(--accent-pink); margin-bottom: 15px;">Basic Warning Suppression</h3>
                    <div class="code-block">
                        <div class="code-header">
                            <div class="terminal-dots">
                                <div class="terminal-dot dot-red"></div>
                                <div class="terminal-dot dot-yellow"></div>
                                <div class="terminal-dot dot-green"></div>
                            </div>
                            <button class="copy-btn" onclick="copyCode('basic-code')">๐Ÿ“‹ Copy</button>
                        </div>
                        <pre><code id="basic-code"><span class="code-comment"># Suppress all warnings</span>
node --no-warnings app.js

<span class="code-comment"># With other flags</span>
node --no-warnings --watch app.js

<span class="code-comment"># With environment variables</span>
NODE_ENV=production node --no-warnings server.js

<span class="code-comment"># In package.json scripts:</span>
{
  <span class="code-string">"scripts"</span>: {
    <span class="code-string">"start"</span>: <span class="code-string">"node --no-warnings app.js"</span>,
    <span class="code-string">"prod"</span>: <span class="code-string">"node --no-warnings server.js"</span>
  }
}

<span class="code-comment"># Then run:</span>
npm start</code></pre>
                    </div>
                    <div class="success" style="margin-top: 15px;">
                        <strong>Result:</strong> All warnings suppressed, clean output!
                    </div>
                </div>
                <div id="specific" class="tab-content">
                    <h3 style="color: var(--accent-pink); margin-bottom: 15px;">Suppress Specific Warning Types</h3>
                    <div class="code-block">
                        <div class="code-header">
                            <div class="terminal-dots">
                                <div class="terminal-dot dot-red"></div>
                                <div class="terminal-dot dot-yellow"></div>
                                <div class="terminal-dot dot-green"></div>
                            </div>
                            <button class="copy-btn" onclick="copyCode('specific-code')">๐Ÿ“‹ Copy</button>
                        </div>
                        <pre><code id="specific-code"><span class="code-comment"># Suppress deprecation warnings only</span>
node --no-deprecation app.js

<span class="code-comment"># Trace deprecation warnings (show stack trace)</span>
node --trace-deprecation app.js

<span class="code-comment"># Throw errors on deprecations (strict mode)</span>
node --throw-deprecation app.js

<span class="code-comment"># Suppress experimental warnings</span>
node --no-warnings app.js  <span class="code-comment"># Includes experimental</span>

<span class="code-comment"># Suppress specific warning types via code:</span>
process.removeAllListeners(<span class="code-string">'warning'</span>);

<span class="code-comment"># Or filter warnings:</span>
process.on(<span class="code-string">'warning'</span>, (warning) => {
  <span class="code-keyword">if</span> (warning.name !== <span class="code-string">'DeprecationWarning'</span>) {
    console.warn(warning);
  }
});</code></pre>
                    </div>
                    <div class="tip" style="margin-top: 15px;">
                        <strong>Pro Tip:</strong> Use specific flags for better control over which warnings to suppress!
                    </div>
                </div>
                <div id="environment" class="tab-content">
                    <h3 style="color: var(--accent-pink); margin-bottom: 15px;">Environment-Based Configuration</h3>
                    <div class="code-block">
                        <div class="code-header">
                            <div class="terminal-dots">
                                <div class="terminal-dot dot-red"></div>
                                <div class="terminal-dot dot-yellow"></div>
                                <div class="terminal-dot dot-green"></div>
                            </div>
                            <button class="copy-btn" onclick="copyCode('environment-code')">๐Ÿ“‹ Copy</button>
                        </div>
                        <pre><code id="environment-code"><span class="code-comment"># Using environment variable</span>
NODE_NO_WARNINGS=1 node app.js

<span class="code-comment"># Conditional in package.json:</span>
{
  <span class="code-string">"scripts"</span>: {
    <span class="code-string">"dev"</span>: <span class="code-string">"node app.js"</span>,
    <span class="code-string">"prod"</span>: <span class="code-string">"node --no-warnings app.js"</span>
  }
}

<span class="code-comment"># Cross-platform script:</span>
{
  <span class="code-string">"scripts"</span>: {
    <span class="code-string">"start"</span>: <span class="code-string">"cross-env NODE_NO_WARNINGS=1 node app.js"</span>
  }
}

<span class="code-comment"># Programmatic control:</span>
<span class="code-keyword">if</span> (process.env.NODE_ENV === <span class="code-string">'production'</span>) {
  process.removeAllListeners(<span class="code-string">'warning'</span>);
}

<span class="code-comment"># Docker example:</span>
CMD [<span class="code-string">"node"</span>, <span class="code-string">"--no-warnings"</span>, <span class="code-string">"app.js"</span>]</code></pre>
                    </div>
                </div>
                <div id="alternatives" class="tab-content">
                    <h3 style="color: var(--accent-pink); margin-bottom: 15px;">Alternative Approaches</h3>
                    <div class="code-block">
                        <div class="code-header">
                            <div class="terminal-dots">
                                <div class="terminal-dot dot-red"></div>
                                <div class="terminal-dot dot-yellow"></div>
                                <div class="terminal-dot dot-green"></div>
                            </div>
                            <button class="copy-btn" onclick="copyCode('alternatives-code')">๐Ÿ“‹ Copy</button>
                        </div>
                        <pre><code id="alternatives-code"><span class="code-comment"># 1. Fix the warnings (best approach!)</span>
<span class="code-comment"># Update deprecated code instead of hiding warnings</span>

<span class="code-comment"># 2. Redirect stderr to /dev/null (Unix)</span>
node app.js 2>/dev/null

<span class="code-comment"># 3. Filter warnings programmatically</span>
process.on(<span class="code-string">'warning'</span>, (warning) => {
  <span class="code-keyword">if</span> (!warning.message.includes(<span class="code-string">'specific warning'</span>)) {
    console.warn(warning);
  }
});

<span class="code-comment"># 4. Use a logger that filters warnings</span>
<span class="code-keyword">const</span> winston = require(<span class="code-string">'winston'</span>);
<span class="code-comment">// Configure to ignore warnings</span>

<span class="code-comment"># 5. Suppress in code (not recommended)</span>
process.emitWarning = () => {};

<span class="code-comment"># Best practice hierarchy:</span>
<span class="code-comment"># 1. Fix the underlying issue โœ…</span>
<span class="code-comment"># 2. Use specific flags (--no-deprecation) โœ…</span>
<span class="code-comment"># 3. Filter warnings programmatically โš ๏ธ</span>
<span class="code-comment"># 4. Use --no-warnings globally โš ๏ธ</span></code></pre>
                    </div>
                </div>
            </div>
        </section>

        <!-- Common Mistakes -->
        <section class="section">
            <h2 class="section-title">โŒ Common Mistakes</h2>
            <div class="card">
                <div class="accordion">
                    <div class="accordion-item">
                        <div class="accordion-header" onclick="toggleAccordion(this)">
                            <span><strong>1. Using in Development</strong></span>
                            <span class="accordion-icon">โ–ผ</span>
                        </div>
                        <div class="accordion-content">
                            <div class="accordion-body">
                                <div class="warning">
                                    <strong>Problem:</strong> Hiding warnings during development masks issues you should fix
                                </div>
                                <div class="success" style="margin-top: 15px;">
                                    <strong>Solution:</strong> Only use --no-warnings in production or demos - fix warnings in dev!
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="accordion-item">
                        <div class="accordion-header" onclick="toggleAccordion(this)">
                            <span><strong>2. Thinking Errors Are Hidden</strong></span>
                            <span class="accordion-icon">โ–ผ</span>
                        </div>
                        <div class="accordion-content">
                            <div class="accordion-body">
                                <div class="warning">
                                    <strong>Problem:</strong> Assuming --no-warnings hides errors too
                                </div>
                                <div class="success" style="margin-top: 15px;">
                                    <strong>Solution:</strong> Only warnings are suppressed - errors still appear!
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="accordion-item">
                        <div class="accordion-header" onclick="toggleAccordion(this)">
                            <span><strong>3. Ignoring Deprecation Warnings</strong></span>
                            <span class="accordion-icon">โ–ผ</span>
                        </div>
                        <div class="accordion-content">
                            <div class="accordion-body">
                                <div class="warning">
                                    <strong>Problem:</strong> Suppressing warnings about code that will break in future Node versions
                                </div>
                                <div class="success" style="margin-top: 15px;">
                                    <strong>Solution:</strong> Address deprecations before suppressing - future you will thank you!
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="accordion-item">
                        <div class="accordion-header" onclick="toggleAccordion(this)">
                            <span><strong>4. Not Documenting Why</strong></span>
                            <span class="accordion-icon">โ–ผ</span>
                        </div>
                        <div class="accordion-content">
                            <div class="accordion-body">
                                <div class="warning">
                                    <strong>Problem:</strong> Team members don't know why warnings are suppressed
                                </div>
                                <div class="success" style="margin-top: 15px;">
                                    <strong>Solution:</strong> Document in README or comments why --no-warnings is used!
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Pro Tips -->
        <section class="section">
            <h2 class="section-title">๐Ÿš€ Pro Tips</h2>
            <div class="card">
                <div class="tip">
                    <strong>Production only</strong> - Use --no-warnings in production, keep warnings visible in dev!
                </div>
                <div class="tip">
                    <strong>Fix first, suppress later</strong> - Address warnings before hiding them!
                </div>
                <div class="tip">
                    <strong>Use specific flags</strong> - Try <code>--no-deprecation</code> for more control!
                </div>
                <div class="tip">
                    <strong>Environment-based</strong> - Conditionally suppress based on NODE_ENV!
                </div>
                <div class="tip">
                    <strong>Document usage</strong> - Explain why warnings are suppressed in your README!
                </div>
                <div class="tip">
                    <strong>CI/CD logs</strong> - Great for cleaner build logs in pipelines!
                </div>
                <div class="tip">
                    <strong>Demos & screenshots</strong> - Perfect for clean, professional presentations!
                </div>
            </div>
        </section>

        <!-- Quiz -->
        <section class="section">
            <h2 class="section-title">๐ŸŽฏ Knowledge Check Quiz</h2>
            <div class="quiz-container">
                <p style="margin-bottom: 30px; font-size: 1.1rem;">Test your understanding! ๐Ÿง </p>
                <div class="quiz-question">
                    <h3>Question 1: What does --no-warnings suppress?</h3>
                    <div class="quiz-options">
                        <div class="quiz-option" onclick="checkAnswer(this, false, 1)">A) All errors and warnings</div>
                        <div class="quiz-option" onclick="checkAnswer(this, true, 1)">B) Only warnings, not errors</div>
                        <div class="quiz-option" onclick="checkAnswer(this, false, 1)">C) Only console.log output</div>
                    </div>
                    <div class="quiz-feedback" id="feedback1"></div>
                </div>
                <div class="quiz-question">
                    <h3>Question 2: When should you use --no-warnings?</h3>
                    <div class="quiz-options">
                        <div class="quiz-option" onclick="checkAnswer(this, false, 2)">A) Always during development</div>
                        <div class="quiz-option" onclick="checkAnswer(this, true, 2)">B) In production or for demos</div>
                        <div class="quiz-option" onclick="checkAnswer(this, false, 2)">C) Never, warnings are important</div>
                    </div>
                    <div class="quiz-feedback" id="feedback2"></div>
                </div>
                <div class="quiz-question">
                    <h3>Question 3: What's the best practice?</h3>
                    <div class="quiz-options">
                        <div class="quiz-option" onclick="checkAnswer(this, false, 3)">A) Always suppress warnings</div>
                        <div class="quiz-option" onclick="checkAnswer(this, true, 3)">B) Fix warnings, then suppress if needed</div>
                        <div class="quiz-option" onclick="checkAnswer(this, false, 3)">C) Ignore warnings completely</div>
                    </div>
                    <div class="quiz-feedback" id="feedback3"></div>
                </div>
                <div id="quizScore" style="margin-top: 30px; padding: 20px; background: var(--bg-secondary); border-radius: 12px; display: none;">
                    <h3 style="color: var(--accent-green); font-size: 1.5rem;">๐ŸŽ‰ Quiz Complete!</h3>
                    <p id="scoreText" style="font-size: 1.2rem; margin-top: 10px;"></p>
                </div>
            </div>
        </section>

        <!-- Summary Card -->
        <section class="section">
            <h2 class="section-title">๐Ÿ“š Quick Reference</h2>
            <div class="cheat-sheet">
                <h3 style="margin-bottom: 20px; font-size: 2rem;">--no-warnings Cheat Sheet! ๐Ÿ”–</h3>
                <div class="cheat-grid">
                    <div class="cheat-item">
                        <h4>๐Ÿคซ Basic Command</h4>
                        <p><code>node --no-warnings app.js</code></p>
                        <p style="font-size: 0.85rem; margin-top: 5px;">Suppress all warnings</p>
                    </div>
                    <div class="cheat-item">
                        <h4>๐ŸŽฏ Specific</h4>
                        <p><code>--no-deprecation</code></p>
                        <p style="font-size: 0.85rem; margin-top: 5px;">Only deprecations</p>
                    </div>
                    <div class="cheat-item">
                        <h4>๐ŸŒ Environment</h4>
                        <p><code>NODE_NO_WARNINGS=1</code></p>
                        <p style="font-size: 0.85rem; margin-top: 5px;">Via env variable</p>
                    </div>
                    <div class="cheat-item">
                        <h4>๐Ÿ“ฆ Package.json</h4>
                        <p><code>"start": "node --no-warnings"</code></p>
                        <p style="font-size: 0.85rem; margin-top: 5px;">In scripts</p>
                    </div>
                    <div class="cheat-item">
                        <h4>โœ… Suppresses</h4>
                        <p>Warnings only</p>
                        <p style="font-size: 0.85rem; margin-top: 5px;">Errors still show</p>
                    </div>
                    <div class="cheat-item">
                        <h4>๐ŸŽฏ Use Cases</h4>
                        <p>Production, demos, CI/CD</p>
                        <p style="font-size: 0.85rem; margin-top: 5px;">Clean output</p>
                    </div>
                    <div class="cheat-item">
                        <h4>โš ๏ธ Warning</h4>
                        <p>Fix issues first!</p>
                        <p style="font-size: 0.85rem; margin-top: 5px;">Don't hide problems</p>
                    </div>
                    <div class="cheat-item">
                        <h4>๐Ÿ’ก Best Practice</h4>
                        <p>Dev: show warnings</p>
                        <p style="font-size: 0.85rem; margin-top: 5px;">Prod: suppress</p>
                    </div>
                </div>
            </div>
        </section>

        <!-- Footer -->
        <div class="footer">
            <h2 style="font-size: 2rem; margin-bottom: 20px; color: var(--accent-pink);">๐ŸŽ‰ Congratulations!</h2>
            <p style="font-size: 1.2rem; margin-bottom: 20px;">You now understand <strong>--no-warnings</strong>! ๐Ÿš€</p>
            <div style="margin: 30px 0;">
                <span class="badge">๐Ÿคซ Silence Master</span>
                <span class="badge">๐Ÿงน Clean Output Pro</span>
                <span class="badge">๐Ÿš€ Node.js Expert</span>
            </div>
            <p style="color: var(--text-secondary); margin-top: 30px;">Generated by <strong>AI Prompt Dictionary</strong> ๐Ÿค–</p>
            <p style="color: var(--text-secondary); font-size: 0.9rem;">Made with โค๏ธ for developers learning Node.js</p>
        </div>
    </div>

    <script>
        // Progress bar
        window.addEventListener('scroll', () => {
            const winScroll = document.body.scrollTop || document.documentElement.scrollTop;
            const height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
            const scrolled = (winScroll / height) * 100;
            document.getElementById('progressBar').style.width = scrolled + '%';
        });

        // Copy to clipboard
        function copyCode(codeId) {
            const code = document.getElementById(codeId).innerText;
            navigator.clipboard.writeText(code).then(() => {
                event.target.textContent = 'โœ… Copied!';
                event.target.classList.add('copied');
                setTimeout(() => {
                    event.target.textContent = '๐Ÿ“‹ Copy';
                    event.target.classList.remove('copied');
                }, 2000);
            });
        }

        // Tab switching
        function switchTab(tabName) {
            document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
            document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
            document.getElementById(tabName).classList.add('active');
            event.target.classList.add('active');
        }

        // Accordion toggle
        function toggleAccordion(header) {
            const content = header.nextElementSibling;
            const icon = header.querySelector('.accordion-icon');
            content.classList.toggle('active');
            icon.classList.toggle('active');
        }

        // Simulate with warnings
        function simulateWithWarnings() {
            const terminal = document.getElementById('terminal');
            terminal.innerHTML = '<div class="terminal-line"><span class="terminal-prompt">$</span> node app.js</div>';
            setTimeout(() => {
                terminal.innerHTML += '<div style="color: var(--accent-orange); margin-top: 10px;">(node:12345) Warning: Accessing non-existent property \'foo\' of module exports</div>';
            }, 500);
            setTimeout(() => {
                terminal.innerHTML += '<div style="color: var(--accent-orange); margin-top: 5px;">(node:12345) DeprecationWarning: Buffer() is deprecated due to security</div>';
                terminal.innerHTML += '<div style="color: var(--text-secondary); margin-left: 20px;">Use Buffer.alloc() instead</div>';
            }, 1200);
            setTimeout(() => {
                terminal.innerHTML += '<div style="color: var(--accent-orange); margin-top: 5px;">(node:12345) ExperimentalWarning: VM Modules is an experimental feature</div>';
            }, 2000);
            setTimeout(() => {
                terminal.innerHTML += '<div style="color: var(--accent-green); margin-top: 15px;">โœ… Server started on port 3000</div>';
                terminal.innerHTML += '<div style="color: var(--accent-yellow); margin-top: 10px;">๐Ÿ˜ฐ Output cluttered with warnings!</div>';
            }, 2800);
        }

        // Simulate no warnings
        function simulateNoWarnings() {
            const terminal = document.getElementById('terminal');
            terminal.innerHTML = '<div class="terminal-line"><span class="terminal-prompt">$</span> node --no-warnings app.js</div>';
            setTimeout(() => {
                terminal.innerHTML += '<div style="color: var(--accent-cyan); margin-top: 10px;">๐Ÿคซ Warning suppression enabled...</div>';
            }, 500);
            setTimeout(() => {
                terminal.innerHTML += '<div style="color: var(--accent-green); margin-top: 15px;">โœ… Server started on port 3000</div>';
                terminal.innerHTML += '<div style="color: var(--accent-green); margin-top: 10px; font-weight: 600;">๐ŸŽ‰ Clean, professional output!</div>';
                terminal.innerHTML += '<div style="color: var(--accent-cyan); margin-top: 5px;">๐Ÿ’ก All warnings silenced</div>';
                createConfetti();
            }, 1500);
        }

        // Simulate comparison
        function simulateComparison() {
            const terminal = document.getElementById('terminal');
            terminal.innerHTML = '<div style="color: var(--accent-cyan); font-weight: 600; font-size: 1.1rem;">๐Ÿ“Š Comparing outputs...</div>';
            setTimeout(() => {
                terminal.innerHTML += '<div style="color: var(--accent-orange); margin-top: 15px;">โš ๏ธ WITH warnings (node app.js):</div>';
                terminal.innerHTML += '<div style="color: var(--accent-orange); margin-left: 20px; font-size: 0.85rem;">(node:12345) Warning: ...</div>';
                terminal.innerHTML += '<div style="color: var(--accent-orange); margin-left: 20px; font-size: 0.85rem;">(node:12345) DeprecationWarning: ...</div>';
                terminal.innerHTML += '<div style="color: var(--accent-orange); margin-left: 20px; font-size: 0.85rem;">(node:12345) ExperimentalWarning: ...</div>';
                terminal.innerHTML += '<div style="color: var(--accent-green); margin-left: 20px; margin-top: 5px;">Server started โœ“</div>';
            }, 800);
            setTimeout(() => {
                terminal.innerHTML += '<div style="color: var(--accent-green); margin-top: 20px;">๐Ÿ”‡ WITHOUT warnings (node --no-warnings app.js):</div>';
                terminal.innerHTML += '<div style="color: var(--accent-green); margin-left: 20px; margin-top: 5px;">Server started โœ“</div>';
            }, 2000);
            setTimeout(() => {
                terminal.innerHTML += '<div style="color: var(--accent-purple); margin-top: 20px; font-weight: 600;">โœจ Result: Much cleaner output!</div>';
                terminal.innerHTML += '<div style="color: var(--accent-cyan); margin-top: 5px;">๐ŸŽฏ Perfect for production & demos</div>';
                createConfetti();
            }, 3000);
        }

        // Quiz system
        let quizScore = 0;
        let questionsAnswered = 0;

        function checkAnswer(element, isCorrect, questionNum) {
            const options = element.parentElement.querySelectorAll('.quiz-option');
            options.forEach(opt => opt.style.pointerEvents = 'none');
            const feedback = document.getElementById('feedback' + questionNum);
            if (isCorrect) {
                element.classList.add('correct');
                feedback.className = 'quiz-feedback correct show';
                feedback.innerHTML = '<strong>๐ŸŽ‰ Correct!</strong> Great job!';
                quizScore++;
                createConfetti();
            } else {
                element.classList.add('incorrect');
                feedback.className = 'quiz-feedback incorrect show';
                feedback.innerHTML = '<strong>โŒ Not quite!</strong> Review the material and try again!';
            }
            questionsAnswered++;
            if (questionsAnswered === 3) {
                setTimeout(() => {
                    document.getElementById('quizScore').style.display = 'block';
                    document.getElementById('scoreText').textContent = `You scored ${quizScore}/3! ${quizScore === 3 ? '๐Ÿ† Perfect!' : quizScore === 2 ? '๐Ÿ‘ Good job!' : '๐Ÿ’ช Keep learning!'}`;
                }, 1000);
            }
        }

        // Confetti animation
        function createConfetti() {
            const colors = ['#6366f1', '#8b5cf6', '#a855f7', '#10b981', '#3b82f6'];
            for (let i = 0; i < 50; i++) {
                const confetti = document.createElement('div');
                confetti.className = 'confetti';
                confetti.style.left = Math.random() * window.innerWidth + 'px';
                confetti.style.background = colors[Math.floor(Math.random() * colors.length)];
                confetti.style.animationDuration = (2 + Math.random() * 2) + 's';
                document.body.appendChild(confetti);
                setTimeout(() => confetti.remove(), 4000);
            }
        }
    </script>
</body>
</html>
Live Preview