2016-01-04 22 views
7

Czy mogę używać nodemon do lint my javascript? Nie używam żadnego narzędzia do kompilacji, np. łykać lub chrząkać i chcieć zmaksymalizować użycie węzła i npm.jak zrobić linting za pomocą nodemon?

The output from nodemon can be piped. Chcę użyć tego do linting zmienionego pliku przy użyciu eslint.

Oto moja 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" 
 
    } 
 
}

próbowałem tego. Ale to nie działa. Daje błąd.

 "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

Czy istnieje jakiś szczególny powód, dla którego chcesz wykonywać linting w środowisku wykonawczym z menedżerem procesów, a nie bezpośrednio z edytora tekstu? – Seonixx

Odpowiedz

20

Można użyć opcji nodemonexec do uruchamiania testów po zapisaniu kodu. Oto przykład:

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

Spowoduje nodemon uruchomić npm run test && node server.js, i nie będzie uruchomić serwer, aż wszystkie testy zakończą się pomyślnie.

+0

Dlaczego ta odpowiedź nie jest akceptowana, jest poza mną. To jest właśnie odpowiedź, której szukasz OP. – shriek

+0

Wygląda jednak na to, że nie pracuję na Windows. – Oskar

-4

Linting to proces czysto rozwojowy. Nodemon to narzędzie używane do uruchamiania serwera i nie połączone z narzędziami do budowania, ale z uruchomieniem aplikacji. Dlatego odpowiedź brzmi "NIE". Powinieneś używać odpowiedniego narzędzia do automatyzacji rozwoju, takiego jak grunt, łyk itp. Lub po prostu czystych skryptów NPM (w pliku package.json).

Polecam używanie narzędzi do automatyzacji, jeśli Twój projekt jest skomplikowany, ma wiele etapów i wiele wiązek itp. Jednak, aby lintować, wystarczy przygotować jednolinijkę w swoim npm package.json, np. tak:

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

Następnie uruchom go poleceniem: "npm run lint".

Pamiętaj, że używając poprawnie skonfigurowanego pliku .eslintrc, możesz lint swój kod zarówno przez polecenia konsoli, ale także przez edytorów/IDE (prawie każdy szeroko popularny IDE ma wtyczkę dla eslint).

Więcej informacji na temat konfigurowania eslint i tworzenie właściwego eslintrc plik można znaleźć tutaj: http://eslint.org/docs/user-guide/configuring

+0

Używam nodemon w rozwoju do obejrzenia moich plików javascript. Nie zamierzam go używać w produkcji i został wymieniony w zależnościach od deweloperów. Domyślam się, że jest to poprawne użycie nodemon i ponieważ ogląda on wszystkie pliki javascript w mojej aplikacji, czuję, że musi istnieć sposób na wykorzystanie go do monitorowania, czy piszę prawidłowy kod, czy nie. Dlatego chcę rozszerzyć go na linting. – DrEarnest

+1

Poprawiłem moją odpowiedź, aby była bardziej poprawna :) Głównym użyciem nodemon jest uruchamianie/restartowanie serwera, gdy pliki są zmieniane podczas programowania, ale nie dla budowania.Jeśli chcesz tylko dodać wyjście z eslintera na konsolę (moim zdaniem trochę niepraktyczne), prawdopodobnie użyjesz 'config restartu zdarzeń' w pliku konfiguracyjnym nodemon i dodasz tam eslint. – SzybkiSasza

+0

Zwykle używałbyś też czegoś takiego jak chrząknięcie czy łyk, żeby zrobić dokładnie to, co używasz nodemon. Plus masz wtedy tę zaletę, że możesz automatycznie przetwarzać pliki, aby je kompresować, pobierać potrzebne zasoby, lintować pliki itp. –

3

Używam Standard.js do lintowania i mogę go uruchomić z nodemon przy użyciu poniższego skryptu package.json.

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

Kiedy biegnę npm run dev, wszelkie zmiany wprowadzone będą monitorowane i lintowane. Przetestowałem to w Windows używając PowerShell.