Salta ai contenuti

Concetti

Il @aws/nx-plugin è un plugin Nx che fornisce un toolkit per costruire e distribuire applicazioni full-stack su AWS. Ti offre una collezione di Generatori che creano codice applicativo basato sulle best practice e l’infrastruttura per distribuirlo — type-safe, eseguibile localmente e distribuibile fin dall’inizio, avvicinandoti alla produzione.

Invece di partire da una pagina vuota, tu (o il tuo agente AI) scegli i componenti di cui hai bisogno — API, siti web, autenticazione, agenti AI, infrastruttura — fornisci alcune opzioni di configurazione e il plugin genera codice iniziale basato sulle best practice. Collega persino i progetti tra loro (incluso l’aggiornamento di file esistenti tramite trasformazioni AST) per produrre client type-safe tra il tuo frontend e backend.

Nx è un framework di build intelligente per la gestione di monorepo. È agnostico rispetto al linguaggio, permettendo a TypeScript, Python, infrastruttura e altro di coesistere e compilare insieme in un unico workspace. Il suo sistema di build utilizza la cache e l’analisi del grafo delle dipendenze per ricostruire solo ciò che è cambiato ed eseguire task in parallelo, mantenendo veloci test, linting e build man mano che il tuo workspace cresce.

Ogni funzionalità nel @aws/nx-plugin è fornita come un Generator di Nx — scaffolding automatizzato che produce strutture di codice coerenti da template predefiniti. I generatori possono essere invocati tramite la Nx CLI, il plugin IDE Nx Console, o dal tuo assistente AI attraverso il Nx Plugin for AWS MCP Server.

Poiché ogni componente è un generatore, aggiungi solo ciò di cui hai bisogno, quando ne hai bisogno. Inizia con un’API, aggiungi un sito web in seguito, collegali quando sei pronto — ogni passaggio è un singolo comando.

Il @aws/nx-plugin evita deliberatamente di costruire astrazioni personalizzate sopra gli strumenti che già conosci. Invece di inventare framework, runtime o wrapper personalizzati, crea codice idiomatico utilizzando progetti open-source consolidati e ampiamente adottati. Questo significa che le tue competenze esistenti si trasferiscono direttamente, puoi fare affidamento sulla documentazione ufficiale di ogni framework e non sei mai vincolato a un livello che solo questo plugin comprende.

Il codice generato si basa su framework di altissima qualità, tra cui:

Il valore del plugin sta nel modo in cui questi pezzi sono configurati e collegati insieme per AWS — non nel sostituirli.

Tutto il codice generato è il tuo codice. Il @aws/nx-plugin è uno strumento di build-time, non una dipendenza di runtime — una volta che un generatore è stato eseguito, il plugin non è più in gioco. Puoi leggere ogni file che ha prodotto, committarlo e modificarlo come preferisci.

Questo significa:

  • Nessuna via di fuga. Non c’è una superficie di configurazione proprietaria da imparare o con cui lottare quando devi fare qualcosa che il generatore non aveva previsto. Modifichi direttamente il codice generato, nello stesso modo in cui modificheresti qualsiasi codice che hai scritto tu stesso.
  • Nessun nuovo livello di astrazione. I generatori emettono codice semplice e idiomatico per i framework sottostanti. Non c’è un’API wrapper o un’indirezione magica tra te e React, tRPC, FastAPI, CDK o qualsiasi altro strumento — ciò che vedi è ciò che viene eseguito.
  • Il plugin non è una dipendenza. Genera codice e si fa da parte. La tua applicazione non importa né dipende da @aws/nx-plugin a runtime, quindi non sei mai bloccato da esso e mai vincolato.

Se non ti piace qualcosa nel codice generato, sei libero di modificarlo. I generatori ti danno un vantaggio iniziale, non una gabbia.

Possedere il proprio codice di solito ha un costo: nel momento in cui inizi a modificare uno scaffold, sei tagliato fuori dalle correzioni e dai miglioramenti fatti a monte. Adottarli di nuovo significa leggere un changelog, rigenerare e riconciliare un diff manualmente. Le Migrazioni sono il modo in cui il @aws/nx-plugin lavora per evitare che ciò accada.

Le release includono migrazioni insieme ad esse, con l’obiettivo di portare il codice prodotto dai generatori precedenti al passo con i miglioramenti che abbiamo fatto da allora. Quando correggiamo un bug, rafforziamo un default di sicurezza o raffiniamo un pattern generato, eseguire nx migrate applica quella modifica al tuo codice, sul posto — invece di lasciarti a individuarla in un changelog e portarla tu stesso.

In pratica:

  • L’aggiornamento è automatizzato, non un esercizio di ri-adozione. Un workspace generato mesi fa può andare avanti con il plugin piuttosto che allontanarsi ulteriormente da esso.
  • Le personalizzazioni sono riconosciute tramite pattern, non sovrascritte. Le migrazioni verificano che un file corrisponda ancora alla forma prodotta dal generatore. Dove è divergente oltre ciò che possono aggiornare in sicurezza, lasciano il tuo codice intatto e segnalano invece il follow-up manuale.
  • Alcuni cambiamenti arrivano come prompt per agenti. Dove la modifica giusta dipende da ciò che hai costruito, la migrazione è un prompt che il tuo agente di codifica AI applica piuttosto che un codemod.
  • Gli aggiornamenti sono opt-in. Nulla nel tuo workspace cambia finché non scegli di eseguire nx migrate.

Le migrazioni riducono il divario piuttosto che chiuderlo: quanto il tuo codice si è spostato decide quanto possono fare, e alcuni passaggi richiederanno ancora il tuo intervento manuale.

Il @aws/nx-plugin si sforza di mantenere al minimo il numero di dipendenze globali. Ciò di cui hai bisogno per iniziare si riduce a quali generatori invochi.

Ad esempio, qualsiasi generatore basato su TypeScript richiederà solo l’installazione di Node. Per i progetti basati su Python, UV è l’unico requisito.

Il @aws/nx-plugin impiega la type-safety per semplificare l’esperienza dello sviluppatore tramite completamenti IDE, eliminando anche gli errori di runtime che altrimenti emergerebbero solo in un’implementazione non type-safe. Pertanto, tutti i componenti forniti sono type-safe per impostazione predefinita.

La type safety fluisce attraverso i confini dei progetti: quando colleghi un sito web a un’API, il client generato condivide i tipi con il backend, quindi una modifica a un contratto API emerge come un errore in fase di compilazione nel tuo frontend piuttosto che come un bug in produzione. Refactorizza con fiducia.