npm 复制npm 创建package.json 有用吗

nodejs的出现,可以算是前端里程碑式的一个事件,它让前端攻城狮们摆脱了浏览器的束缚,踏上了一个更加宽广的舞台。前端的可能性,从此更加具有想象空间。
随着一系列基于nodes的应用/工具的出现,工作中与nodejs打交道的机会越来越多。无论在node应用的开发,还是使用中,包管理都扮演着一个很重要的作用。NPM(node package manager),作为node的包管理工具,极大地便利了我们的开发工作,很有必要了解一下。
NPM(node package manager),通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。
npm的背后,是基于couchdb的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。
npm官方文档:
我们需要了解什么
npm的安装、卸载、升级、配置
npm的使用:package的安装、卸载、升级、查看、搜索、发布
npm包的安装模式:本地 vs 全局
package.json:包描述信息
package版本:常见版本声明形式
npm包安装模式
在具体介绍npm包的管理之前,我们首先得来了解一下npm包的两种安装模式。
本地安装 vs 全局安装(重要)
node包的安装分两种:本地安装、全局安装。两者的区别如下,后面会通过简单例子说明
本地安装:package会被下载到当前所在目录,也只能在当前目录下使用。
全局安装:package会被下载到到特定的系统目录下,安装的package能够在所有目录下使用。
npm install pkg - 本地安装
运行如下命令,就会在当前目录下安装grunt-cli(grunt命令行工具)
npm install grunt-cli
安装结束后,当前目录下回多出一个node_modules目录,grunt-cli就安装在里面。同时注意控制台输出的信息:
node_modules/grunt-cli
简单说明一下:
grunt-cli@0.1.9:当前安装的package为grunt-cli,版本为0.19
node_modules/grunt-cli:安装目录
resolve@0.3.1:依赖的包有resolve、nopt、findup-sync,它们各自的版本、依赖在后面的括号里列出来
npm install -g pkg- 全局安装
上面已经安装了grunt-cli,然后你跑到其他目录下面运行如下命令
果断提示你grunt命令不存在,为什么呢?因为上面只是进行了本地安装,grunt命令只能在对应安装目录下使用。
-bash: grunt: command not found
如果为了使用grunt命令,每到一个目录下都得重新安装一次,那不抓狂才怪。肿么办呢?
很简单,采用全局安装就行了,很简单,加上参数-g就可以了
npm install -g grunt-cli
于是,在所有目录下都可以无压力使用grunt命令了。这个时候,你会注意到控制台输入的信息有点不同。主要的区别在于安装目录,现在变成了/usr/local/lib/node_modules/grunt-cli,/usr/local/lib/node_modules/也就是之前所说的全局安装目录啦。
/usr/local/lib/node_modules/grunt-cli
npm的包管理命令是使用频率最高的,所以也是我们需要牢牢记住并熟练使用的。其实无非也就是几个动作:安装、卸载、更新、查看、搜索、发布等。
安装最新版本的grunt-cli
npm install grunt-cli
安装0.1.9版本的grunt-cli
npm install "
通过package.json进行安装
如果我们的项目依赖了很多package,一个一个地安装那将是个体力活。我们可以将项目依赖的包都在package.json这个文件里声明,然后一行命令搞定
npm install
其他package安装命令
运行如下命令,列出所有npm install可能的参数形式
npm install --help
输出如下,有兴趣的童鞋可以了解下
npm install &tarball file&
npm install &tarball url&
npm install &folder&
npm install &pkg&
npm install &pkg&@&tag&
npm install &pkg&@&version&
npm install &pkg&@&version range&
卸载grunt-cli
比如卸载grunt-cli
npm uninstall grunt-cli
卸载0.1.9版本的grunt-cli
npm uninstall "
npm ls:查看安装了哪些包
运行如下命令,就可以查看当前目录安装了哪些package
/private/tmp/npm
& │ ├─┬
& │ │ ├──
& │ │ ├──
& │ │ └─┬
& │ │&& ├──
& │ │&& └──
& │ └──
& │ └──
输出如下,同样,如果是要查看package的全局安装信息,加上-g就可以
npm ls pkg:查看特定package的信息
运行如下命令,输出grunt-cli的信息
npm ls grunt-cli
输出的信息比较有限,只有安装目录、版本,如下:
/private/tmp/npm
如果要查看更详细信息,可以通过npm info pkg,输出的信息非常详尽,包括作者、版本、依赖等。
npm info grunt-cli
npm update pkg:package更新
npm update grunt-cli
npm search pgk:搜索
输入如下命令
npm search grunt-cli
返回结果如下
npm http GET
npm http 200
NAME&&&&&&&&&&&&&&&&& DESCRIPTION&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& AUTHOR&&&&&&&&&&& DATE&&&&&&&&&&&&& KEYWORDS
grunt-cli&&&&&&&&&&&& The grunt command line interface.&&&&&&&&&&&&&&&&& =cowboy =tkellen&
grunt-cli-dev-exitprocess The grunt command line interface.&&&&&&&&&&&&& =dnevnik&&&&&&&&&
grunt-client-compiler Grunt wrapper for client-compiler.&&&&&&&&&&&&&&&& =rubenv&&&&&&&&&&
09:15& gruntplugin
grunt-clientside&&&&& Generate clientside js code from CommonJS modules& =jga&&&&&&&&&&&&&
01:20& gruntplugin
这个命令我自己也还没实际用过,不误导大家,语法如下,也可参考官方对于package发布的说明:
npm publish &tarball&
npm publish &folder&
npm的配置工作主要是通过npm config命令,主要包含增、删、改、查几个步骤,下面就以最为常用的proxy配置为例。
内网使用npm很头痛的一个问题就是代理,假设我们的代理是&
npm config set proxy
由于npm config set命令比较常用,于是可以如下简写
npm set proxy &&&
设置完,我们查看下当前代理设置
npm config get proxy
输出如下:
同样可如下简写:
npm get proxy
代理不需要用到了,那删了吧
npm delete proxy
查看所有配置
npm config list
直接修改配置文件
有时候觉得一条配置一条配置地修改有些麻烦,就直接进配置文件修改了
npm config edit
关于package.json
这货在官网似乎没有详细的描述,其实就是包的描述信息啦。假设当我们下载了node应用,这个node应用依赖于A、B、C三个包,如果没有package.json,我们需要人肉安装这个三个包(如果对版本有特定要求就更悲剧了):
npm install A
npm install B
npm install C
有了package.json,一行命令安装所有依赖。
npm install
package.json字段简介
字段相当多,但最重要的的是下面几个
name: package的名字(由于他会成为url的一部分,所以 non-url-safe 的字母不会通过,也不允许出现"."、"_"),最好先在
version: package的版本,当package发生变化时,version也应该跟着一起变化,同时,你声明的版本需要通过semver的校验(semver可自行谷歌)
dependencies: package的应用依赖模块,即别人要使用这个package,至少需要安装哪些东东。应用依赖模块会安装到当前模块的node_modules目录下。
devDependencies:package的开发依赖模块,即别人要在这个package上进行开发
其他:参见官网
package版本
在package.json里,你经常会在包名后看到类似"~0.1.0"这样的字符串,这就是包的版本啦。下面会列举最常见的版本声明形式,以及版本书写的要求:
常见版本声明形式
a、"~1.2.3" 是神马意思呢,看下面领悟
"~1.2.3" = "&=1.2.3 &1.3.0"
"~1.2" = "&=1.2.0 &1.3.0"
"~1" = "&=1.0.0 &1.1.0"
b、"1.x.x"是什么意思呢,继续自行领悟
"1.2.x" = "&=1.2.0 &1.3.0"
"1.x.x" = "&=1.0.0 &2.0.0"
"1.2" = "1.2.x"
"1.x" = "1.x.x"
"1" = "1.x.x"
版本书写要求
版本可以v开头,比如 v1.0.1(v只是可选)
1.0.1-7,这里的7是所谓的&构建版本号&,不理是神马,反正版本大于1.0.1
1.0.1beta,或者1.0.1-beta,如果1.0.1后面不是 &连字符加数字& 这种形式,那么它是pre release 版本,即版本小于 1.0.1
根据b、c,有:0.1.2-7 & 0.1.2-7-beta & 0.1.2-6 & 0.1.2 & 0.1.2beta
内容只是简单地把最常见的命令,以及一些需要了解的内容列了出来。如要进一步了解,可参考官网说明。此外,npm help是我们最好的朋友,如果忘了有哪些命令,命令下有哪些参数,可通过help进行查看。
最关键的:如果文章内容有误,请指出!!!
阅读(...) 评论()8被浏览1734分享邀请回答执行npm -g install npm就可以搞定
23 条评论分享收藏感谢收起0添加评论分享收藏感谢收起查看更多回答npm常用命令 - CSDN博客
npm常用命令
npm&install&&name&安装nodejs的依赖包
例如npm install express 就会默认安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如npm install express@3.0.6
npm&install&&name&&-g &将包安装到全局环境中
但是代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令
npm&install&&name&&--save &安装的同时,将信息写入package.json中
项目路径中如果有package.json文件时,直接使用npm
install方法就可以根据dependencies配置安装所有的依赖包
这样代码提交到github时,就不用提交node_modules这个文件夹了。
&会引导你创建一个package.json文件,包括名称、版本、作者这些信息等
npm&remove&&name&移除
npm&update&&name&更新
npm&ls&列出当前安装的了所有包
查看当前包的安装路径
npm&root&-g &查看全局的包的安装路径
npm help &帮助,如果要单独查看install命令的帮助,可以使用的npm
help install
本文已收录于以下专栏:
相关文章推荐
Windows平台下的node.js安装
直接去nodejs的官网http://nodejs.org/上下载nodejs安装程序,双击安装就可以了
测试安装是否成功:
在命令行输入 node –...
原文章:NodeJS、NPM安装配置步骤(windows版本)
参考菜鸟教程学习nodeJS,碰到npm安装express,一直提示缺少xx文件之类的,终于找到解决方案了,原来要提前配置好环境变量...
npm 查看全局安装过的包npm list -g --depth 0-g:全局的安装包
list:已安装的node包
–depth 0:这个参数我就不清楚了,可能是深度0,搜了一下没有找到解释原文...
在使用node的时候,用npm安装了很多软件,过一段时间没有使用就会忘记,怎么查看自己全局安装过的包,用命令
npm list -g --depth 0
在百度里搜不到结果的,我在google里老外的...
参考:http://blog.csdn.net/haidaochen/article/details/8546796
常用命令:http://blog.csdn.net/haidaochen/ar...
npm安装模块
【npm install xxx】利用 npm 安装xxx模块到当前命令行所在目录;
【npm install -g xxx】利用npm安装全局模块xxx;
本地安装时将模块写入pa...
因为一些需要,研究了半天itchat,不得不说感谢大大,方便了我辈小白,上手容易多了..
爱撒谎的男孩
原文:python实现微信接口
感谢大神~..想根据对方发送信息回复一个SHARI...
最近用pyecharts想要把生成的html转为图片,安装pyecharts-snapshot插件,需要nodejs环境.
由于网上教程有的版本早有的晚,说法不一,ubuntu自带apt ins...
原文地址:/rush/archive//2309203.html
1.1.1 摘要
日前,国内最大的程序员社区CSDN网站的用户数据...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)package.json for NPM 文件详解 - 为程序员服务
package.json for NPM 文件详解
15645 阅读
package.json文件描述了一个NPM包的所有相关信息,包括作者、简介、包依赖、构建等信息。格式必须是严格的JSON格式。
通常我们在创建一个NPM程序时,可以使用npm init命令,通过交互式的命令,自动生成一个package.json文件,里面包含了常用的一些字段信息,但远不止这么简单。通过完善package.json文件,我们可以让npm命令更好地为我们服务。
name和version是package.json中最重要的两个字段,也是发布到NPM平台上的唯一标识,如果没有正确设置这两个字段,包就不能发布和被下载。
下面是官方给出的一些建议:
名字里不要再包含"js"和"node",因为默认NPM包就是node.js程序,不过你可以通过engines字段来指定。
名字将会被作为url的一部分,所有要符合http url的一般命名规则,不能包含url非法字符,也不能以.和_开头。
名字也将作为require()命令的参数,所以应该尽量简明。
如果包要发布到NPM平台上的话,最好先检查下有没有重名, 并且字母只能全部小写。
新版本的NPM可以指定scope, 名字可以加前缀标识,如@ijse/mypackage。
这个字段的取值需要符合的规则,详细可以见其文档。
description
包的描述信息,将会在npm search的返回结果中显示,以帮助用户选择合适的包。
包的关键词信息,是一个字符串数组,同上也将显示在npm search的结果中。
包的主页地址
包的bug跟踪主页地址,应该如下设置:
"url": "/ijse/project/issues",
"email": ""
包的开源协议名称
包的作者,可以是字符串或对象:
"name": "ijse",
"email": "",
author: "ijse && ()"
contributors, maintainers
包的贡献者,是一个数组。
包所包含的所有文件,可以取值为文件夹。
通常我们还是用.npmignore来去除不想包含到包里的文件。
包的入口文件,如index.js
如果你的包里包含可执行文件,通过设置这个字段可以将它们包含到系统的PATH中,这样直接就可以运行,很方便。如:
"iapp": "./cli.js"
当包被安装后,NPM将创建一个cli.js文件的链接到/usr/local/bin/iapp下。
为系统的man命令提供帮助文档, 如:
"man": "./man/doc.1"
帮助文件的文件名必须以数字结尾,如果是压缩的,需要以.gz结尾。
如果是字符串数组:
"name": "foo",
"man": ["./man/foo.1", "./man/bar.1", "./man/foo.2" ]
则分别可以man foo, man foo-bar, man 2 foo来查看。
directories
CommonJS包所要求的目录结构信息,目前除了告诉别人你的程序目录结构,貌似没有别的什么用。
下级字段可以是:lib, bin, man, doc, example。
每个都是字符串
repository
包的仓库地址。如:
"repository": {
"type": "git",
"url": "/ijse/project.git"
通过设置这个可以使NPM调用一些命令脚本,封装一些功能。
添加一些设置,可以供scripts读取用,同时这里的值也会被添加到系统的环境变量中。
"name": "foo",
"config": {
"port": "8080"
npm start的时候会读取到npm_package_config_port环境变量。
同时也可以使用npm config命令来修改设置:
npm config set foo:port 8001
dependencies
指定依赖的其它包,这些依赖是指包发布后正常执行时所需要的,如果是开发中依赖的包,可以在devDependencies设置。
通常使用下面命令来安装:
npm install --save otherpackage
形式可以有如下多种:
version 严格匹配某个版本
&version 必须大于某个版本
~version 大概匹配某个版本
^version 兼容某个版本
1.2.x 可以是1.2.0, 1.2.1等等,但不能是1.3.0
http://... 指定tarball的url地址
* 任何版本都可以
version1 - version2 >=version1 &=version2
range1 || range2 满足range1 或range2
git://... git地址
user/repo 同上
tag 指定某个tag的版本
path/path 本地包所有文件夹
下面都是可以用的:
{ "dependencies" :
{ "foo" : "1.0.0 - 2."
, "bar" : "&=1.0.2 &2.1.2"
, "baz" : "&1.0.2 &=2.3.4"
, "boo" : "2.0.1"
, "qux" : "&1.0.0 || &=2.3.1 &2.4.5 || &=2.5.2 &3.0.0"
, "asd" : "/asdf.tar.gz"
, "til" : "~1.2"
, "elf" : "~1.2.3"
, "two" : "2.x"
, "thr" : "3.3.x"
, "lat" : "latest"
, "dyl" : "file:../dyl"
Git URL可以有如下种形式:
git:///user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+ssh://user@hostname/project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish
devDependencies
这些依赖只有在开发时候才需要。
npm install --save-dev mypack
peerDependencies
相关的依赖,如果你的包是插件,而用户在使用你的包时候,通常也会需要这些依赖(插件),那么可以将依赖列到这里。
举个例子,如karma, 它的package.json中有设置:
"peerDependencies": {
"karma-jasmine": "~0.1.0",
"karma-requirejs": "~0.2.0",
"karma-coffee-preprocessor": "~0.1.0",
"karma-html2js-preprocessor": "~0.1.0",
"karma-chrome-launcher": "~0.1.0",
"karma-firefox-launcher": "~0.1.0",
"karma-phantomjs-launcher": "~0.1.0",
"karma-script-launcher": "~0.1.0"
这些都是karma的相关插件,一般使用karma的时候都会需要。
bundledDependencies
绑定的依赖包,发布的时候这些绑定包也会被一同发布。
optionalDependencies
即使这些依赖没有,也可以正常安装使用
指定包运行的环境
"engines": {
"node": "&=0.10.3 & 0.12",
"npm": "~1.0.20"
engineStrict
设置为true强制限定 engine
指定你的包可以在哪些系统平台下运行。
"os": [ "darwin", "linux", "!win32" ]
即可以在darwin和linux平台下运行,而不能在win32下。这里设定的取值是来自process.platform的。
可以指定包运行的cpu架构,如
"cpu": [ "x64", "!arm" ]
取值来自process.arch。
preferGlobal
如果你的包是命令行运行的,那可以将其设置为true建议用户全局(npm install -g)安装。但它并不强制用户。
设为true这个包将不会发布到NPM平台下。
publishConfig
这个字段用于设置发布时候的一些设定。尤其方便你希望发布前设定指定的tag或registry。
也可以设定其它子字段,但只有tag和registry会影响到发布。
NPM的一些默认值说明
"scripts": { "start": "node server.js" }
如果在项目根目录下含有server.js文件,则NPM会自动设置此值。
"scripts": { "preinstall": "node-gyp rebuild" }
如果在项目根目录下含有binding.gyp文件,则NPM会自动设置此值。
"contributors": [...]
如果项目根目录下含有AUTHORS文件,则NPM会自动将每一行以Name &email& (url)的格式读取并设定此字段。
Thoughts, stories and ideas.
原文地址:, 感谢原作者分享。
您可能感兴趣的代码

我要回帖

更多关于 npm update package 的文章

 

随机推荐