2016-01-04 13 views
7

Posso usare nodemon per filtrare il mio javascript? Non sto usando nessuno strumento di costruzione, ad es. gulp o grunt e vogliono massimizzare l'uso di node e npm.come si fa a sfilacciare usando nodemon?

The output from nodemon can be piped. Voglio usarlo per nascondere il file modificato usando eslint.

Ecco il mio package.json

{ 
 
    "name": "app", 
 
    "version": "0.0.1", 
 
    "private": true, 
 
    "scripts": { 
 
    "start": "nodemon server.js", 
 
    "lint": "eslint" 
 
    }, 
 
    "dependencies": { 
 
    "MD5": "*", 
 
    "clean-css": "*", 
 
    "express": "~4.9.0", 
 
    "express-handlebars": "~2.0.1", 
 
    "express-redis-cache": "*", 
 
    "foundation-sites": "~5.5.3", 
 
    "fs-extra": "~0.8.1", 
 
    "node-rest-client": "~1.5.1", 
 
    "node-sass": "*", 
 
    "path": "*" 
 
    }, 
 
    "devDependencies": { 
 
    "babel-eslint": "^4.1.6", 
 
    "eslint": "^1.10.3", 
 
    "eslint-config-airbnb": "^2.1.1", 
 
    "eslint-config-airbnb-es5": "^1.0.8", 
 
    "eslint-plugin-react": "^3.13.1", 
 
    "nodemon": "~1.8.1", 
 
    "parallelshell": "~2.0.0", 
 
    "watch": "~0.17.1" 
 
    } 
 
}

ho provato questo. Ma non funziona. Dà errore.

 "scripts": { 
    "start": "nodemon({ script: 'server.js' }).on('restart', function() {console.log('nodemon started');}).on('crash', function() {console.log('script crashed for some reason');});", 
    "lint": "eslint" 
    }, 
+1

C'è qualche ragione particolare per cui si desidera eseguire il linting in fase di esecuzione con un gestore di processo piuttosto che direttamente tramite l'editor di testo? – Seonixx

risposta

20

È possibile utilizzare l'opzione exec di nodemon per eseguire i test come si salva il codice. Ecco un esempio:

nodemon server.js --exec 'npm run test && node' 

Questo farà sì che nodemon a correre npm run test && node server.js, e non sarà avviare il server fino a quando tutti i test sono stati eseguiti con successo.

+0

Perché questa risposta non è accettata va oltre me. Questa è esattamente la risposta che stai cercando per OP. – shriek

+0

Tuttavia, non sembra funzionare su Windows. – Oskar

-4

Linting è puramente un processo di sviluppo. Nodemon è uno strumento utilizzato per l'esecuzione del server e non connesso con gli strumenti di compilazione, ma con l'esecuzione dell'applicazione. Quindi la risposta è "NO". Dovresti usare uno strumento adeguato per l'automazione dello sviluppo come grunt, gulp, ecc. O semplicemente degli script NPM puri (nel tuo file package.json).

Suggerirei di utilizzare gli strumenti di automazione se il vostro progetto è complicato, ha molte fasi e un sacco di raggruppamento ecc. Tuttavia, per il solo linting, potete semplicemente preparare un liner nel vostro npm package.json, ad es. In questo modo:

"scripts": { 
    "lint": "eslint --fix src test", 
} 

E quindi eseguirlo con il comando: 'npm run lint'.

Ricordare che utilizzando il file .eslintrc correttamente configurato, è possibile filtrare il codice sia tramite comandi della console, ma anche da editor/IDE (quasi tutti gli IDE più diffusi hanno il plug-in per eslint).

Maggiori informazioni sulla configurazione eslint e la creazione di file corretto eslintrc potrebbe essere trovato qui: http://eslint.org/docs/user-guide/configuring

+0

Sto usando nodemon in fase di sviluppo per controllare i miei file javascript. Non lo userò in produzione ed è stato elencato in dev-dependencies. Immagino che questo sia l'uso corretto di nodemon e dal momento che controlla tutti i file javascript nella mia app, ritengo che ci debba essere un modo per usarlo per monitorare se sto scrivendo il codice corretto o no. Questo è il motivo per cui voglio estenderlo alla linting. – DrEarnest

+1

Ho perfezionato la mia risposta per essere più corretta :) L'uso principale del nodemon è eseguire/riavviare il server quando i file vengono modificati durante lo sviluppo, ma non per la creazione.Se vuoi solo aggiungere output da eslinter a console (un po 'poco pratico secondo me), potresti probabilmente usare il flag di configurazione di 'events restart' nel file di configurazione di nodemon e aggiungere eslint lì. – SzybkiSasza

+0

Generalmente userai anche qualcosa come il grunt o il gulp watch per fare esattamente quello che stai usando nodemon. Inoltre, avresti il ​​vantaggio di poter elaborare automaticamente i tuoi file per comprimerli, scaricare risorse che sono necessarie, filtrare i tuoi file, ecc. –

3

Io uso Standard.js per lo sfilacciamento e posso farlo funzionare con nodemon utilizzando lo script package.json sottostante.

"scripts": { 
    "lint": "standard", 
    "dev": "nodemon ./app --exec \"npm run lint && node\"" 
    "start": "nodemon ./app" 
}

Quando eseguo npm run dev, tutte le modifiche che faccio saranno monitorati e lintati. Ho provato questo in Windows utilizzando PowerShell.