有 package.json 文件,但 npm 没有返回相应的“选择”包。
目前,package.json 文件主要用于为开发人员安装 Chosen 的开发要求。
因为它是一个仅在浏览器中工作的库,而不是在服务器端,所以将它放在 npm 上有意义吗? (这是一个真正的问题,我根本不是 node.js 开发人员,而是一个 PHP 人,所以我不知道 npm 约定)
主要原因是使用Browserify以便在 JS 中我们可以执行var Chosen = require('Chosen');
而不是在任何地方删除脚本标记。 服务端 JS 已经使用了require
格式,browserify 简单地解析了 requires(模拟 node.js 得到的漂亮的模块定义,但用于前端)并将其转换为一个大的最终 build.js(带有捆绑的所有依赖项)文件以提供给 index.html。
+1 在这个问题上 - 我使用 browserify 并在我的应用程序中使用 selected 但目前我必须将它放在vendor
目录中,这真的很烦人
对此也有 +1。 使用 Browserify 在 NPM 上很有意义。
也从我那里 +1 :) 也使用 browserify
+1
+1
+1
+1
如果您需要此插件,则只能将$
和jQuery
放入全局范围,然后再执行chosen = require(../path/chosen.min.js)
例子:
var $ = require('jquery');
window.$ = $;
window.jQuery = $;
var chosen = require(./chosen.jquery.min.js)
你可以在你的代码中使用$('select').chosen();
来源: http :
+1
+1
+1 为 browserify 支持请
我认为这里的修复很容易。
npm
如果被选中的团队对这样的 PR 感兴趣,请告诉我,我会整理一些东西。 构建的文件也可以放在 Bower 上,然后使用 Chosen 的开发人员应该没有任何问题。
@jmeas
将构建的文件添加到 repo
这不会发生。 我们曾经这样做过,这对团队来说是一场噩梦。 编译后的 JS + CSS 不会被添加到 repo 中——这在问题跟踪器上已经讨论过很多次了。
预编译版本通过发布页面提供。 如果您选择的包管理器支持通过 ZIP 指定包,您应该使用它们。 有关示例,请参阅凉亭说明。
如果您选择的包管理器_不_支持 ZIP 或使用GitHub 发布 API ,您应该向他们打开一个问题以添加对此的支持。
Browserify 用户,我知道您有两种选择。 第一个是上面描述的,但我将再次总结它:
解决方案一:使用 Bower 和window
按照自述文件中的说明进行操作。 不幸的是,据我所知,您不能使用npm
,因此在您的项目中设置bower
并安装 zip。 使用以下内容将模块添加到您的代码中:
var $ = require('jquery');
// Chosen requires this :(
window.jQuery = $;
require('path/to/bower_components/chosen_v1.3.0/chosen.jquery');
它有效! 正如您所期望的那样,jQuery 将被永久修改,因此您无需要求在应用程序的其他任何地方进行选择。
如果您尝试访问浏览器全局变量,我建议您确保您的 linter 抛出错误,以确保您不会在代码中的任何其他地方开始引用此window.jQuery
。
对凉亭和窗户不感兴趣? 我感受你。 第二种选择是...
解决方案二:自己包装
我的应用程序通常有vendor
目录,用于少数未打包处理模块加载器的库。 如果你在selected周围添加
为什么不直接使用 browserify-shim?
这绝对是一个选择。 我的应用程序的测试在 Node+JSDom 中运行,因此它需要在不填充或别名库的情况下工作。
到本周末,我希望在npm
和bower
上构建一个包含 UMD 的 Chosen,因此人们可以在未来从那里安装任何问题。 如果你提醒我,我会保持最新,所以如果你是未来的读者并且我的叉子已经过时了,只需打开一个问题,我就可以删除一个版本。
:+1: 用于本地凉亭组件。 希望能够直接导入scss
文件。
+1 用于将 Chosen 包添加到 npm。
+9001 用于将选择的包添加到 npm。
似乎 Chosen 的开发进展缓慢(至少目前是这样),维护人员似乎对更新 Chosen 工作的环境不感兴趣。
最好的方法是 prob。 只是 fork 这个项目来添加 npm 支持(如果你愿意,也可以支持 UMD !)。 你可以在 npm/Bower 上发布一个新版本(可能在modern-chosen
?)然后打开一个 PR 到上游更改。
如果他们合并它,那就太好了——你可以弃用你的模块。 否则人们会开始使用你的叉子。
(我在“谁”的意义上使用“你”,而不是任何特定的人:P)
在 bower-chosen fork 中添加包定义有什么困难? 是懒惰还是无能? 在租约中,您可以在一定程度上满足节点用户,而不是完全满足他们。
在 bower-chosen fork 中添加包定义有什么困难? 是懒惰还是无能? 在租约中,您可以在一定程度上满足节点用户,而不是完全满足他们。
如此周到的评论.. 请记住,它是开源的,每个人都在空闲时间做出贡献。 除此之外,每个额外的功能都必须维护,这会花费时间。 但可以肯定的是,既然有bower-chosen
回购,npm 包应该不会太远。
@pfiller也许我们应该将bower-chosen
重命名chosen-packaged
(或其他与特定经理无关的名称)并在回购中包含package.json
。
我已经设置了一个 PR (#2550),它应该负责一个 npm 包,请查看附加到该 PR 的示例包是这个包的样子。 谢谢!
chosen-js
@koenpunt谢谢! 问题是该包包含构建文件,因此无法导入原始 scss。
相关:#2347
最有用的评论
如此周到的评论.. 请记住,它是开源的,每个人都在空闲时间做出贡献。 除此之外,每个额外的功能都必须维护,这会花费时间。 但可以肯定的是,既然有
bower-chosen
回购,npm 包应该不会太远。@pfiller也许我们应该将
bower-chosen
重命名chosen-packaged
(或其他与特定经理无关的名称)并在回购中包含package.json
。