Chosen: Nicht in npm ausgewählt?

Erstellt am 31. Juli 2013  ·  25Kommentare  ·  Quelle: harvesthq/chosen

Es gibt die Datei package.json, aber npm gibt kein entsprechendes 'gewähltes' Paket zurück.

Hilfreichster Kommentar

Was ist die Schwierigkeit beim Hinzufügen einer Paketdefinition in der Bower-Chosen-Fork? Ist es Faulheit oder Inkompetenz? Schon bei der Miete können Sie Knotenbenutzer bis zu einem gewissen Grad zufriedenstellen, anstatt sie vollständig zu versenken.

So ein nachdenklicher Kommentar.. Denken Sie daran, dass es Open Source ist und jeder in seiner Freizeit einen Beitrag leistet. Außerdem muss jedes zusätzliche Feature gepflegt werden, was Zeit kostet. Aber sicher, da es das bower-chosen Repo gibt, sollte ein npm-Paket nicht weit entfernt sein.

@pfiller vielleicht sollten wir bower-chosen in chosen-packaged umbenennen (oder etwas anderes, das nicht mit einem bestimmten Manager zusammenhängt) und ein package.json in das Repo aufnehmen.

Alle 25 Kommentare

Derzeit ist die Datei package.json hauptsächlich dazu gedacht, die Dev-Anforderungen von Chosen für Entwickler zu installieren.

Da es sich um eine Bibliothek handelt, die nur im Browser und nicht auf der Serverseite arbeitet, ist es sinnvoll, sie auf npm zu haben? (Dies ist eine echte Frage, ich bin überhaupt kein node.js-Entwickler, sondern ein PHP-Typ, daher kenne ich die npm-Konventionen nicht)

Der Hauptgrund ist, Browserify zu verwenden, damit wir in JS var Chosen = require('Chosen'); tun können, anstatt Skript-Tags überall ein bisschen zu verwerfen. Serverseitiges JS verwendet bereits das require Format, browserify parst einfach die Anforderungen (um die nette Moduldefinition zu simulieren, die node.js bekommen hat, aber für das Frontend) und wandelt es in eine große finale build.js um (mit alle Abhängigkeiten gebündelt) Datei, die für index.html bereitgestellt werden soll.

+1 zu diesem Problem – Ich verwende browserify und verwende in meiner App ausgewählt, aber derzeit muss ich es in das Verzeichnis vendor legen, was wirklich nervig ist

Auch dazu +1. Mit Browserify macht es sehr viel Sinn, auf NPM zu sein.

+1 auch von mir :) Auch mit browserify

+1

+1

+1

+1

Wenn Sie dieses Plugin nur benötigen, können Sie $ und jQuery in den globalen Bereich und später chosen = require(../path/chosen.min.js)

Beispiel:

 var $ = require('jquery');
 window.$ = $;
 window.jQuery = $;
 var chosen = require(./chosen.jquery.min.js)

und Sie können in Ihrem Code $('select').chosen();

Quelle: http://www.codefornow.com/2014/06/08/browserify-jquery-and-jquery-plugins/

+1

+1

+1 für Browserify-Support bitte

Die Lösung hier ist ziemlich einfach, denke ich.

  1. Fügen Sie einen UMD-Wrapper hinzu
  2. Fügen Sie die erstellten Dateien zum Repository hinzu
  3. Veröffentlichen Sie die erstellten Dateien in npm

Wenn das gewählte Team Interesse an einer solchen PR hat, lass es mich wissen und ich stelle etwas zusammen. Die erstellten Dateien könnten auch auf Bower abgelegt werden, und dann sollte es für Entwickler, die Chosen verwenden, keine Probleme geben.

@jmeas

Fügen Sie die erstellten Dateien zum Repository hinzu

Dies wird nicht passieren. Wir haben das früher gemacht und es war ein Albtraum für das Team. Das kompilierte JS + CSS wird dem Repo nicht hinzugefügt – dies wurde im Issue Tracker oft diskutiert.

Vorkompilierte Versionen werden über die Releases-Seite bereitgestellt. Wenn Ihr Paketmanager Ihrer Wahl die Angabe von Paketen über ZIPs unterstützt, sollten Sie diese verwenden. Ein Beispiel finden Sie in den Bower-Anweisungen .

Wenn Ihr Paketmanager Ihrer Wahl ZIPs _keine_ unterstützt oder die GitHub- Release-

Browserify-Benutzer, Sie haben zwei Möglichkeiten, die mir bekannt sind. Die erste ist oben beschrieben, aber ich fasse sie noch einmal zusammen:

Lösung 1: Verwenden Sie Bower und das window

Folgen Sie den Anweisungen in der README-Datei. Leider können Sie npm meines Wissens nicht verwenden, also richten Sie bower in Ihrem Projekt ein und installieren Sie die Zip-Datei. Fügen Sie Ihrem Code ein Modul mit den folgenden Inhalten hinzu:

var $ = require('jquery');

// Chosen requires this :(
window.jQuery = $;

require('path/to/bower_components/chosen_v1.3.0/chosen.jquery');

Und es funktioniert! jQuery wird, wie zu erwarten, dauerhaft geändert, sodass Sie nirgendwo anders in der App auswählen müssen.

Ich empfehle Ihnen, sicherzustellen, dass Ihr Linter einen Fehler auslöst, wenn Sie versuchen, auf Browser-Globals zuzugreifen, um sicherzustellen, dass Sie nirgendwo anders in Ihrem Code auf dieses window.jQuery verweisen.

Desinteressiert an Laube und Fenster? Ich fühle mit dir. Eine zweite Möglichkeit besteht darin,...

Lösung zwei: selbst einpacken

Meine Apps haben oft vendor Verzeichnisse für die Handvoll Bibliotheken, die nicht für die Handhabung von Modulladern gepackt sind. Wenn Sie diesen UMD-Wrapper ausgewählt haben, können Sie ihn wie gewohnt anfordern. Dieser Wrapper funktioniert auch für AMD-Benutzer.

Warum nicht einfach browserify-shim verwenden?

Dies ist definitiv eine Option. Die Tests meiner App werden in Node+JSDom ausgeführt, daher muss sie ohne Shimming oder Aliasing der Bibliotheken funktionieren.

Bis Ende der Woche hoffe ich, einen Build von Chosen auf npm und bower , der UMD-verpackt ist, so dass die Leute in Zukunft einfach von dort aus installieren können, wenn es Probleme gibt. Ich halte es auf dem neuesten Stand, wenn Sie mich daran erinnern. Wenn Sie also ein zukünftiger Leser sind und mein Fork veraltet ist, öffnen Sie einfach eine Ausgabe und ich kann eine Veröffentlichung veröffentlichen.

:+1: für native Bower-Komponente. Möchte scss Dateien direkt importieren können.

+1 für das Hinzufügen des ausgewählten Pakets zu npm.

+9001 für das Hinzufügen des ausgewählten Pakets zu npm.

Es scheint, als ob die Entwicklung von Chosen an einem langsamen Punkt ist (zumindest im Moment) und die Betreuer nicht daran interessiert sind, die Umgebungen, in denen Chosen arbeitet, zu aktualisieren.

Der beste Weg nach vorne wäre Prob. sein, dieses Projekt einfach abzuzweigen, um npm-Unterstützung hinzuzufügen (und, wenn Sie wollten, auch UMD-Unterstützung!). Sie könnten eine neue Version auf npm/Bower veröffentlichen (vielleicht unter modern-chosen ?) und dann eine PR öffnen, um die Änderungen vorzulesen.

Wenn sie es zusammenführen, großartig – Sie können Ihr Modul verwerfen. Andernfalls werden die Leute stattdessen Ihre Gabel verwenden.

(Ich verwende "du" im Sinne von "wer auch immer" und nicht eine bestimmte Person :P)

Was ist die Schwierigkeit beim Hinzufügen einer Paketdefinition in der Bower-Chosen-Fork? Ist es Faulheit oder Inkompetenz? Schon bei der Miete können Sie Knotenbenutzer bis zu einem gewissen Grad zufriedenstellen, anstatt sie vollständig zu versenken.

Was ist die Schwierigkeit beim Hinzufügen einer Paketdefinition in der Bower-Chosen-Fork? Ist es Faulheit oder Inkompetenz? Schon bei der Miete können Sie Knotenbenutzer bis zu einem gewissen Grad zufriedenstellen, anstatt sie vollständig zu versenken.

So ein nachdenklicher Kommentar.. Denken Sie daran, dass es Open Source ist und jeder in seiner Freizeit einen Beitrag leistet. Außerdem muss jedes zusätzliche Feature gepflegt werden, was Zeit kostet. Aber sicher, da es das bower-chosen Repo gibt, sollte ein npm-Paket nicht weit entfernt sein.

@pfiller vielleicht sollten wir bower-chosen in chosen-packaged umbenennen (oder etwas anderes, das nicht mit einem bestimmten Manager zusammenhängt) und ein package.json in das Repo aufnehmen.

Ich habe einen PR (#2550) eingerichtet, der sich um ein npm-Paket kümmern soll, bitte sehen Sie sich das Beispielpaket an, das diesem PR beigefügt ist, wie dieses Paket aussehen sollte. Vielen Dank!

2550 wird zusammengeführt und Chosen ist jetzt auch auf NPM als chosen-js

@koenpunt Danke! Das Problem ist, dass das Paket erstellte Dateien enthält, daher kann Roh-Scss nicht importiert werden.

Verwandte: #2347

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen