nodejs npm package.jsonÖÐÎÄÎĵµ

¡¡¡¡¼ò½é

¡¡¡¡±¾ÎĵµÓÐËùÓÐpackage.jsonÖбØÒªµÄÅäÖá£Ëü±ØÐëÊÇÕæÕýµÄjson£¬¶ø²»ÊÇjs¶ÔÏó¡£

¡¡¡¡±¾ÎĵµÖÐÃèÊöµÄºÜ¶àÐÐΪ¶¼ÊÜnpm-config(7)µÄÓ°Ïì¡£

¡¡¡¡Ä¬ÈÏÖµ

¡¡¡¡npm»á¸ù¾Ý°üÄÚÈÝÉèÖÃһЩĬÈÏÖµ¡£

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:
"scripts": {"start": "node server.js"}

¡¡¡¡Èç¹û°üµÄ¸ùĿ¼ÓÐserver.jsÎļþ£¬npm»áĬÈϽ«startÃüÁîÉèÖÃΪnode server.js¡£

¡¡¡¡"scripts":{"preinstall": "node-waf clean || true; node-waf configure build"}

¡¡¡¡Èç¹û°üµÄ¸ùĿ¼ÓÐwscriptÎļþ£¬npm»áĬÈϽ«preinstallÃüÁîÓÃnode-waf½øÐбàÒë¡£

¡¡¡¡"scripts":{"preinstall": "node-gyp rebuild"}

¡¡¡¡Èç¹û°üµÄ¸ùĿ¼ÓÐbinding.gypÎļþ£¬npm»áĬÈϽ«preinstallÃüÁîÓÃnode-gyp½øÐбàÒë¡£

¡¡¡¡"contributors": [...]

¡¡¡¡Èç¹û°üµÄ¸ùĿ¼ÓÐAUTHORSÎļþ£¬npm»áĬÈÏÖðÐа´Name <email> (url)¸ñʽ´¦Àí£¬ÓÊÏäºÍurlÊÇ¿ÉÑ¡µÄ¡£#ºÅºÍ¿Õ¸ñ¿ªÍ·µÄÐлᱻºöÂÔ¡£

¡¡¡¡name

¡¡¡¡ÔÚpackage.jsonÖÐ×îÖØÒªµÄ¾ÍÊÇnameºÍversion×ֶΡ£ËûÃǶ¼ÊDZØÐëµÄ£¬Èç¹ûûÓоÍÎÞ·¨install¡£nameºÍversionÒ»Æð×é³ÉµÄ±êʶÔÚ¼ÙÉèÖÐÊÇΨһµÄ¡£¸Ä±ä°üÓ¦¸Ãͬʱ¸Ä±äversion¡£

¡¡¡¡nameÊÇÕâ¸ö¶«Î÷µÄÃû×Ö¡£×¢Ò⣺

¡¡¡¡1.²»Òª°Ñnode»òÕßjs·ÅÔÚÃû×ÖÖС£ÒòΪÄãдÁËpackage.jsonËü¾Í±»¼Ù¶¨³ÉΪÁËjs£¬²»¹ýÄã¿ÉÒÔÓá±engine¡±×Ö¶ÎÖ¸¶¨Ò»¸öÒýÇæ£¨¼ûºóÎÄ£©¡£

¡¡¡¡2.Õâ¸öÃû×Ö»á×÷ΪÔÚURLµÄÒ»²¿·Ö¡¢ÃüÁîÐеIJÎÊý»òÕßÎļþ¼ÐµÄÃû×Ö¡£ÈκÎnon-url-safeµÄ×Ö·û¶¼ÊDz»ÄÜÓõġ£

¡¡¡¡3.Õâ¸öÃû×Ö¿ÉÄÜ»á×÷Ϊ²ÎÊý±»´«Èërequire()£¬ËùÒÔËüÓ¦¸Ã±È½Ï¶Ì£¬µ«Ò²ÒªÒâÒåÇåÎú¡£

¡¡¡¡4.ÔÚÄã°®ÉÏÄãµÄÃû×Ö֮ǰ£¬Äã¿ÉÄÜҪȥnpm registry²é¿´Ò»ÏÂÕâ¸öÃû×ÖÊÇ·ñÒѾ­±»Ê¹ÓÃÁË¡£http://registry.npmjs.org/

¡¡¡¡version

¡¡¡¡ÔÚpackage.jsonÖÐ×îÖØÒªµÄ¾ÍÊÇnameºÍversion×ֶΡ£ËûÃǶ¼ÊDZØÐëµÄ£¬Èç¹ûûÓоÍÎÞ·¨install¡£nameºÍversionÒ»Æð×é³ÉµÄ±êʶÔÚ¼ÙÉèÖÐÊÇΨһµÄ¡£¸Ä±ä°üÓ¦¸Ãͬʱ¸Ä±äversion¡£

