Ich habe begonnen, mich auf NPM-Skripte als Hauptwerkzeug für meinen Testprozess zu verlassen.Gibt es eine bessere Möglichkeit, meine NPM-Skripts so zu strukturieren, dass sie besser lesbar sind?
Da ich mehr NPM-Skripte geschrieben habe, sind Reihenfolge und Struktur auf einen Blick immer schwerer zu lesen.
Hier ist, was meine aktuelle Skripte wie folgt aussieht:
{
"scripts": {
"clean": "rm -rf report/*",
"report": "rm -rf report/; mkdir report",
"tests:mocha": "mocha test/spec/",
"all-tests:mocha": "npm run tests:mocha -- --recursive",
"all-tests:json": "npm run all-tests:mocha -- --reporter json",
"all-tests:jsonReport": "npm run all-tests:json > report/all-tests.json",
"all-admin:mocha": "mocha test/spec/admin.production.io/",
"all-admin-all:mocha": "npm run all-admin:mocha -- --recursive",
"all-admin:json": "npm run all-admin:mocha -- --reporter json",
"all-admin:jsonReport": "npm run all-admin:json > report/all-tests.json",
"google:mocha": "mocha test/spec/googleTest.js",
"google:spec": "npm run google:mocha -- --reporter spec --slow 0",
"google:json": "npm run google:mocha -- --reporter json",
"google:jsonReport": "npm run google:json > report/google-test.json",
"usersAll:mocha": "mocha test/spec/admin.production.io/dashboard/users/*.js",
"usersAll:spec": "npm run usersAll:mocha -- --reporter spec --slow 0",
"usersAll:json": "npm run usersAll:mocha -- --reporter json",
"usersAll:jsonReport": "npm run usersAll:jsonReport > report/admin-users-dashboard-all.json",
"orgsAll:mocha": "mocha test/spec/admin.production.io/dashboard/organizations/*.js",
"orgsAll:spec": "npm run orgsAll:mocha -- --reporter spec --slow 0",
"orgsAll:json": "npm run orgsAll:mocha -- --reporter json",
"orgsAll:jsonReport": "npm run orgsAll:json > report/admin-orgs-dashboard-all.json",
"users-orgs:mocha": "npm run users:spec; npm run orgs:spec",
"users-orgs-report": "npm run users:jsonReport; npm run orgs:jsonReport",
"pos-users:mocha": "mocha test/spec/admin.production.io/dashboard/users/positiveUserTest.js",
"pos-users:spec": "npm run pos-users:mocha -- --reporter spec --slow 0",
"pos-users:json": "npm run pos-users:mocha -- --reporter json",
"pos-users:jsonReport": "npm run pos-users:json > report/admin-users-dashboard-positive.json",
"pos-orgs:mocha": "mocha test/spec/admin.production.io/dashboard/organizations/positiveOrgsTests.js",
"pos-orgs:spec": "npm run pos-orgs:mocha -- --reporter spec --slow 0",
"pos-orgs:json": "npm run pos-orgs:mocha -- --reporter json",
"pos-orgs:jsonReport": "npm run pos-orgs:json > report/admin-users-dashboard-positive.json",
"alice-la:mocha": "mocha test/spec/admin.local.us/dashboard/alice/*.js",
"alice-la:jsonReport": "npm run alice-la:mocha -- --reporter json -- > report/local-admin-dashboard-alice-all-tests.json",
"a2361p-l:mocha": "mocha test/spec/admin.local.us/dashboard/alice/2361-p.js",
"a2361p-l:spec": "npm run a2361p-l:mocha -- --reporter spec --slow 0",
"a2361p-l:json": "npm run a2361p-l:mocha -- --reporter json",
"a2361p-l:jsonReport": "npm run a2361p-l:json > report/a2361p-l.json",
"a2361pf-l:mocha": "mocha test/spec/admin.local.us/dashboard/alice/2361-pf.js",
"a2361pf-l:spec": "npm run a2361pf-l:mocha -- --reporter spec --slow 0",
"a2361pf-l:json": "npm run a2361pf-l:mocha -- --reporter json",
"a2361pf-l:jsonReport": "npm run a2361pf-l:json > report/a2361pf-l.json",
"alice-pa:mocha": "mocha test/spec/admin.production.io/dashboard/alice/*.js",
"alice-pa:jsonReport": "npm run alice-pa:mocha -- --reporter json -- > report/production-admin-dashboard-alice-all-tests.json",
"a2361p-p:mocha": "mocha test/spec/admin.production.io/dashboard/alice/2361-p.js",
"a2361p-p:spec": "npm run a2361p-p:mocha -- --reporter spec --slow 0",
"a2361p-p:json": "npm run a2361p-p:mocha -- --reporter json",
"a2361p-p:jsonReport": "npm run a2361p-p:json > report/a2361p-p.json",
"a2361pf-p:mocha": "mocha test/spec/admin.production.io/dashboard/alice/2361-pf.js",
"a2361pf-p:spec": "npm run a2361pf-p:mocha -- --reporter spec --slow 0",
"a2361pf-p:json": "npm run a2361pf-p:mocha -- --reporter json",
"a2361pf-p:jsonReport": "npm run a2361pf-p:json > report/a2361pf-p.json",
"a2361:all": "npm run clean; npm run a2361p-l:mocha; npm run a2361p-l:spec; npm run a2361p-l:json; npm run a2361p-l:jsonReport; npm run a2361pf-l:mocha; npm run a2361pf-l:spec; npm run a2361pf-l:json; npm run a2361pf-l:jsonReport; npm run a2361p-p:mocha; npm run a2361p-p:spec; npm run a2361p-p:json; npm run a2361p-p:jsonReport; npm run a2361pf-p:mocha; npm run a2361pf-p:spec; npm run a2361pf-p:json; npm run a2361pf-p:jsonReport",
"test": "mocha"
}
Dieses nur etwa 8 Tests ist oder so. Ich habe vor, Skripte zu schreiben, um Berichte in Junit-Formaten auszugeben, und es sieht bereits aus wie eine Augenbelastung.
Wie kann ich meine npm-Skripte strukturieren, um besser lesbar zu sein?
Vielleicht ein paar Js-Dateien erstellen Sie können, die jeweils einen kleinen Teil der Tests zu definieren. Dann importiert eine Hauptdatei die anderen, und Sie "kompilieren" dann Ihre package.json mit JSON.Strignify (require ('./main.js')) – Ludo
@Ludo Während das funktionieren würde, scheint es übermäßig exzessiv. Ich denke, es hängt vom Umfang des Projekts ab und davon, wie viele npm-Skripte es brauchen wird. Ich habe einige meiner Skripte überarbeitet und einige unnötige Zeilen reduziert. Ich glaube auch nicht, dass ich geschickt genug bin, um meine package.json mit JS zu erstellen, um es korrekt zu schreiben. – azemPC
Vielleicht könnten Sie Konphyg (https://github.com/pgte/konphyg) verwenden. Es wird ein Konfigurationsobjekt ziemlich einfach erstellen. Dann verwenden Sie fs.writeFileSync ("package.json", JSON.stringify (conphyg.all())), um die Datei package.json zu erstellen. Dieses (https://github.com/exhuma/braindump/tree/master/jsonformat) könnte es verschönern. – Ludo