2016-11-10 1 views
0

Ich habe ein Angular2-Projekt (generiert von angular-cli). Im Projekt habe ich ein Hauptmodul und ein Untermodul. Das Untermodul stellt ein gut definiertes Konzept dar, so dass es gut passt, um es als (möglicherweise wiederverwendbar) NgModule zu haben.Zugriff auf freigegebene Stile von einem Angular2 NgModule

Das Submodul kapselt die verschiedenen Komponenten ein und legt nur eine Komponente nach außen frei. Das ist alles schön, es funktioniert gut, so dass das Modul wiederverwendbar sein könnte.

Allerdings hat das Modul eine globale Abhängigkeit, die es davon abhält, vollständig entkoppeltes, wiederverwendbares Modul zu sein. Eine scss Datei greift auf eine gemeinsame scss Datei unter Verwendung @import zu. Die gemeinsame Datei scss befindet sich außerhalb des Moduls.

So, insbesondere eine scss Style-Datei innerhalb des Moduls außerhalb des Moduls mit relativen Pfaden zu einer scss-Datei verweist, wie folgt aus:

@import './../../../assets/styles/common-props'; 

Ich will nicht die scss Datei in das Modul kopieren . Was ist der beste Weg, um die gemeinsame Datei scss zu konsumieren, so dass das Modul einfach wiederverwendet werden kann? Gibt es eine Best Practice?

+0

können Sie einen Teil des Codes veröffentlichen. Ich würde gerne sehen, was du versuchst zu tun. –

+0

@JohnBaird Code hinzugefügt –

Antwort

0

Nicht sicher, ob es hier wirklich eine Best Practice gibt. Alles hängt davon ab, wie Sie externe SCSS-Ressourcen importieren und verwalten möchten.

  1. Wenn die SCSS-Ressource durch ein Homebrew- oder NPM-Update aktualisiert werden soll, ist der Import aus dem Quellverzeichnis der richtige Weg.
  2. Wenn Sie den Upgrade-Pfad zur SCSS-Ressource manuell steuern möchten, verschieben Sie die Datei einfach in Ihre SCSS-Hierarchie und importieren Sie sie.

Generell bevorzuge ich Ansatz # 2.

Ich habe ein Verzeichnis namens 'libs', dass ich externe SCSS/CSS-Dateien organisieren und einfach aus dieser Ordnerstruktur importieren.

Es gibt Randfälle, wo ich # 1 verwende, aber sie sind selten.

+0

In Szenario 2 müssen Sie einen relativen Pfad zur SCSS-Datei in das Modul nicht hart codieren, so dass es für andere Projekte nicht wiederverwendbar ist? –

+0

In Szenario 1, sagst du, dass ich ein Knotenmodul aus einer scss-Datei machen und es auf unserem internen npm-Server veröffentlichen kann? –

+0

Ich bin mir nicht sicher, ob ich deine Frage beantworte, vielleicht verstehe ich sie nicht vollständig. Fügen Sie vielleicht Ihre gesamte SCSS-Struktur ein und zeigen Sie, wie diese externen SCSS-Ressourcen in Ihre Master-Importdatei aufgenommen werden sollen. – Lowkase

Verwandte Themen