¡¡¡¡version±ØÐëÄܱ»node-semver½âÎö£¬Ëü±»°üÔÚnpmµÄÒÀÀµÖС££¨Òª×Ô¼ºÓÿÉÒÔÖ´ÐÐnpm install semver£©

¡¡¡¡¿ÉÓõġ°Êý×Ö¡±»òÕß¡°·¶Î§¡±¼ûsemver(7).

¡¡¡¡description

¡¡¡¡·Å¼ò½é£¬×Ö·û´®¡£·½±ãŒÅË¿ÃÇÔÚnpm searchÖÐËÑË÷¡£

¡¡¡¡keywords

¡¡¡¡¹Ø¼ü×Ö£¬Êý×é¡¢×Ö·û´®¡£»¹ÊÇ·½±ãŒÅË¿ÃÇÔÚnpm searchÖÐËÑË÷¡£

¡¡¡¡homepage

¡¡¡¡ÏîÄ¿¹ÙÍøµÄurl¡£

¡¡¡¡×¢Ò⣺ÕâºÍ¡°url¡±²»Ò»Ñù¡£Èç¹ûÄã·ÅÒ»¸ö¡°url¡±×ֶΣ¬registry»áÒÔΪÊÇÒ»¸öÌø×ªµ½Äã·¢²¼ÔÚÆäËûµØ·½µÄµØÖ·£¬È»ºóº°Äã¹ö´Ö¡£

¡¡¡¡àÅ£¬¹ö´Ö£¬Ã»¿ªÍæÐ¦¡£

¡¡¡¡bugs

¡¡¡¡ÄãÏîÄ¿µÄÌá½»ÎÊÌâµÄurlºÍ£¨»ò£©ÓʼþµØÖ·¡£Õâ¶ÔÓöµ½ÎÊÌâµÄŒÅË¿ºÜÓаïÖú¡£

¡¡¡¡²î²»¶à³¤ÕâÑù£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "url" : "http://github.com/owner/project/issues"

¡¡¡¡, "email" : "[email protected]"

¡¡¡¡}

¡¡¡¡Äã¿ÉÒÔÖ¸¶¨Ò»¸ö»òÕßÖ¸¶¨Á½¸ö¡£Èç¹ûÄãÖ»ÏëÌṩһ¸öurl£¬ÄǾͲ»ÓöÔÏóÁË£¬×Ö·û´®¾ÍÐС£

¡¡¡¡Èç¹ûÌṩÁËurl£¬Ëü»á±»npm bugsÃüÁîʹÓá£

¡¡¡¡license

¡¡¡¡ÄãÓ¦¸ÃÒªÖ¸¶¨Ò»¸öÐí¿ÉÖ¤£¬ÈÃÈËÖªµÀʹÓõÄȨÀûºÍÏÞÖÆµÄ¡£

¡¡¡¡×î¼òµ¥µÄ·½·¨ÊÇ£¬¼ÙÈçÄãÓÃÒ»¸öÏñBSD»òÕßMITÕâÑùͨÓõÄÐí¿ÉÖ¤£¬¾ÍÖ»ÐèÒªÖ¸¶¨Ò»¸öÐí¿ÉÖ¤µÄÃû×Ö£¬ÏñÕâÑù£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "license" : "BSD" }

¡¡¡¡Èç¹ûÄãÓÖ¸ü¸´ÔÓµÄÐí¿ÉÌõ¼þ£¬»òÕßÏëÒªÌṩ¸ø¸ü¶àµØÏ¸½Ú£¬¿ÉÒÔÕâÑù:

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡"licenses" : [

¡¡¡¡{ "type" : "MyLicense"

¡¡¡¡, "url" : "http://github.com/owner/project/path/to/license"

¡¡¡¡}

¡¡¡¡]

¡¡¡¡ÔÚ¸ùĿ¼ÖÐÌṩһ¸öÐí¿ÉÖ¤ÎļþÒ²ÂùºÃµÄ¡£

¡¡¡¡people fields: author, contributors

¡¡¡¡authorÊÇÒ»¸öÈË¡£contributorsÊÇÒ»¶ÑÈ˵ÄÊý×é¡£personÊÇÒ»¸öÓÐname×ֶΣ¬¿ÉÑ¡µÄÓÐurl¡¢email×ֶεĶÔÏó£¬ÏñÕâÑù£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "name" : "Barney Rubble"

¡¡¡¡, "email" : "[email protected]"

¡¡¡¡, "url" : "http://barnyrubble.tumblr.com/"

¡¡¡¡}

¡¡¡¡»òÕß¿ÉÒÔ°ÑËùÓеĶ«Î÷¶¼·Åµ½Ò»¸ö×Ö·û´®Ànpm»á¸øÄã½âÎö£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡"Barney Rubble <[email protected]> (http://barnyrubble.tumblr.com/)

¡¡¡¡emailºÍurlÔÚÁ½ÖÖÐÎʽÖж¼ÊÇ¿ÉÑ¡µÄ¡£

