• [译]A Beginner’s Guide to npm — the Node Package Manager


    原文: http://www.sitepoint.com/beginners-guide-node-package-manager/

    Installing Node.js

    验证你的安装是否成功.

    $ node
    > console.log('Node is running');
    Node is running
    > .help
    .break Sometimes you get stuck, this gets you out
    .clear Alias for .break
    .exit  Exit the repl
    .help  Show repl options
    .load  Load JS from a file into the REPL session
    .save  Save all evaluated commands in this REPL session to a file
    > .exit
    

    Node已经安装成功了, 现在看看npm是否安装成功, 安装的是哪个版本的npm.

    $ npm -v
    1.4.28
    

    (我的是)

    Node Packaged Modules

    npm安装packages分为本地和全局两种模式. 在本地模式下安装会将package安装在你当前目录下的node_modules目录下. 用全局模式安装会安装到{prefix}/lib/node_modules/ 文件夹下({prefix} 通常是/usr/ 或者 /usr/local). 这意味这你可能需要使用sudo来安装全局package. 

    修改全局package的安装目录

    看看npm config输出的是什么东西

    $ npm config list
    

    现在我们知道了全局位置.

    $ npm config get prefix
    /usr/local
    

    这个prefix就是我们想修改的, 为了全局package安装在我们的home目录下, 我们在home目录下创建一个新的文件夹

    $ cd && mkdir .node_modules_global
    $ npm config set prefix=$HOME/.node_modules_global
    

    简单的修改后, 全局package的目录已经修改好了. 现在在home目录下创建一个.npmrc文件.

    $ npm config get prefix
    /home/sitepoint/.node_modules_global
    $ cat .npmrc
    prefix=/home/sitepoint/.node_modules_global
    

    因为我们修改了全局package的安装位置我们需要重新安装npm, 这次我们会在新的位置安装

    $ npm install npm --global
    npm@2.6.0 /home/sitepoint/.node_modules_global/lib/node_modules/npm
    

    最后, 我们需要添加.node_modules_global/bin 到我们的$PATH环境变量. 运行完下面的命令记得重启terminal.

    export PATH="$HOME/.node_modules_global/bin:$PATH"
    

    运行下面的命令看看现在npm安装在哪个目录, 安装的是哪个版本的npm.  

    $ which npm
    /home/sitepoint/.node_modules_global/bin/npm
    $ npm -v
    2.6.0
    

    (我就不修改目录了)

    用全局模式安装package

    目前位置我们只用全局模式安装了一个package那就是npm自己. 现在让我们用全局模式来安装uglifyjs. 我么使用 --global flag,  他有一个缩写是 -g.

    $ npm install uglify-js --global
    uglify-js@2.4.16 node_modules/uglify-js
    ├── uglify-to-browserify@1.0.2
    ├── async@0.2.10
    ├── optimist@0.3.7 (wordwrap@0.0.2)
    └── source-map@0.1.34 (amdefine@0.1.0)
    

    通过输出你能看出另外4个package也被安装了 – 这是因为uglify-js依赖于这4个package.

    看看都安装了哪些全局package

    使用npm list命令查看安装了哪些全局包.

    $ npm list --global
    ├─┬ npm@2.6.0
    │ ├── abbrev@1.0.5
    │ ├── ansi@0.3.0
    ....................
    └─┬ uglify-js@2.4.16
      ├── async@0.2.10
      ├─┬ optimist@0.3.7
      │ └── wordwrap@0.0.2
      ├─┬ source-map@0.1.34
      │ └── amdefine@0.1.0
      └── uglify-to-browserify@1.0.2
    

    这个输出的内容非常的多, 他把我们安装package的依赖package也输出了. 我们可以使用--depth=0.

    $ npm list -g --depth=0
    ├── npm@2.1.11
    └── uglify-js@2.4.16
    

    我们可以使用我们刚安装的uglifyjs解析js. 下面的命令会 minify example.js 到 example.min.js:

    $ uglifyjs example.js -o example.min.js
    

    用本地模式安装package

    去除--global就是用本地模式安装package了. package会安装在你当前目录下的node_modules文件夹下. 现在在home目录下创建一个project目录

    $ mkdir ~/project && cd ~/project
    $ npm install underscore
    underscore@1.8.2 node_modules/underscore
    $ ls
    node_modules
    $ ls node_modules
    underscore
    

    列出安装了哪些本地package

    $ npm list
    /home/sitepoint/project
    └── underscore@1.8.2
    

    卸载本地package

    npm是一个包管理器, 因此我们肯定也能使用它来卸载package:

    $ npm uninstall underscore
    unbuild underscore@1.8.2
    $ npm list
    /home/sitepoint/project
    └── (empty)
    

    指定安装某个版本的package

    在@后写版本好即可.

    $ npm install underscore@1.7.0
    underscore@1.7.0 node_modules/underscore
    $ npm list
    /home/sitepoint/project
    └── underscore@1.7.0
    

    更新 Package

    $ npm update underscore
    underscore@1.8.2 node_modules/underscore
    $ npm list
    /home/sitepoint/project
    └── underscore@1.8.2
    

    搜索查找Packages

    本文多次使用了 mkdir命令. 有没有一个node package能做同样的事情呢?  让我们找找

    $ npm search mkdir
    npm WARN Building the local index for the first time, please be patient
    mkdirp
    

    管理Cache

    当npm安装一个package时它会自动保留一个copy, 这样下次你想安装这个package的时候, 它不需要去网上下载了, 直接去拿这个copy就好了. 这些copy都缓存在home目录下的.npm目录下.

    $ ls ~/.npm
    npm  registry.npmjs.org  underscore ...
    

    这个目录下的packagek可能有很多老的版本的package, 所以有的时候我们需要清理他们.

    $ npm cache clean
    

    管理Dependencies

    手动安装依赖非常不明智, 我们可以在项目的根目录下使用package.json管理package. 可以使用npm init 创建package.json

    $ npm init
    This utility will walk you through creating a package.json file.
    Press ^C at any time to quit.
    name: (project) demo
    version: (1.0.0) 
    description: Demo of package.json
    entry point: (main.js) 
    test command: 
    git repository: 
    keywords: 
    author: Sitepoint
    license: (ISC)
    

    package.json的内容如下:

    {
      "name": "demo",
      "version": "1.0.0",
      "description": "Demo package.json",
      "main": "main.js",
      "dependencies": {
        "mkdirp": "^0.5.0",
        "underscore": "^1.8.2"
      },
      "devDependencies": {},
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "author": "Sitepoint",
      "license": "ISC"
    }
    

    可以添加private: true 避免在运行npm  installl 时出现的一些警告. 创建一个新目录使用package.json安装我们的dependencies.

    $ mkdir ~/demo && cd ~/demo
    $ cp ~/project/package.json ~/demo
    $ npm install
    $ npm list
    demo@1.0.0 /home/sitepoint/demo
    ├─┬ mkdirp@0.5.0
    │ └── minimist@0.0.8
    └── underscore@1.8.2
    

    看看, 在另一个目录基于之前的package.json文件安装package很容易吧. 当我们安装新的package的时候, 怎样让他反映到package.json中去呢? 我们可以使用--save.

    $ npm install request --save
    $ npm list --depth=0
    demo@1.0.0 /home/sitepoint/demo
    ├── mkdirp@0.5.0
    ├── request@2.53.0
    └── underscore@1.8.2
    

    package.json被更新了:

    "dependencies": {
      "mkdirp": "^0.5.0",
      "request": "^2.53.0",
      "underscore": "^1.8.2"
    }
    

      

      

  • 相关阅读:
    装饰器和表达生成式
    函数
    字符编码
    函数基础
    列表,字典与集合
    Linux Semaphore
    tp5安装easyWeChat
    wx.request
    小程序设计规范
    小程序的概念和特点
  • 原文地址:https://www.cnblogs.com/irocker/p/beginners-guide-node-package-manager.html
Copyright © 2020-2023  润新知