Chosen: Choisi pas dans npm ?

Créé le 31 juil. 2013  ·  25Commentaires  ·  Source: harvesthq/chosen

Il y a le fichier package.json, mais npm ne renvoie aucun package "choisi" correspondant.

Commentaire le plus utile

Quelle est la difficulté d'ajouter une définition de paquet dans la fourchette choisie par Bower ? Est-ce paresse ou incompétence ? À la location même, vous pouvez satisfaire les utilisateurs de nœuds dans une certaine mesure au lieu de les arroser complètement.

Un commentaire si réfléchi. N'oubliez pas que c'est open source et que tout le monde contribue pendant son temps libre. En plus de cela, chaque fonctionnalité supplémentaire doit être maintenue, ce qui coûte du temps. Mais bien sûr, puisqu'il existe le bower-chosen , un package npm ne devrait pas être loin.

@pfiller nous devrions peut-être renommer bower-chosen en chosen-packaged (ou quelque chose d'autre qui n'est pas lié à un gestionnaire spécifique) et inclure un package.json dans le repo.

Tous les 25 commentaires

Actuellement, le fichier package.json est principalement destiné à installer les exigences de développement de Chosen pour les développeurs.

Comme il s'agit d'une bibliothèque fonctionnant uniquement dans le navigateur, pas côté serveur, est-il logique de l'avoir sur npm ? (c'est une vraie question, je ne suis pas du tout un développeur node.js mais un gars PHP, donc je ne connais pas les conventions npm)

La raison principale est d'utiliser Browserify pour que, dans JS, nous puissions faire var Chosen = require('Chosen'); au lieu de laisser tomber la balise de script un peu partout. JS côté serveur utilise déjà le format require , browserify analyse simplement les exigences (pour simuler la belle définition de module que node.js a obtenue, mais pour le front-end) et le convertit en un gros build.js final (avec toutes les dépendances regroupées) à servir à index.html.

+1 sur ce problème - j'utilise browserify et j'utilise choisi dans mon application mais actuellement je dois le mettre dans le répertoire vendor ce qui est vraiment ennuyeux

+1 là-dessus aussi. Avec Browserify, il est très logique d'être sur NPM.

+1 de moi aussi :) En utilisant également browserify

+1

+1

+1

+1

Si vous avez besoin de ce plugin, vous ne pouvez faire que $ et jQuery dans la portée globale et plus tard chosen = require(../path/chosen.min.js)

Exemple:

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

et vous pouvez utiliser dans votre code $('select').chosen();

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

+1

+1

+1 pour le support de browserify s'il vous plaît

La solution ici est assez facile, je pense.

  1. Ajouter un wrapper UMD
  2. Ajouter les fichiers construits au référentiel
  3. Publier les fichiers construits sur npm

Si l'équipe choisie est intéressée par un tel PR, faites-le moi savoir et je préparerai quelque chose. Les fichiers construits pourraient également être placés sur Bower, et il ne devrait alors pas y avoir de problèmes avec les développeurs utilisant Chosen.

@jmeas

Ajouter les fichiers construits au référentiel

Cela n'arrivera pas. Nous avions l'habitude de le faire, et c'était un cauchemar pour l'équipe. Le JS + CSS compilé ne sera pas ajouté au référentiel - cela a été discuté à plusieurs reprises sur le suivi des problèmes.

Les versions précompilées sont fournies via la page des versions . Si votre gestionnaire de packages de choix prend en charge la spécification de packages via des ZIP, vous devez les utiliser. Voir les instructions de la

Si le gestionnaire de packages de votre choix ne prend _pas_ en charge les ZIP ou utilise l'API des versions GitHub , vous devez ouvrir un problème avec eux pour ajouter la prise en charge de cela.

Browserify utilisateurs, vous avez deux choix que je connais. Le premier est décrit ci-dessus, mais je vais le résumer une fois de plus :

Solution 1 : utilisez Bower et le window

Suivez les instructions du fichier README. Malheureusement, vous ne pouvez pas utiliser npm , pour autant que je sache, alors configurez bower dans votre projet et installez le zip. Ajoutez un module à votre code avec les éléments suivants :

