2017-03-22 2 views
6

Ich schrieb ein Npm-Paket blokus, die ES6-Syntax verwenden.Mit create react app und mit ES6-Abhängigkeiten

Ich habe create-react-app verwendet, um ein Projekt web-blokus zu starten, das von blokus abhängt.

kann ich npm start ohne Fehler laufen, und meine web-blokus app in meinem Browser sehen, und es hat alle Funktionen, die blokus Paket verwenden.

Das Problem ist, dass ich einen UglifyJS Fehler beim Ausführen npm build erhalten.

static/js/main.8afd34e2.js from UglifyJs 
SyntaxError: Name expected [./~/blokus/blokus/blokus.js:3,0] 

Es scheint, gibt es eine bekannte Situation mit UglifyJS ES6 Abhängigkeiten nicht unterstützt (einige relevante Frage Themen here und here). Aber ich las diese Threads genauso durch wie eine Handvoll anderer und ich war ziemlich verwirrt darüber, was geplant war und was Leute als Workarounds machten.

Also wollte ich

1) bestätigen, dass create-react-app nicht aus der Box arbeiten (wenn Sie zu npm build gehen), wenn Ihre Anwendung keine ES6 Abhängigkeiten hat

2) fragen, was die Menschen tun, um Fix/Umgehung des Problems (muss ich auswerfen und etwas für UglifyJS austauschen?)

Da create-react-app und ES6 jetzt so beliebt sind, nehme ich an, dass ich entweder die Beschränkung oder eine Standardmethode des Umgangs mit verstehe Diese Einschränkung wird diskutiert und bekannt.

Antwort

3

Sie können ES6-Code nicht mit create-react-app oder den meisten Build-Systemen verwenden.

npm-Pakete sollten aufgrund bestehender Tools und in geringerem Maße älterer Node-Versionen nicht zu ES6-Code führen.

Ihr Paket einzurichten, ist im Verzeichnis src das ES6 Code unter der Annahme:

{ 
    "presets": ["latest"] 
} 

package.json

"main": "./lib", 
    "scripts": { 
    "build": "babel src --out-dir lib" 
    } 

npm install --save-dev babel-core babel-cli babel-preset-latest 

.babelrc tun Dann npm run build vor Veröffentlichung.

Erstellen Sie ein .gitignore mit 'lib' und einem. Das .npmignore muss existieren.

Sie können Ihre Tests auf dem src-Verzeichnis (oder lib, ist nicht so wichtig) ausführen.

+0

Ehrfürchtig, vielen Dank. Neugierig, wie wirkt sich das Hinzufügen von 'lib' auf 1) Unit-Tests aus (sollten sie die src-Dateien oder die lib-Dateien testen, und wenn lib dann das Testskript zuerst enthalten muss), und 2) .gitignore (sollte lib-Ordner sein) in Versionskontrolle oder nah) – tscizzle

+0

@tscizzle aktualisiert. – FakeRainBrigand

Verwandte Themen