首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
qiu8310
V2EX  ›  Node.js

是时候放弃用 cnpm 而去使用 smart-npm 了

  •  
  •   qiu8310 · 2015-04-06 13:21:20 +08:00 · 6035 次点击
    这是一个创建于 1754 天前的主题,其中的信息可能已经有所发展或是发生改变。
    首先我说下我用 cnpm 不爽的地方:

    1. 用 cnpm publish, cnpm adduser 等命令(更多会报错的命令可以查看http://qiu8310.github.io/smart-npm/global.html#npm-cmds)都会报错,而且它也没有一个友好的提示

    2. 有很多 package 都集成了 npm install 在它里面,比如 yeoman 的所有 generator,你使用这些 generator 后,它会自动在最后直接 npm install, 这时你就得 Ctrl + C 中断操作,然后再用 cnpm install。你不觉得这样很不爽吗?

    3. 也有很多 package 会拉一些线上的信息,这时它们走的 registry 还是官方的 https://registry.npmjs.org/ , 这时我们网络又会被卡死。

    如果你也遇到过上面的问题,可以来看看这个 https://github.com/qiu8310/smart-npm , 保证你不会失望,也欢迎你吐槽!
    22 回复  |  直到 2015-04-28 07:23:38 +08:00
    loading
        1
    loading   2015-04-06 13:28:25 +08:00 via Android
    用淘宝的npm,有时也感觉卡死了,没进度信息,心里发毛
    qiu8310
        2
    qiu8310   2015-04-06 13:35:02 +08:00
    很简单,你在用 cnpm 或者 npm 的时候,在命令后面加上 --verbose 就会显示出进度信息了。

    进度信息的详细程度你可以参考这里 https://github.com/qiu8310/smart-npm#%E8%B0%83%E8%AF%95-npm
    qiu8310
        3
    qiu8310   2015-04-06 13:35:52 +08:00
    @loading 忘记 at 你了,补充一下,回复叫上楼
    oott123
        4
    oott123   2015-04-06 14:47:15 +08:00 via Android
    用 cnpm 的源,npm 的 binary 不就好了…
    qiu8310
        5
    qiu8310   2015-04-06 14:53:08 +08:00
    @oott123 照你说法,应该是把 cnpm 的源配置在 .npmrc 的文件中了?

    那你用 npm publish 是不会成功的,默认 publish 必须向官方的 registry 发布,cnpm 的源不接受发布请求。

    还有很多其它问题你可以去我项目的主页看看 https://github.com/qiu8310/smart-npm/
    megoo
        6
    megoo   2015-04-06 16:30:30 +08:00
    可以替代官方npm么?
    oott123
        7
    oott123   2015-04-06 16:30:40 +08:00 via Android
    @qiu8310 是的
    不过我也没有做过 publish 这种操作就是了。
    qiu8310
        8
    qiu8310   2015-04-06 18:37:12 +08:00
    @megoo 我写这个就是为了替代官方的 npm。

    但说替代不太好,因为我底层是使用官方的 npm 的;这个 smart-npm 更适合在我们中国使用,它会自动根据你的行为判断是用国内的镜像还是用官方的镜像。

    有兴趣可以去项目主页看下,这里的文档更详细(刚有更新) https://github.com/qiu8310/smart-npm
    qiu8310
        9
    qiu8310   2015-04-06 18:41:14 +08:00
    @oott123 你也可以试用下 smart-npm 的,对你使用不会有影响,只会更方便

    使用过程中不排除有 bug,但 bug 只会让它更完美!
    oott123
        10
    oott123   2015-04-06 20:17:13 +08:00 via Android
    @qiu8310 如果我没有 public 请求,我没理由抛弃原生的 npm 不是…
    不过是非常棒的项目 :) 加油!
    coolicer
        11
    coolicer   2015-04-06 21:11:18 +08:00
    我可以相信你吗?
    sanddudu
        12
    sanddudu   2015-04-06 21:44:20 +08:00
    这个支持 Windows 吗?

    另外,我 publish 的时候从来没卡或者失败过,基本上最小化去看会儿视频就好了,比起 Github 莫名其妙的卡死还好很多,而且发布这种事情也急不得。
    qiu8310
        13
    qiu8310   2015-04-06 21:54:43 +08:00
    @sanddudu 更新了文档, Windows 审用,我没完全测试
    qiu8310
        14
    qiu8310   2015-04-06 21:57:10 +08:00
    @coolicer 咯,这个看你个人啊。有兴趣可以研究下源代码,非常短,只是分析了一个你传入的参数,从而选择是用 npm 还是 cnpm 命令
    alsotang
        15
    alsotang   2015-04-06 23:25:32 +08:00
    @qiu8310 windows 支持的话。如果这个库本身没有什么 c++ addon 代码,光是 js 是可以直接在 win 上面跑的。当然,如果 travi-ci 可以支持的话,也可以在上面测一测。
    qiu8310
        16
    qiu8310   2015-04-07 10:26:35 +08:00
    @alsotang 我在 windows 上试了下,确实支持,但体验不好,每次运行一个命令都会创建一个子进程,没有在 Linux 或者 Mac 上的体验爽
    dc2002007
        17
    dc2002007   2015-04-10 18:30:41 +08:00
    厉害,跟楼主好好学习
    thewei
        18
    thewei   2015-04-21 09:51:23 +08:00
    平时我是用nrm做切换。为什么要替换npm呢,做它的扩展不好吗?
    KuroNekoFan
        19
    KuroNekoFan   2015-04-21 14:41:42 +08:00
    之前试用了一下,然后npm gulp卡了一个下午,本来以为是公司垃圾网络的问题,然后修复了一下node,然后就正常了....
    qiu8310
        20
    qiu8310   2015-04-28 07:21:03 +08:00
    @thewei 这应该不是个问题,我也用 nvm,但我一般不切换,哈哈。

    其实不管是做扩展还是替换,如果你用 nvm 换到另一个 node 版本,旧有的 npm 都会被换掉的。
    qiu8310
        21
    qiu8310   2015-04-28 07:22:31 +08:00
    @KuroNekoFan 你不是用我的 smart-npm 吧?用它原生的 npm 都会请求国外资源,很不稳定。
    qiu8310
        22
    qiu8310   2015-04-28 07:23:38 +08:00
    @dc2002007 其实很简单,只是在 npm 最外层做了个封装,判断你要执行的命令,使用不同的 registry
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1826 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 08:32 · PVG 16:32 · LAX 00:32 · JFK 03:32
    ♥ Do have faith in what you're doing.