var $ = require('jquery');

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

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

Et il fonctionne! jQuery sera, comme vous vous en doutez, modifié de manière permanente, vous n'aurez donc pas besoin d'avoir à choisir ailleurs dans l'application.

Je vous recommande de vous assurer que votre linter renvoie une erreur si vous essayez d'accéder aux globals du navigateur pour vous assurer que vous ne commencez pas à référencer ce window.jQuery ailleurs dans votre code.

Intéressé par la tonnelle et la fenêtre? Je te sens. Une deuxième option est de...

Solution 2 : enveloppez-le vous-même

Mes applications ont souvent des répertoires vendor pour la poignée de bibliothèques qui ne sont pas empaquetées pour gérer les chargeurs de modules. Si vous ajoutez ce wrapper UMD autour de votre choix, vous pouvez l'exiger comme d'habitude. Ce wrapper fonctionnera également pour les utilisateurs d'AMD.

Pourquoi ne pas simplement utiliser browserify-shim ?

C'est certainement une option. Les tests de mon application s'exécutent dans Node + JSDom, elle doit donc fonctionner sans caler ni aliaser les bibliothèques.

D'ici la fin de la semaine, j'espère avoir une version de Chosen sur npm et bower qui est enveloppée par UMD, afin que les gens puissent simplement installer à partir de là à l'avenir sans aucun problème. Je le garderai à jour si vous me le rappelez, donc si vous êtes un futur lecteur et que mon fork est obsolète, ouvrez simplement un numéro et je peux couper une version.

:+1: pour le composant Bower natif. Aimerait pouvoir importer des fichiers scss directement.

+1 pour l'ajout du package choisi à npm.

+9001 pour ajouter le package choisi à npm.

Il semble que le développement sur Chosen soit au ralenti (pour l'instant du moins) et les responsables ne semblent pas intéressés par la mise à jour des environnements dans lesquels Chosen fonctionne.

La meilleure voie à suivre serait prob. être de simplement forker ce projet pour ajouter le support npm (et, si vous le vouliez, le support UMD aussi !). Vous pouvez publier une nouvelle version sur npm/Bower (peut-être sous modern-chosen ?) puis ouvrir un PR pour remonter les modifications.

S'ils le fusionnent, tant mieux – vous pouvez déprécier votre module. Sinon, les gens commenceront à utiliser votre fourchette à la place.

(J'utilise "vous" dans le sens de "qui que ce soit", plutôt que de n'importe quelle personne en particulier :P )

Quelle est la difficulté d'ajouter une définition de paquet dans la fourchette choisie par Bower ? Est-ce paresse ou incompétence ? À la location même, vous pouvez satisfaire les utilisateurs de nœuds dans une certaine mesure au lieu de les arroser complètement.

Quelle est la difficulté d'ajouter une définition de paquet dans la fourchette choisie par Bower ? Est-ce paresse ou incompétence ? À la location même, vous pouvez satisfaire les utilisateurs de nœuds dans une certaine mesure au lieu de les arroser complètement.

Un commentaire si réfléchi. N'oubliez pas que c'est open source et que tout le monde contribue pendant son temps libre. En plus de cela, chaque fonctionnalité supplémentaire doit être maintenue, ce qui coûte du temps. Mais bien sûr, puisqu'il existe le bower-chosen , un package npm ne devrait pas être loin.

@pfiller nous devrions peut-être renommer bower-chosen en chosen-packaged (ou quelque chose d'autre qui n'est pas lié à un gestionnaire spécifique) et inclure un package.json dans le repo.

J'ai configuré un PR (#2550) qui devrait prendre en charge un package npm, veuillez consulter l'exemple de package attaché à ce PR, c'est à quoi devrait ressembler ce package. Merci!

2550 est fusionné et Chosen est désormais également sur NPM en tant que chosen-js

@koenpunt Merci ! Le problème est que le package contient des fichiers construits, il est donc impossible d'importer des scss bruts.

Connexe : #2347

Cette page vous a été utile?
0 / 5 - 0 notes