¡¡¡¡Ò²¿ÉÒÔÔÚÄãµÄnpmÓû§ÐÅÏ¢ÖÐÉèÖÃÒ»¸ö¶¥¼¶µÄmaintainers×ֶΡ£

¡¡¡¡files

¡¡¡¡filesÊÇÒ»¸ö°üº¬ÏîÄ¿ÖеÄÎļþµÄÊý×é¡£Èç¹ûÃüÃûÁËÒ»¸öÎļþ¼Ð£¬ÄÇÒ²»á°üº¬Îļþ¼ÐÖеÄÎļþ¡££¨³ý·Ç±»ÆäËûÌõ¼þºöÂÔÁË£©

¡¡¡¡ÄãÒ²¿ÉÒÔÌṩһ¸ö.npmignoreÎļþ£¬Èü´Ê¹±»°üº¬ÔÚfiles×Ö¶ÎÖеÃÎļþ±»ÁôÏ¡£Æäʵ¾ÍÏñ.gitignoreÒ»Ñù¡£

¡¡¡¡main

¡¡¡¡main×Ö¶ÎÊÇÒ»¸öÄ£¿éID£¬ËüÊÇÒ»¸öÖ¸ÏòÄã³ÌÐòµÄÖ÷ÒªÏîÄ¿¡£¾ÍÊÇ˵£¬Èç¹ûÄã°üµÄÃû×Ö½Ðfoo£¬È»ºóÓû§°²×°Ëü£¬È»ºórequire("foo")£¬È»ºóÄãµÄmainÄ£¿éµÄexports¶ÔÏó»á±»·µ»Ø¡£

¡¡¡¡ÕâÓ¦¸ÃÊÇÒ»¸öÏà¶ÔÓÚ¸ùĿ¼µÄÄ£¿éID¡£

¡¡¡¡¶ÔÓÚ´ó¶àÊýÄ£¿é£¬ËüÊǷdz£ÓÐÒâÒåµÄ£¬ÆäËûµÄ¶¼Ã»É¶¡£

¡¡¡¡bin

¡¡¡¡ºÜ¶à°ü¶¼ÓÐÒ»¸ö»ò¶à¸ö¿ÉÖ´ÐеÄÎļþÏ£Íû±»·Åµ½PATHÖС£npmÈÃÂèÂèÔÙÒ²²»Óõ£ÐÄÁË£¨Êµ¼ÊÉÏ£¬¾ÍÊÇÕâ¸ö¹¦ÄÜÈÃnpm¿ÉÖ´Ðеģ©¡£

¡¡¡¡ÒªÓÃÕâ¸ö¹¦ÄÜ£¬¸øpackage.jsonÖеÄbin×Ö¶ÎÒ»¸öÃüÁîÃûµ½ÎļþλÖõÄmap¡£³õʼ»¯µÄʱºònpm»á½«ËûÁ´½Óµ½prefix/bin£¨È«¾Ö³õʼ»¯£©»òÕß./node_modules/.bin/£¨±¾µØ³õʼ»¯£©¡£

¡¡¡¡±ÈÈ磬npmÓУº

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "bin" : { "npm" : "./cli.js" } }

¡¡¡¡ËùÒÔ£¬µ±Äã³õʼ»¯npm£¬Ëü»á´´½¨Ò»¸ö·ûºÅÁ´½Óµ½cli.js½Å±¾µ½/usr/local/bin/npm¡£

¡¡¡¡Èç¹ûÄãÖ»ÓÐÒ»¸ö¿ÉÖ´ÐÐÎļþ£¬²¢ÇÒÃû×ֺͰüÃûÒ»Ñù¡£ÄÇôÄã¿ÉÒÔÖ»ÓÃÒ»¸ö×Ö·û´®£¬±ÈÈ磺

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "name": "my-program"

¡¡¡¡, "version": "1.2.5"

¡¡¡¡, "bin": "./path/to/program" }

¡¡¡¡½á¹ûºÍÕâ¸öÒ»Ñù£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "name": "my-program"

¡¡¡¡, "version": "1.2.5"

¡¡¡¡, "bin" : { "my-program" : "./path/to/program" } }

¡¡¡¡man

¡¡¡¡Ö¸¶¨Ò»¸öµ¥Ò»µÄÎļþ»òÕßÒ»¸öÎļþÊý×鹩man³ÌÐòʹÓá£

¡¡¡¡Èç¹ûÖ»Ìṩһ¸öµ¥Ò»µÄÎļþ£¬ÄÇôËü³õʼ»¯ºó¾ÍÊÇman <pkgname>µÄ½á¹û£¬¶ø²»¹Üʵ¼ÊµÄÎļþÃûÊÇÉñÂí£¬±ÈÈ磺

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "name" : "foo"

¡¡¡¡, "version" : "1.2.3"

¡¡¡¡, "description" : "A packaged foo fooer for fooing foos"

¡¡¡¡, "main" : "foo.js"

¡¡¡¡, "man" : "./man/doc.1"

¡¡¡¡}

