2016-01-04 4 views
7

Kann ich nodemon zum flinken von Javascript verwenden? Ich verwende kein Build-Tool, z. schlucke oder grunze und möchte die Verwendung von Knoten und NPM maximieren.Wie mache ich Linting mit nodemon?

The output from nodemon can be piped. Ich möchte dies verwenden, um die geänderte Datei mit eslint einzufügen.

Hier ist meine 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" 
 
    } 
 
}

Ich versuchte dies. Aber es funktioniert nicht. Es gibt Fehler.

 "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

Gibt es einen bestimmten Grund, warum Sie zur Laufzeit Runting mit einem Prozessmanager ausführen möchten, anstatt direkt über Ihren Texteditor? – Seonixx

Antwort

20

Sie die exec Möglichkeit nodemon können Ihre Tests ausführen, wie Sie Code zu speichern. Hier ein Beispiel:

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

Dies führt dazu, nodemon npm run test && node server.js zu laufen, und es wird nicht den Server starten, bis alle Tests erfolgreich durchgeführt haben.

+0

Warum dies nicht akzeptiert wird, ist die Antwort über mich hinaus. Dies ist genau die Antwort, die Sie für OP suchen. – shriek

+0

Ich arbeite jedoch nicht an Windows. – Oskar

-4

Linting ist ein reiner Entwicklungsprozess. Nodemon ist ein Tool, das zum Ausführen von Servern verwendet wird und nicht mit Build-Tools, sondern mit der Ausführung Ihrer Anwendung verbunden ist. Daher lautet die Antwort "NEIN". Sie sollten das richtige Werkzeug für die Entwicklungsautomatisierung wie Grunt, Schluck usw. oder nur reine NPM-Skripte (in Ihrer package.json-Datei) verwenden.

Ich würde die Verwendung von Automatisierungs-Tools empfehlen, wenn Ihr Projekt kompliziert ist, viele Stufen und eine Menge Bündelung usw. hat. Aber nur für Linting, könnten Sie nur One-Liner in Ihrem npm vorbereiten package.json, z. wie folgt:

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

Und dann führen Sie es mit dem Befehl: 'Npm run lint'.

Denken Sie daran, dass Sie mit der richtig konfigurierten Datei .eslintrc Ihren Code sowohl mit Konsolenbefehlen als auch mit Editoren/IDEs fetten können (fast jede allgemein verbreitete IDE hat ein Plugin für eslint).

Mehr Infos über eslint Konfigurieren und Erstellen von richtigen eslintrc Datei finden Sie hier könnte: http://eslint.org/docs/user-guide/configuring

+0

Ich benutze nodemon in der Entwicklung, um meine Javascript-Dateien zu überwachen. Ich werde es nicht in der Produktion verwenden und es wurde in Dev-Abhängigkeiten aufgeführt. Ich denke, das ist die korrekte Verwendung von nodemon und da es alle Javascript-Dateien in meiner App überwacht, denke ich, dass es eine Möglichkeit geben muss, es zu verwenden, um zu überwachen, ob ich den richtigen Code schreibe oder nicht. Deshalb möchte ich es für das Linting erweitern. – DrEarnest

+1

Ich habe meine Antwort verfeinert, um richtiger zu sein :) Die Hauptfunktion von nodemon besteht darin, Server auszuführen/neu zu starten, wenn Dateien während der Entwicklung geändert werden, aber nicht zum Erstellen.Wenn Sie nur die Ausgabe von eslinter zur Konsole hinzufügen möchten (ein bisschen unpraktisch meiner Meinung nach), könnten Sie wahrscheinlich "Events restart" config flag in der nodemon Konfigurationsdatei verwenden und dort eslint hinzufügen. – SzybkiSasza

+0

Sie würden auch etwas wie Grunzen oder Schluckuhr benutzen, um genau das zu tun, was Sie mit nodemon machen. Außerdem hättest du den Vorteil, dass du deine Dateien automatisch komprimieren kannst, um sie zu komprimieren, benötigte Assets herunter zu laden, deine Dateien zu kopieren usw. –

3

Ich benutze Standard.js für Linting und ich kann es mit nodemon unter Verwendung der folgenden package.json Skript arbeiten.

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

Wenn ich npm run dev laufen, werden alle Änderungen, die ich machen überwacht und linted werden. Ich testete dies in Windows mit PowerShell.