V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oa414
V2EX  ›  Node.js

npm install 能不能像maven,gem,pip一样把package.json的项目依赖放在全局目录下

  •  
  •   oa414 · 2014-01-29 11:47:33 +08:00 · 6455 次点击
    这是一个创建于 3952 天前的主题,其中的信息可能已经有所发展或是发生改变。
    主要是网速,还有SSD空间太捉急了。。

    比如用yeoman创建一个项目,自动把Grunt这些都安装在本地的node_moudles目录下,一个hello world项目就几十兆,而且联网下载太慢了。。。

    用npm link的话对连接命令行的程序似乎比较合适。。但是对那些非命令行的依赖来说,npm link怎么样?

    node新手,望前辈赐教。。
    第 1 条附言  ·  2014-01-29 13:10:35 +08:00
    可能说的不是很清楚,举个例子。
    比如我用Yeoman新建了一个项目,生成了package.json

    {
    "name": "d",
    "version": "0.0.0",
    "dependencies": {},
    "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-autoprefixer": "~0.4.0",
    "grunt-concurrent": "~0.4.1",
    "grunt-contrib-clean": "~0.5.0",
    "grunt-contrib-coffee": "~0.7.0",
    "grunt-contrib-compass": "~0.6.0",
    "grunt-contrib-concat": "~0.3.0",
    "grunt-contrib-connect": "~0.5.0",
    "grunt-contrib-copy": "~0.4.1",
    "grunt-contrib-cssmin": "~0.7.0",
    "grunt-contrib-htmlmin": "~0.1.3",
    "grunt-contrib-imagemin": "~0.3.0",
    "grunt-contrib-jshint": "~0.7.1",
    "grunt-contrib-uglify": "~0.2.0",
    "grunt-contrib-watch": "~0.5.2",
    "grunt-google-cdn": "~0.2.0",
    "grunt-newer": "~0.5.4",
    "grunt-ngmin": "~0.0.2",
    "grunt-rev": "~0.1.0",
    "grunt-svgmin": "~0.2.0",
    "grunt-usemin": "~2.0.0",
    "jshint-stylish": "~0.1.3",
    "load-grunt-tasks": "~0.2.0",
    "time-grunt": "~0.2.1"
    },
    "engines": {
    "node": ">=0.8.0"
    },
    "scripts": {
    "test": "grunt test"
    }
    }%


    如果运行npm install,所有依赖会被安装到node_modules目录下。

    于是我的每个项目下面都有一个庞大的node_modules目录,而且每次新建项目,安装依赖都要花一些时间。

    我希望把所有依赖安装到全局目录下,然后让node在require的时候根据package.json指定的版本在全局目录找到对应的文件并加载。

    就像Ruby的Gem和Java的Maven一样。

    不知道有什么办法么?
    6 条回复    1970-01-01 08:00:00 +08:00
    ceclinux
        1
    ceclinux  
       2014-01-29 12:02:43 +08:00
    没看懂,不是有-g选项吗
    oa414
        2
    oa414  
    OP
       2014-01-29 13:11:06 +08:00
    @ceclinux 已更新描述。
    chemzqm
        3
    chemzqm  
       2014-01-29 13:17:54 +08:00 via iPhone
    正确做法是使用cnpm,速度嗷嗷快。还有一些其他的本地npm替代方案,因为有版本冲突的问题,全局依赖极其恶心
    yyfearth
        4
    yyfearth  
       2014-01-29 17:33:05 +08:00
    我觉得应该没太大问题吧,只是浪费一些空间而已。
    因为下载的时候其实是有缓存的,所以你看上去下载很多东西,其实大部分都是返回 304 Not Modified,所以网速其实影响不是特别大,但是如果是GFW类似的访问问题,那就不一样了
    不管你SSD还是什么,一个项目几十M没啥问题吧,你用Maven,target的目录不也一样很大么?
    emric
        5
    emric  
       2014-01-29 18:55:24 +08:00
    安装的时候 npm -g install , 版本依赖的话只能放当前目录了.
    crossmaya
        6
    crossmaya  
       2014-02-24 20:44:55 +08:00
    你可以自定义path,不过版本问题,当然还是指定不同path了,不然只能在本地目录。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   877 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:53 · PVG 04:53 · LAX 12:53 · JFK 15:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.