¡¡¡¡ÕâÑùman foo¾Í¿ÉÒÔÓõ½./man/doc.1ÎļþÁË¡£

¡¡¡¡Èç¹ûÎļþÃû²»ÊÇÒÔ°üÃû¿ªÍ·£¬ÄÇôËü»á±»¹ÚÒÔǰ׺£¬ÏÂÃæµÄ£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "name" : "foo"

¡¡¡¡, "version" : "1.2.3"

¡¡¡¡, "description" : "A packaged foo fooer for fooing foos"

¡¡¡¡, "main" : "foo.js"

¡¡¡¡, "man" : [ "./man/foo.1", "./man/bar.1" ]

¡¡¡¡}

¡¡¡¡»áΪman fooºÍman foo-bar´´½¨Îļþ¡£

¡¡¡¡manÎļþÐèÒªÒÔÊý×Ö½áÊø£¬È»ºó¿ÉÑ¡µØÑ¹ËõºóÒÔ.gzΪºó׺¡£The number dictates which man section the file is installed into.

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "name" : "foo"

¡¡¡¡, "version" : "1.2.3"

¡¡¡¡, "description" : "A packaged foo fooer for fooing foos"

¡¡¡¡, "main" : "foo.js"

¡¡¡¡, "man" : [ "./man/foo.1", "./man/foo.2" ]

¡¡¡¡}

¡¡¡¡»áΪman fooºÍman 2 foo´´½¨¡£

¡¡¡¡directories

¡¡¡¡CommonJS Packages¹æ·¶ËµÃ÷Á˼¸ÖÖ·½Ê½ÈÃÄã¿ÉÒÔÓÃdirectorieshash±êʾ³ö°üµÃ½á¹¹¡£Èç¹û¿´Ò»ÏÂnpm's package.json£¬Äã»á¿´µ½ÓÐdirectories±êʾ³ödoc, lib, and man¡£

¡¡¡¡ÔÚδÀ´£¬Õâ¸öÐÅÏ¢¿ÉÄܻᱻÓõ½¡£

¡¡¡¡directories.lib

¡¡¡¡¸æËߌÅË¿ÃÇÄãµÄ¿âÎļþ¼ÐÔÚÄÄÀĿǰûÓÐÊ²Ã´ÌØ±ðµÄ¶«Î÷ÐèÒªÓõ½libÎļþ¼Ð£¬µ«È·ÊµÊÇÖØÒªµÄÔªÐÅÏ¢¡£

¡¡¡¡directories.bin

¡¡¡¡Èç¹ûÄãÖ¸¶¨Ò»¸ö¡°bin¡±Ä¿Â¼£¬È»ºóÔÚÄǸöÎļþ¼ÐÖеÃËùÓÐÎļþ¶¼»á±»µ±×ö¡±bin¡±×Ö¶ÎʹÓá£

¡¡¡¡Èç¹ûÄãÒѾ­Ö¸¶¨ÁË¡°bin¡±×ֶΣ¬ÄÇÕâ¸ö¾ÍÎÞЧ¡£

¡¡¡¡directories.man

¡¡¡¡Ò»¸ö·ÅÂúmanÒ³ÃæµÄÎļþ¼Ð¡£ÌùÐĵش´½¨Ò»¸ö¡°man¡±×ֶΡ£

¡¡¡¡A folder that is full of man pages. Sugar to generate a ¡°man¡± array by

¡¡¡¡walking the folder.

¡¡¡¡directories.doc

¡¡¡¡½«markdownÎļþ·ÅÔÚÕâÀï¡£×îºó£¬ÕâЩ»á±»ºÜºÃµØÕ¹Ê¾³öÀ´£¬Ò²Ðí£¬Ä³Ò»Ìì¡£

¡¡¡¡Put markdown files in here. Eventually, these will be displayed nicely,

¡¡¡¡maybe, someday.

¡¡¡¡directories.example

¡¡¡¡½«ÊÂÀý½Å±¾·ÅÔÚÕâÀijһÌ죬Ëü¿ÉÄÜ»áÒÔ´ÏÃ÷µÄ·½Ê½Õ¹Ê¾³öÀ´¡£

¡¡¡¡repository

¡¡¡¡Ö¸¶¨ÄãµÄ´úÂë´æ·ÅµÄµØ·½¡£Õâ¸ö¶ÔÏ£Íû¹±Ï×µÄÈËÓаïÖú¡£Èç¹ûgit²Ö¿âÔÚgithubÉÏ£¬ÄÇônpm docsÃüÁîÄÜÕÒµ½Äã¡£

¡¡¡¡ÕâÑù×ö£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡"repository" :

¡¡¡¡{ "type" : "git"

¡¡¡¡, "url" : "http://github.com/isaacs/npm.git"

¡¡¡¡}

¡¡¡¡"repository" :

¡¡¡¡{ "type" : "svn"

¡¡¡¡, "url" : "http://v8.googlecode.com/svn/trunk/"

¡¡¡¡}

