2016-03-22 13 views
1

Ich möchte Dateien von node_modules Verzeichnis im Projektstamm liefern.Ressourcen von 'node_modules' dir

so zum Beispiel habe ich auf meiner Seite dieses:

[:link {:href "/font-awesome/css/font-awesome.css" :rel "stylesheet" :type "text/css"}] 

jetzt muss ich compojure sagen statisch etwas zu dienen, die in node_modules Verzeichnis ist, und ich kann nicht einen Weg finden.

Es funktioniert, wenn ich node_modules auf resources/public dir verschieben, aber das will ich nicht. Ich brauche einen Weg zu finden, Dateien im Projektverzeichnis von überall zu dienen (in diesem Fall von ./node_modules)

Ich versuchte :resource-paths ["node_modules"] zu profiles.clj Hinzufügen

Ich versuchte (compojure.route/resources "node_modules" {:root "../.." }), , die immer noch nicht funktioniert hat.

+0

Sie können node_modules zum Ressourcenverzeichnis – OlegTheCat

+0

@OlegTheCat symlink, das ist keine Lösung, die das Problem versteckt. Fast gleich mit dem Verschieben des Ordners darin – Agzam

+1

Ich glaube, Sie haben möglicherweise das führende '/' im ersten Argument zu Ressourcen vergessen. Haben Sie auch versucht, 'lein classpath' im Stammverzeichnis des Projekts auszuführen? Wenn 'node_modules' nicht dort ist, wird' resources' nicht funktionieren, da es nur Dateien aus dem Klassenpfad bereitstellt; In diesem Fall ist es wahrscheinlich besser, route/files zu verwenden. – superkonduktr

Antwort

1

das ist, was ich getan habe:

:resource-paths ["node_modules"] hinzugefügt project.clj - (compojure.route/resources "/" {:root "" })take a look at leiningen's sample

und dann. Scheint, es hat funktioniert.

upd: diese scheinbar exponierten Dinge, die nicht ausgesetzt werden sollten. z.B. Es ist jetzt möglich, project.clj durch Navigieren zu ihm im Browser herunterzuladen. nicht gut.

upd 2: (compojure.route/files "/" {:root "node_modules" }) Diesmal ist es richtig.

-1

Symlink die Datei (en) oder verwenden Sie @import in etwas in Ihren statischen Dateien zu Ihrem font-awesome CSS enthalten. Ich habe das nicht ausprobiert, aber Sie könnten auch entweder einen Ordner project_root/special_css erstellen und ihn der css-dirs in project.clj hinzufügen oder versuchen, die spezielle Datei selbst zum Vektor hinzuzufügen (nicht sicher, ob das funktionieren würde).

+0

Das ist keine Lösung, die ich suche, die Tatsache, dass das gegebene Beispiel über .css - bloßer Zufall ist. Ich brauche eine Möglichkeit, statische Ressourcen von überall her zu bedienen, nicht nur "Ressourcen/Öffentlichkeit". Symlinking nicht den richtigen Weg auch und ich hoffe, Sie auch, fühlen sich so - es schafft andere Probleme, einschließlich der Art der Bereitstellung. – Agzam

+0

Das Bereitstellen von öffentlichen Ressourcen von überall verursacht mehr Probleme als die Verknüpfung mit einem dedizierten Öffentlichen Ordner. Was ist die Motivation für die Bereitstellung beliebiger öffentlicher Dateien aus nicht öffentlichen Verzeichnissen? – BWStearns

+0

nicht "willkürlich", aber Sachen, die in 'node_modules'-Ordner ist. Es ist ziemlich sicher. Es ist möglich, es in 'resources/public' zu verschieben, aber ich möchte' node_modules' intakt lassen. – Agzam