Sto sviluppando un componente React e desidero pubblicarlo su npm, ma non sono riuscito a trovare alcuna best practice su come distribuire le risorse statiche (come css e immagini) insieme al componente. Bene, ovviamente tutte le fonti dovrebbero essere trascritte in plain js e plain css. Nel caso di js, tutto è semplice: l'utente lo richiederà semplicemente con qualsiasi pacchetto che sta utilizzando. Ma nel caso del css è complicato. Non voglio usare gli stili in linea dal momento che voglio che il componente sia facilmente personalizzabile (per override di css). Quindi, suppongo che l'unico modo è chiedere all'utente di copiare il file css da node_modules a dove ne ha bisogno (o importarlo con SASS o qualsiasi altro preprocessore). Ma cosa succede se il mio file css ha riferimenti ad altre risorse statiche (come immagini, caratteri, ecc.)? I percorsi saranno completamente incasinati credo. Quindi, sono interessato a qual è il modo giusto per farlo? Come rendere più facile per l'utente consumare e come evitare le insidie più comuni?Come pubblicare il componente React con asset statici su npm?
risposta
Questa è davvero una bella domanda. Non sono sicuro che la mia risposta sia ciò che ti aspetti (sarà più filosofico che tecnico), ma penso che sia un buon punto di partenza.
Prima di tutto, penso che non ci sia un "modo giusto" per farlo. Immagina un team (può essere un team di una sola persona) che gestisce un pacchetto, il modo in cui il nome delle cose è il modo che ha senso per loro, e questa è la "strada giusta". Quindi, non esiste uno "standard" per nominare le cose, nominare le cose nel modo in cui si pensa sia corretto e si è pronti per andare.
Ora, IMHO, chi utilizzerà il pacchetto dovrebbe preoccuparsi di come utilizzarlo, non tu. Dal momento che la persona può fare delle scelte su ciò che vuole o meno usare dal tuo pacchetto, e su come vogliono usarlo.
Ad esempio, se si utilizza webpack, siamo in grado di utilizzare url-loader
, che risolverà il problema di URL a noi.
Se non si utilizza il webpack, ciò che si può fare è fornire una documentazione coerente sul pacchetto e su come usarlo. I tuoi utenti seguiranno questo, usando gli strumenti che vogliono. Se i tuoi utenti vogliono usare grep
e sed
nel loro flusso di lavoro, va bene, dal momento che ne hanno il controllo.
Inoltre, ora si parla specificamente di CSS, se si desidera fornire stili che utilizzino le immagini, è possibile provare a utilizzare un preprocessore o qualcosa del genere e consentire all'utente di personalizzare alcune variabili per impostare il percorso delle cose. Ad esempio, immagina di dire assets-path
, usando SASS, il tuo utente deve solo aggiungere $assets-path: '/path/to/assets/'
e compilare il CSS.
Ogni volta che uso un pacchetto, tendo a pensare come "ok, ci sono molte cose lì, non ho bisogno di usarle tutte, userò le cose che voglio", e se Vorrei usare il tuo pacchetto e so che ci saranno file CSS, proverei a trovare un buon set di strumenti per aiutarmi.
Se si desidera seguire alcuni "standard", provare a controllare i progetti di reazione più popolari su Github, ma, come ho detto prima, il modo in cui denominano le cose è il modo che ha senso per loro. Potrebbe non avere senso per te! :)
Spero che aiuti!
- 1. qual è il modo corretto di pubblicare un modulo componente React in NPM senza dipendenze esterne all'interno?
- 2. Vuol npm pubblicare eseguire un pacchetto NPM
- 3. Come rivelare un componente React su scroll
- 4. Come far funzionare il router react con asset statici, modalità html5, API di cronologia e percorsi nidificati?
- 5. Come riutilizzare il componente React JS in React Native
- 6. Utilizzando propTypes statici ES7 con React-Native
- 7. Come pubblicare un pacchetto npm con i file di distribuzione?
- 8. Caching di asset statici in Symfony
- 9. Google App Engine: non servirà asset statici con l'errore seguente:
- 10. React + Redux: il componente non si aggiorna
- 11. react-transform-catch-errors non sembra un componente React
- 12. React - Componente Schermo intero (con altezza 100%)
- 13. React-Native - navigazione personalizzata con componente Navigator
- 14. Differenza tra componente React e React Element
- 15. Evitare che il componente venga smontato con React-router
- 16. Rendering di una stringa come componente React
- 17. Node.js: Come serializzare/deserializzare un componente React?
- 18. Symfony 2.7: componente asset non funzionante con imagine_filter
- 19. Come rilevare un componente React rispetto a un elemento React?
- 20. Come mostrare/nascondere il componente al clic in React-redux?
- 21. Come servire asset statici da cartelle personalizzate in phoenix
- 22. Come stampare il componente React al clic di un pulsante?
- 23. Componente Simple React non rendering
- 24. Come ottenere il componente "FameLayout" in React Native?
- 25. Come ottenere il nome del componente genitore in React?
- 26. Rendering dinamico di un componente React in React 0.12
- 27. Come configurare mod_deflate per pubblicare asset gzip preparati con risorse: precompilato
- 28. Rails 4 asset statici in pubblico/o app/assets/
- 29. React 15 non compatibile con React-redux
- 30. Come testare se un componente React contiene un altro componente con jest?
Forse dovresti mostrarti produzione/dist config webpack. – MacKentoch
@MacKentoch Non ho una configurazione di webpack per questo poiché non penso che npm sia il posto giusto per le versioni bundled/minified. Quello che faccio è traspare jsx in ES5. – alexb