¡¡¡¡URLÓ¦¸ÃÊǹ«¿ªµÄ£¨¼´±ãÊÇÖ»¶ÁµÄ£©ÄÜÖ±½Ó±»Î´¾­¹ýÐ޸ĵİ汾¿ØÖƳÌÐò´¦ÀíµÄurl¡£²»Ó¦¸ÃÊÇÒ»¸öhtmlµÄÏîÄ¿Ò³Ãæ¡£ÒòΪËüÊǸø¼ÆËã»ú¿´µÄ¡£

¡¡¡¡scripts

¡¡¡¡¡°scripts¡±ÊÇÒ»¸öÓɽű¾ÃüÁî×é³ÉµÄhash¶ÔÏó£¬ËûÃÇÔÚ°ü²»Í¬µÄÉúÃüÖÜÆÚÖб»Ö´ÐС£keyÊÇÉúÃüÖÜÆÚʼþ£¬valueÊÇÒªÔËÐеÄÃüÁî¡£

¡¡¡¡²Î¼û npm-scripts(7)

¡¡¡¡config

¡¡¡¡¡°config¡± hash¿ÉÒÔÓÃÀ´ÅäÖÃÓÃÓÚ°ü½Å±¾ÖÐµÄ¿ç°æ±¾²ÎÊý¡£ÔÚʵÀýÖУ¬Èç¹ûÒ»¸ö°üÓÐÏÂÃæµÄÅäÖãº

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "name" : "foo"

¡¡¡¡, "config" : { "port" : "8080" } }

¡¡¡¡È»ºóÓÐÒ»¸ö¡°start¡±ÃüÁîÒýÓÃÁËnpm_package_config_port»·¾³±äÁ¿£¬Óû§¿ÉÒÔͨ¹ýnpm config set foo:port 8001À´ÖØÐ´Ëû¡£

¡¡¡¡²Î¼û npm-config(7) ºÍ npm-scripts(7)¡£

¡¡¡¡dependencies

¡¡¡¡ÒÀÀµÊǸøÒ»×é°üÃûÖ¸¶¨°æ±¾·¶Î§µÄÒ»¸öhash¡£Õâ¸ö°æ±¾·¶Î§ÊÇÒ»¸öÓÉÒ»¸ö»ò¶à¸ö¿Õ¸ñ·Ö¸ôµÄ×Ö·û´®¡£ÒÀÀµ»¹¿ÉÒÔÓÃtarball»òÕßgit URL¡£

¡¡¡¡Çë²»Òª½«²âÊÔ»ò¹ý¶ÉÐÔµÄÒÀÀµ·ÅÔÚdependencieshashÖС£¼ûÏÂÎĵÄdevDependencies¡£

¡¡¡¡Ïê¼ûsemver(7).

¡¡¡¡1.version ±ØÐëÍêÈ«ºÍversionÒ»ÖÂ

¡¡¡¡2.>version ±ØÐë±Èversion´ó

¡¡¡¡3.>=version ͬÉÏ

¡¡¡¡4.<version ͬÉÏ

¡¡¡¡5.<=version ͬÉÏ

¡¡¡¡6.~version ´óÔ¼Ò»Ñù£¬¼ûsemver(7)

¡¡¡¡7.1.2.x 1.2.0, 1.2.1, µÈ£¬µ«²»°üÀ¨1.3.0

¡¡¡¡8.http://... ¼ûÏÂÎÄ'ÒÀÀµURL'

¡¡¡¡9.* ËùÓÐ

¡¡¡¡10."" ¿Õ£¬Í¬*

¡¡¡¡11.version1 - version2 ͬ >=version1 <=version2.

¡¡¡¡12.range1 || range2 ¶þѡһ¡£

¡¡¡¡13.git... ¼ûÏÂÎÄ'ÒÀÀµGit URL'

¡¡¡¡14.user/repo ¼ûÏÂÎÄ'GitHub URLs'

¡¡¡¡15.±ÈÈçÏÂÃæ¶¼ÊǺϷ¨µÄ£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "dependencies" :

¡¡¡¡{ "foo" : "1.0.0 - 2.9999.9999"

¡¡¡¡, "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" : "http://asdf.com/asdf.tar.gz"

¡¡¡¡, "til" : "~1.2"

¡¡¡¡, "elf" : "~1.2.3"

¡¡¡¡, "two" : "2.x"

¡¡¡¡, "thr" : "3.3.x"

¡¡¡¡}

¡¡¡¡}

¡¡¡¡ÒÀÀµURL

¡¡¡¡¿ÉÒÔÖ¸¶¨Ò»¸ötarball URL£¬Õâ¸ötarball½«ÔÚ°ü±»³õʼ»¯µÄʱºòÏÂÔØ²¢³õʼ»¯¡£

¡¡¡¡ÒÀÀµGit URL

¡¡¡¡Git urls ¿ÉÒÔÊÇÏÂÃæ¼¸ÖÖÐÎʽ£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡git://github.com/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

