• node.js NPM 使用


    n=NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。有了NPM,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。npms安装:

    下载npm源代码:
       https://github.com/isaacs/npm/tags

    将npm源代码解压到D: pmjs目录中。
       在命令提示符窗口中执行下面的操作,完成npm的安装:

    D:>cd npmjs
    D: pmjs>node cli.js install -gf

       另外:

    node cli.js install npm -gf //可以安装最新版的NPM
    node cli.js install npm@1.0.105 -gf //可以安装指定版本的NPM

       上面两种方法都是通过网络从代码库中下载并安装,但是代码库一般只保留最近的两个版本。

    NPM安装完成后,将"D: odejs ode_modules"加入系统环境变量NODE_PATH中。

    D:develop odejshello>npm install -d
    npm info it worked if it ends with ok
    npm info using npm@1.0.103
    npm info using node@v0.5.10
    npm info preinstall application-name@0.0.1
    npm info addNamed [ 'jade', '>= 0.0.1' ]
    npm info addNamed [ 'express', '2.5.0' ]

    最好设置下国内镜像要不然下载会很慢。淘宝有个npm镜像。

    http://npm.taobao.org/

          NPM常用的命令有:

          (1)$ npm install moduleNames

                   安装Node模块

                   注意事项:如果在使用模块的时候不知道其名字,可以通过http://search.npmjs.org网站按照

                                    索引值找到想要的模块。npm也提供了查询的功能  $ npm search indexName

                                     安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。

                                     node的安装分为全局模式和本地模式。一般情况下会以本地模式运行,包会被安装

                                    到和你的应用代码统计的本地node_modules目录下。在全局模式下,Node包会被

                                    安装到Node的安装目录下的node_modules下。全局安装命令为

                                    $ npm install -g moduleName。获知使用$npm set global=true来设定安装模式

                                  ,$npm get global可以查看当前使用的安装模式。

    我最开始已经用这个安装formidable:


    C:UsersAdministrator

    >nmp install formidable

    我的代码放在H盘:

    var formidable = require('formidable'),

    运行总是报错:

    原因是什么呢?原来node.js 模块安装有两种方式,一种是local安装,一种是全局安装。

    nmp install xxx 普通安装

    npm install  xxx -g 将会被安装到【全局目录】里,我的是安装在:

    C:UsersAdministratorAppDataRoaming pm ode_modules 目录。

    可以通过 npm config set prefix "目录路径" 来设置。

    普通的npm会安装到当前目录,加上—global参数(简写为-g)就会安装到默认的全局目录,至于Node和npm的默认目录是哪些,建议阅读这篇文章,对于win7,8用户言,现在是默认装到Program Files odejs下, npm 的 repo在 %USERPROFILE%AppDataRoaming pm 且会自动加到系统PATH下。

    1. npm install xxx -g 时, 模块将被下载安装到【全局目录】中。

    【全局目录】通过 npm config set prefix "目录路径" 来设置。

    2. npm install xxx ,则是将模块下载到当前命令行所在目录。

    例如:

    c:123>npm install xxx

    将会安装到

    c:123 ode_modulesxxx

    如果是全局安装,还要设置一个环境变量,

    NODE_PATH =C:UsersAdministratorAppDataRoaming pm ode_modules

    就可以了。

           (2)$ npm view moduleNames

                     查看node模块的package.json文件夹

                    注意事项:如果想要查看package.json文件夹下某个标签的内容,可以使用

                                     $ npm view moduleName labelName

           (3)$ npm list 

                    查看当前目录下已安装的node包

                    注意事项:Node模块搜索是从代码执行的当前目录开始的,搜索结果取决于当前使用的目录中

                                     的node_modules下的内容。$ npm list parseable=true可以目录的形式来展现当

                                     前安装的所有node包

           (4)$ npm help

                    查看帮助命令

           (5)$ npm view moudleName dependencies

                    查看包的依赖关系

           (6)$ npm view moduleName repository.url

                   查看包的源文件地址

           (7)$ npm view moduleName engines

                   查看包所依赖的Node的版本

          (8)$npm help folders

                    查看npm使用的所有文件夹

          (9)$ npm rebuild moduleName

                    用于更改包内容后进行重建

          (10)$ npm outdated 

                     检查包是否已经过时,此命令会列出所有已经过时的包,可以及时进行包的更新

          (11)$ npm update moduleName

                         更新node模块

          (12)$ npm uninstall moudleName

                          卸载node模块

          (13)一个npm包是包含了package.json的文件夹,package.json描述了这个文件夹的结构。访

                          问npm的json文件夹的方法如下:

                                $ npm help json 

                          此命令会以默认的方式打开一个网页,如果更改了默认打开程序则可能不会以网页的形式打

                          开。

          (14)发布一个npm包的时候,需要检验某个包名是否已存在

                        $ npm search packageName

          (15)很多时候我们在使用一个npm包的时候经常会忘记了require其相互依赖的模块,我们可以

                         借助如如下命令来查看此模块相互依赖的包都有哪些

    更多命令请参看npm官方文档http://npmjs.org/doc/ 

    参考:http://blog.csdn.net/dellheng/article/details/7076461

    local安装和global安装区别:

    npm的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如:

    npm install grunt # 本地安装

    npm install -g grunt-cli # 全局安装

    这两种安装方式有什么区别呢?从npm官方文档的说明来看,主要区别在于(后面通过具体的例子来说明):

    本地安装

    1. 将安装包放在 ./node_modules 下(运行npm时所在的目录)

    2. 可以通过 require() 来引入本地安装的包

    全局安装

    1. 将安装包放在 /usr/local 下

    2. 可以直接在命令行里使用

    本地安装

    1、将安装包放在 ./node_modules 下(运行npm时所在的目录)

    比如运行下面命令

    npm install grunt --save-dev

    那么,就会在当前目录下发现一个node_modules目录,进去后能够看到grunt这个包

    casperchenMacBookPro:testUsemin casperchen$ ll

    total 200

    drwxr-xr-x 16 casperchen staff 544B 12 14 23:17 node_modules

    进入node_modules

    casperchenMacBookPro:node_modules casperchen$ ll

    total 0

    drwxr-xr-x 16 casperchen staff 544B 12 5 00:49 grunt

    2、可以通过 require() 来引入本地安装的包

    直接来个例子,我们在项目根目录下创建test.js,里面的内容很简单

    var grunt = require('grunt');grunt.log.writeln('hello grunt');

    然后在控制台运行test.js

    node test.js

    然后就会看到如下输出

    casperchenMacBookPro:testUsemin casperchen$ node test.js

    hello grunt

    全局安装

    1、将安装包放在 /usr/local 下

    运行如下命令

    npm install -g grunt-cli

    然后进入/usr/local/bin目录,就会发现grunt-cli已经被放置在下面了

    casperchenMacBookPro:bin casperchen$ pwd

    /usr/local/bin

    casperchenMacBookPro:bin casperchen$ ll grunt

    lrwxr-xr-x 1 root admin 39B 8 18 21:43 grunt -> ../lib/node_modules/grunt-cli/bin/grunt

    可见,全局模块的真实安装路径在/usr/local/lib/node_modules/下,/usr/local/bin下的可执行文件只是软链接而已

    2、可以直接在命令行里使用

    实现细节在上面其实就讲到了,通过在`/usr/local/bin下创建软链接的方式实现。这里不赘述

    更直观的例子

    下面就直接看下,当我们在项目目录下运行grunt task(task为具体的grunt任务名,自行替换)时,发生了什么事情。这里要借助node-inspector。

    首先,没接触过node-inspector的童鞋可以参考之前的文章了解下

    运行如下命令开启调试

    node-inspector &

    见到如下输出

    casperchenMacBookPro:tmp casperchen$ node-inspector &

    [1] 14390

    casperchenMacBookPro:tmp casperchen$ Node Inspector v0.6.1

    info - socket.io started

    Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.

    接着,在当前任务下运行grunt任务

    ^CcasperchenMacBookPro:testUsemin casperchen$ node --debug-brk $(which grunt) dev

    debugger listening on port 5858

    接着,打开chrome浏览器,输入网址http://127.0.0.1:8080/debug?port=5858,就会自动进入断点调试状态,从一旁显示的tips可以看到,全局命令grunt其实就是/usr/local/lib/node_modules/grunt-cli/bin/grunt。

    按下F8接着往下跑,就会进如Gruntfile.js,此时的grunt,是本地安装的一个node包,全局命令跟本地的包名字一样,挺有迷惑性的。软件自学网

    更多:

    http://www.cit.cn/tech/develop/node-js/2012/0817/996.html

    http://www.cnblogs.com/walkerwang/archive/2013/04/05/3001001.html

     linux npm安装:

    就像NPM的官网(http://npmjs.org/ )上介绍的那样,安装NPM仅仅是一行命令的事情:

    curl http://npmjs.org/install.sh | sh 

    这里详解一下这句命令的意思,curl http://npmjs.org/install.sh是通过curl命令获取这个安装shell脚本,按后通过管道符| 将获取的脚本交由sh命令来执行。这里如果没有权限会安装不成功,需要加上sudo来确保权限:

    curl http://npmjs.org/install.sh | sudo sh 

    安装成功后执行npm命令,会得到一下的提示:

    Usage: npm <command> 
    where <command> is one of: 
    adduser, apihelp, author, bin, bugs, c, cache, completion, 
    config, deprecate, docs, edit, explore, faq, find, get, 
    help, help-search, home, i, info, init, install, la, link, 
    list, ll, ln, ls, outdated, owner, pack, prefix, prune, 
    publish, r, rb, rebuild, remove, restart, rm, root, 
    run-script, s, se, search, set, show, star, start, stop, 
    submodule, tag, test, un, uninstall, unlink, unpublish, 
    unstar, up, update, version, view, whoami 

    我们以underscore为例,来展示下通过npm安装第三方包的过程。

    npm install underscore 

    返回:

    underscore@1.2.2 ./node_modules/underscore 

    由于一些特殊的网络环境,直接通过npm install命令安装第三方库的时候,经常会出现卡死的状态。幸运的是国内CNode社区的@fire9 同学利用空余时间搭建了一个镜像的NPM资源库,服务器架设在日本,可以绕过某些不必要的网络问题。你可以通过以下这条命令来安装第三方库:

    npm --registry "http://npm.hacknodejs.com/
    
    " install underscore 

    如果你想将它设为默认的资源库,运行下面这条命令即可:

    npm config set registry "http://npm.hacknodejs.com/ "

    设置之后每次安装时就可以不用带上—registry参数。值得一提的是还有另一个镜像可用,该镜像地址是http://registry.npmjs.vitecho.com ,如需使用,替换上面两行命令的地址即可。

    通过npm安装包。安裝好之後會自動被安裝到 /usr/local/bin 目錄下,而相依的函式庫也會自動安裝到/usr/local/lib/node 目錄下,實在是非常方便。


    npm使用

    npm init  会引导你创建一个package.json文件,包括名称、版本、作者这些信息等

    使用package.json

    在Pakcage.json所在目录npm install就可以安装了

     在国内npm很慢,加速办法

    换成镜像http://npm.taobao.org/

    你可以使用我们定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

    $ npm install -g cnpm --registry=https://registry.npm.taobao.org

    或者你直接通过添加 npm 参数 alias 一个新命令:

    alias cnpm="npm --registry=https://registry.npm.taobao.org 
    --cache=$HOME/.npm/.cache/cnpm 
    --disturl=https://npm.taobao.org/dist 
    --userconfig=$HOME/.cnpmrc"
    
    # Or alias it in .bashrc or .zshrc
    $ echo '
    #alias for cnpm
    alias cnpm="npm --registry=https://registry.npm.taobao.org 
      --cache=$HOME/.npm/.cache/cnpm 
      --disturl=https://npm.taobao.org/dist 
      --userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc

    安装模块

    从 registry.npm.taobao.org 安装所有模块. 当安装的时候发现安装的模块还没有同步过来, 淘宝 NPM 会自动在后台进行同步, 并且会让你从官方 NPMregistry.npmjs.org 进行安装. 下次你再安装这个模块的时候, 就会直接从 淘宝 NPM 安装了.

    $ cnpm install [name]

    同步模块

    直接通过 sync 命令马上同步一个模块, 只有 cnpm 命令行才有此功能:

    $ cnpm sync connect

    当然, 你可以直接通过 web 方式来同步: /sync/connect

    $ open https://npm.taobao.org/sync/connect

     另外还可以通过

    1.通过config命令

    npm config set registry https://registry.npm.taobao.org 
    npm info underscore (如果上面配置正确这个命令会有字符串response
    这种方法也是把所谓的user config写入到 ~/.npmrc文件的!!

    https://cnodejs.org/topic/4f9904f9407edba21468f31e


    node_modules文件夹时提示该文件夹包含名称过长删除不了

     cmd下rmdir /s/q your_app_dir 来删除

    npm install rimraf -g
    rimraf node_modules
  • 相关阅读:
    NT头 IMAGE_NT_HEADER
    组合框
    列表框消息大全
    滚动条
    列表框
    超级列表框
    按钮
    EDIT编辑框
    15. 三数之和
    268. 缺失数字
  • 原文地址:https://www.cnblogs.com/youxin/p/3379087.html
Copyright © 2020-2023  润新知