Ich verwende den 5-minütigen Schnellstart von der Website angle.io, der eine Dateistruktur wie die folgende enthält:
angular2-quickstart
app
app.component.ts
boot.ts
index.html
license.md
package.json
tsconfig.json
Die Datei tsconfig.json ist ein Codeblock wie folgt:
{
"compilerOptions": {
"target": "ES5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules"
]
}
Auch die package.json:
{
"name": "angular2-quickstart",
"version": "1.0.0",
"scripts": {
"tsc": "tsc",
"tsc:w": "tsc -w",
"lite": "lite-server",
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" "
},
"license": "ISC",
"dependencies": {
"angular2": "2.0.0-beta.0",
"systemjs": "0.19.6",
"es6-promise": "^3.0.2",
"es6-shim": "^0.33.3",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.0",
"zone.js": "0.5.10"
},
"devDependencies": {
"concurrently": "^1.0.0",
"lite-server": "^1.3.1",
"typescript": "^1.7.3"
}
}
Ich ändere die sourceMap von true in false, sodass im Code-Editor die Map-Datei nicht erneut generiert wird, die js-Datei jedoch weiterhin generiert wird.
Ich möchte nur an der ts-Datei arbeiten und möchte keinen Brunch von js und js.map-Dateien erhalten. Was soll ich tun, um alle meine ts-Dateien in meinem regulären Entwicklungs-Floder wie dem App-Ordner und allen js und js abzulegen? Dateien in einen Ordner namens dist?
Ein gutes Beispiel hierfür könnte der Angular2-Webpack-Schnellstart sein . Aber ich habe nicht herausgefunden, wie sie das machen?
Irgendwelche Ratschläge dazu natürlich nicht manuell.
Vielen Dank,
quelle
node_modules
undnpm install
alles auf dem neuesten Stand zu bringenAntworten:
Wahrscheinlich spät, aber hier ist eine zweistufige Lösung.
Schritt 1
Ändern Sie system.config.js, indem Sie
'app'
auf Folgendes aktualisieren'dist/app'
:Jetzt wird es so aussehen:
Schritt 2
Erstellen Sie den dist- Ordner.
Bearbeiten Sie tsconfig.json und fügen Sie hinzu:
Das Ergebnis
tsconfig.json
:Führen
npm start
Sie es aus, und Sie sollten alle kompilierten Dateien.js
und.map.js
Dateien im Ordner dist sehen .Hinweis : Gehen Sie andere Antworten durch. Sie sind auch sehr nützlich und informativ.
quelle
html/css files is not present in the dist folder
hat Antworten unten ...Meine Lösung unterscheidet sich ein wenig von der oben genannten. Ich habe mit dem hier definierten Angular2-Schnellstart-Startwert begonnen: https://github.com/angular/quickstart#create-a-new-project-based-on-the-quickstart
Und dann nur folgendes geändert:
"outDir": "../dist"
zutsconfig.json
baseDir
Attribut innenbs-config.json
zu"baseDir": ["dist", "src"]
Funktioniert dann
npm run start
wie zuvor (auch HTML / CSS und andere Dateien ohne Kopieren), aber kompiliert.js
und.map
Dateien sind integriertdist/app
und verschmutzen Ihrsrc/app
Verzeichnis nicht.Bitte beachten Sie, dass ich noch nicht getestet habe, wie sich dies auf das Testen auswirkt.
quelle
Ich kann auch zu spät sein, aber ich habe das getan.
Mach zuerst, was Raheel Shan gesagt hat .
Erstellen Sie dann den dist- Ordner.
Gehen Sie nach dem Erstellen des Ordners zur Datei
tsconfig.json
und fügen Sie Folgendes hinzu:Das Ergebnis
tsconfig.json
Wenn Sie jetzt laufen
npm start
und Speichern einer Datei sollten Sie alle die kompilierte sehen.js
und.map.js
in der dist - Ordner.quelle
Vielen Dank, Raheel Shan, Ihre Antwort gab einen Vorsprung,
Wie @Adavo oben in den Kommentaren zu Recht gefragt hat
Die Antwort auf diese Frage lautet * Geben Sie den vollständigen Pfad zur HTML / CSS-Datei mit '/' (aus dem Stammverzeichnis) in allen .ts-Dateien und hauptsächlich in der Eigenschaft "templateURL" von @Component an
Nach langer Zeit - ich habe es herausgefunden - ohne Gulp :) Yipppeee
quelle
Relative Pfade in Angular 2 sind nicht so einfach, da das Framework flexibel sein möchte, wie Sie Ihre Dateien (CommonJs, SystemJs usw.) gemäß dem Artikel über komponentenrelative Pfade in Angular 2 laden .
Wie im Artikel erläutert,
module.id
enthält die Verwendung mit CommonJs (überprüfen Sie Ihre tsconfig.json) die absolute Wurzel des Moduls und kann zum Erstellen eines relativen Pfads verwendet werden.Eine bessere Alternative könnte also sein, die CSS / HTML-Dateien mit den ts-Dateien zu belassen und Ihre Komponente wie unten zu konfigurieren, vorausgesetzt, Sie haben Ihre Build-Dateien nur in einem separaten Ordner namens dist . Auf diese Weise werden Ihre CSS- und HTML-Dateien mit geladen Kein Problem bei der Verwendung relativer Pfade durch Konvertieren des abgeleiteten Erstellungspfads in den Quellpfad, der sie enthält - im Wesentlichen Entfernen
/dist/
oder Umbenennen in/src/
;)Wenn Sie separate Ordner für Quelle und Build haben, können Sie dies stattdessen tun:
quelle
Um dies zu lösen:
Führen Sie die Schritte in den Antworten von @raheel shan und @ Lirianer aus. ... dann können Sie es damit beenden.
Ich habe dies für meine Zwecke mit npm-Skripten gelöst. Der Skriptabschnitt in meiner Datei package.json befindet sich unten. Die Lösung besteht darin,
onchnage
(ein npm-Paket -npm install --save onchange
) gleichzeitig mittsc
dem Server auszuführen . Verwenden Sie dann rsync, um die Assets zu kopieren, die Sie verschieben möchten:Für diejenigen von Ihnen unter Windows können Sie
rsync
überCygwin
oder mit Paketlösungen wie cwRsync erhalten .quelle
build
Ordner und keinendist
Ordner benutze , aber Sie bekommen die Idee.onchange
kommt. Außerdem sollten Sie einen Hinweis veröffentlichen, dass diese Ausgabe nur für Unix-ähnliche Shells funktioniert. Vielleicht ist das für die meisten Leute kein so großes Problem, aber ich bin in letzter Zeit auf viele Entwickler gestoßen, die Windows verwenden müssen.onchange
es kommt, und Informationen darüber, wie manrsync
für Windows kommt. Lassen Sie mich wissen, ob dies Ihre Probleme angeht.Ich habe den Vorschlag von @WillyC ausprobiert und wie ein Zauber gearbeitet. Beachten Sie jedoch, dass Sie die
onchange
Abhängigkeit zu Ihrerpackage.json
Datei hinzufügen müssen . Ich habe ein paar zusätzliche Skripte hinzugefügt, um beim ersten Start ein sauberes Setup zu haben und um übrig gebliebene HTML / CSS-Dateien zu entfernen (es wäre schön, wenn dies auch für TSC möglich wäre).Wie auch immer, hier ist ein Abschnitt meiner
package.json
Dateirsync
Beachten Sie beim Löschen das--delete
Flag imrsync
Befehl deswatchassets
Skriptsquelle
Angular2 TypeScript-Dateien und JavaScript-Dateien in verschiedenen Ordnern
Hier ist meine Konfiguration für Angular 2, die neueste Version V2.1.1, und sie funktioniert sehr gut!
tsconfig.json
systemjs.config.js
quelle
main: './dist/app/main.js',
system.js.config
at -map{app:"dist",..}
dann inpackages{app{main:"app/main.js"}}
} und intsconfig.json
-"outDir": "dist"
+ html / css sourceInspiriert von @Nagyl habe ich meinen eigenen Weg entwickelt und ich glaube, es lohnt sich zu teilen:
1) Installieren Sie cpx
2) Aktualisieren Sie bs-config.json und ändern Sie baseDir von "src" in "dist".
3) Aktualisieren Sie tsconfig.json und fügen Sie outDir am Ende von compilerOptions hinzu:
4) Aktualisieren Sie package.json: 4.1) Fügen Sie am Ende der Skripte einen neuen Befehl hinzu:
4.2) Ändern Sie die Zeile "start" so, dass sie den Befehl "cpx" enthält:
quelle
Sie können
.ts
Dateien im Browser transpilieren , genau wie Plunker in seiner eckigen 2-ts-Vorlage tut.Starten Sie einfach den Editor, wählen Sie die Option Neu, dann AngularJS und 2.0.x (TS) (ganz unten). Bei der Verwendung von Webpack (oder einem anderen Bündelungswerkzeug) geht es jedoch vor allem darum, Dateien lokal zu transpilieren.
quelle
Ich habe einige der oben genannten Optionen ausprobiert und mich schließlich für Folgendes entschieden : Peep - eine Erweiterung für
Visual Studio Code
.Wie installiert man:
- -
25.01.2017 - Updates: Angular -Cli aus der Box, kümmert sich darum. und Installation funktioniert und jetzt.
quelle
Ich habe die hier aufgeführten Lösungen ausprobiert. Sie sind gut, aber nicht ideal für mich. Ich möchte eine einfache Lösung. Ich möchte die Pfadinformationen in allen meinen Komponentendateien nicht fest codieren. Ich möchte nicht mehr npm-Pakete installieren, um dies zu erledigen.
Also finde ich eine einfachste Alternative. Es ist keine direkte Antwort auf diese Frage, aber es funktioniert sehr gut für mich.
Ich habe nur meine Arbeitsbereichseinstellungen so angepasst, dass die
js
Dateien unter/app
nicht angezeigt werden. Sie sind immer noch da. Sie sind nur vor meinem Arbeitsbereich versteckt. Für mich ist das genug.Ich verwende Sublime Text. Daher habe ich Folgendes für meine Projekteinstellungen:
Ich bin sicher, dass viele andere Editoren ähnliche Funktionen haben.
AKTUALISIEREN:
Verwenden Sie einfach Angular CLI. Alles wird automatisch erledigt.
quelle
Für Angular 4 mit Dateien vom Schnellstart musste ich nur Folgendes tun (eine Mischung aus den zuvor angegebenen Antworten, aber leicht unterschiedlichen Werten):
"outDir": "../dist"
"baseDir": ["dist", "src"],
"baseDir": ["dist", "src"],
Keine Änderung an systemjs.config.js.
quelle
Ich habe den Vorschlag von @raheel ausprobiert und es hat bei mir funktioniert. Ich habe die Struktur an meine Bedürfnisse angepasst.
Ich benutze die folgende Struktur
Um dies zu erhalten, habe ich nur zwei Dateien geändert: 1. systemjs.config.js und 2.tsconfig.json
In systemjs.config.js habe ich zu geändert
map: { // previously it was app: 'app', app: 'app/js', ...
und in tsconfig.json muss ich hinzufügen
"outDir": "app/js"
quelle
Ich arbeite mit Angular 2.4. Ich brauchte einen zusätzlichen Schritt, damit es funktioniert. Dies war der Verweis des Aktualisierungssystems auf die Datei main.js in der Datei index.html.
zu:
quelle
Hinzu kommt, was Raheel Shan gesagt hat. Ich musste zusätzliche Änderungen in index.html vornehmen, um zu reflektieren, dass jetzt die richtige Javascript-Datei importiert wird.
Hier ist eine Zusammenfassung von meiner Seite.
tsconfig.json
Vor
Nach dem:
systemjs.config.js
Vor:
Nach dem:
index.html
Vor:
Nach dem:
quelle