¡¡¡¡commit-ishÊÇ¿ÉÒÔ±»git checkoutµÄÈκÎtag¡¢sha»òÕßbranch¡£Ä¬ÈÏΪmaster¡£

¡¡¡¡GitHub URLs

¡¡¡¡1.1.65°æºó£¬Äã¿ÉÒÔ½ö½öÓá°user/foo-project¡±ÒýÓÃGitHub urls£¬±ÈÈ磺

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{

¡¡¡¡"name": "foo",

¡¡¡¡"version": "0.0.0",

¡¡¡¡"dependencies": {

¡¡¡¡"express": "visionmedia/express"

¡¡¡¡}

¡¡¡¡}

¡¡¡¡devDependencies

¡¡¡¡Èç¹ûÓÐÈ˼ƻ®ÔÚËûÃǵijÌÐòÖÐÏÂÔØ²¢Ê¹ÓÃÄãµÄÄ£¿é£¬ÄÇôËûÃÇ¿ÉÄܲ»Ïë»òÕß²»ÐèҪȥÏÂÔØ²¢¹¹½¨ÄãʹÓõÄÍⲿ²âÊÔ»òÕßÎĵµ¿ò¼Ü¡£

¡¡¡¡ÔÚÕâÖÖÇé¿öÏ£¬Ëü×îºÃ°ÑÕâЩ¸½ÊôµÄÏîÄ¿ÁÐʾÔÚdevDependencies hashÖС£

¡¡¡¡ÕâЩ¶«Î÷»áÔÚ¸ùĿ¼ִÐÐnpm link»òÕßnpm installµÄʱºò³õʼ»¯£¬²¢¿ÉÒÔÏñÆäËûnpmÅäÖòÎÊýÒ»Ñù¹ÜÀí¡£Ïê¼ûnpm-config(7)¡£

¡¡¡¡¶ÔÓÚ·ÇÌØ¶¨Æ½Ì¨µÄ¹¹½¨²½Ö裬±ÈÈç±àÒëCoffeeScript»òÕ߯äËûÓïÑÔµ½Javascript£¬ÓÃprepublish½Å±¾È¥ÊµÏÖ²¢°ÑËû·ÅÔÚdevDependencyÖС£

¡¡¡¡±ÈÈ磺

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "name": "ethopia-waza",

¡¡¡¡"description": "a delightfully fruity coffee varietal",

¡¡¡¡"version": "1.2.3",

¡¡¡¡"devDependencies": {

¡¡¡¡"coffee-script": "~1.6.3"

¡¡¡¡},

¡¡¡¡"scripts": {

¡¡¡¡"prepublish": "coffee -o lib/ -c src/waza.coffee"

¡¡¡¡},

¡¡¡¡"main": "lib/waza.js"

¡¡¡¡}

¡¡¡¡prepublish½Å±¾»áÔÚpublishingǰÔËÐУ¬ÕâÑùÓû§¾Í²»ÓÃ×Ô¼ºÈ¥requireÀ´±àÒë¾ÍÄÜʹÓᣲ¢ÇÒÔÚ¿ª·¢Ä£Ê½ÖУ¨±ÈÈç±¾µØÔËÐÐnpm install£©»áÔËÐÐÕâ¸ö½Å±¾ÒÔ±ã¸üºÃµØ²âÊÔ¡£

¡¡¡¡peerDependencies

¡¡¡¡ÔÚһЩ³¡¾°ÖУ¬ÈçÔÚÒ»¸öhostÖв»±ØÐë½øÐÐrequireʱºò£¬ÄãÏë±íÏÖÄãµÄpackageÓëÒ»¸öhost¹¤¾ß»òÕß¿âµÄ¼æÈݹؼü¡£ÕâÒ»°ãÓÃÀ´ÒýÓòå¼þ¡£ÓÈÆäÊÇÄãµÄÄ£¿é¿ÉÄÜÒª±©Â¶Ò»¸öÌØ¶¨µÄ½Ó¿Ú£¬²¢ÓÉhostÎĵµÀ´Ô¤ÆÚºÍÖ¸¶¨¡£

¡¡¡¡±ÈÈ磺

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{

¡¡¡¡"name": "tea-latte",

¡¡¡¡"version": "1.3.5"

¡¡¡¡"peerDependencies": {

¡¡¡¡"tea": "2.x"

¡¡¡¡}

¡¡¡¡}

¡¡¡¡ÕâÄܱ£Ö¤ÄãµÄpackage¿ÉÒÔÖ»ºÍteaµÄ2.x°æ±¾Ò»Æð³õʼ»¯¡£npm install tea-latte¿ÉÄÜ»á²úÉúÏÂÃæµÄÒÀÀµ¹ØÏµ

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡â¡±œâ¡±€â¡±€ [email protected]

¡¡¡¡â¡±¡±â¡±€â¡±€ [email protected]

