Ich versuche einen guten Produktions-Workflow zu finden, der gut mit dem Entwicklungs-Workflow zusammenpasst. Sie müssen 1 MB externer Bibliotheken aus dem Build ausschließen und dann ein CDN verwenden, um sie separat zu hosten. So haben wir diese:Produktions-Workflow mit SystemJS und externen Abhängigkeiten, gehostet über CDN
<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
<script src="build.js"></script>
<script>
System.import('app/main.js');
</script>
Das ist schön, alles in main.js ignoriert wird, wie es bereits in build.js enthalten war. Obwohl ich denke, das bedeutet, wenn es Zeit ist, zurück zum heißen Bauen der Entwicklung zu gehen, müssen wir build.js vorher löschen?
So nun möchte ich die externen Abhängigkeiten für die Produktion trennen:
builder.buildStatic('app/main.js', 'build.js', {
externals: ['jquery'],
globalName: 'App',
globalDeps: {
'jquery': 'jQuery'
}
});
Wenn wir dies tun, sind wir verpflichtet, die Zeile hinzufügen:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2 jquery.min.js"></script>
<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
<script src="build.js"></script>
<script>
System.import('app/main.js');
</script>
Was bedeutet, dass, wenn wir zurückschalten Zum Entwicklungsaufbau wird jQuery doppelt in main.js gebündelt? Dann gibt es die Schnipsel aus SystemJS:
System.config({
bundles: {
'build/core': ['jquery']
}
});
System.import('app/main.js');
nicht sicher, wie diese verwenden, wie jetzt würden wir nicht einen CDN werden mit dem jQuery hosten. Für mich fühlt es sich an wie ein Haken 22. Der JSPM ist großartig, weil er Ihnen Paketverwaltung gibt, aber um die Pakete in der Produktion zu verwenden, wollen Sie sie extern haben. Wenn wir also die Script-Tags sowieso in die Seite aufnehmen müssen, wird damit nicht der Zweck von JSPM zunichte gemacht?
Irgendwelche Ideen, wie man einen netten und einfachen Entwicklungs-/Produktions-Workflow macht, wo wir, wenn wir zwischen den beiden wechseln wollen, den Code nicht ändern müssen? Wir wollen so etwas wie:
$ NPM laufen Produktion
$ NPM laufen Entwicklung
Dies, ohne dass auf der Seite vor, jede Art von HTML zu ändern, um die beiden zu laufen. Ich habe stundenlang über die verschiedenen SystemJS- und JSPM-Workflows geschaut und finde keinen, der alle Probleme anspricht.
Wird SystemJS überall in der Produktion verwendet, oder wird es immer noch als experimentelle Technologie betrachtet? Ich habe gesehen, dass es einen neuen und kommenden Standard mit HTTP/2 gibt, bei dem Module dynamisch im laufenden Betrieb geladen werden. Bedeutet dies, dass es zu SystemJS wechselt oder im Staub gelassen wird?