npm模块管理器
2016-12-07 17:31
363 查看
web 前端NPM 使用
1 简介
2 npm init
3 npm set
4 npm info
5 npm search
6 npm list
7 npm install
1 基本用法
2 安装不同版本
8 npm updatenpm uninstall
9 npm run
npm不需要单独安装。在安装Node的时候,会连带一起安装npm。但是,Node附带的npm可能不是最新版本,最好用下面的命令,更新到最新版本。
上面的命令中,@latest表示最新版本,-g表示全局安装。所以,命令的主干是npm install npm,也就是使用npm安装自己。之所以可以这样,是因为npm本身与Node的其他模块没有区别。
然后,运行下面的命令,查看各种信息。
如果使用了-f(代表force)、-y(代表yes),则跳过提问阶段,直接生成一个新的package.json文件。
上面命令等于为npm init设置了默认值,以后执行npm init的时候,package.json的作者姓名、邮件、主页、许可证字段就会自动写入预设的值。这些信息会存放在用户主目录的 ~/.npmrc文件,使得用户不用每个项目都输入。如果某个项目有不同的设置,可以针对该项目运行npm config。
上面命令返回一个JavaScript对象,包含了underscore模块的详细信息。这个对象的每个成员,都可以直接从info命令查询。
下面是一个例子。
加上global参数,会列出全局安装的模块。
npm list命令也可以列出单个模块。
每个模块可以“全局安装”,也可以“本地安装”。“全局安装”指的是将一个模块安装到系统目录中,各个项目都可以调用。一般来说,全局安装只适用于工具模块,比如eslint和gulp。“本地安装”指的是将一个模块下载到当前项目的node_modules子目录,然后只有在项目目录之中,才能调用这个模块。
npm install也支持直接输入Github代码库地址。
安装之前,npm install会先检查,node_modules目录之中是否已经存在指定模块。如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本,也是如此。
如果你希望,一个模块不管是否安装过,npm 都要强制重新安装,可以使用-f或–force参数。
如果你希望,所有模块都要强制重新安装,那就删除node_modules目录,重新执行npm install。
如果使用–save-exact参数,会在package.json文件指定安装模块的确切版本。
install命令可以使用不同参数,指定所安装的模块属于哪一种性质的依赖关系,即出现在packages.json文件的哪一项中。
–save:模块名将被添加到dependencies,可以简化为参数-S。
–save-dev: 模块名将被添加到devDependencies,可以简化为参数-D。
如果要安装beta版本的模块,需要使用下面的命令。
npm install默认会安装dependencies字段和devDependencies字段中的所有模块,如果使用–production参数,可以只安装dependencies字段的模块。
一旦安装了某个模块,就可以在代码中用require命令加载这个模块。
它会先到远程仓库查询最新版本,然后查询本地版本。如果本地版本不存在,或者远程版本较新,就会安装。
使用-S或–save参数,可以在安装的时候更新package.json里面模块的版本号。
注意,从npm v2.6.1 开始,npm update只更新顶层模块,而不更新依赖的依赖,以前版本是递归更新的。如果想取到老版本的效果,要使用下面的命令。
npm uninstall命令,卸载已安装的模块。
上面代码中,scripts字段指定了两项命令lint和test。命令行输入npm run-script lint或者npm run lint,就会执行jshint .js**,输入npm run-script test或者npm run test,就会执行mocha test/。npm run是npm run-script的缩写,一般都使用前者,但是后者可以更好地反应这个命令的本质。
npm run命令会自动在环境变量$PATH添加node_modules/.bin目录,所以scripts字段里面调用命令时不用加上路径,这就避免了全局安装NPM模块。
npm run如果不加任何参数,直接运行,会列出package.json里面所有可以执行的脚本命令。
npm内置了两个命令简写,npm test等同于执行npm run test,npm start等同于执行npm run start。
npm run会创建一个Shell,执行指定的命令,并临时将node_modules/.bin加入PATH变量,这意味着本地模块可以直接运行。
举例来说,你执行ESLint的安装命令。
运行上面的命令以后,会产生两个结果。首先,ESLint被安装到当前目录的node_modules子目录;其次,node_modules/.bin目录会生成一个符号链接node_modules/.bin/eslint,指向ESLint模块的可执行脚本。
然后,你就可以在package.json的script属性里面,不带路径的引用eslint这个脚本。
下面是另一个package.json文件的例子。
上面代码在scripts项,定义了四个别名,每个别名都有对应的脚本命令。
其中,start和test属于特殊命令,可以省略run。
如果希望一个操作的输出,是另一个操作的输入,可以借用Linux系统的管道命令,将两个操作连在一起。
但是,更方便的写法是引用其他npm run命令。
上面的写法是先运行npm run build-js,然后再运行npm run build-css,两个命令中间用&&连接。如果希望两个命令同时平行执行,它们中间可以用&连接。
下面是一个流操作的例子。
写在scripts属性中的命令,也可以在node_modules/.bin目录中直接写成bash脚本。下面是一个bash脚本。
假定上面的脚本文件名为build.sh,并且权限为可执行,就可以在scripts属性中引用该文件。
ok, 下面的图片是初始化生成的一个新的package.json文件截图。
仔细阅读你会发现,你己经可以简单理解文件字段,scripts,test等 内容。
1 简介
2 npm init
3 npm set
4 npm info
5 npm search
6 npm list
7 npm install
1 基本用法
2 安装不同版本
8 npm updatenpm uninstall
9 npm run
1、 简介
npm有两层含义。一层含义是Node的开放式模块登记和管理系统,网址为npmjs.org。另一层含义是Node默认的模块管理器,是一个命令行下的软件,用来安装和管理Node模块。npm不需要单独安装。在安装Node的时候,会连带一起安装npm。但是,Node附带的npm可能不是最新版本,最好用下面的命令,更新到最新版本。
$ npm install npm@latest -g
上面的命令中,@latest表示最新版本,-g表示全局安装。所以,命令的主干是npm install npm,也就是使用npm安装自己。之所以可以这样,是因为npm本身与Node的其他模块没有区别。
然后,运行下面的命令,查看各种信息。
# 查看 npm 命令列表 $ npm help # 查看各个命令的简单用法 $ npm -l # 查看 npm 的版本 $ npm -v # 查看 npm 的配置 $ npm config list -l
2、 npm init
npm init用来初始化生成一个新的package.json文件。它会向用户提问一系列问题,如果你觉得不用修改默认配置,一路回车就可以了。如果使用了-f(代表force)、-y(代表yes),则跳过提问阶段,直接生成一个新的package.json文件。
$ npm init -y
3、 npm set
npm set用来设置环境变量。$ npm set init-author-name 'Your name' $ npm set init-author-email 'Your email' $ npm set init-author-url 'http://yourdomain.com' $ npm set init-license 'MIT'
上面命令等于为npm init设置了默认值,以后执行npm init的时候,package.json的作者姓名、邮件、主页、许可证字段就会自动写入预设的值。这些信息会存放在用户主目录的 ~/.npmrc文件,使得用户不用每个项目都输入。如果某个项目有不同的设置,可以针对该项目运行npm config。
$ npm set save-exact true
4、 npm info
npm info命令可以查看每个模块的具体信息。比如,查看underscore模块的信息。$ npm info underscore { name: 'underscore', description: 'JavaScript\'s functional programming helper library.', 'dist-tags': { latest: '1.5.2', stable: '1.5.2' }, repository: { type: 'git', url: 'git://github.com/jashkenas/underscore.git' }, homepage: 'http://underscorejs.org', main: 'underscore.js', version: '1.5.2', devDependencies: { phantomjs: '1.9.0-1' }, licenses: { type: 'MIT', url: 'https://raw.github.com/jashkenas/underscore/master/LICENSE' }, files: [ 'underscore.js', 'underscore-min.js', 'LICENSE' ], readmeFilename: 'README.md'}
上面命令返回一个JavaScript对象,包含了underscore模块的详细信息。这个对象的每个成员,都可以直接从info命令查询。
$ npm info underscore description JavaScript's functional programming helper library. $ npm info underscore homepage http://underscorejs.org $ npm info underscore version 1.5.2
5、 npm search
npm search命令用于搜索npm仓库,它后面可以跟字符串,也可以跟正则表达式。$ npm search <搜索词>
下面是一个例子。
$ npm search node-gyp // NAME DESCRIPTION // autogypi Autogypi handles dependencies for node-gyp projects. // grunt-node-gyp Run node-gyp commands from Grunt. // gyp-io Temporary solution to let node-gyp run `rebuild` under… // ...
6、 npm list
npm list命令以树型结构列出当前项目安装的所有模块,以及它们依赖的模块。$ npm list
加上global参数,会列出全局安装的模块。
$ npm list -global
npm list命令也可以列出单个模块。
$ npm list underscore
7、 npm install
1、 基本用法
Node模块采用npm install命令安装。每个模块可以“全局安装”,也可以“本地安装”。“全局安装”指的是将一个模块安装到系统目录中,各个项目都可以调用。一般来说,全局安装只适用于工具模块,比如eslint和gulp。“本地安装”指的是将一个模块下载到当前项目的node_modules子目录,然后只有在项目目录之中,才能调用这个模块。
# 本地安装 $ npm install <package name> # 全局安装 $ sudo npm install -global <package name> $ sudo npm install -g <package name>
npm install也支持直接输入Github代码库地址。
$ npm install git://github.com/package/path.git $ npm install git://github.com/package/path.git#0.1.0
安装之前,npm install会先检查,node_modules目录之中是否已经存在指定模块。如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本,也是如此。
如果你希望,一个模块不管是否安装过,npm 都要强制重新安装,可以使用-f或–force参数。
$ npm install <packageName> --force
如果你希望,所有模块都要强制重新安装,那就删除node_modules目录,重新执行npm install。
$ rm -rf node_modules $ npm install
2、 安装不同版本
install命令总是安装模块的最新版本,如果要安装模块的特定版本,可以在模块名后面加上@和版本号。$ npm install sax@latest $ npm install sax@0.1.1 $ npm install sax@">=0.1.0 <0.2.0"
如果使用–save-exact参数,会在package.json文件指定安装模块的确切版本。
$ npm install readable-stream --save --save-exact
install命令可以使用不同参数,指定所安装的模块属于哪一种性质的依赖关系,即出现在packages.json文件的哪一项中。
–save:模块名将被添加到dependencies,可以简化为参数-S。
–save-dev: 模块名将被添加到devDependencies,可以简化为参数-D。
$ npm install sax --save $ npm install node-tap --save-dev # 或者 $ npm install sax -S $ npm install node-tap -D
如果要安装beta版本的模块,需要使用下面的命令。
# 安装最新的beta版 $ npm install <module-name>@beta (latest beta) # 安装指定的beta版 $ npm install <module-name>@1.3.1-beta.3
npm install默认会安装dependencies字段和devDependencies字段中的所有模块,如果使用–production参数,可以只安装dependencies字段的模块。
$ npm install --production # 或者 $ NODE_ENV=production npm install
一旦安装了某个模块,就可以在代码中用require命令加载这个模块。
var backbone = require('backbone') console.log(backbone.VERSION)
8、 npm update,npm uninstall
npm update命令可以更新本地安装的模块。# 升级当前项目的指定模块 $ npm update [package name] # 升级全局安装的模块 $ npm update -global [package name]
它会先到远程仓库查询最新版本,然后查询本地版本。如果本地版本不存在,或者远程版本较新,就会安装。
使用-S或–save参数,可以在安装的时候更新package.json里面模块的版本号。
// 更新之前的package.json dependencies: { dep1: "^1.1.1" } // 更新之后的package.json dependencies: { dep1: "^1.2.2" }
注意,从npm v2.6.1 开始,npm update只更新顶层模块,而不更新依赖的依赖,以前版本是递归更新的。如果想取到老版本的效果,要使用下面的命令。
$ npm --depth 9999 update
npm uninstall命令,卸载已安装的模块。
$ npm uninstall [package name] # 卸载全局模块 $ npm uninstall [package name] -global
9、 npm run
npm不仅可以用于模块管理,还可以用于执行脚本。package.json文件有一个scripts字段,可以用于指定脚本命令,供npm直接调用。{ "name": "myproject", "devDependencies": { "jshint": "latest", "browserify": "latest", "mocha": "latest" }, "scripts": { "lint": "jshint **.js", "test": "mocha test/" } }
上面代码中,scripts字段指定了两项命令lint和test。命令行输入npm run-script lint或者npm run lint,就会执行jshint .js**,输入npm run-script test或者npm run test,就会执行mocha test/。npm run是npm run-script的缩写,一般都使用前者,但是后者可以更好地反应这个命令的本质。
npm run命令会自动在环境变量$PATH添加node_modules/.bin目录,所以scripts字段里面调用命令时不用加上路径,这就避免了全局安装NPM模块。
npm run如果不加任何参数,直接运行,会列出package.json里面所有可以执行的脚本命令。
npm内置了两个命令简写,npm test等同于执行npm run test,npm start等同于执行npm run start。
npm run会创建一个Shell,执行指定的命令,并临时将node_modules/.bin加入PATH变量,这意味着本地模块可以直接运行。
举例来说,你执行ESLint的安装命令。
#i install $ npm i eslint --save-dev
运行上面的命令以后,会产生两个结果。首先,ESLint被安装到当前目录的node_modules子目录;其次,node_modules/.bin目录会生成一个符号链接node_modules/.bin/eslint,指向ESLint模块的可执行脚本。
然后,你就可以在package.json的script属性里面,不带路径的引用eslint这个脚本。
$ npm run Available scripts in the user-service package: lint jshint **.js test mocha test/
下面是另一个package.json文件的例子。
"scripts": { "watch": "watchify client/main.js -o public/app.js -v", "build": "browserify client/main.js -o public/app.js", "start": "npm run watch & nodemon server.js", "test": "node test/all.js" },
上面代码在scripts项,定义了四个别名,每个别名都有对应的脚本命令。
$ npm run watch $ npm run build $ npm run start $ npm run test
其中,start和test属于特殊命令,可以省略run。
$ npm start $ npm test
如果希望一个操作的输出,是另一个操作的输入,可以借用Linux系统的管道命令,将两个操作连在一起。
"build-js": "browserify browser/main.js | uglifyjs -mc > static/bundle.js"
但是,更方便的写法是引用其他npm run命令。
"build": "npm run build-js && npm run build-css"
上面的写法是先运行npm run build-js,然后再运行npm run build-css,两个命令中间用&&连接。如果希望两个命令同时平行执行,它们中间可以用&连接。
下面是一个流操作的例子。
"devDependencies": { "autoprefixer": "latest", "cssmin": "latest" }, "scripts": { "build:css": "autoprefixer -b 'last 2 versions' < assets/styles/main.css | cssmin > dist/main.css" }
写在scripts属性中的命令,也可以在node_modules/.bin目录中直接写成bash脚本。下面是一个bash脚本。
#!/bin/bash cd site/main browserify browser/main.js | uglifyjs -mc > static/bundle.js
假定上面的脚本文件名为build.sh,并且权限为可执行,就可以在scripts属性中引用该文件。
"build-js": "bin/build.sh"
ok, 下面的图片是初始化生成的一个新的package.json文件截图。
仔细阅读你会发现,你己经可以简单理解文件字段,scripts,test等 内容。
相关文章推荐
- PM2 使用介绍
- 【AI每日播报】Deepmind OpenAI 双双开源
- npm常用指令
- PMO
- 这才是程序员想弄死产品经理的真正原因!!
- banner设计中的文字标题设计
- 巧妙之道出天工-网页展示之图片裁切技巧
- Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)
- 归纳笔记019:MPMoviePlayerController播放视频
- 归纳笔记018:MPMediaPickerController选择系统音乐
- NPM环境搭建
- RPM、SRPM与YUM软件安装学习笔记
- npm command not found
- 带你开始进入NPM的世界之NPM包的开发
- npm添加淘宝镜像
- glPushMatrix()和glPopmatirx()
- rpmdb: BDB0113 错误
- 产品经理到底要不要懂技术?
- 解决jbpm的no environment to get org.jbpm.pvm.internal.session.RepositorySession异常
- [产品经理]产品经理应该做些什么