¡¡¡¡ÊÔͼ³õʼ»¯ÁíÒ»¸öÓлá³åÍ»µÄÒÀÀµµÄ²å¼þ½«µ¼ÖÂÒ»¸ö´íÎó¡£Òò´Ë£¬È·±£ÄãµÄ²å¼þµÄÐèÇóÔ¼ÊøÔ½ÈõÔ½ºÃ£¬¶ø²»ÒªÈ¥°ÑËüËø¶¨µ½Ò»¸öÌØ¶¨µÄ°æ±¾¡£

¡¡¡¡¼ÙÉèÕâ¸öhost×ñÊØsemver¹æ·¶£¬Ö»¸Ä±äÕâ¸öpackageµÄÖ÷°æ±¾»á´òÆÆÄãµÄ²å¼þ¡£Òò´Ë£¬Èç¹ûÄãÔÚpackageÖÐÓùýÿ¸ö1.x°æ±¾£¬¾ÍÓá±^1.0¡å»òÕß¡±1.x¡±À´±íʾ¡£Èç¹ûÄãÒÀÀµÓÚ¹¦ÄܽéÉÜ1.5.2£¬Óá±>= 1.5.2 < 2¡å¡£

¡¡¡¡bundledDependencies

¡¡¡¡Ò»×é°üÃû£¬ËûÃÇ»áÔÚ·¢²¼µÄʱºò±»´ò°ü½øÈ¥¡£

¡¡¡¡Æ´³É"bundleDependencies"£¨È±d£©Ò²¿ÉÒÔ¡£

¡¡¡¡optionalDependencies

¡¡¡¡Èç¹ûÒ»¸öÒÀÀµ¿ÉÓ㬵«ÄãÏ£ÍûÔÚËü°²×°´íÎóµÄʱºònpmÒ²ÄܼÌÐø³õʼ»¯£¬ÄÇôÄã¿ÉÒÔ°ÑËü·ÅÔÚoptionalDependencies hashÖС£ÕâÊÇÒ»¸ö°üÃûµ½°æ±¾»òÕßurlµÄmap£¬¾ÍÏñdependencies hashÒ»Ñù¡£Ö»ÊÇËüÔËÐдíÎó¡£

¡¡¡¡´¦Àíȱ·¦ÒÀÀµÒ²ÊÇÄãµÄ³ÌÐòµÄÔðÈΡ£±ÈÈçÏñÕâÑù£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡try {

¡¡¡¡var foo = require('foo')

¡¡¡¡var fooVersion = require('foo/package.json').version

¡¡¡¡} catch (er) {

¡¡¡¡foo = null

¡¡¡¡}

¡¡¡¡if ( notGoodFooVersion(fooVersion) ) {

¡¡¡¡foo = null

¡¡¡¡}

¡¡¡¡// .. then later in your program ..

¡¡¡¡if (foo) {

¡¡¡¡foo.doFooThings()

¡¡¡¡}

¡¡¡¡optionalDependencies»á¸²¸ÇdependenciesÖÐͬÃûµÄÏËùÒÔͨ³£±ÈÖ»·ÅÔÚÒ»¸öµØ·½ºÃ¡£

¡¡¡¡engines

¡¡¡¡Äã¿ÉÒÔÖ¸¶¨¹¤×÷µÄnodeµÄ°æ±¾£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "engines" : { "node" : ">=0.10.3 <0.12" } }

¡¡¡¡²¢ÇÒ£¬ÏñdependensiesÒ»Ñù£¬Èç¹ûÄã²»Ö¸¶¨°æ±¾»òÕßÖ¸¶¨¡°*¡±×÷Ϊ°æ±¾£¬ÄÇôËùÓа汾µÄnode¶¼¿ÉÒÔ¡£

¡¡¡¡Èç¹ûÖ¸¶¨Ò»¸ö¡°engines¡±×ֶΣ¬ÄÇônpm»áÐèÒªnodeÔÚÀïÃæ£¬Èç¹û¡°engines¡±±»Ê¡ÂÔ£¬npm»á¼Ù¶¨ËüÔÚnodeÉϹ¤×÷¡£

¡¡¡¡ÄãÒ²¿ÉÒÔÓá°engines¡±×Ö¶ÎÀ´Ö¸¶¨ÄÄÒ»¸önpm°æ±¾ÄܸüºÃµØ³õʼ»¯ÄãµÄ³ÌÐò£¬È磺

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡{ "engines" : { "npm" : "~1.0.20" } }

¡¡¡¡¼Çס£¬³ý·ÇÓû§ÉèÖÃengine-strict±ê¼Ç£¬Õâ¸ö×Ö¶ÎÖ»Êǽ¨ÒéÖµ¡£

¡¡¡¡engineStrict

¡¡¡¡Èç¹ûÄãÈ·¶¨ÄãµÄÄ£¿éÒ»¶¨²»»áÔËÐÐÔÚÄãÖ¸¶¨°æ±¾Ö®ÍâµÄnode»òÕßnpmÉÏ£¬Äã¿ÉÒÔÔÚpackage.jsonÎļþÖÐÉèÖÃ"engineStrict":true¡£Ëü»áÖØÐ´Óû§µÄengine-strictÉèÖá£

