NPM速成

NPM是node.js的包管理器,类似python中的pip,本文带您快速学会npm的使用。

什么是NPM

  • 它是Node的包管理器。类似python中的pip
  • 需事先安装Node.js,需要Node的环境
  • 可以方便安装模块/包到系统中
  • 基于Javascript类
  • 方便开发者分享/重用代码

本文内容涵盖:

  • 安装、删除、更新或列出包
  • package.json说明
  • 本地/全局包
  • 依赖/开发依赖
  • npm命令及快捷键
  • 版本控制
  • npm脚本

安装及介绍

https://nodejs.org

支持各个平台安装

https://npmjs.com

npm模块的存储库

新建一个文件夹比如命名为npmapp,然后以vscode打开。

npm -v

npm –version

查看npm版本,上面两个命令是一样的,一般都提供一长一短两个命令。

npm

npm help

不带参数或跟help,将列出npm的用法


package.json文件

它可能是npm javascript中最重要的文件。

  • 列出应用程序的清单,包括名称版本作者等
  • 列出依赖项
  • 确认版本是否匹配,是否需要升级
  • 可以在这个json文件中创建npm脚本
  • 可以手动创建,但使用 npm init可以简单搞定

我们来创建一下,在npmapp目录下,输入

npm init

回答一系列问题即可完成。当然可以保持默认。这样就生成了package.json文件

图片

我们可以输入 npm init -y 或 npm init –yes 

接受所有的答案,而无需逐个回答。

我们单独设置某些配置覆盖默认值,用npm config set 命令,

也可以省略config 直接是 npm set命令。

npm config set init-author-name “kelemi”

npm set init-license ”MIT”    

npm init -y 

我们也可以查看设置默认值,npm config get或 npm get即可。

npm get init-author-name

npm config get init-author-name

我们也可以删除前面的自定义设置

npm config delete init-author-name

npm config delete init-license

再删除package.json文件,再执行

npm init -y

我们来安装一个有用的工具包lodash,该包有排序数组等实用功能。

npm install lodash –save

加上 –save 表示会写到package.json中作为依赖项,不加save的话只安装不写入到package.json中。

这条命令执行之后,我们看到在当前文件夹下添加了一个node_modules文件夹,该文件夹包括losash包。另一个在package.json添加了一条依赖项。

我们来使用lodash:

先添加index.js文件,这是默认的入口文件。在其中引入lodash

const  _  = require(‘lodash’);

下划线 _ 是约定的lodash命名,如果我们要使用npm的包,就需要require引入。

测试代码如下:

const _ = require('lodash')const numbers = [33,46,76,44,32,3]_.each(numbers,function(number,i){    console.log(number)})

保存index.js,然后在控制台执行:

node index

就会依次输出数组中的各个数字。

以上的程序执行的内容不重要,重要的是要理解npm导出模块是怎么使用的。

前面我们导入lodash时用了 –save选项,我们将index.js和package.json拷贝到另一个文件夹,再执行命令:

npm install

就会自动导入 lodash工具包,再执行 node index,就能运行。方便移植,无需拷贝npm的第三方包。

如果不加 –save的话,则不会自动导入。所以一般都加上 –save选项。


开发依赖包

我们看一例子,安装包如下

npm install gulp gulp-sass –save-dev

注意我们写的选项是 –save-dev,这样在package.json中添加的是开发依赖项”devDependencies”:{…}  ,而不是”dependencies”:{..}

这样之后,如果我们复制package.json和index.js到其他文件夹,执行

npm install –production

将不会安装devDependencies下的依赖项。

如果不加 –production选项,devDependencies和dependencies下的依赖项都会安装。

删除包可以用uninstall、remove 或 rm,如果是开发依赖项的话需加 –save-dev

npm uninstall gulp-sass –save-dev 或

npm remove gulp –save-dev

我们也可以安装特定版本的包,后续可以更新

npm rm lodash –save    #先删除原来安装的包

npm install lodash@4.17.3 –save    #安装特定的版本

npm update lodash    #更新包


版本控制

npm包版本一般是 8.2.6这样的格式,主要、次要、补丁三种。主要版本有可能影响调用的API,次要一般是更新特性,补丁则是修复bug。

我们在package.json能看到如下的情形:

“dependencies”:{

    “lodash”:”^4.17.3″,

},

如果版本前的符号是

^ ,代表可以更新次要版本及补丁版本

~,代表只能更新补丁版本

如果不加符号,表示需要确切的版本,比如bootstrap可能需要这样做。

如果是”*”,表示可以更新到最新的版本,包括主要版本。这一般不合适,大版本一般包括重大变化,可能会使程序出错。


全局模块

前面我们安装的包是本地模块,也就是只对当前的文件夹(项目)有效。我们也可以安装全局模块,这样对所有项目都有效。

npm install -g nodemon

加上 -g 参数表示 是全局模块,执行该命令后,package.json不会添加依赖,会安装全局位置,全局位置可以通过命令查询。

npm root -g

查到全局位置。

这里说一下的是 nodemon模块可以监控node各节点,修改后马上就监视到。

nodemon

我们按ctrl+c停止 nodemon,再安装一个有用的包live-server

npm install live-server -g

live-server是一个小型的web服务器,调试时非常有用

如果想删除全局模块怎么做呢?

非常简单,与前面本地模块类似,加上 -g参数即可。

npm remove nodemon -g


列出模块

可以使用list列出安装的模块

npm list

该命令会尽可能多地列出模块。包括安装的模块需依赖的各层级包。

如果仅想列出安装的顶层包,需加上参数 –depth,0表示顶层

npm list –depth 0

层级也可为1,2,…,层级越大列出越详细。


npm脚本

用npm init生成的package.json,默为有个示例脚本 test,我们可以修改,比如下面这样:

..."scripts":{  "start":"node index.js"},...

编辑好脚本,我们在命令行输入:

npm start

相当于执行了 node index.js。这实际是很有用的,别人拿到一个模块,无需查找相关配置或源码,就可以直接执行 npm start就行。

我们删掉全局live-server,在本地安装,然后在脚本里体现。

npm remove live-server -g

npm install –save-dev live-server

再编辑 package.json,在”scripts”节添加一行:

“server”:”live-server”

添加保存之后,再执行:

npm run server即运行了 live-server

注意这里加了run,只有start,test等不用加run直接执行,其他一般都要加。

当然也可以将 名字server改成 dev,这样就可以用 npm run dev运行live-server了。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注