¡¡¡¡³ý·ÇÄã·Ç³£·Ç³£È·¶¨£¬·ñÔò²»ÒªÕâÑù×ö¡£Èç¹ûÄãµÄengines hash¹ý¶ÈµØÏÞÖÆ£¬ºÜ¿ÉÄÜÇáÒ×ÈÃ×Ô¼ºÏÝÈë¾½¾³¡£É÷ÖØµØ¿¼ÂÇÕâ¸öÑ¡Ôñ¡£Èç¹û´ó¼ÒÀÄÓÃËü£¬Ëü»áÔÙÒÔºóµÄnpm°æ±¾Öб»É¾³ý¡£

¡¡¡¡os

¡¡¡¡Äã¿ÉÒÔÖ¸¶¨ÄãµÄÄ£¿éÒªÔËÐÐÔÚÄÄЩ²Ù×÷ϵͳÖУº

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡"os" : [ "darwin", "linux" ]

¡¡¡¡ÄãÒ²¿ÉÒÔÓúÚÃûµ¥´úÌæ°×Ãûµ¥£¬ÔÚÃû×ÖÇ°Ãæ¼ÓÉÏ¡°!¡±¾Í¿ÉÒÔÁË£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡"os" : [ "!win32" ]

¡¡¡¡²Ù×÷ϵͳÓÃprocess.platformÀ´Ì½²â¡£

¡¡¡¡ËäȻûÓкܺõØÀíÓÉ£¬µ«ËüÊÇͬʱ֧³ÖºÚÃûµ¥ºÍ°×Ãûµ¥µÄ¡£

¡¡¡¡cpu

¡¡¡¡Èç¹ûÄãµÄ´úÂëÖ»ÄÜÔËÐÐÔÚÌØ¶¨µÄcpu¼Ü¹¹Ï£¬Äã¿ÉÒÔÖ¸¶¨Ò»¸ö£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡"cpu" : [ "x64", "ia32" ]

¡¡¡¡¾ÍÏñosÑ¡ÏÄãÒ²¿ÉÒÔºÚÒ»¸ö¼Ü¹¹£º

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡"cpu" : [ "!arm", "!mips" ]

¡¡¡¡cpu¼Ü¹¹ÓÃprocess.arch̽²â¡£

¡¡¡¡preferGlobal

¡¡¡¡Èç¹û°üÖ÷ÒªÊÇÐèҪȫ¾Ö°²×°µÄÃüÁîÐгÌÐò£¬¾ÍÉèÖÃËüΪtrueÀ´Ìṩһ¸öwarning¸øÖ»ÔÚ¾Ö²¿°²×°µÄÈË¡£

¡¡¡¡Ëü²»»áÕæÕýµÄ·ÀÖ¹Óû§ÔÚ¾Ö²¿°²×°£¬µ«Èç¹ûËüûÓа´Ô¤ÆÚ¹¤×÷Ëü»á°ïÖú·ÀÖ¹²úÉúÎó»á¡£

¡¡¡¡private

¡¡¡¡Èç¹ûÄãÉèÖÃ"private": true£¬npm¾Í²»»á·¢²¼Ëü¡£

¡¡¡¡ÕâÊÇÒ»¸ö·ÀÖ¹ÒâÍâ·¢²¼Ë½ÓпâµÄ·½Ê½¡£Èç¹ûÄãҪȷ¶¨¸ø¶¨µÄ°üÊÇÖ»·¢²¼ÔÚÌØ¶¨registry£¨ÈçÄÚ²¿registry£©µÄ£¬ÓÃpublishConfighashµÄÃèÊöÀ´ÖØÐ´registryµÄpublish-timeÅäÖòÎÊý¡£

¡¡¡¡publishConfig

¡¡¡¡ÕâÊÇÒ»¸öÔÚpublish-timeʹÓõÄÅäÖü¯ºÏ¡£µ±ÄãÏëÉèÖÃtag»òÕßregistryµÄʱºòËü·Ç³£ÓÐÓã¬ËùÒÔÄã¿ÉÒÔÈ·¶¨Ò»¸ö¸ø¶¨µÄ°üûÓдòÉÏ¡°lastest¡±µÄtag»òÕß±»Ä¬ÈÏ·¢²¼µ½È«¾ÖµÄ¹«¿ªregistry¡£

¡¡¡¡ÈκÎÅäÖö¼¿ÉÒÔ±»ÖØÐ´£¬µ«µ±È»¿ÉÄÜÖ»ÓС°tag¡±ºÍ¡°registry¡±Óë·¢²¼µÄÒâͼÓйء£

¡¡¡¡²Î¼ûnpm-config(7)ÓпÉÒÔ±»ÖØÐ´µÄÁÐ±í¡£