mirror of
https://github.com/nodejs/node-v0.x-archive.git
synced 2026-04-28 03:01:10 -04:00
Compare commits
1249 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc6084b9ac | ||
|
|
c4e9226bdb | ||
|
|
1c1ad9bcf4 | ||
|
|
5b5c8b6005 | ||
|
|
3e5139fd2f | ||
|
|
c6843f40c8 | ||
|
|
c49888bd84 | ||
|
|
59a40fc8ed | ||
|
|
559a98f0d7 | ||
|
|
7accaeb490 | ||
|
|
8a9e8d60d2 | ||
|
|
2297d638c1 | ||
|
|
a9b0bcfafe | ||
|
|
c7bc4cacde | ||
|
|
4cfdc57712 | ||
|
|
7e7d5d38ea | ||
|
|
0b0b72c2fa | ||
|
|
e5bb8391a8 | ||
|
|
93d4259cf0 | ||
|
|
e11b6b8f75 | ||
|
|
ed7fb149a2 | ||
|
|
0dba28b5c2 | ||
|
|
0c47219a72 | ||
|
|
9126dd2d90 | ||
|
|
6a11f3edf4 | ||
|
|
4fbe7a5fab | ||
|
|
fc4e12b8f1 | ||
|
|
5da78905a6 | ||
|
|
b1cce04646 | ||
|
|
b731c96679 | ||
|
|
a0add91987 | ||
|
|
a25a27817f | ||
|
|
b53cd9798f | ||
|
|
f78ce087ba | ||
|
|
f315029268 | ||
|
|
7e5aeac28f | ||
|
|
b9abb64fbb | ||
|
|
bc71874262 | ||
|
|
cb64adaadc | ||
|
|
2134aa3d5c | ||
|
|
40f70673c6 | ||
|
|
b919e29871 | ||
|
|
5193d59219 | ||
|
|
103921dac0 | ||
|
|
1747eeff1a | ||
|
|
3e0757c101 | ||
|
|
3644b0bc96 | ||
|
|
c721604d25 | ||
|
|
f2a9ed4873 | ||
|
|
3ea2a618ad | ||
|
|
37bdd36d70 | ||
|
|
6531f187d8 | ||
|
|
be3afd0bec | ||
|
|
d5f13f6c08 | ||
|
|
9e72b7b65c | ||
|
|
0cdeb8ed96 | ||
|
|
f00c8bcef8 | ||
|
|
21aa0df8b2 | ||
|
|
1e50282ae8 | ||
|
|
69f594d22c | ||
|
|
10448487e5 | ||
|
|
401ff10295 | ||
|
|
06c82c5069 | ||
|
|
07e5877144 | ||
|
|
f60def5e9a | ||
|
|
74872b0dc9 | ||
|
|
3d51646c4b | ||
|
|
41a4b734d3 | ||
|
|
3f932c52b0 | ||
|
|
d7825b3c1d | ||
|
|
7823474022 | ||
|
|
b07b391304 | ||
|
|
5feea97b53 | ||
|
|
8b8a7a7f9b | ||
|
|
9a7158de18 | ||
|
|
839bf025a8 | ||
|
|
38250f6403 | ||
|
|
1b114162ab | ||
|
|
2603cc564d | ||
|
|
d34fea59e1 | ||
|
|
91835966eb | ||
|
|
5565366a33 | ||
|
|
a1b274108f | ||
|
|
399731e3a0 | ||
|
|
2dccebd4b8 | ||
|
|
3bab12197f | ||
|
|
de89bbb00c | ||
|
|
441e792849 | ||
|
|
6014a62b3e | ||
|
|
ff2a1b86c3 | ||
|
|
38250f9aef | ||
|
|
9df5fda777 | ||
|
|
8f1a38d916 | ||
|
|
ddf52bd347 | ||
|
|
c6f7fd7e47 | ||
|
|
5ec056633f | ||
|
|
af52bc4fe6 | ||
|
|
fce7c958ed | ||
|
|
8988af58f4 | ||
|
|
48c3d20041 | ||
|
|
5b39929d47 | ||
|
|
260695afd0 | ||
|
|
6e5217d320 | ||
|
|
1bf704a571 | ||
|
|
8708bb0280 | ||
|
|
ef1ffcb717 | ||
|
|
f0ce98441f | ||
|
|
d98a8578d6 | ||
|
|
09150b0616 | ||
|
|
ae7a3cddae | ||
|
|
57d53a47e8 | ||
|
|
81a889fd88 | ||
|
|
6b8ae8e66d | ||
|
|
6b26583e84 | ||
|
|
fe464a2fea | ||
|
|
1d3d02c70d | ||
|
|
7887e68ff7 | ||
|
|
e4017402ef | ||
|
|
fbc2ad5815 | ||
|
|
26b11915b1 | ||
|
|
7a4dfb6aa8 | ||
|
|
3795d77113 | ||
|
|
41d5fefc10 | ||
|
|
a72120190a | ||
|
|
f105f2f2fd | ||
|
|
252f034b30 | ||
|
|
067be2b3fe | ||
|
|
3f687dbddf | ||
|
|
5e1d844f3d | ||
|
|
6ba1c625cd | ||
|
|
8a6ef65c2c | ||
|
|
7282ce9014 | ||
|
|
f94b85db83 | ||
|
|
bf682afb98 | ||
|
|
8966480c0e | ||
|
|
7de6eba061 | ||
|
|
edb62dd902 | ||
|
|
10fa526fa0 | ||
|
|
5cfe0b86d5 | ||
|
|
1b22f5376b | ||
|
|
f405517de1 | ||
|
|
1df222f179 | ||
|
|
de65ba7aba | ||
|
|
196207c228 | ||
|
|
0ef6cfd39b | ||
|
|
d0111aa0c4 | ||
|
|
0a89e8b838 | ||
|
|
057b80611f | ||
|
|
30ab1f567d | ||
|
|
1b7d23e81e | ||
|
|
f80513974e | ||
|
|
ff552ddbaa | ||
|
|
ae5b0e1fc1 | ||
|
|
6d70a4ae16 | ||
|
|
3db2e034c4 | ||
|
|
71a2a2caa6 | ||
|
|
b0b707cb6e | ||
|
|
d614d161c7 | ||
|
|
41421ff9da | ||
|
|
55ef9ef680 | ||
|
|
a90bc78534 | ||
|
|
91bf18fcc5 | ||
|
|
3a5798b097 | ||
|
|
e74a733024 | ||
|
|
8a068ce849 | ||
|
|
bc18bf4ec0 | ||
|
|
8d5c1201f2 | ||
|
|
bdd57f0756 | ||
|
|
145612c2f5 | ||
|
|
c49f3b5df6 | ||
|
|
2b15cf57dd | ||
|
|
de2eb600b3 | ||
|
|
1f93aa5d5d | ||
|
|
911b0fddd3 | ||
|
|
1e0ce5d1bd | ||
|
|
c6185c8484 | ||
|
|
a111390c56 | ||
|
|
8ccb3cbdba | ||
|
|
283d735e2b | ||
|
|
e72addcf8e | ||
|
|
032fc42e64 | ||
|
|
c9a1b5d162 | ||
|
|
13400e3e58 | ||
|
|
412c1ab5bc | ||
|
|
00247d53db | ||
|
|
c231321cd3 | ||
|
|
7f896889ba | ||
|
|
a0a5c4c5af | ||
|
|
8bec3febd8 | ||
|
|
f70fa3bae6 | ||
|
|
58b8b3fa07 | ||
|
|
ca003f4f3e | ||
|
|
c2c08196d8 | ||
|
|
dd85a8c183 | ||
|
|
34b0b6a613 | ||
|
|
39d2337859 | ||
|
|
05fe70b582 | ||
|
|
c752f6c013 | ||
|
|
511e328727 | ||
|
|
4a1698c6ba | ||
|
|
54b74b8e85 | ||
|
|
2701a6bd48 | ||
|
|
fac6c69456 | ||
|
|
ac64c9e546 | ||
|
|
48893af7bb | ||
|
|
50464cd4f4 | ||
|
|
09be360a0f | ||
|
|
37d75ba241 | ||
|
|
029e01bb80 | ||
|
|
6a8b5b36b4 | ||
|
|
35a1421e96 | ||
|
|
74c8041fb6 | ||
|
|
e733dc3bc3 | ||
|
|
0187b657ae | ||
|
|
a11bf99ce0 | ||
|
|
0dba4ad0f9 | ||
|
|
5209dad907 | ||
|
|
e4f4c63370 | ||
|
|
b866a96cfa | ||
|
|
10f85fadfe | ||
|
|
b53b8b8ae7 | ||
|
|
8963a5228d | ||
|
|
900196e135 | ||
|
|
a55faeac18 | ||
|
|
cbeeea62cf | ||
|
|
b615077bab | ||
|
|
0385b17ce0 | ||
|
|
408bfece51 | ||
|
|
e3a2dd1b13 | ||
|
|
4eb2804db9 | ||
|
|
517cea3636 | ||
|
|
b27a4cbe2a | ||
|
|
094f742657 | ||
|
|
00ba1cbce1 | ||
|
|
6ce013dd4b | ||
|
|
d53cdc5378 | ||
|
|
cfa28690db | ||
|
|
2301eb69b1 | ||
|
|
33be3016fb | ||
|
|
2eb181d28c | ||
|
|
25e8ea17e1 | ||
|
|
1358632e67 | ||
|
|
e9aa57e8bd | ||
|
|
4f235ef87f | ||
|
|
8d9766a9df | ||
|
|
76f6a4abb4 | ||
|
|
5432a1d985 | ||
|
|
54a4f99c4e | ||
|
|
13198357e9 | ||
|
|
284816ee9f | ||
|
|
65242abc3b | ||
|
|
131a67e7ef | ||
|
|
424bca15c8 | ||
|
|
6332a4cf00 | ||
|
|
60b45dcbb6 | ||
|
|
535e109a3a | ||
|
|
77cfbd9f2d | ||
|
|
26f754d9dd | ||
|
|
c08357c32f | ||
|
|
940a6863ea | ||
|
|
569acea0ee | ||
|
|
4b021a3541 | ||
|
|
5046f8501c | ||
|
|
f62441367f | ||
|
|
0435f9b28c | ||
|
|
bd33fea732 | ||
|
|
1fb9cfcdb1 | ||
|
|
43ff46becf | ||
|
|
46b09e4190 | ||
|
|
3116522e7c | ||
|
|
c45522df4c | ||
|
|
463d6bac8b | ||
|
|
c381662cac | ||
|
|
b9c5eee7d9 | ||
|
|
5f41140535 | ||
|
|
28e851c169 | ||
|
|
c69d7f1a6c | ||
|
|
0a2076b26a | ||
|
|
27061cc9f4 | ||
|
|
cc0e7efb37 | ||
|
|
208d1715a7 | ||
|
|
b9e40fbaac | ||
|
|
cc36cc5999 | ||
|
|
4f6882e898 | ||
|
|
01432403af | ||
|
|
04e484c484 | ||
|
|
f0a561fe67 | ||
|
|
7161ecd31b | ||
|
|
0699f5bfb4 | ||
|
|
943448772e | ||
|
|
e2126e05e7 | ||
|
|
3b6a00b664 | ||
|
|
e0f5d8e86d | ||
|
|
eabf3c8d0f | ||
|
|
7946ad2634 | ||
|
|
cbdf3393a2 | ||
|
|
0262b6d2a5 | ||
|
|
9a998d5e24 | ||
|
|
9fe39ede9f | ||
|
|
8a52a16847 | ||
|
|
af98fc9d5f | ||
|
|
30a0e58d63 | ||
|
|
b337577cf1 | ||
|
|
dc8b488bbe | ||
|
|
a9e40281e7 | ||
|
|
761e0c460a | ||
|
|
fa9aa1c961 | ||
|
|
782277f11a | ||
|
|
8a411bae66 | ||
|
|
719376730d | ||
|
|
0bd410a66a | ||
|
|
f721d02c8a | ||
|
|
c96df0e37a | ||
|
|
0fd2834539 | ||
|
|
1f3e4a76f9 | ||
|
|
82bcdbb8aa | ||
|
|
1fc2c3823c | ||
|
|
578f69bcf4 | ||
|
|
24de89bd0e | ||
|
|
b4ed3c1969 | ||
|
|
66e12dbd69 | ||
|
|
078763a94c | ||
|
|
39e25528eb | ||
|
|
a2fcc47772 | ||
|
|
f079c0bd9f | ||
|
|
1358bac6d1 | ||
|
|
dff467d982 | ||
|
|
6e435da7f9 | ||
|
|
0888cdd412 | ||
|
|
989ae81c71 | ||
|
|
039fac633e | ||
|
|
a608f65b24 | ||
|
|
3f69c71157 | ||
|
|
2b9967fbcc | ||
|
|
45de259b43 | ||
|
|
81a4edcf6a | ||
|
|
968b49ba0a | ||
|
|
ca642b020d | ||
|
|
75670d3f63 | ||
|
|
d0c010e39b | ||
|
|
b48f7f7eac | ||
|
|
a039bad299 | ||
|
|
18b94ea838 | ||
|
|
ccc4e547ea | ||
|
|
1a2255ab44 | ||
|
|
ee6c11876a | ||
|
|
a3753b496e | ||
|
|
9fc7283a40 | ||
|
|
c393853b4e | ||
|
|
564172510d | ||
|
|
3b95d88bf2 | ||
|
|
2cca7488bf | ||
|
|
3f3f958c14 | ||
|
|
4099d1eeba | ||
|
|
05b81f333c | ||
|
|
1665b4a2a3 | ||
|
|
dfcdd5b8aa | ||
|
|
643f00d3f9 | ||
|
|
faa4d9ff5f | ||
|
|
c9676c9147 | ||
|
|
9ae6d8fee3 | ||
|
|
f8519e10b8 | ||
|
|
9611354f08 | ||
|
|
e813e3491e | ||
|
|
88d7a10128 | ||
|
|
5f0406534c | ||
|
|
636add246c | ||
|
|
5164ae3838 | ||
|
|
01103d077b | ||
|
|
a98e845516 | ||
|
|
a3908f47f1 | ||
|
|
4ec77e2e28 | ||
|
|
f66f793c07 | ||
|
|
25aea2a072 | ||
|
|
d2eaabd0df | ||
|
|
dceebbfa31 | ||
|
|
49f16c4575 | ||
|
|
d40415912f | ||
|
|
38542f76a9 | ||
|
|
a811a4a130 | ||
|
|
12fc9fa8a7 | ||
|
|
68f63fe9ec | ||
|
|
928d28a7b3 | ||
|
|
07be9fc3a6 | ||
|
|
5979f096d1 | ||
|
|
e85927119c | ||
|
|
7d2e68fdbd | ||
|
|
b673d0670f | ||
|
|
4624cf1214 | ||
|
|
27ddd14e9f | ||
|
|
726ebad9bc | ||
|
|
0e57aafbb1 | ||
|
|
4ddafbd563 | ||
|
|
7f68f256cf | ||
|
|
bb675baaa9 | ||
|
|
29b2fdb0c5 | ||
|
|
78e831a31c | ||
|
|
1eb9fc5f33 | ||
|
|
34f05a3195 | ||
|
|
33a9ac6087 | ||
|
|
1858d1c340 | ||
|
|
3d84c3db25 | ||
|
|
1930772693 | ||
|
|
792d9a921d | ||
|
|
9f3c639a9c | ||
|
|
40c4beeb57 | ||
|
|
5871c81181 | ||
|
|
ceb51ddaa1 | ||
|
|
eaf607e88b | ||
|
|
a62dd44b20 | ||
|
|
c1bf810108 | ||
|
|
cd8f82c007 | ||
|
|
436a9b69f3 | ||
|
|
c33d3174b8 | ||
|
|
01d146c29f | ||
|
|
1de43149bb | ||
|
|
a9fc63f7a1 | ||
|
|
0abe42a0f4 | ||
|
|
e63c7821d5 | ||
|
|
e4dd8dc28e | ||
|
|
5eac8d6739 | ||
|
|
2f93eb6102 | ||
|
|
0a414f4caa | ||
|
|
9164fa6aaa | ||
|
|
ebbd4039bc | ||
|
|
e4a8d2617b | ||
|
|
6f82b9f482 | ||
|
|
4e290e48b2 | ||
|
|
6b426a2edd | ||
|
|
880219645e | ||
|
|
c3898f3c1f | ||
|
|
ee2291eb0d | ||
|
|
fb400b4868 | ||
|
|
b894521bd2 | ||
|
|
9f9c333cbc | ||
|
|
4bd54dad33 | ||
|
|
6ba3e68bd2 | ||
|
|
b45a10818e | ||
|
|
e747daf604 | ||
|
|
94f1feeb59 | ||
|
|
f4403f90f8 | ||
|
|
6cacb9a21e | ||
|
|
e02d5c9d41 | ||
|
|
c9e6d3696c | ||
|
|
f1f5de1c8d | ||
|
|
4e4860579e | ||
|
|
75c6255d16 | ||
|
|
89e311b1ae | ||
|
|
248f552ab4 | ||
|
|
77c18d1e1b | ||
|
|
3bcbd14bb1 | ||
|
|
d2dd9d108d | ||
|
|
c8a10e97c8 | ||
|
|
ab072ee416 | ||
|
|
12a90e98bf | ||
|
|
4e84dfa683 | ||
|
|
70635753a3 | ||
|
|
f405daa922 | ||
|
|
98b4596a46 | ||
|
|
5648d95c4a | ||
|
|
df6c12cdcc | ||
|
|
6292df659f | ||
|
|
ef3a874f41 | ||
|
|
0b5235e68c | ||
|
|
d9bad09ede | ||
|
|
48cdbffd24 | ||
|
|
ebfb8a5613 | ||
|
|
4359e8154d | ||
|
|
491c8d92b8 | ||
|
|
ea50ebd36d | ||
|
|
e16021340d | ||
|
|
c0a9985da7 | ||
|
|
525253d50e | ||
|
|
da56c72f59 | ||
|
|
77c1cc0482 | ||
|
|
d91ef153e7 | ||
|
|
c21c51a6fc | ||
|
|
e67a0f80e0 | ||
|
|
57148f54e1 | ||
|
|
c56d1559fc | ||
|
|
12f77440ef | ||
|
|
ecfe32e3a0 | ||
|
|
605927fbd9 | ||
|
|
3d69bbfa87 | ||
|
|
b12b2b83fc | ||
|
|
33c76f19de | ||
|
|
ecca7525cc | ||
|
|
0fcb124602 | ||
|
|
889cbf9ada | ||
|
|
c2b47097c0 | ||
|
|
7b3fb22290 | ||
|
|
6bb9868271 | ||
|
|
6ed5ef5fe0 | ||
|
|
c8bbd13ea8 | ||
|
|
d2860a6c7d | ||
|
|
20143b359c | ||
|
|
d8b33dc147 | ||
|
|
37fd953378 | ||
|
|
079b81358b | ||
|
|
8559a4ae0f | ||
|
|
8673a4aa25 | ||
|
|
d4ed2e61f7 | ||
|
|
45c1d4f96f | ||
|
|
10ce3d129d | ||
|
|
963459d736 | ||
|
|
a26bee8fa1 | ||
|
|
db45b2ca02 | ||
|
|
e1dd570585 | ||
|
|
35c0cd219d | ||
|
|
91701c2db1 | ||
|
|
88f94fa28c | ||
|
|
ac1aaddc00 | ||
|
|
7407be896e | ||
|
|
80a55e9c83 | ||
|
|
e621250116 | ||
|
|
e28eb6de30 | ||
|
|
327286dbcd | ||
|
|
c5d35aca33 | ||
|
|
9c3559f0ad | ||
|
|
86bd9b6e70 | ||
|
|
718aa505c4 | ||
|
|
7cd1690f3d | ||
|
|
5bc07cc90b | ||
|
|
70005be4ff | ||
|
|
540a441259 | ||
|
|
b4626afb61 | ||
|
|
59e6b14395 | ||
|
|
0f95a93a2c | ||
|
|
0d13142332 | ||
|
|
21d2683976 | ||
|
|
48d52d85c3 | ||
|
|
0a83b78ba8 | ||
|
|
f065c87bcf | ||
|
|
c945eae942 | ||
|
|
7ee15457ed | ||
|
|
93cefab1a3 | ||
|
|
b7b7b29f50 | ||
|
|
46acb09ed8 | ||
|
|
1444801374 | ||
|
|
16fca262be | ||
|
|
5b43c63c88 | ||
|
|
04271a5e93 | ||
|
|
1c88c3b3b5 | ||
|
|
916b5d1fff | ||
|
|
6cbed959e6 | ||
|
|
2639566c6e | ||
|
|
3694b6914a | ||
|
|
0f9d201183 | ||
|
|
30e7fb7307 | ||
|
|
aa5961a445 | ||
|
|
e9dcfd4bd2 | ||
|
|
3ec84a11f8 | ||
|
|
9b7a6c5238 | ||
|
|
fdeeabba78 | ||
|
|
e0660740d9 | ||
|
|
3ba9519faf | ||
|
|
7b71fd0c68 | ||
|
|
70a5b53e03 | ||
|
|
0db4dc0024 | ||
|
|
06ada03ed9 | ||
|
|
93eca95aec | ||
|
|
78eb174ea2 | ||
|
|
8652c11031 | ||
|
|
8752ceef13 | ||
|
|
ca8dea83a9 | ||
|
|
aab7cb7dfe | ||
|
|
e28f77cbad | ||
|
|
b9bfb1bc91 | ||
|
|
d73b257d65 | ||
|
|
b6d6a54f80 | ||
|
|
3e8857271b | ||
|
|
2728dcc95b | ||
|
|
930fabe43f | ||
|
|
30994aad30 | ||
|
|
55e971e33d | ||
|
|
92c0c6953a | ||
|
|
08109367e8 | ||
|
|
01d46f3a20 | ||
|
|
cc15299c32 | ||
|
|
7bdeed2039 | ||
|
|
a4a04f932e | ||
|
|
dee8c51547 | ||
|
|
bc834c395b | ||
|
|
2726c22f0b | ||
|
|
c26a0b5aab | ||
|
|
90ce5b3d41 | ||
|
|
407181538b | ||
|
|
7c02b5a58d | ||
|
|
1ab95a536a | ||
|
|
1e13a2d242 | ||
|
|
08032efed0 | ||
|
|
a58659cd4a | ||
|
|
9d1fde7519 | ||
|
|
036d907df7 | ||
|
|
3005965266 | ||
|
|
1a49df5fa9 | ||
|
|
9eacf93928 | ||
|
|
f86359cc3f | ||
|
|
32b2964eed | ||
|
|
8d3278b962 | ||
|
|
69ae75c66c | ||
|
|
6aa7f6f732 | ||
|
|
17524432ff | ||
|
|
db0a1dc7d9 | ||
|
|
8c97ad4c30 | ||
|
|
6986d9316c | ||
|
|
b82b4f2993 | ||
|
|
0f0557d78d | ||
|
|
5cda2542fd | ||
|
|
9a70d99980 | ||
|
|
7abbda8ba2 | ||
|
|
6ebe9e0c1d | ||
|
|
304f1fcf86 | ||
|
|
6aa755070a | ||
|
|
11770bf5e2 | ||
|
|
d7c96cf289 | ||
|
|
daa6b95b08 | ||
|
|
5e7cb68be9 | ||
|
|
44eb279ef8 | ||
|
|
26b6da134f | ||
|
|
238e12af22 | ||
|
|
b521ff3b4f | ||
|
|
af90faf198 | ||
|
|
4b64542fe0 | ||
|
|
8a15147bc5 | ||
|
|
cda3b6ff52 | ||
|
|
b031671138 | ||
|
|
973bbecf1a | ||
|
|
285d8c6589 | ||
|
|
67fc1dafd0 | ||
|
|
48bbdde66b | ||
|
|
eb1ff03418 | ||
|
|
208b230744 | ||
|
|
a33d1c959a | ||
|
|
b187e96ec9 | ||
|
|
228ddddc1c | ||
|
|
e7065eaa93 | ||
|
|
f41901cdf6 | ||
|
|
00224771e3 | ||
|
|
5e8c2b0768 | ||
|
|
698e795a5f | ||
|
|
aad12d0b26 | ||
|
|
ab518ae50e | ||
|
|
e7792e5d46 | ||
|
|
0dd8e0167d | ||
|
|
83aae35b8e | ||
|
|
4515987058 | ||
|
|
75face6139 | ||
|
|
8727e5f2be | ||
|
|
2cf5f040a5 | ||
|
|
249c3c165a | ||
|
|
e1199fa335 | ||
|
|
ef046bf4f6 | ||
|
|
feaa8a41c7 | ||
|
|
d2389f8fab | ||
|
|
c781f17742 | ||
|
|
81cd3a3cd6 | ||
|
|
4b1d492561 | ||
|
|
f2ebf2469b | ||
|
|
7817f48322 | ||
|
|
06a058d731 | ||
|
|
8517089b3e | ||
|
|
253ec6a63d | ||
|
|
415bff26fe | ||
|
|
18240193ba | ||
|
|
891f9defeb | ||
|
|
dce8682827 | ||
|
|
94d337eb0f | ||
|
|
d927fbc9ab | ||
|
|
ab32e9e043 | ||
|
|
89653cb32f | ||
|
|
7418905aef | ||
|
|
b6cb6ce0d3 | ||
|
|
f61d4b7a87 | ||
|
|
d8c4ecea0b | ||
|
|
fb47a337ba | ||
|
|
70e68893fe | ||
|
|
815169383e | ||
|
|
7bee98bae2 | ||
|
|
5abcdc9671 | ||
|
|
76a771b749 | ||
|
|
46376888cd | ||
|
|
ec735cbce0 | ||
|
|
534264d209 | ||
|
|
6628a3b6ea | ||
|
|
0fb4fb4797 | ||
|
|
7cb0f5f84a | ||
|
|
11d8823791 | ||
|
|
95fd517431 | ||
|
|
bea2e15864 | ||
|
|
c7b8073afc | ||
|
|
928ea564d1 | ||
|
|
761a82bc9a | ||
|
|
78dc13fbf9 | ||
|
|
f9aa01de32 | ||
|
|
dc752327bb | ||
|
|
1a97998644 | ||
|
|
702b46c80d | ||
|
|
7fc835afe3 | ||
|
|
9a35656210 | ||
|
|
0113f5a72d | ||
|
|
19fd5301bf | ||
|
|
96e3be3aa3 | ||
|
|
d2fba2bf35 | ||
|
|
35043ad8ac | ||
|
|
bda08bfa04 | ||
|
|
73c874698b | ||
|
|
f06abda6f5 | ||
|
|
10dc129a4b | ||
|
|
884a209ccf | ||
|
|
f9da776b33 | ||
|
|
f214758dd1 | ||
|
|
6b5a34cdf3 | ||
|
|
b7ddd30181 | ||
|
|
659d449460 | ||
|
|
4f63f9f327 | ||
|
|
109b16d488 | ||
|
|
8b79a31333 | ||
|
|
1cdadb1e3b | ||
|
|
1cecfee634 | ||
|
|
943c396b86 | ||
|
|
c15e6905c4 | ||
|
|
4e85257c6e | ||
|
|
e4fc2cbfd3 | ||
|
|
bcb0cc0b18 | ||
|
|
9701f1c4b2 | ||
|
|
531eba18a6 | ||
|
|
677c2c112c | ||
|
|
a10cfba766 | ||
|
|
c450ac343f | ||
|
|
f8ce384446 | ||
|
|
4472f7bbc3 | ||
|
|
79cbe1fdbb | ||
|
|
407ecc6b5f | ||
|
|
9b672bcaa2 | ||
|
|
36761b2055 | ||
|
|
ff4a9d381d | ||
|
|
8c02f9b7c8 | ||
|
|
2589d55611 | ||
|
|
296b7a580b | ||
|
|
9d72a742e3 | ||
|
|
0c68604823 | ||
|
|
31ad1d29c7 | ||
|
|
5ad0140f48 | ||
|
|
f82ef0f7c3 | ||
|
|
024451c65c | ||
|
|
c84b3c4b73 | ||
|
|
408f450286 | ||
|
|
150053b3fa | ||
|
|
fb53986a80 | ||
|
|
17da4242b0 | ||
|
|
d5fca08da4 | ||
|
|
b72d43cbf9 | ||
|
|
b6023905ff | ||
|
|
07c886f944 | ||
|
|
544e5ee1fb | ||
|
|
443071db57 | ||
|
|
1e9bcf26ce | ||
|
|
9ea5a4c468 | ||
|
|
59c3923672 | ||
|
|
39ce94276a | ||
|
|
1520c7bf5b | ||
|
|
e10bd5177f | ||
|
|
5ebc05f560 | ||
|
|
5062741bd7 | ||
|
|
707863c1fb | ||
|
|
c97b4f1971 | ||
|
|
e0796b6f1f | ||
|
|
959a19e118 | ||
|
|
1d5b6f26fe | ||
|
|
4053c01b53 | ||
|
|
61be6844aa | ||
|
|
578ba76e6c | ||
|
|
d6f0ecc622 | ||
|
|
b6595c4d60 | ||
|
|
78db18739a | ||
|
|
30b29d8f87 | ||
|
|
0613af0a20 | ||
|
|
5e803219d8 | ||
|
|
9be20afeb5 | ||
|
|
67b10f816c | ||
|
|
8cdbf014bd | ||
|
|
bab59f33e7 | ||
|
|
ebb79cdaba | ||
|
|
7343f8e776 | ||
|
|
56cfcea4b4 | ||
|
|
af7960b295 | ||
|
|
18acdff8d3 | ||
|
|
cd5d2473a4 | ||
|
|
44daa9836b | ||
|
|
29463cb60c | ||
|
|
493a6bb19a | ||
|
|
ba0892ba91 | ||
|
|
cacd651ec6 | ||
|
|
50cfeef65e | ||
|
|
412cebec9e | ||
|
|
2e24ded6d2 | ||
|
|
fde26002f1 | ||
|
|
f4641bd4de | ||
|
|
82ad1f87fa | ||
|
|
0e7dad3f6e | ||
|
|
7af2d6b985 | ||
|
|
909ea3008e | ||
|
|
5571c1aaa4 | ||
|
|
f9df88c6da | ||
|
|
f9e464f95a | ||
|
|
9fe92590b2 | ||
|
|
f4720d8dbd | ||
|
|
8e6086b403 | ||
|
|
a54b70a355 | ||
|
|
cf4700aff4 | ||
|
|
c9b35b9923 | ||
|
|
c4d6c7f829 | ||
|
|
f0694e1e0c | ||
|
|
03968739c5 | ||
|
|
94c6bcfdad | ||
|
|
dfdf09d43d | ||
|
|
728386bfb2 | ||
|
|
628bc835ae | ||
|
|
a52254d0d7 | ||
|
|
aef61ee367 | ||
|
|
0e752246d3 | ||
|
|
2fd5cb3d2e | ||
|
|
0cf7156f08 | ||
|
|
2806c6ce28 | ||
|
|
02e288b640 | ||
|
|
af7314e190 | ||
|
|
40190b7c92 | ||
|
|
ec02e82760 | ||
|
|
2f148845e8 | ||
|
|
9a0495a4b0 | ||
|
|
dd1b3b6dfd | ||
|
|
ab294ad93d | ||
|
|
6e51db1268 | ||
|
|
60aa852a03 | ||
|
|
97ee38707b | ||
|
|
44559a3211 | ||
|
|
24a2706a3b | ||
|
|
11d27367cd | ||
|
|
bd880e7f3f | ||
|
|
3bec62b012 | ||
|
|
3d5f7594b5 | ||
|
|
ac5e7072c9 | ||
|
|
7aee49d967 | ||
|
|
7d6d5e263e | ||
|
|
964d03bc3f | ||
|
|
90fd70d284 | ||
|
|
aa35564ca1 | ||
|
|
3f1f2d1497 | ||
|
|
d03b8487c6 | ||
|
|
3c68c85f18 | ||
|
|
2d7b43f466 | ||
|
|
ae762b620e | ||
|
|
2f5e084147 | ||
|
|
db8940dae2 | ||
|
|
d4d45a1757 | ||
|
|
27a937bcf8 | ||
|
|
b73ec84ce1 | ||
|
|
a84adad078 | ||
|
|
59ecf2ccf7 | ||
|
|
f492baa61d | ||
|
|
c5cbc3db47 | ||
|
|
d384b8b0d2 | ||
|
|
a9130222bd | ||
|
|
c1fcb1db99 | ||
|
|
491ec171ec | ||
|
|
58e5d69250 | ||
|
|
680d75af34 | ||
|
|
b92a919500 | ||
|
|
1b5048b288 | ||
|
|
d3b8372615 | ||
|
|
73806b56e5 | ||
|
|
9a6f936c8a | ||
|
|
92cb684e78 | ||
|
|
3502e45b6c | ||
|
|
defa637378 | ||
|
|
fd61bfc731 | ||
|
|
ac9fa2b846 | ||
|
|
e60b18bbdf | ||
|
|
7f94b5ccca | ||
|
|
3d1b670640 | ||
|
|
21374c3903 | ||
|
|
27d8b059fa | ||
|
|
5e3ca98155 | ||
|
|
3817b12fec | ||
|
|
bae4018b30 | ||
|
|
080ffb8b2c | ||
|
|
b9127eb0a5 | ||
|
|
feff9bbb67 | ||
|
|
c6a04ce78f | ||
|
|
19133cac02 | ||
|
|
da908364a8 | ||
|
|
c6c6f98f1c | ||
|
|
3f4062309e | ||
|
|
f116e17a23 | ||
|
|
86f4846c21 | ||
|
|
0cebfc8ddb | ||
|
|
de5e3f6a6f | ||
|
|
f0c5165f81 | ||
|
|
b0c1541227 | ||
|
|
1109c8fc4e | ||
|
|
c3a9733ac1 | ||
|
|
b72277183f | ||
|
|
8d3c46daa8 | ||
|
|
999757983c | ||
|
|
7f4aba91d3 | ||
|
|
028043dd02 | ||
|
|
546870edd8 | ||
|
|
af4a96ce6e | ||
|
|
4af673e161 | ||
|
|
7ae0d473a6 | ||
|
|
d530ee62cd | ||
|
|
96338432e2 | ||
|
|
0cdf85e28d | ||
|
|
31721da4b1 | ||
|
|
0787287021 | ||
|
|
7864bb9eb8 | ||
|
|
977e211421 | ||
|
|
ae5e23310e | ||
|
|
ce485791db | ||
|
|
3bc3af0276 | ||
|
|
71e975669c | ||
|
|
1e425e3fa7 | ||
|
|
d653732157 | ||
|
|
6a2cb6c506 | ||
|
|
6141386f7e | ||
|
|
de21de920c | ||
|
|
0a4f5e8473 | ||
|
|
9a0d90793e | ||
|
|
df236e75a2 | ||
|
|
a7af84f988 | ||
|
|
e7e4f2f3aa | ||
|
|
3a915b02e8 | ||
|
|
5041bc1b6c | ||
|
|
68a0c56a7d | ||
|
|
09ccbef3bb | ||
|
|
3f43b1c039 | ||
|
|
8a6576f764 | ||
|
|
a27320e00f | ||
|
|
e9adb7fbbc | ||
|
|
830d0fe95a | ||
|
|
d4ccdeaf00 | ||
|
|
9da830e895 | ||
|
|
02c1cb54aa | ||
|
|
9a6012edd9 | ||
|
|
e612143a89 | ||
|
|
99059aad8d | ||
|
|
349cab0b48 | ||
|
|
986785c9d2 | ||
|
|
116835561d | ||
|
|
e5db01ee29 | ||
|
|
8be699494e | ||
|
|
23514fc946 | ||
|
|
1595a6e885 | ||
|
|
a20872045a | ||
|
|
5e1471c806 | ||
|
|
c2dc673eb5 | ||
|
|
832efb1e01 | ||
|
|
2e2df04b35 | ||
|
|
74a8215a86 | ||
|
|
a9723df1b7 | ||
|
|
ec79acb3a6 | ||
|
|
a3efcd2006 | ||
|
|
05471f5c2a | ||
|
|
bd21038078 | ||
|
|
18d179c2d8 | ||
|
|
db3c4efd1d | ||
|
|
33b7fc250f | ||
|
|
03c4aa6aef | ||
|
|
42ea068a1a | ||
|
|
279e7e7341 | ||
|
|
88b919ea56 | ||
|
|
a94ffdaec5 | ||
|
|
26bfb6bea4 | ||
|
|
ff40253566 | ||
|
|
e97b961815 | ||
|
|
836344c90e | ||
|
|
52bd0f93bb | ||
|
|
5403a8ce4c | ||
|
|
e3c0c86b28 | ||
|
|
e4afb2f724 | ||
|
|
14b7c4327f | ||
|
|
85a86b5fd6 | ||
|
|
f89beaf3ac | ||
|
|
c80abfa0e4 | ||
|
|
27c85727ed | ||
|
|
e806ad39d0 | ||
|
|
5988872ff1 | ||
|
|
a6f3451e25 | ||
|
|
77f2cb66d1 | ||
|
|
a74354735a | ||
|
|
40879f33cd | ||
|
|
b1b16d117e | ||
|
|
667aae596c | ||
|
|
2433eeb385 | ||
|
|
ff512634ac | ||
|
|
6d00c089e3 | ||
|
|
e10ed097cb | ||
|
|
56e34c2f81 | ||
|
|
de78922b12 | ||
|
|
f9a47debfc | ||
|
|
6b5853794d | ||
|
|
4e5247772d | ||
|
|
2156e5eca1 | ||
|
|
0f33768059 | ||
|
|
90587b1ccb | ||
|
|
0ca30187cf | ||
|
|
ad42a82df5 | ||
|
|
29ce743385 | ||
|
|
e493b29598 | ||
|
|
4a38795b6f | ||
|
|
70884875c9 | ||
|
|
21dd53f9d3 | ||
|
|
6e76a7cb45 | ||
|
|
72cbb7492c | ||
|
|
9cc55dca6f | ||
|
|
716f5bc66b | ||
|
|
317ba9fb64 | ||
|
|
2c1025706b | ||
|
|
ab18d72b35 | ||
|
|
ca2a047b8e | ||
|
|
7584225873 | ||
|
|
95844451b6 | ||
|
|
60040a4f36 | ||
|
|
1afd0b52fe | ||
|
|
3d1476a316 | ||
|
|
d5047f5fe6 | ||
|
|
f0c629a36b | ||
|
|
03e689fae4 | ||
|
|
df62005ece | ||
|
|
23de33968f | ||
|
|
f1678bfc65 | ||
|
|
03cb903e7e | ||
|
|
8a98c2f1d8 | ||
|
|
93465d3051 | ||
|
|
220288725f | ||
|
|
e03b42d1bb | ||
|
|
f2ba4cef2a | ||
|
|
9ff86a2848 | ||
|
|
7dffbaf2ce | ||
|
|
71ae175319 | ||
|
|
89556f5a2f | ||
|
|
9e6957b0a5 | ||
|
|
8abb73ef58 | ||
|
|
c8108aad83 | ||
|
|
4d49469d0d | ||
|
|
e1b829d2a5 | ||
|
|
d4ee61ffc7 | ||
|
|
4cbcdb4b2c | ||
|
|
7cee968c21 | ||
|
|
6b2091b58a | ||
|
|
99679c6430 | ||
|
|
44e7033279 | ||
|
|
a5f74b4da7 | ||
|
|
97e4b3a7bf | ||
|
|
787f62de8c | ||
|
|
b28e700ebd | ||
|
|
8b28d599a7 | ||
|
|
08a91acd76 | ||
|
|
c1a63a9e90 | ||
|
|
70033bd960 | ||
|
|
0321adbcf4 | ||
|
|
39484f49ef | ||
|
|
df0edf5fe6 | ||
|
|
4b4d059791 | ||
|
|
8e5674fb5c | ||
|
|
42281124d4 | ||
|
|
1e73e4c62f | ||
|
|
dadc30318f | ||
|
|
075acfa2d6 | ||
|
|
aa67b1f375 | ||
|
|
5b05429bf0 | ||
|
|
55c21970fd | ||
|
|
a993d22c0f | ||
|
|
e2f1e50c60 | ||
|
|
5f08c3cfa1 | ||
|
|
e21643d618 | ||
|
|
557fc396b4 | ||
|
|
c123ac05dc | ||
|
|
4b3824b682 | ||
|
|
c24276f008 | ||
|
|
0c3b357985 | ||
|
|
add4cfcf5f | ||
|
|
fa43f04f6a | ||
|
|
25ca13ec1a | ||
|
|
cdb5864fc3 | ||
|
|
4428b70cba | ||
|
|
649dbbbd83 | ||
|
|
5fc0c27d5c | ||
|
|
20ba454ef9 | ||
|
|
dd0188ec08 | ||
|
|
40c98a977b | ||
|
|
f168f7d702 | ||
|
|
2c560c5405 | ||
|
|
a0f3eb015a | ||
|
|
268476549e | ||
|
|
4d02e77f44 | ||
|
|
4f46ee4400 | ||
|
|
863f17f68c | ||
|
|
45bb10cc32 | ||
|
|
6eeb59abf6 | ||
|
|
809fdf26fb | ||
|
|
ca19e792c6 | ||
|
|
ea97d6ed5f | ||
|
|
5866f1a9aa | ||
|
|
2df81c57f6 | ||
|
|
828bf50a0e | ||
|
|
eb6e60432b | ||
|
|
09dc577931 | ||
|
|
b3d4938e3e | ||
|
|
66116924ed | ||
|
|
356992fe4d | ||
|
|
e9f8e28426 | ||
|
|
bc7bae1d6b | ||
|
|
5427311ae6 | ||
|
|
9143b43e98 | ||
|
|
2afd20b542 | ||
|
|
59faab4330 | ||
|
|
b7c05e1b75 | ||
|
|
b037c16f55 | ||
|
|
b319699132 | ||
|
|
036e59394a | ||
|
|
533a455274 | ||
|
|
9d792f3183 | ||
|
|
c481f97a9c | ||
|
|
02f24f54ba | ||
|
|
87bb848268 | ||
|
|
8c476371f5 | ||
|
|
a8506c41c6 | ||
|
|
41062e71a7 | ||
|
|
2d8c1fe1ed | ||
|
|
1a433b9637 | ||
|
|
78a25696f1 | ||
|
|
39a492799d | ||
|
|
469cb1b7b7 | ||
|
|
d329fc7b09 | ||
|
|
3063ba0800 | ||
|
|
9d71e74491 | ||
|
|
3aadd4fe76 | ||
|
|
8a538ce372 | ||
|
|
9caeceef6d | ||
|
|
edbec3f8f3 | ||
|
|
a778a25cab | ||
|
|
39e2c469db | ||
|
|
2a7a2ca986 | ||
|
|
c3346f6760 | ||
|
|
0d5a6b2d9d | ||
|
|
b962ff35dd | ||
|
|
e6b6075024 | ||
|
|
48a9a2d355 | ||
|
|
c2d9e62f16 | ||
|
|
e4731f8168 | ||
|
|
624f70e88f | ||
|
|
6ac22bfb04 | ||
|
|
60a9e1e40f | ||
|
|
f7f8af8420 | ||
|
|
4eaf4ce26a | ||
|
|
a82f5389d9 | ||
|
|
b24c515dbf | ||
|
|
18b92201be | ||
|
|
7edfb02984 | ||
|
|
6c5f1f58f3 | ||
|
|
b603578b53 | ||
|
|
aac717da8d | ||
|
|
45605c9b39 | ||
|
|
f9994114ab | ||
|
|
5c7532e5b3 | ||
|
|
a805012d6f | ||
|
|
213b8af2f6 | ||
|
|
15d0fa6dc1 | ||
|
|
c65a91c96f | ||
|
|
802c4c6a61 | ||
|
|
3966e4e7a5 | ||
|
|
21e7292ea0 | ||
|
|
07b1997388 | ||
|
|
80858761a8 | ||
|
|
a239ea0d40 | ||
|
|
b00b2f08bf | ||
|
|
b0388ccad0 | ||
|
|
07ad11916f | ||
|
|
c07edd90f5 | ||
|
|
d9377f5eb0 | ||
|
|
855f46677c | ||
|
|
ec11525d33 | ||
|
|
3f987cd925 | ||
|
|
bb8f73419c | ||
|
|
ee0a7b928b | ||
|
|
b084322f52 | ||
|
|
10d92b3dcd | ||
|
|
a9f2c4aa30 | ||
|
|
e61de70c96 | ||
|
|
64de69c1a4 | ||
|
|
1865b11dcb | ||
|
|
67e12a0f84 | ||
|
|
01e4fe5fbc | ||
|
|
45822da46a | ||
|
|
500c8f45f5 | ||
|
|
88cc688731 | ||
|
|
da3356bb38 | ||
|
|
de5ba2db25 | ||
|
|
2240486d3d | ||
|
|
b3a7de15b7 | ||
|
|
be23c51f69 | ||
|
|
bdd19ab40b | ||
|
|
06a22e2ea1 | ||
|
|
c5e51cead8 | ||
|
|
3d3f29cf06 | ||
|
|
cced79d4a8 | ||
|
|
e10fd321e4 | ||
|
|
59055b227a | ||
|
|
e53e9c72cb | ||
|
|
06d86ebe84 | ||
|
|
f8c335d0ca | ||
|
|
e0a207c27a | ||
|
|
ebe0fb697a | ||
|
|
2003593143 | ||
|
|
e609195202 | ||
|
|
21d081fd7f | ||
|
|
e90623edc2 | ||
|
|
49ba55b100 | ||
|
|
f44d0b9044 | ||
|
|
bbd976b8c4 | ||
|
|
eda15387a0 | ||
|
|
a033261f39 | ||
|
|
2445fb8bdd | ||
|
|
1cf13bca19 | ||
|
|
cffd0bb68d | ||
|
|
1db9a2adbe | ||
|
|
8595981195 | ||
|
|
b3f91f15b2 | ||
|
|
e543b0e95e | ||
|
|
3f862cf179 | ||
|
|
585936157c | ||
|
|
a808ab4ac4 | ||
|
|
1b2d333ee3 | ||
|
|
48d21dd541 | ||
|
|
4f8d6d0834 | ||
|
|
29d8ff51c8 | ||
|
|
534e41b474 | ||
|
|
bed405cfea | ||
|
|
e258169666 | ||
|
|
4f38c5ece3 | ||
|
|
8f15582ef3 | ||
|
|
40cb398867 | ||
|
|
93dc713670 | ||
|
|
5d0b5a00aa | ||
|
|
cf2ee19049 | ||
|
|
b9e1bb3d92 | ||
|
|
14b04b06b4 |
8
.gitignore
vendored
8
.gitignore
vendored
@@ -18,6 +18,7 @@ node_g
|
||||
# various stuff that VC++ produces/uses
|
||||
Debug/
|
||||
Release/
|
||||
!doc/blog/**
|
||||
*.sln
|
||||
!nodemsi.sln
|
||||
*.suo
|
||||
@@ -31,13 +32,14 @@ ipch/
|
||||
*.sdf
|
||||
*.opensdf
|
||||
|
||||
/options.gypi
|
||||
/config.mk
|
||||
/config.gypi
|
||||
*-nodegyp*
|
||||
/gyp-mac-tool
|
||||
/dist-osx
|
||||
/npm.wxs
|
||||
/tools/msvs/npm.wixobj
|
||||
email.md
|
||||
blog.html
|
||||
deps/v8-*
|
||||
node_modules
|
||||
./node_modules
|
||||
.svn/
|
||||
54
AUTHORS
54
AUTHORS
@@ -184,7 +184,7 @@ Yoshihiro KIKUCHI <yknetg@gmail.com>
|
||||
Brett Kiefer <kiefer@gmail.com>
|
||||
Mariano Iglesias <mariano@cricava.com>
|
||||
Jörn Horstmann <git@jhorstmann.net>
|
||||
Joe Shaw <joeshaw@litl.com>
|
||||
Joe Shaw <joe@joeshaw.org>
|
||||
Alex Xu <alex_y_xu@yahoo.ca>
|
||||
Kip Gebhardt <kip.gebhardt@voxer.com>
|
||||
Stefan Rusu <saltwaterc@gmail.com>
|
||||
@@ -262,18 +262,66 @@ Brandon Benvie <brandon@bbenvie.com>
|
||||
Nicolas LaCasse <nlacasse@borderstylo.com>
|
||||
Dan VerWeire <dverweire@gmail.com>
|
||||
Matthew Fitzsimmons <matt@joyent.com>
|
||||
Paddy Byers <paddy.byers@gmail.com>
|
||||
Philip Tellis <philip.tellis@gmail.com>
|
||||
Christopher Jeffrey <chjjeffrey@gmail.com>
|
||||
Paddy Byers <paddy.byers@gmail.com>
|
||||
Seth Fitzsimmons <seth@mojodna.net>
|
||||
Einar Otto Stangvik <einaros@gmail.com>
|
||||
Paul Vorbach <paul@vorb.de>
|
||||
tedsuo <ted@radicaldesigns.org>
|
||||
Luke Gallagher <notfornoone@gmail.com>
|
||||
Tomasz Buchert <tomek.buchert@gmail.com>
|
||||
Myles Byrne <myles@myles.id.au>
|
||||
T.C. Hollingsworth <tchollingsworth@gmail.com>
|
||||
Cam Pedersen <diffference@gmail.com>
|
||||
Roly Fentanes <roly426@gmail.com>
|
||||
Ted Young <ted@radicaldesigns.org>
|
||||
Joshua Holbrook <josh.holbrook@gmail.com>
|
||||
Blake Miner <miner.blake@gmail.com>
|
||||
Vincent Ollivier <contact@vincentollivier.com>
|
||||
Jimb Esser <jimb@railgun3d.com>
|
||||
Sambasiva Suda <sambasivarao@gmail.com>
|
||||
Sadique Ali <sadiqalikm@gmail.com>
|
||||
Dmitry Nizovtsev <dmitry@ukrteam.com>
|
||||
Alex Kocharin <rlidwka@kocharin.ru>
|
||||
Ming Liu <vmliu1@gmail.com>
|
||||
Shea Levy <shea@shealevy.com>
|
||||
Nao Iizuka <iizuka@kyu-mu.net>
|
||||
Christian Ress <christian@ressonline.de>
|
||||
Rod Vagg <rod@vagg.org>
|
||||
Matt Ezell <ezell.matt@gmail.com>
|
||||
Charlie McConnell <charlie@charlieistheman.com>
|
||||
Farid Neshat <FaridN_SOAD@yahoo.com>
|
||||
Johannes Wüller <johanneswueller@gmail.com>
|
||||
Erik Lundin <mjor.himself@gmail.com>
|
||||
Mikael Bourges-Sevenier <mikeseven@gmail.com>
|
||||
Yosef Dinerstein <yosefd@microsoft.com>
|
||||
Nathan Friedly <nathan@nfriedly.com>
|
||||
Aaron Jacobs <jacobsa@google.com>
|
||||
Mustansir Golawala <mgolawala@gmail.com>
|
||||
fukayatsu <fukayatsu@gmail.com>
|
||||
Domenic Denicola <domenic@domenicdenicola.com>
|
||||
Bryan Cantrill <bryan@joyent.com>
|
||||
lrn@chromium.org <lrn@chromium.org>
|
||||
Dane Springmeyer <dane@dbsgeo.com>
|
||||
Sambasiva Suda <sambasivarao@gmail.com>
|
||||
Vincent Voyer <v@fasterize.com>
|
||||
ANDO Takahiro <takahiro.ando@gmail.com>
|
||||
Brian Schroeder <bts@gmail.com>
|
||||
J. Lee Coltrane <lee@projectmastermind.com>
|
||||
Javier Hernández <jhernandez@emergya.com>
|
||||
James Koval <james.ross.koval@gmail.com>
|
||||
Kevin Gadd <kevin.gadd@gmail.com>
|
||||
Ray Solomon <raybsolomon@gmail.com>
|
||||
Kevin Bowman <github@magicmonkey.org>
|
||||
Jeroen Janssen <jeroen.janssen@gmail.com>
|
||||
Matt Gollob <mattgollob@gmail.com>
|
||||
Simon Sturmer <sstur@me.com>
|
||||
Joel Brandt <joelrbrandt@gmail.com>
|
||||
Marc Harter <wavded@gmail.com>
|
||||
Nuno Job <nunojobpinto@gmail.com>
|
||||
Ben Kelly <ben@wanderview.com>
|
||||
Felix Böhm <felixboehm55@googlemail.com>
|
||||
Gabriel de Perthuis <g2p.code@gmail.com>
|
||||
Tim Macfarlane <timmacfarlane@gmail.com>
|
||||
Jonas Westerlund <jonas.westerlund@me.com>
|
||||
Dominic Tarr <dominic.tarr@gmail.com>
|
||||
|
||||
518
ChangeLog
518
ChangeLog
@@ -1,4 +1,520 @@
|
||||
2012.05.15 Version 0.6.18 (stable)
|
||||
2012.07.09, Version 0.8.2 (Stable)
|
||||
|
||||
* npm: Upgrade to 1.1.36
|
||||
|
||||
* readline: don't use Function#call() (Nathan Rajlich)
|
||||
|
||||
* Code cleanup to pass 'use strict' (Jonas Westerlund)
|
||||
|
||||
* module: add filename to require() json errors (TJ Holowaychuk)
|
||||
|
||||
* readline: fix for unicode prompts (Tim Macfarlane)
|
||||
|
||||
* timers: fix handling of large timeouts (Ben Noordhuis)
|
||||
|
||||
* repl: fix passing an empty line inserting "undefined" into the buffer (Nathan Rajlich)
|
||||
|
||||
* repl: fix crashes when buffering command (Maciej Małecki)
|
||||
|
||||
* build: rename strict_aliasing to node_no_strict_aliasing (Ben Noordhuis)
|
||||
|
||||
* build: disable -fstrict-aliasing for any gcc < 4.6.0 (Ben Noordhuis)
|
||||
|
||||
* build: detect cc version with -dumpversion (Ben Noordhuis)
|
||||
|
||||
* build: handle output of localized gcc or clang (Ben Noordhuis)
|
||||
|
||||
* unix: fix memory corruption in freebsd.c (Ben Noordhuis)
|
||||
|
||||
* unix: fix 'zero handles, one request' busy loop (Ben Noordhuis)
|
||||
|
||||
* unix: fix busy loop on unexpected tcp message (Ben Noordhuis)
|
||||
|
||||
* unix: fix EINPROGRESS busy loop (Ben Noordhuis)
|
||||
|
||||
|
||||
2012.06.29, Version 0.8.1 (stable), 2134aa3d5c622fc3c3b02ccb713fcde0e0df479a
|
||||
|
||||
* V8: upgrade to v3.11.10.12
|
||||
|
||||
* npm: upgrade to v1.1.33
|
||||
- Support for parallel use of the cache folder
|
||||
- Retry on registry timeouts or network failures (Trent Mick)
|
||||
- Reduce 'engines' failures to a warning
|
||||
- Use new zsh completion if aviailable (Jeremy Cantrell)
|
||||
|
||||
* Fix #3577 Un-break require('sys')
|
||||
|
||||
* util: speed up formatting of large arrays/objects (Ben Noordhuis)
|
||||
|
||||
* windows: make fs.realpath(Sync) work with UNC paths (Bert Belder)
|
||||
|
||||
* build: fix --shared-v8 option (Ben Noordhuis)
|
||||
|
||||
* doc: `detached` is a boolean (Andreas Madsen)
|
||||
|
||||
* build: use proper python interpreter (Ben Noordhuis)
|
||||
|
||||
* build: expand ~ in `./configure --prefix=~/a/b/c` (Ben Noordhuis)
|
||||
|
||||
* build: handle CC env var with spaces (Gabriel de Perthuis)
|
||||
|
||||
* build: fix V8 build when compiling with gcc 4.5 (Ben Noordhuis)
|
||||
|
||||
* build: fix --shared-v8 option (Ben Noordhuis)
|
||||
|
||||
* windows msi: Fix icon issue which caused huge file size (Bert Belder)
|
||||
|
||||
* unix: assume that dlopen() may clobber dlerror() (Ben Noordhuis)
|
||||
|
||||
* sunos: fix memory corruption bugs (Ben Noordhuis)
|
||||
|
||||
* windows: better (f)utimes and (f)stat (Bert Belder)
|
||||
|
||||
|
||||
2012.06.25, Version 0.8.0 (stable), 8b8a7a7f9b41e74e1e810d0330738ad06fc302ec
|
||||
|
||||
* V8: upgrade to v3.11.10.10
|
||||
|
||||
* npm: Upgrade to 1.1.32
|
||||
|
||||
* Deprecate iowatcher (Ben Noordhuis)
|
||||
|
||||
* windows: update icon (Bert Belder)
|
||||
|
||||
* http: Hush 'MUST NOT have a body' warnings to debug() (isaacs)
|
||||
|
||||
* Move blog.nodejs.org content into repository (isaacs)
|
||||
|
||||
* Fix #3503: stdin: resume() on pipe(dest) (isaacs)
|
||||
|
||||
* crypto: fix error reporting in SetKey() (Fedor Indutny)
|
||||
|
||||
* Add --no-deprecation and --trace-deprecation command-line flags (isaacs)
|
||||
|
||||
* fs: fix fs.watchFile() (Ben Noordhuis)
|
||||
|
||||
* fs: Fix fs.readfile() on pipes (isaacs)
|
||||
|
||||
* Rename GYP variable node_use_system_openssl to be consistent (Ryan Dahl)
|
||||
|
||||
|
||||
2012.06.19, Version 0.7.12 (unstable), a72120190a8ffdbcd3d6ad2a2e6ceecd2087111e
|
||||
|
||||
* npm: Upgrade to 1.1.30
|
||||
- Improved 'npm init'
|
||||
- Fix the 'cb never called' error from 'oudated' and 'update'
|
||||
- Add --save-bundle|-B config
|
||||
- Fix isaacs/npm#2465: Make npm script and windows shims cygwin-aware
|
||||
- Fix isaacs/npm#2452 Use --save(-dev|-optional) in npm rm
|
||||
- `logstream` option to replace removed `logfd` (Rod Vagg)
|
||||
- Read default descriptions from README.md files
|
||||
|
||||
* Shims to support deprecated ev_* and eio_* methods (Ben Noordhuis)
|
||||
|
||||
* #3118 net.Socket: Delay pause/resume until after connect (isaacs)
|
||||
|
||||
* #3465 Add ./configure --no-ifaddrs flag (isaacs)
|
||||
|
||||
* child_process: add .stdin stream to forks (Fedor Indutny)
|
||||
|
||||
* build: fix `make install DESTDIR=/path` (Ben Noordhuis)
|
||||
|
||||
* tls: fix off-by-one error in renegotiation check (Ben Noordhuis)
|
||||
|
||||
* crypto: Fix diffie-hellman key generation UTF-8 errors (Fedor Indutny)
|
||||
|
||||
* node: change the constructor name of process from EventEmitter to process (Andreas Madsen)
|
||||
|
||||
* net: Prevent property access throws during close (Reid Burke)
|
||||
|
||||
* querystring: improved speed and code cleanup (Felix Böhm)
|
||||
|
||||
* sunos: fix assertion errors breaking fs.watch() (Fedor Indutny)
|
||||
|
||||
* unix: stat: detect sub-second changes (Ben Noordhuis)
|
||||
|
||||
* add stat() based file watcher (Ben Noordhuis)
|
||||
|
||||
|
||||
2012.06.15, Version 0.7.11 (unstable), 5cfe0b86d5be266ef51bbba369c39e412ee51944
|
||||
|
||||
* V8: Upgrade to v3.11.10
|
||||
|
||||
* npm: Upgrade to 1.1.26
|
||||
|
||||
* doc: Improve cross-linking in API docs markdown (Ben Kelly)
|
||||
|
||||
* Fix #3425: removeAllListeners should delete array (Reid Burke)
|
||||
|
||||
* cluster: don't silently drop messages when the write queue gets big (Bert Belder)
|
||||
|
||||
* Add Buffer.concat method (isaacs)
|
||||
|
||||
* windows: make symlinks tolerant to forward slashes (Bert Belder)
|
||||
|
||||
* build: Add node.d and node.1 to installer (isaacs)
|
||||
|
||||
* cluster: rename worker.unqiueID to worker.id (Andreas Madsen)
|
||||
|
||||
* Windows: Enable ETW events on Windows for existing DTrace probes. (Igor Zinkovsky)
|
||||
|
||||
* test: bundle node-weak in test/gc so that it doesn't need to be downloaded (Nathan Rajlich)
|
||||
|
||||
* Make many tests pass on Windows (Bert Belder)
|
||||
|
||||
* Fix #3388 Support listening on file descriptors (isaacs)
|
||||
|
||||
* Fix #3407 Add os.tmpDir() (isaacs)
|
||||
|
||||
* Unbreak the snapshotted build on Windows (Bert Belder)
|
||||
|
||||
* Clean up child_process.kill throws (Bert Belder)
|
||||
|
||||
* crypto: make cipher/decipher accept buffer args (Ben Noordhuis)
|
||||
|
||||
|
||||
2012.06.11, Version 0.7.10 (unstable), 12a32a48a30182621b3f8e9b9695d1946b53c131
|
||||
|
||||
* Roll V8 back to 3.9.24.31
|
||||
|
||||
* build: x64 target should always pass -m64 (Robert Mustacchi)
|
||||
|
||||
* add NODE_EXTERN to node::Start (Joel Brandt)
|
||||
|
||||
* repl: Warn about running npm commands (isaacs)
|
||||
|
||||
* slab_allocator: fix crash in dtor if V8 is dead (Ben Noordhuis)
|
||||
|
||||
* slab_allocator: fix leak of Persistent handles (Shigeki Ohtsu)
|
||||
|
||||
* windows/msi: add node.js prompt to startmenu (Jeroen Janssen)
|
||||
|
||||
* windows/msi: fix adding node to PATH (Jeroen Janssen)
|
||||
|
||||
* windows/msi: add start menu links when installing (Jeroen Janssen)
|
||||
|
||||
* windows: don't install x64 version into the 'program files (x86)' folder (Matt Gollob)
|
||||
|
||||
* domain: Fix #3379 domain.intercept no longer passes error arg to cb (Marc Harter)
|
||||
|
||||
* fs: make callbacks run in global context (Ben Noordhuis)
|
||||
|
||||
* fs: enable fs.realpath on windows (isaacs)
|
||||
|
||||
* child_process: expose UV_PROCESS_DETACHED as options.detached (Charlie McConnell)
|
||||
|
||||
* child_process: new stdio API for .spawn() method (Fedor Indutny)
|
||||
|
||||
* child_process: spawn().ref() and spawn().unref() (Fedor Indutny)
|
||||
|
||||
* Upgrade npm to 1.1.25
|
||||
- Enable npm link on windows
|
||||
- Properly remove sh-shim on Windows
|
||||
- Abstract out registry client and logger
|
||||
|
||||
|
||||
2012.05.28, Version 0.7.9 (unstable), 782277f11a753ded831439ed826448c06fc0f356
|
||||
|
||||
* Upgrade V8 to 3.11.1
|
||||
|
||||
* Upgrade npm to 1.1.23
|
||||
|
||||
* uv: rework reference counting scheme (Ben Noordhuis)
|
||||
|
||||
* uv: add interface for joining external event loops (Bert Belder)
|
||||
|
||||
* repl, readline: Handle Ctrl+Z and SIGCONT better (Nathan Rajlich)
|
||||
|
||||
* fs: 64bit offsets for fs calls (Igor Zinkovsky)
|
||||
|
||||
* fs: add sync open flags 'rs' and 'rs+' (Kevin Bowman)
|
||||
|
||||
* windows: enable creating directory junctions with fs.symlink (Igor Zinkovsky, Bert Belder)
|
||||
|
||||
* windows: fix fs.lstat to properly detect symlinks. (Igor Zinkovsky)
|
||||
|
||||
* Fix #3270 Escape url.parse delims (isaacs)
|
||||
|
||||
* http: make http.get() accept a URL (Adam Malcontenti-Wilson)
|
||||
|
||||
* Cleanup vm module memory leakage (Marcel Laverdet)
|
||||
|
||||
* Optimize writing strings with Socket.write (Bert Belder)
|
||||
|
||||
* add support for CESU-8 and UTF-16LE encodings (koichik)
|
||||
|
||||
* path: add path.sep to get the path separator. (Yi, EungJun)
|
||||
|
||||
* net, http: add backlog parameter to .listen() (Erik Dubbelboer)
|
||||
|
||||
* debugger: support mirroring Date objects (Fedor Indutny)
|
||||
|
||||
* addon: add AtExit() function (Ben Noordhuis)
|
||||
|
||||
* net: signal localAddress bind failure in connect (Brian Schroeder)
|
||||
|
||||
* util: handle non-string return value in .inspect() (Alex Kocharin)
|
||||
|
||||
|
||||
2012.04.18, Version 0.7.8 (unstable), c2b47097c0b483552efc1947c6766fa1128600b6
|
||||
|
||||
* Upgrade V8 to 3.9.24.9
|
||||
|
||||
* Upgrade OpenSSL to 1.0.0f
|
||||
|
||||
* Upgrade npm to 1.1.18
|
||||
|
||||
* Show licenses in Binary installers
|
||||
|
||||
* Domains (isaacs)
|
||||
|
||||
* readline: rename "end" to "close" (Nathan Rajlich)
|
||||
|
||||
* tcp: make getsockname() return address family as string (Shigeki Ohtsu)
|
||||
|
||||
* http, https: fix .setTimeout() (ssuda)
|
||||
|
||||
* os: add cross platform EOL character (Mustansir Golawala)
|
||||
|
||||
* typed arrays: unexport SizeOfArrayElementForType() (Aaron Jacobs)
|
||||
|
||||
* net: honor 'enable' flag in .setNoDelay() (Ben Noordhuis)
|
||||
|
||||
* child_process: emit error when .kill fails (Andreas Madsen)
|
||||
|
||||
* gyp: fix 'argument list too long' build error (Ben Noordhuis)
|
||||
|
||||
* fs.WriteStream: Handle modifications to fs.open (isaacs)
|
||||
|
||||
* repl, readline: Handle newlines better (Nathan Rajlich, Nathan Friedly)
|
||||
|
||||
* build: target OSX 10.5 when building on darwin (Nathan Rajlich)
|
||||
|
||||
* Fix #3052 Handle errors properly in zlib (isaacs)
|
||||
|
||||
* build: add support for DTrace and postmortem (Dave Pacheco)
|
||||
|
||||
* core: add reusable Slab allocator (Ben Noordhuis)
|
||||
|
||||
|
||||
2012.03.30, Version 0.7.7 (unstable), 5cda2542fdb086f9fe5de889bea435a65e377dea
|
||||
|
||||
* Upgrade V8 to 3.9.24.7
|
||||
|
||||
* Upgrade npm to 1.1.15
|
||||
|
||||
* Handle Emoji characters properly (Erik Corry, Bert Belder)
|
||||
|
||||
* readline: migrate ansi/vt100 logic from tty to readline (Nathan Rajlich)
|
||||
|
||||
* readline: Fix multiline handling (Alex Kocharin)
|
||||
|
||||
* add a -i/--interactive flag to force the REPL (Nathan Rajlich)
|
||||
|
||||
* debugger: add breakOnException command (Fedor Indutny)
|
||||
|
||||
* cluster: kill workers when master dies (Andreas Madsen)
|
||||
|
||||
* cluster: add graceful disconnect support (Andreas Madsen)
|
||||
|
||||
* child_process: Separate 'close' event from 'exit' (Charlie McConnell)
|
||||
|
||||
* typed arrays: add Uint8ClampedArray (Mikael Bourges-Sevenier)
|
||||
|
||||
* buffer: Fix byte alignment issues (Ben Noordhuis, Erik Lundin)
|
||||
|
||||
* tls: fix CryptoStream.setKeepAlive() (Shigeki Ohtsu)
|
||||
|
||||
* Expose http parse error codes (Felix Geisendörfer)
|
||||
|
||||
* events: don't delete the listeners array (Ben Noordhuis, Nathan Rajlich)
|
||||
|
||||
* process: add process.config to view node's ./configure settings (Nathan Rajlich)
|
||||
|
||||
* process: process.execArgv to see node's arguments (Micheil Smith)
|
||||
|
||||
* process: fix process.title setter (Ben Noordhuis)
|
||||
|
||||
* timers: handle negative or non-numeric timeout values (Ben Noordhuis)
|
||||
|
||||
|
||||
2012.03.13, Version 0.7.6 (unstable), f06abda6f58e517349d1b63a2cbf5a8d04a03505
|
||||
|
||||
* Upgrade v8 to 3.9.17
|
||||
|
||||
* Upgrade npm to 1.1.8
|
||||
- Add support for os/cpu fields in package.json (Adam Blackburn)
|
||||
- Automatically node-gyp packages containing a binding.gyp
|
||||
- Fix failures unpacking in UNC shares
|
||||
- Never create un-listable directories
|
||||
- Handle cases where an optionalDependency fails to build
|
||||
|
||||
* events: newListener emit correct fn when using 'once' (Roly Fentanes)
|
||||
|
||||
* url: Ignore empty port component (Łukasz Walukiewicz)
|
||||
|
||||
* module: replace 'children' array (isaacs)
|
||||
|
||||
* tls: parse multiple values of a key in ssl certificate (Sambasiva Suda)
|
||||
|
||||
* cluster: support passing of named pipes (Ben Noordhuis)
|
||||
|
||||
* Windows: include syscall in fs errors (Bert Belder)
|
||||
|
||||
* http: #2888 Emit end event only once (Igor Zinkovsky)
|
||||
|
||||
* readline: add multiline support (Rlidwka)
|
||||
|
||||
* process: add `process.hrtime()` (Nathan Rajlich)
|
||||
|
||||
* net, http, https: add localAddress option (Dmitry Nizovtsev)
|
||||
|
||||
* addon improvements (Nathan Rajlich)
|
||||
|
||||
* build improvements (Ben Noordhuis, Sadique Ali, T.C. Hollingsworth, Nathan Rajlich)
|
||||
|
||||
* add support for "SEARCH" request methods (Nathan Rajlich)
|
||||
|
||||
* expose the zlib and http_parser version in process.versions (Nathan Rajlich)
|
||||
|
||||
|
||||
2012.02.23, Version 0.7.5 (unstable), d384b8b0d2ab7f05465f0a3e15fe20b4e25b5f86
|
||||
|
||||
* startup speed improvements (Maciej Małecki)
|
||||
|
||||
* crypto: add function getDiffieHellman() (Tomasz Buchert)
|
||||
|
||||
* buffer: support decoding of URL-safe base64 (Ben Noordhuis)
|
||||
|
||||
* Make QueryString.parse() even faster (Brian White)
|
||||
|
||||
* url: decode url entities in auth section (Ben Noordhuis)
|
||||
|
||||
* http: support PURGE request method (Ben Noordhuis)
|
||||
|
||||
* http: Generate Date headers on responses (Mark Nottingham)
|
||||
|
||||
* Fix #2762: Add callback to close function. (Mikeal Rogers)
|
||||
|
||||
* dgram: fix out-of-bound memory read (Ben Noordhuis)
|
||||
|
||||
* repl: add automatic loading of built-in libs (Brandon Benvie)
|
||||
|
||||
* repl: remove double calls where possible (Fedor Indutny)
|
||||
|
||||
* Readline improvements. Related: #2737 #2756 (Colton Baker)
|
||||
|
||||
* build: disable -fomit-frame-pointer on solaris (Dave Pacheco)
|
||||
|
||||
* build: arch detection improvements (Nathan Rajlich)
|
||||
|
||||
* build: Make a fat binary for the OS X `make pkg`. (Nathan Rajlich)
|
||||
|
||||
* jslint src/ and lib/ on 'make test' (isaacs)
|
||||
|
||||
|
||||
|
||||
2012.02.14, Version 0.7.4 (unstable), de21de920cf93ec40736ada3792a7f85f3eadeda
|
||||
|
||||
* Upgrade V8 to 3.9.5
|
||||
|
||||
* Upgrade npm to 1.1.1
|
||||
|
||||
* build: Detect host_arch better (Karl Skomski)
|
||||
|
||||
* debugger: export `debug_port` to `process` (Fedor Indutny)
|
||||
|
||||
* api docs: CSS bug fixes (isaacs)
|
||||
|
||||
* build: use -fPIC for native addons on UNIX (Nathan Rajlich)
|
||||
|
||||
* Re-add top-level v8::Locker (Marcel Laverdet)
|
||||
|
||||
* Move images out of the dist tarballs (isaacs)
|
||||
|
||||
* libuv: Remove uv_export and uv_import (Ben Noordhuis)
|
||||
|
||||
* build: Support x64 build on Windows (Igor Zinkovsky)
|
||||
|
||||
|
||||
2012.02.07, Version 0.7.3 (unstable), 99059aad8d654acda4abcfaa68df182b50f2ec90
|
||||
|
||||
* Upgrade V8 to 3.9.2
|
||||
|
||||
* Revert support for isolates. (Ben Noordhuis)
|
||||
|
||||
* cluster: Cleanup docs, event handling, and process.disconnect (Andreas Madsen)
|
||||
|
||||
* gyp_addon: link with node.lib on Windows (Nathan Rajlich)
|
||||
|
||||
* http: fix case where http-parser is freed twice (koichik)
|
||||
|
||||
* Windows: disable RTTI and exceptions (Bert Belder)
|
||||
|
||||
|
||||
2012.02.01, Version 0.7.2 (unstable), ec79acb3a6166e30f0bf271fbbfda1fb575b3321
|
||||
|
||||
* Update V8 to 3.8.9
|
||||
|
||||
* Support for sharing streams across Isolates (Igor Zinkovsky)
|
||||
|
||||
* #2636 - Fix case where http_parsers are freed too early (koichik)
|
||||
|
||||
* url: Support for IPv6 addresses in URLs (Łukasz Walukiewicz)
|
||||
|
||||
* child_process: Add disconnect() method to child processes (Andreas Madsen)
|
||||
|
||||
* fs: add O_EXCL support, exclusive open file (Ben Noordhuis)
|
||||
|
||||
* fs: more specific error messages (Tj Holowaychuk)
|
||||
|
||||
* tty: emit 'unknown' key event if key sequence not found (Dan VerWeire, Nathan Rajlich)
|
||||
|
||||
* build: compile release build too if BUILDTYPE=Debug (Ben Noordhuis)
|
||||
|
||||
* module: fix --debug-brk on symlinked scripts (Fedor Indutny)
|
||||
|
||||
* zlib: fix `Failed to set dictionary` issue (Fedor Indutny)
|
||||
|
||||
* waf: predict target arch for OS X (Fedor Indutny)
|
||||
|
||||
|
||||
2012.01.23, Version 0.7.1 (unstable), a74354735ab5d5b0fa35a1e4ff7e653757d2069b
|
||||
|
||||
* Update V8 to 3.8.8
|
||||
|
||||
* Install node-waf by default (Fedor Indutny)
|
||||
|
||||
* crypto: Add ability to turn off PKCS padding (Ingmar Runge)
|
||||
|
||||
* v8: implement VirtualMemory class on SunOS (Ben Noordhuis)
|
||||
|
||||
* Add cluster.setupMaster (Andreas Madsen)
|
||||
|
||||
* move `path.exists*` to `fs.exists*` (Maciej Małecki)
|
||||
|
||||
* typed arrays: set class name (Ben Noordhuis)
|
||||
|
||||
* libuv bug fixes (Igor Zinkovsky, Ben Noordhuis, Dan VerWeire)
|
||||
|
||||
|
||||
2012.01.16, Version 0.7.0 (unstable), 9cc55dca6f67a6096c858b841c677b0593404321
|
||||
|
||||
* Upgrade V8 to 3.8.6
|
||||
|
||||
* Use GYP build system on unix (Ben Noordhuis)
|
||||
|
||||
* Experimenetal isolates support (Ben Noordhuis)
|
||||
|
||||
* Improvements to Cluster API (Andreas Madsen)
|
||||
|
||||
* Use isolates for internal debugger (Fedor Indutny)
|
||||
|
||||
* Bug fixes
|
||||
|
||||
|
||||
2012.05.15 Version 0.6.18 (stable), 4bc1d395de6abed2cf1e4d0b7b3a1480a21c368f
|
||||
|
||||
* windows: skip GetFileAttributes call when opening a file (Bert Belder)
|
||||
|
||||
|
||||
73
LICENSE
73
LICENSE
@@ -196,7 +196,7 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
"""
|
||||
|
||||
- C-Ares, an asynchronous DNS client, located at deps/uv/src/ares. C-Ares license
|
||||
follows
|
||||
follows:
|
||||
"""
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
*
|
||||
@@ -215,7 +215,7 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
|
||||
- OpenSSL located at deps/openssl. OpenSSL is cryptographic software written
|
||||
by Eric Young (eay@cryptsoft.com) to provide SSL/TLS encryption. OpenSSL's
|
||||
license follows
|
||||
license follows:
|
||||
"""
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
|
||||
@@ -225,7 +225,7 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
@@ -296,11 +296,11 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
- Closure Linter is located at tools/closure_linter. Closure's license
|
||||
follows
|
||||
follows:
|
||||
"""
|
||||
# Copyright (c) 2007, Google Inc.
|
||||
# All rights reserved.
|
||||
@@ -403,7 +403,7 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
* Available under MIT license <http://mths.be/mit>
|
||||
"""
|
||||
|
||||
- tools/gyp GYP is a meta-build system. GYP's license follows:
|
||||
- tools/gyp. GYP is a meta-build system. GYP's license follows:
|
||||
"""
|
||||
Copyright (c) 2009 Google Inc. All rights reserved.
|
||||
|
||||
@@ -434,7 +434,7 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
- Zlib at deps/zlib. zlib's license follows
|
||||
- Zlib at deps/zlib. zlib's license follows:
|
||||
"""
|
||||
/* zlib.h -- interface of the 'zlib' general purpose compression library
|
||||
version 1.2.4, March 14th, 2010
|
||||
@@ -463,8 +463,8 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
*/
|
||||
"""
|
||||
|
||||
- npm is a package manager program located at deps/npm.
|
||||
npm's license follows:
|
||||
- npm is a package manager program located at deps/npm.
|
||||
npm's license follows:
|
||||
"""
|
||||
Copyright 2009-2012, Isaac Z. Schlueter (the "Original Author")
|
||||
All rights reserved.
|
||||
@@ -517,6 +517,11 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
"npm Logo" created by Mathias Pettersson and Brian Hammond,
|
||||
used with permission.
|
||||
|
||||
"Gubblebum Blocky" font
|
||||
Copyright (c) 2007 by Tjarda Koster, http://jelloween.deviantart.com
|
||||
included for use in the npm website and documentation,
|
||||
used with permission.
|
||||
|
||||
This program uses "node-uuid", Copyright (c) 2010 Robert Kieffer,
|
||||
according to the terms of the MIT license.
|
||||
|
||||
@@ -527,8 +532,8 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
according to the terms of the MIT/X11 license.
|
||||
"""
|
||||
|
||||
- tools/doc/node_modules/marked Marked is a Markdown parser. Marked's
|
||||
license follows
|
||||
- tools/doc/node_modules/marked. Marked is a Markdown parser. Marked's
|
||||
license follows:
|
||||
"""
|
||||
Copyright (c) 2011-2012, Christopher Jeffrey (https://github.com/chjj/)
|
||||
|
||||
@@ -550,3 +555,49 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
"""
|
||||
|
||||
- test/gc/node_modules/weak. Node-weak is a node.js addon that provides garbage
|
||||
collector notifications. Node-weak's license follows:
|
||||
"""
|
||||
Copyright (c) 2011, Ben Noordhuis <info@bnoordhuis.nl>
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
"""
|
||||
|
||||
- src/ngx-queue.h. ngx-queue.h is taken from the nginx source tree. nginx's
|
||||
license follows:
|
||||
"""
|
||||
Copyright (C) 2002-2012 Igor Sysoev
|
||||
Copyright (C) 2011,2012 Nginx, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
158
Makefile
158
Makefile
@@ -1,39 +1,59 @@
|
||||
-include config.mk
|
||||
|
||||
BUILDTYPE ?= Release
|
||||
PYTHON ?= python
|
||||
WAF = $(PYTHON) tools/waf-light
|
||||
DESTDIR ?=
|
||||
|
||||
web_root = node@nodejs.org:~/web/nodejs.org/
|
||||
# BUILDTYPE=Debug builds both release and debug builds. If you want to compile
|
||||
# just the debug build, run `make -C out BUILDTYPE=Debug` instead.
|
||||
ifeq ($(BUILDTYPE),Release)
|
||||
all: out/Makefile node
|
||||
else
|
||||
all: out/Makefile node node_g
|
||||
endif
|
||||
|
||||
#
|
||||
# Because we recursively call make from waf we need to make sure that we are
|
||||
# using the correct make. Not all makes are GNU Make, but this likely only
|
||||
# works with gnu make. To deal with this we remember how the user invoked us
|
||||
# via a make builtin variable and use that in all subsequent operations
|
||||
#
|
||||
export NODE_MAKE := $(MAKE)
|
||||
# The .PHONY is needed to ensure that we recursively use the out/Makefile
|
||||
# to check for changes.
|
||||
.PHONY: node node_g
|
||||
|
||||
all: program
|
||||
@-[ -f out/Release/node ] && ls -lh out/Release/node
|
||||
node: config.gypi
|
||||
$(MAKE) -C out BUILDTYPE=Release
|
||||
ln -fs out/Release/node node
|
||||
|
||||
all-progress:
|
||||
@$(WAF) -p build
|
||||
node_g: config.gypi
|
||||
$(MAKE) -C out BUILDTYPE=Debug
|
||||
ln -fs out/Debug/node node_g
|
||||
|
||||
program:
|
||||
@$(WAF) --product-type=program build
|
||||
config.gypi: configure
|
||||
./configure
|
||||
|
||||
staticlib:
|
||||
@$(WAF) --product-type=cstaticlib build
|
||||
out/Debug/node:
|
||||
$(MAKE) -C out BUILDTYPE=Debug
|
||||
|
||||
dynamiclib:
|
||||
@$(WAF) --product-type=cshlib build
|
||||
out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp deps/v8/build/common.gypi deps/v8/tools/gyp/v8.gyp node.gyp config.gypi
|
||||
$(PYTHON) tools/gyp_node -f make
|
||||
|
||||
install:
|
||||
@$(WAF) install
|
||||
install: all
|
||||
out/Release/node tools/installer.js install $(DESTDIR)
|
||||
|
||||
uninstall:
|
||||
@$(WAF) uninstall
|
||||
out/Release/node tools/installer.js uninstall
|
||||
|
||||
clean:
|
||||
-rm -rf out/Makefile node node_g out/$(BUILDTYPE)/node blog.html email.md
|
||||
-find out/ -name '*.o' -o -name '*.a' | xargs rm -rf
|
||||
-rm -rf node_modules
|
||||
|
||||
distclean:
|
||||
-rm -rf out
|
||||
-rm -f config.gypi
|
||||
-rm -f config.mk
|
||||
-rm -rf node node_g blog.html email.md
|
||||
-rm -rf node_modules
|
||||
|
||||
test: all
|
||||
$(PYTHON) tools/test.py --mode=release simple message
|
||||
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
|
||||
|
||||
test-http1: all
|
||||
$(PYTHON) tools/test.py --mode=release --use-http1 simple message
|
||||
@@ -41,16 +61,16 @@ test-http1: all
|
||||
test-valgrind: all
|
||||
$(PYTHON) tools/test.py --mode=release --valgrind simple message
|
||||
|
||||
node_modules/weak:
|
||||
test/gc/node_modules/weak/build:
|
||||
@if [ ! -f node ]; then make all; fi
|
||||
@if [ ! -d node_modules ]; then mkdir -p node_modules; fi
|
||||
./node deps/npm/bin/npm-cli.js install weak \
|
||||
--prefix="$(shell pwd)" --unsafe-perm # go ahead and run as root.
|
||||
./node deps/npm/node_modules/node-gyp/bin/node-gyp rebuild \
|
||||
--directory="$(shell pwd)/test/gc/node_modules/weak" \
|
||||
--nodedir="$(shell pwd)"
|
||||
|
||||
test-gc: all node_modules/weak
|
||||
test-gc: all test/gc/node_modules/weak/build
|
||||
$(PYTHON) tools/test.py --mode=release gc
|
||||
|
||||
test-all: all node_modules/weak
|
||||
test-all: all test/gc/node_modules/weak/build
|
||||
$(PYTHON) tools/test.py --mode=debug,release
|
||||
make test-npm
|
||||
|
||||
@@ -78,14 +98,12 @@ test-pummel: all
|
||||
test-internet: all
|
||||
$(PYTHON) tools/test.py internet
|
||||
|
||||
test-npm: all
|
||||
test-npm: node
|
||||
./node deps/npm/test/run.js
|
||||
|
||||
test-npm-publish: all
|
||||
test-npm-publish: node
|
||||
npm_package_config_publishtest=true ./node deps/npm/test/run.js
|
||||
|
||||
out/Release/node: all
|
||||
|
||||
apidoc_sources = $(wildcard doc/api/*.markdown)
|
||||
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html)) \
|
||||
$(addprefix out/,$(apidoc_sources:.markdown=.json))
|
||||
@@ -112,7 +130,13 @@ website_files = \
|
||||
out/doc/changelog.html \
|
||||
$(doc_images)
|
||||
|
||||
doc: program $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/
|
||||
doc: program $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/ blog
|
||||
|
||||
blogclean:
|
||||
rm -rf out/blog
|
||||
|
||||
blog: doc/blog out/Release/node tools/blog
|
||||
out/Release/node tools/blog/generate.js doc/blog/ out/blog/ doc/blog.html doc/rss.xml
|
||||
|
||||
$(apidoc_dirs):
|
||||
mkdir -p $@
|
||||
@@ -142,6 +166,9 @@ email.md: ChangeLog tools/email-footer.md
|
||||
blog.html: email.md
|
||||
cat $< | ./node tools/doc/node_modules/.bin/marked > $@
|
||||
|
||||
blog-upload: blog
|
||||
rsync -r out/blog/ node@nodejs.org:~/web/nodejs.org/blog/
|
||||
|
||||
website-upload: doc
|
||||
rsync -r out/doc/ node@nodejs.org:~/web/nodejs.org/
|
||||
ssh node@nodejs.org '\
|
||||
@@ -158,44 +185,26 @@ docopen: out/doc/api/all.html
|
||||
docclean:
|
||||
-rm -rf out/doc
|
||||
|
||||
clean:
|
||||
$(WAF) clean
|
||||
-find tools -name "*.pyc" | xargs rm -f
|
||||
-rm -rf blog.html email.md
|
||||
-rm -rf node_modules
|
||||
|
||||
distclean: docclean
|
||||
-find tools -name "*.pyc" | xargs rm -f
|
||||
-rm -rf dist-osx
|
||||
-rm -rf out/ node node_g
|
||||
-rm -rf blog.html email.md
|
||||
|
||||
check:
|
||||
@tools/waf-light check
|
||||
|
||||
VERSION=v$(shell $(PYTHON) tools/getnodeversion.py)
|
||||
TARNAME=node-$(VERSION)
|
||||
TARBALL=$(TARNAME).tar.gz
|
||||
PKG=out/$(TARNAME).pkg
|
||||
|
||||
packagemaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
|
||||
|
||||
#dist: doc/node.1 doc/api
|
||||
dist: $(TARBALL) $(PKG)
|
||||
dist: doc $(TARBALL) $(PKG)
|
||||
|
||||
PKGDIR=out/dist-osx
|
||||
|
||||
pkg: $(PKG)
|
||||
|
||||
$(PKG):
|
||||
-rm -rf $(PKGDIR)
|
||||
# Need to remove deps between architecture changes.
|
||||
rm -rf out/*/deps
|
||||
$(WAF) configure --prefix=/usr/local --without-snapshot --dest-cpu=ia32
|
||||
CFLAGS=-m32 DESTDIR=$(PKGDIR)/32 $(WAF) install
|
||||
rm -rf out/*/deps
|
||||
$(WAF) configure --prefix=/usr/local --without-snapshot --dest-cpu=x64
|
||||
CFLAGS=-m64 DESTDIR=$(PKGDIR) $(WAF) install
|
||||
rm -rf $(PKGDIR)
|
||||
rm -rf out/deps out/Release
|
||||
./configure --prefix=$(PKGDIR)/32/usr/local --without-snapshot --dest-cpu=ia32
|
||||
$(MAKE) install
|
||||
rm -rf out/deps out/Release
|
||||
./configure --prefix=$(PKGDIR)/usr/local --without-snapshot --dest-cpu=x64
|
||||
$(MAKE) install
|
||||
lipo $(PKGDIR)/32/usr/local/bin/node \
|
||||
$(PKGDIR)/usr/local/bin/node \
|
||||
-output $(PKGDIR)/usr/local/bin/node-universal \
|
||||
@@ -207,13 +216,34 @@ $(PKG):
|
||||
--doc tools/osx-pkg.pmdoc \
|
||||
--out $(PKG)
|
||||
|
||||
$(TARBALL): out/doc
|
||||
$(TARBALL): node out/doc
|
||||
@if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
|
||||
exit 0 ; \
|
||||
else \
|
||||
echo "" >&2 ; \
|
||||
echo "The git repository is not clean." >&2 ; \
|
||||
echo "Please commit changes before building release tarball." >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
git status --porcelain | egrep -v '^\?\?' >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@if [ $(shell ./node --version) = "$(VERSION)" ]; then \
|
||||
exit 0; \
|
||||
else \
|
||||
echo "" >&2 ; \
|
||||
echo "$(shell ./node --version) doesn't match $(VERSION)." >&2 ; \
|
||||
echo "Did you remember to update src/node_version.cc?" >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
|
||||
mkdir -p $(TARNAME)/doc
|
||||
mkdir -p $(TARNAME)/doc/api
|
||||
cp doc/node.1 $(TARNAME)/doc/node.1
|
||||
cp -r out/doc/api $(TARNAME)/doc/api
|
||||
cp -r out/doc/api/* $(TARNAME)/doc/api/
|
||||
rm -rf $(TARNAME)/deps/v8/test # too big
|
||||
rm -rf $(TARNAME)/doc/images # too big
|
||||
find $(TARNAME)/ -type l | xargs rm # annoying on windows
|
||||
tar -cf $(TARNAME).tar $(TARNAME)
|
||||
rm -rf $(TARNAME)
|
||||
gzip -f -9 $(TARNAME).tar
|
||||
@@ -232,11 +262,11 @@ bench-idle:
|
||||
./node benchmark/idle_clients.js &
|
||||
|
||||
jslint:
|
||||
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ -r test/ --exclude_files lib/punycode.js
|
||||
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
|
||||
|
||||
cpplint:
|
||||
@$(PYTHON) tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
|
||||
|
||||
lint: jslint cpplint
|
||||
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean dist-upload check uninstall install all program staticlib dynamiclib test test-all website-upload
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install install-includes install-bin all program staticlib dynamiclib test test-all website-upload pkg blog blogclean
|
||||
|
||||
319
Makefile-gyp
319
Makefile-gyp
@@ -1,319 +0,0 @@
|
||||
BUILDTYPE ?= Release
|
||||
|
||||
all: out/Makefile
|
||||
tools/gyp_node -f make
|
||||
$(MAKE) -C out BUILDTYPE=$(BUILDTYPE)
|
||||
-ln -fs out/Release/node node
|
||||
-ln -fs out/Debug/node node_g
|
||||
|
||||
out/Release/node: all
|
||||
|
||||
out/Makefile: node.gyp deps/uv/uv.gyp
|
||||
|
||||
clean:
|
||||
rm -rf out
|
||||
|
||||
distclean:
|
||||
rm -rf out
|
||||
|
||||
test: all
|
||||
python tools/test.py --mode=release simple message
|
||||
|
||||
test-http1: all
|
||||
python tools/test.py --mode=release --use-http1 simple message
|
||||
|
||||
test-valgrind: all
|
||||
python tools/test.py --mode=release --valgrind simple message
|
||||
|
||||
test-all: all
|
||||
python tools/test.py --mode=debug,release
|
||||
|
||||
test-all-http1: all
|
||||
python tools/test.py --mode=debug,release --use-http1
|
||||
|
||||
test-all-valgrind: all
|
||||
python tools/test.py --mode=debug,release --valgrind
|
||||
|
||||
test-release: all
|
||||
python tools/test.py --mode=release
|
||||
|
||||
test-debug: all
|
||||
python tools/test.py --mode=debug
|
||||
|
||||
test-message: all
|
||||
python tools/test.py message
|
||||
|
||||
test-simple: all
|
||||
python tools/test.py simple
|
||||
|
||||
test-pummel: all
|
||||
python tools/test.py pummel
|
||||
|
||||
test-internet: all
|
||||
python tools/test.py internet
|
||||
|
||||
UVTEST += simple/test-assert
|
||||
UVTEST += simple/test-buffer
|
||||
UVTEST += simple/test-c-ares
|
||||
UVTEST += simple/test-chdir
|
||||
UVTEST += simple/test-delayed-require
|
||||
UVTEST += simple/test-eio-race2
|
||||
UVTEST += simple/test-eio-race4
|
||||
UVTEST += simple/test-event-emitter-add-listeners
|
||||
UVTEST += simple/test-event-emitter-modify-in-emit
|
||||
UVTEST += simple/test-event-emitter-num-args
|
||||
UVTEST += simple/test-event-emitter-once
|
||||
UVTEST += simple/test-event-emitter-remove-all-listeners
|
||||
UVTEST += simple/test-event-emitter-remove-listeners
|
||||
UVTEST += simple/test-exception-handler
|
||||
UVTEST += simple/test-exception-handler2
|
||||
UVTEST += simple/test-exception-handler
|
||||
UVTEST += simple/test-executable-path
|
||||
UVTEST += simple/test-file-read-noexist
|
||||
UVTEST += simple/test-file-write-stream
|
||||
UVTEST += simple/test-fs-fsync
|
||||
UVTEST += simple/test-fs-open
|
||||
UVTEST += simple/test-fs-readfile-empty
|
||||
UVTEST += simple/test-fs-read-file-sync
|
||||
UVTEST += simple/test-fs-read-file-sync-hostname
|
||||
UVTEST += simple/test-fs-sir-writes-alot
|
||||
UVTEST += simple/test-fs-write
|
||||
UVTEST += simple/test-fs-write-buffer
|
||||
UVTEST += simple/test-fs-write-file
|
||||
UVTEST += simple/test-fs-write-file-buffer
|
||||
UVTEST += simple/test-fs-write-stream
|
||||
UVTEST += simple/test-fs-write-stream-end
|
||||
UVTEST += simple/test-fs-write-sync
|
||||
UVTEST += simple/test-global
|
||||
UVTEST += simple/test-http
|
||||
UVTEST += simple/test-http-1.0
|
||||
UVTEST += simple/test-http-abort-client
|
||||
UVTEST += simple/test-http-allow-req-after-204-res
|
||||
UVTEST += simple/test-http-blank-header
|
||||
UVTEST += simple/test-http-buffer-sanity
|
||||
UVTEST += simple/test-http-cat
|
||||
UVTEST += simple/test-http-chunked
|
||||
UVTEST += simple/test-http-client-abort
|
||||
UVTEST += simple/test-http-client-parse-error
|
||||
UVTEST += simple/test-http-client-race
|
||||
UVTEST += simple/test-http-client-race-2
|
||||
UVTEST += simple/test-http-client-upload
|
||||
UVTEST += simple/test-http-client-upload-buf
|
||||
UVTEST += simple/test-http-contentLength0
|
||||
UVTEST += simple/test-http-default-encoding
|
||||
UVTEST += simple/test-http-dns-fail
|
||||
UVTEST += simple/test-http-eof-on-connect
|
||||
UVTEST += simple/test-http-exceptions
|
||||
UVTEST += simple/test-http-expect-continue
|
||||
UVTEST += simple/test-http-extra-response
|
||||
UVTEST += simple/test-http-head-request
|
||||
UVTEST += simple/test-http-head-response-has-no-body
|
||||
UVTEST += simple/test-http-keep-alive
|
||||
UVTEST += simple/test-http-keep-alive-close-on-header
|
||||
UVTEST += simple/test-http-malformed-request
|
||||
UVTEST += simple/test-http-many-keep-alive-connections
|
||||
UVTEST += simple/test-http-mutable-headers
|
||||
UVTEST += simple/test-http-parser
|
||||
UVTEST += simple/test-http-proxy
|
||||
UVTEST += simple/test-http-request-end
|
||||
UVTEST += simple/test-http-response-close
|
||||
UVTEST += simple/test-http-response-readable
|
||||
UVTEST += simple/test-http-unix-socket
|
||||
UVTEST += simple/test-http-server
|
||||
UVTEST += simple/test-http-server-multiheaders
|
||||
UVTEST += simple/test-http-set-cookies
|
||||
UVTEST += simple/test-http-set-timeout
|
||||
UVTEST += simple/test-http-set-trailers
|
||||
UVTEST += simple/test-http-upgrade-agent
|
||||
UVTEST += simple/test-http-upgrade-client
|
||||
UVTEST += simple/test-http-upgrade-client2
|
||||
UVTEST += simple/test-http-upgrade-server
|
||||
UVTEST += simple/test-http-upgrade-server2
|
||||
UVTEST += simple/test-http-wget
|
||||
UVTEST += simple/test-http-write-empty-string
|
||||
UVTEST += simple/test-http-wget
|
||||
UVTEST += simple/test-mkdir-rmdir
|
||||
UVTEST += simple/test-net-binary
|
||||
UVTEST += simple/test-net-pingpong
|
||||
UVTEST += simple/test-net-can-reset-timeout
|
||||
UVTEST += simple/test-net-connect-buffer
|
||||
UVTEST += simple/test-net-connect-timeout
|
||||
UVTEST += simple/test-net-create-connection
|
||||
UVTEST += simple/test-net-eaddrinuse
|
||||
UVTEST += simple/test-net-isip
|
||||
UVTEST += simple/test-net-keepalive
|
||||
UVTEST += simple/test-net-pingpong
|
||||
UVTEST += simple/test-net-reconnect
|
||||
UVTEST += simple/test-net-remote-address-port
|
||||
UVTEST += simple/test-net-server-bind
|
||||
UVTEST += simple/test-net-server-max-connections
|
||||
UVTEST += simple/test-net-server-try-ports
|
||||
UVTEST += simple/test-net-stream
|
||||
UVTEST += simple/test-net-socket-timeout
|
||||
UVTEST += simple/test-next-tick
|
||||
UVTEST += simple/test-next-tick-doesnt-hang
|
||||
UVTEST += simple/test-next-tick-errors
|
||||
UVTEST += simple/test-next-tick-ordering
|
||||
UVTEST += simple/test-next-tick-ordering2
|
||||
UVTEST += simple/test-next-tick-starvation
|
||||
UVTEST += simple/test-module-load-list
|
||||
UVTEST += simple/test-path
|
||||
UVTEST += simple/test-pipe-stream
|
||||
UVTEST += simple/test-pump-file2tcp
|
||||
UVTEST += simple/test-pump-file2tcp-noexist
|
||||
UVTEST += simple/test-punycode
|
||||
UVTEST += simple/test-querystring
|
||||
UVTEST += simple/test-readdir
|
||||
UVTEST += simple/test-readdouble
|
||||
UVTEST += simple/test-readfloat
|
||||
UVTEST += simple/test-readint
|
||||
UVTEST += simple/test-readuint
|
||||
UVTEST += simple/test-regress-GH-819
|
||||
UVTEST += simple/test-regress-GH-897
|
||||
UVTEST += simple/test-regression-object-prototype
|
||||
UVTEST += simple/test-require-cache
|
||||
UVTEST += simple/test-require-cache-without-stat
|
||||
UVTEST += simple/test-require-exceptions
|
||||
UVTEST += simple/test-require-resolve
|
||||
UVTEST += simple/test-script-context
|
||||
UVTEST += simple/test-script-new
|
||||
UVTEST += simple/test-script-static-context
|
||||
UVTEST += simple/test-script-static-new
|
||||
UVTEST += simple/test-script-static-this
|
||||
UVTEST += simple/test-script-this
|
||||
UVTEST += simple/test-stream-pipe-cleanup
|
||||
UVTEST += simple/test-stream-pipe-error-handling
|
||||
UVTEST += simple/test-stream-pipe-event
|
||||
UVTEST += simple/test-stream-pipe-multi
|
||||
UVTEST += simple/test-string-decoder
|
||||
UVTEST += simple/test-sys
|
||||
UVTEST += simple/test-tcp-wrap
|
||||
UVTEST += simple/test-tcp-wrap-connect
|
||||
UVTEST += simple/test-tcp-wrap-listen
|
||||
UVTEST += simple/test-timers-linked-list
|
||||
UVTEST += simple/test-tty-stdout-end
|
||||
UVTEST += simple/test-url
|
||||
UVTEST += simple/test-utf8-scripts
|
||||
UVTEST += simple/test-vm-create-context-circular-reference
|
||||
UVTEST += simple/test-writedouble
|
||||
UVTEST += simple/test-writefloat
|
||||
UVTEST += simple/test-writeint
|
||||
UVTEST += simple/test-writeuint
|
||||
UVTEST += simple/test-zerolengthbufferbug
|
||||
UVTEST += pummel/test-http-client-reconnect-bug
|
||||
UVTEST += pummel/test-http-upload-timeout
|
||||
UVTEST += pummel/test-net-many-clients
|
||||
UVTEST += pummel/test-net-pause
|
||||
UVTEST += pummel/test-net-pingpong-delay
|
||||
UVTEST += pummel/test-net-timeout
|
||||
UVTEST += pummel/test-timers
|
||||
UVTEST += pummel/test-timer-wrap
|
||||
UVTEST += pummel/test-timer-wrap2
|
||||
UVTEST += pummel/test-vm-memleak
|
||||
UVTEST += internet/test-dns
|
||||
UVTEST += simple/test-tls-client-abort
|
||||
UVTEST += simple/test-tls-client-verify
|
||||
UVTEST += simple/test-tls-connect
|
||||
#UVTEST += simple/test-tls-ext-key-usage # broken
|
||||
UVTEST += simple/test-tls-junk-closes-server
|
||||
UVTEST += simple/test-tls-npn-server-client
|
||||
UVTEST += simple/test-tls-request-timeout
|
||||
#UVTEST += simple/test-tls-securepair-client # broken
|
||||
UVTEST += simple/test-tls-securepair-server
|
||||
#UVTEST += simple/test-tls-server-verify # broken
|
||||
UVTEST += simple/test-tls-set-encoding
|
||||
|
||||
# child_process
|
||||
UVTEST += simple/test-child-process-exit-code
|
||||
UVTEST += simple/test-child-process-buffering
|
||||
UVTEST += simple/test-child-process-exec-cwd
|
||||
UVTEST += simple/test-child-process-cwd
|
||||
UVTEST += simple/test-child-process-env
|
||||
UVTEST += simple/test-child-process-stdin
|
||||
UVTEST += simple/test-child-process-ipc
|
||||
UVTEST += simple/test-child-process-deprecated-api
|
||||
|
||||
|
||||
test-uv: all
|
||||
NODE_USE_UV=1 python tools/test.py $(UVTEST)
|
||||
|
||||
test-uv-debug: all
|
||||
NODE_USE_UV=1 python tools/test.py --mode=debug $(UVTEST)
|
||||
|
||||
|
||||
apidoc_sources = $(wildcard doc/api/*.markdown)
|
||||
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html))
|
||||
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
|
||||
|
||||
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
|
||||
|
||||
website_files = \
|
||||
out/doc/index.html \
|
||||
out/doc/v0.4_announcement.html \
|
||||
out/doc/cla.html \
|
||||
out/doc/sh_main.js \
|
||||
out/doc/sh_javascript.min.js \
|
||||
out/doc/sh_vim-dark.css \
|
||||
out/doc/logo.png \
|
||||
out/doc/sponsored.png \
|
||||
out/doc/favicon.ico \
|
||||
out/doc/pipe.css
|
||||
|
||||
doc: out/Release/node $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs)
|
||||
|
||||
$(apidoc_dirs):
|
||||
mkdir -p $@
|
||||
|
||||
out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
|
||||
cp $< $@
|
||||
|
||||
out/doc/%: doc/%
|
||||
cp $< $@
|
||||
|
||||
out/doc/api/%.html: doc/api/%.markdown out/Release/node $(apidoc_dirs) $(apiassets) tools/doctool/doctool.js
|
||||
out/Release/node tools/doctool/doctool.js doc/template.html $< > $@
|
||||
|
||||
out/doc/%:
|
||||
|
||||
website-upload: doc
|
||||
scp -r out/doc/* $(web_root)
|
||||
|
||||
docopen: out/doc/api/all.html
|
||||
-google-chrome out/doc/api/all.html
|
||||
|
||||
docclean:
|
||||
-rm -rf out/doc
|
||||
|
||||
VERSION=$(shell git describe)
|
||||
TARNAME=node-$(VERSION)
|
||||
|
||||
#dist: doc/node.1 doc/api
|
||||
dist: doc
|
||||
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
|
||||
mkdir -p $(TARNAME)/doc
|
||||
cp doc/node.1 $(TARNAME)/doc/node.1
|
||||
cp -r out/doc/api $(TARNAME)/doc/api
|
||||
rm -rf $(TARNAME)/deps/v8/test # too big
|
||||
rm -rf $(TARNAME)/doc/logos # too big
|
||||
tar -cf $(TARNAME).tar $(TARNAME)
|
||||
rm -rf $(TARNAME)
|
||||
gzip -f -9 $(TARNAME).tar
|
||||
|
||||
bench:
|
||||
benchmark/http_simple_bench.sh
|
||||
|
||||
bench-idle:
|
||||
./node benchmark/idle_server.js &
|
||||
sleep 1
|
||||
./node benchmark/idle_clients.js &
|
||||
|
||||
jslint:
|
||||
PYTHONPATH=tools/closure_linter/ python tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ -r test/
|
||||
|
||||
cpplint:
|
||||
@python tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
|
||||
|
||||
lint: jslint cpplint
|
||||
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install all program staticlib dynamiclib test test-all website-upload
|
||||
80
benchmark/client_latency.js
Normal file
80
benchmark/client_latency.js
Normal file
@@ -0,0 +1,80 @@
|
||||
// first start node http_simple.js
|
||||
var http = require('http');
|
||||
|
||||
var latency = [];
|
||||
|
||||
var numRequests = parseInt(process.argv[2], 10) || 100;
|
||||
var maxSockets = parseInt(process.argv[3], 10) || 100;
|
||||
var runs = parseInt(process.argv[4], 10) || 100;
|
||||
var prefix = process.argv[5] || '';
|
||||
if (prefix) prefix += '_';
|
||||
var r = 0;
|
||||
|
||||
var port = parseInt(process.env.PORT, 10) || 8000;
|
||||
var host = process.env.HOST || '127.0.0.1';
|
||||
|
||||
http.globalAgent.maxSockets = maxSockets;
|
||||
|
||||
run();
|
||||
|
||||
function run() {
|
||||
if (r++ === runs) {
|
||||
return finish();
|
||||
}
|
||||
|
||||
// make numRequests in parallel
|
||||
// retain the order in which they are *made*. This requires trapping
|
||||
// each one in a closure, since otherwise, we'll of course end
|
||||
// up mostly sorting them in ascending order, since the cb from a
|
||||
// fast request will almost always be called before the cb from a
|
||||
// slow one.
|
||||
var c = numRequests;
|
||||
var lat = [];
|
||||
latency.push(lat);
|
||||
for (var i = 0; i < numRequests; i++) (function (i) {
|
||||
makeRequest(function(l) {
|
||||
lat[i] = l;
|
||||
c--;
|
||||
if (c === 0) run();
|
||||
});
|
||||
})(i);
|
||||
}
|
||||
|
||||
function makeRequest(cb) {
|
||||
var opts = { host: host,
|
||||
port: port,
|
||||
uri: 'http://'+host+':'+port+'/bytes/12',
|
||||
forever: true,
|
||||
path: '/bytes/12' };
|
||||
var pre = Date.now();
|
||||
var req = http.get(opts, function(res) {
|
||||
return cb(Date.now() - pre);
|
||||
});
|
||||
}
|
||||
|
||||
function finish() {
|
||||
var data = [];
|
||||
latency.forEach(function(run, i) {
|
||||
run.forEach(function(l, j) {
|
||||
data[j] = data[j] || [];
|
||||
data[j][i] = l;
|
||||
});
|
||||
});
|
||||
|
||||
data = data.map(function (l, i) {
|
||||
return l.join('\t')
|
||||
}).join('\n') + '\n';
|
||||
|
||||
var fname = prefix +
|
||||
'client_latency_' +
|
||||
numRequests + '_' +
|
||||
maxSockets + '_' +
|
||||
runs + '.tab';
|
||||
var path = require('path');
|
||||
fname = path.resolve(__dirname, '..', 'out', fname);
|
||||
fname = path.relative(process.cwd(), fname);
|
||||
require('fs').writeFile(fname, data, function(er) {
|
||||
if (er) throw er;
|
||||
console.log('written: %s', fname);
|
||||
});
|
||||
}
|
||||
72
benchmark/fs-readfile.js
Normal file
72
benchmark/fs-readfile.js
Normal file
@@ -0,0 +1,72 @@
|
||||
// Call fs.readFile over and over again really fast.
|
||||
// Then see how many times it got called.
|
||||
// Yes, this is a silly benchmark. Most benchmarks are silly.
|
||||
|
||||
var path = require('path');
|
||||
var filename = path.resolve(__dirname, 'http.sh');
|
||||
var fs = require('fs');
|
||||
var count = 0;
|
||||
var go = true;
|
||||
var len = -1;
|
||||
var assert = require('assert');
|
||||
|
||||
var concurrency = 1;
|
||||
var encoding = null;
|
||||
var time = 10;
|
||||
|
||||
for (var i = 2; i < process.argv.length; i++) {
|
||||
var arg = process.argv[i];
|
||||
if (arg.match(/^-e$/)) {
|
||||
encoding = process.argv[++i] || null;
|
||||
} else if (arg.match(/^-c$/)) {
|
||||
concurrency = ~~process.argv[++i];
|
||||
if (concurrency < 1) concurrency = 1;
|
||||
} else if (arg === '-t') {
|
||||
time = ~~process.argv[++i];
|
||||
if (time < 1) time = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
setTimeout(function() {
|
||||
go = false;
|
||||
}, time * 1000);
|
||||
|
||||
function round(n) {
|
||||
return Math.floor(n * 100) / 100;
|
||||
}
|
||||
|
||||
var start = process.hrtime();
|
||||
while (concurrency--) readFile();
|
||||
|
||||
function readFile() {
|
||||
if (!go) {
|
||||
process.stdout.write('\n');
|
||||
console.log('read the file %d times (higher is better)', count);
|
||||
var end = process.hrtime();
|
||||
var elapsed = [end[0] - start[0], end[1] - start[1]];
|
||||
var ns = elapsed[0] * 1E9 + elapsed[1];
|
||||
var nsper = round(ns / count);
|
||||
console.log('%d ns per read (lower is better)', nsper);
|
||||
var readsper = round(count / (ns / 1E9));
|
||||
console.log('%d reads per sec (higher is better)', readsper);
|
||||
process.exit(0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(count % 1000)) {
|
||||
process.stdout.write('.');
|
||||
}
|
||||
|
||||
if (encoding) fs.readFile(filename, encoding, then);
|
||||
else fs.readFile(filename, then);
|
||||
|
||||
function then(er, data) {
|
||||
assert.ifError(er);
|
||||
count++;
|
||||
// basic sanity test: we should get the same number of bytes each time.
|
||||
if (count === 1) len = data.length;
|
||||
else assert(len === data.length);
|
||||
readFile();
|
||||
}
|
||||
}
|
||||
12
benchmark/http.sh
Executable file
12
benchmark/http.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
cd "$(dirname "$(dirname $0)")"
|
||||
sudo sysctl -w net.inet.ip.portrange.first=12000
|
||||
sudo sysctl -w net.inet.tcp.msl=1000
|
||||
sudo sysctl -w kern.maxfiles=1000000 kern.maxfilesperproc=1000000
|
||||
ulimit -n 100000
|
||||
|
||||
./node benchmark/http_simple.js || exit 1 &
|
||||
sleep 1
|
||||
|
||||
ab -n 30000 -c 100 http://127.0.0.1:8000/${TYPE:-bytes}/${LENGTH:-1024} | grep Req
|
||||
killall node
|
||||
127
benchmark/http_bench.js
Normal file
127
benchmark/http_bench.js
Normal file
@@ -0,0 +1,127 @@
|
||||
// Copyright Joyent, Inc. and other Node contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
// persons to whom the Software is furnished to do so, subject to the
|
||||
// following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
var spawn = require('child_process').spawn;
|
||||
var cluster = require('cluster');
|
||||
var http = require('http');
|
||||
|
||||
var options = {
|
||||
mode: 'master',
|
||||
host: '127.0.0.1',
|
||||
port: 22344,
|
||||
path: '/',
|
||||
servers: 1,
|
||||
clients: 1
|
||||
};
|
||||
|
||||
for (var i = 2; i < process.argv.length; ++i) {
|
||||
var args = process.argv[i].split('=', 2);
|
||||
var key = args[0];
|
||||
var val = args[1];
|
||||
options[key] = val;
|
||||
}
|
||||
|
||||
switch (options.mode) {
|
||||
case 'master': startMaster(); break;
|
||||
case 'server': startServer(); break;
|
||||
case 'client': startClient(); break;
|
||||
default: throw new Error('Bad mode: ' + options.mode);
|
||||
}
|
||||
|
||||
process.title = 'http_bench[' + options.mode + ']';
|
||||
|
||||
// monkey-patch the log functions so they include name + pid
|
||||
console.log = patch(console.log);
|
||||
console.trace = patch(console.trace);
|
||||
console.error = patch(console.error);
|
||||
|
||||
function patch(fun) {
|
||||
var prefix = process.title + '[' + process.pid + '] ';
|
||||
return function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
args[0] = prefix + args[0];
|
||||
return fun.apply(console, args);
|
||||
};
|
||||
}
|
||||
|
||||
function startMaster() {
|
||||
if (!cluster.isMaster) return startServer();
|
||||
|
||||
for (var i = ~~options.servers; i > 0; --i) cluster.fork();
|
||||
|
||||
for (var i = ~~options.clients; i > 0; --i) {
|
||||
var cp = spawn(process.execPath, [__filename, 'mode=client']);
|
||||
cp.stdout.pipe(process.stdout);
|
||||
cp.stderr.pipe(process.stderr);
|
||||
}
|
||||
}
|
||||
|
||||
function startServer() {
|
||||
http.createServer(onRequest).listen(options.port, options.host);
|
||||
|
||||
var body = Array(1024).join('x');
|
||||
var headers = {'Content-Length': '' + body.length};
|
||||
|
||||
function onRequest(req, res) {
|
||||
req.on('error', onError);
|
||||
res.on('error', onError);
|
||||
res.writeHead(200, headers);
|
||||
res.end(body);
|
||||
}
|
||||
|
||||
function onError(err) {
|
||||
console.error(err.stack);
|
||||
}
|
||||
}
|
||||
|
||||
function startClient() {
|
||||
// send off a bunch of concurrent requests
|
||||
// TODO make configurable
|
||||
sendRequest();
|
||||
sendRequest();
|
||||
|
||||
function sendRequest() {
|
||||
var req = http.request(options, onConnection);
|
||||
req.on('error', onError);
|
||||
req.end();
|
||||
}
|
||||
|
||||
// add a little back-off to prevent EADDRNOTAVAIL errors, it's pretty easy
|
||||
// to exhaust the available port range
|
||||
function relaxedSendRequest() {
|
||||
setTimeout(sendRequest, 1);
|
||||
}
|
||||
|
||||
function onConnection(res) {
|
||||
res.on('error', onError);
|
||||
res.on('data', onData);
|
||||
res.on('end', relaxedSendRequest);
|
||||
}
|
||||
|
||||
function onError(err) {
|
||||
console.error(err.stack);
|
||||
relaxedSendRequest();
|
||||
}
|
||||
|
||||
function onData(data) {
|
||||
// this space intentionally left blank
|
||||
}
|
||||
}
|
||||
13
benchmark/http_server_lag.js
Normal file
13
benchmark/http_server_lag.js
Normal file
@@ -0,0 +1,13 @@
|
||||
var http = require('http');
|
||||
var port = parseInt(process.env.PORT, 10) || 8000;
|
||||
var defaultLag = parseInt(process.argv[2], 10) || 100;
|
||||
|
||||
http.createServer(function(req, res) {
|
||||
res.writeHead(200, { 'content-type': 'text/plain',
|
||||
'content-length': '2' });
|
||||
|
||||
var lag = parseInt(req.url.split("/").pop(), 10) || defaultLag;
|
||||
setTimeout(function() {
|
||||
res.end('ok');
|
||||
}, lag);
|
||||
}).listen(port, 'localhost');
|
||||
@@ -1,75 +1,99 @@
|
||||
path = require("path");
|
||||
exec = require("child_process").exec;
|
||||
http = require("http");
|
||||
var path = require('path'),
|
||||
exec = require('child_process').exec,
|
||||
http = require('http');
|
||||
|
||||
port = parseInt(process.env.PORT || 8000);
|
||||
var port = parseInt(process.env.PORT || 8000);
|
||||
|
||||
console.log('pid ' + process.pid);
|
||||
|
||||
fixed = ""
|
||||
for (var i = 0; i < 20*1024; i++) {
|
||||
fixed += "C";
|
||||
var fixed = makeString(20 * 1024, 'C'),
|
||||
storedBytes = {},
|
||||
storedBuffer = {},
|
||||
storedUnicode = {};
|
||||
|
||||
var useDomains = process.env.NODE_USE_DOMAINS;
|
||||
|
||||
// set up one global domain.
|
||||
if (useDomains) {
|
||||
var domain = require('domain');
|
||||
var gdom = domain.create();
|
||||
gdom.on('error', function(er) {
|
||||
console.log('Error on global domain', er);
|
||||
throw er;
|
||||
});
|
||||
gdom.enter();
|
||||
}
|
||||
|
||||
stored = {};
|
||||
storedBuffer = {};
|
||||
|
||||
var server = http.createServer(function (req, res) {
|
||||
var commands = req.url.split("/");
|
||||
if (useDomains) {
|
||||
var dom = domain.create();
|
||||
dom.add(req);
|
||||
dom.add(res);
|
||||
}
|
||||
|
||||
var commands = req.url.split('/');
|
||||
var command = commands[1];
|
||||
var body = "";
|
||||
var body = '';
|
||||
var arg = commands[2];
|
||||
var n_chunks = parseInt(commands[3], 10);
|
||||
var status = 200;
|
||||
|
||||
if (command == "bytes") {
|
||||
var n = parseInt(arg, 10)
|
||||
if (command == 'bytes') {
|
||||
var n = ~~arg;
|
||||
if (n <= 0)
|
||||
throw "bytes called with n <= 0"
|
||||
if (stored[n] === undefined) {
|
||||
console.log("create stored[n]");
|
||||
stored[n] = "";
|
||||
for (var i = 0; i < n; i++) {
|
||||
stored[n] += "C"
|
||||
}
|
||||
throw new Error('bytes called with n <= 0')
|
||||
if (storedBytes[n] === undefined) {
|
||||
console.log('create storedBytes[n]');
|
||||
storedBytes[n] = makeString(n, 'C');
|
||||
}
|
||||
body = stored[n];
|
||||
body = storedBytes[n];
|
||||
|
||||
} else if (command == "buffer") {
|
||||
var n = parseInt(arg, 10)
|
||||
if (n <= 0) throw new Error("bytes called with n <= 0");
|
||||
} else if (command == 'buffer') {
|
||||
var n = ~~arg;
|
||||
if (n <= 0)
|
||||
throw new Error('buffer called with n <= 0');
|
||||
if (storedBuffer[n] === undefined) {
|
||||
console.log("create storedBuffer[n]");
|
||||
console.log('create storedBuffer[n]');
|
||||
storedBuffer[n] = new Buffer(n);
|
||||
for (var i = 0; i < n; i++) {
|
||||
storedBuffer[n][i] = "C".charCodeAt(0);
|
||||
storedBuffer[n][i] = 'C'.charCodeAt(0);
|
||||
}
|
||||
}
|
||||
body = storedBuffer[n];
|
||||
|
||||
} else if (command == "quit") {
|
||||
res.connection.server.close();
|
||||
body = "quitting";
|
||||
} else if (command == 'unicode') {
|
||||
var n = ~~arg;
|
||||
if (n <= 0)
|
||||
throw new Error('unicode called with n <= 0');
|
||||
if (storedUnicode[n] === undefined) {
|
||||
console.log('create storedUnicode[n]');
|
||||
storedUnicode[n] = makeString(n, '\u263A');
|
||||
}
|
||||
body = storedUnicode[n];
|
||||
|
||||
} else if (command == "fixed") {
|
||||
} else if (command == 'quit') {
|
||||
res.connection.server.close();
|
||||
body = 'quitting';
|
||||
|
||||
} else if (command == 'fixed') {
|
||||
body = fixed;
|
||||
|
||||
} else if (command == "echo") {
|
||||
res.writeHead(200, { "Content-Type": "text/plain",
|
||||
"Transfer-Encoding": "chunked" });
|
||||
} else if (command == 'echo') {
|
||||
res.writeHead(200, { 'Content-Type': 'text/plain',
|
||||
'Transfer-Encoding': 'chunked' });
|
||||
req.pipe(res);
|
||||
return;
|
||||
|
||||
} else {
|
||||
status = 404;
|
||||
body = "not found\n";
|
||||
body = 'not found\n';
|
||||
}
|
||||
|
||||
// example: http://localhost:port/bytes/512/4
|
||||
// sends a 512 byte body in 4 chunks of 128 bytes
|
||||
if (n_chunks > 0) {
|
||||
res.writeHead(status, { "Content-Type": "text/plain",
|
||||
"Transfer-Encoding": "chunked" });
|
||||
res.writeHead(status, { 'Content-Type': 'text/plain',
|
||||
'Transfer-Encoding': 'chunked' });
|
||||
// send body in chunks
|
||||
var len = body.length;
|
||||
var step = ~~(len / n_chunks) || len;
|
||||
@@ -82,13 +106,20 @@ var server = http.createServer(function (req, res) {
|
||||
} else {
|
||||
var content_length = body.length.toString();
|
||||
|
||||
res.writeHead(status, { "Content-Type": "text/plain",
|
||||
"Content-Length": content_length });
|
||||
res.writeHead(status, { 'Content-Type': 'text/plain',
|
||||
'Content-Length': content_length });
|
||||
res.end(body);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function makeString(size, c) {
|
||||
var s = '';
|
||||
while (s.length < size) {
|
||||
s += c;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
server.listen(port, function () {
|
||||
console.log('Listening at http://127.0.0.1:'+port+'/');
|
||||
});
|
||||
|
||||
128
benchmark/http_simple_auto.js
Normal file
128
benchmark/http_simple_auto.js
Normal file
@@ -0,0 +1,128 @@
|
||||
//
|
||||
// Usage:
|
||||
// node benchmark/http_simple_auto.js <args> <target>
|
||||
//
|
||||
// Where:
|
||||
// <args> Arguments to pass to `ab`.
|
||||
// <target> Target to benchmark, e.g. `bytes/1024` or `buffer/8192`.
|
||||
//
|
||||
|
||||
var path = require("path");
|
||||
var http = require("http");
|
||||
var spawn = require("child_process").spawn;
|
||||
|
||||
var port = parseInt(process.env.PORT || 8000);
|
||||
|
||||
var fixed = ""
|
||||
for (var i = 0; i < 20*1024; i++) {
|
||||
fixed += "C";
|
||||
}
|
||||
|
||||
var stored = {};
|
||||
var storedBuffer = {};
|
||||
|
||||
var server = http.createServer(function (req, res) {
|
||||
var commands = req.url.split("/");
|
||||
var command = commands[1];
|
||||
var body = "";
|
||||
var arg = commands[2];
|
||||
var n_chunks = parseInt(commands[3], 10);
|
||||
var status = 200;
|
||||
|
||||
if (command == "bytes") {
|
||||
var n = parseInt(arg, 10)
|
||||
if (n <= 0)
|
||||
throw "bytes called with n <= 0"
|
||||
if (stored[n] === undefined) {
|
||||
stored[n] = "";
|
||||
for (var i = 0; i < n; i++) {
|
||||
stored[n] += "C"
|
||||
}
|
||||
}
|
||||
body = stored[n];
|
||||
|
||||
} else if (command == "buffer") {
|
||||
var n = parseInt(arg, 10)
|
||||
if (n <= 0) throw new Error("bytes called with n <= 0");
|
||||
if (storedBuffer[n] === undefined) {
|
||||
storedBuffer[n] = new Buffer(n);
|
||||
for (var i = 0; i < n; i++) {
|
||||
storedBuffer[n][i] = "C".charCodeAt(0);
|
||||
}
|
||||
}
|
||||
body = storedBuffer[n];
|
||||
|
||||
} else if (command == "quit") {
|
||||
res.connection.server.close();
|
||||
body = "quitting";
|
||||
|
||||
} else if (command == "fixed") {
|
||||
body = fixed;
|
||||
|
||||
} else if (command == "echo") {
|
||||
res.writeHead(200, { "Content-Type": "text/plain",
|
||||
"Transfer-Encoding": "chunked" });
|
||||
req.pipe(res);
|
||||
return;
|
||||
|
||||
} else {
|
||||
status = 404;
|
||||
body = "not found\n";
|
||||
}
|
||||
|
||||
// example: http://localhost:port/bytes/512/4
|
||||
// sends a 512 byte body in 4 chunks of 128 bytes
|
||||
if (n_chunks > 0) {
|
||||
res.writeHead(status, { "Content-Type": "text/plain",
|
||||
"Transfer-Encoding": "chunked" });
|
||||
// send body in chunks
|
||||
var len = body.length;
|
||||
var step = ~~(len / n_chunks) || len;
|
||||
|
||||
for (var i = 0; i < len; i += step) {
|
||||
res.write(body.slice(i, i + step));
|
||||
}
|
||||
|
||||
res.end();
|
||||
} else {
|
||||
var content_length = body.length.toString();
|
||||
|
||||
res.writeHead(status, { "Content-Type": "text/plain",
|
||||
"Content-Length": content_length });
|
||||
res.end(body);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
server.listen(port, function () {
|
||||
var url = 'http://127.0.0.1:' + port + '/';
|
||||
|
||||
var n = process.argv.length - 1;
|
||||
process.argv[n] = url + process.argv[n];
|
||||
|
||||
var cp = spawn('ab', process.argv.slice(2));
|
||||
cp.stdout.pipe(process.stdout);
|
||||
cp.stderr.pipe(process.stderr);
|
||||
cp.on('exit', function() {
|
||||
server.close();
|
||||
process.nextTick(dump_mm_stats);
|
||||
});
|
||||
});
|
||||
|
||||
function dump_mm_stats() {
|
||||
if (typeof gc != 'function') return;
|
||||
|
||||
var before = process.memoryUsage();
|
||||
for (var i = 0; i < 10; ++i) gc();
|
||||
var after = process.memoryUsage();
|
||||
setTimeout(print_stats, 250); // give GC time to settle
|
||||
|
||||
function print_stats() {
|
||||
console.log('\nBEFORE / AFTER GC');
|
||||
['rss', 'heapTotal', 'heapUsed'].forEach(function(key) {
|
||||
var a = before[key] / (1024 * 1024);
|
||||
var b = after[key] / (1024 * 1024);
|
||||
console.log('%sM / %sM %s', a.toFixed(2), b.toFixed(2), key);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -62,7 +62,7 @@ function readtest(size, bsize) {
|
||||
|
||||
function wt(tsize, bsize, done) {
|
||||
var start = Date.now();
|
||||
s = writetest(tsize, bsizes[0]);
|
||||
s = writetest(tsize, bsize);
|
||||
s.addListener('close', function() {
|
||||
var end = Date.now();
|
||||
var diff = end - start;
|
||||
@@ -73,7 +73,7 @@ function wt(tsize, bsize, done) {
|
||||
|
||||
function rt(tsize, bsize, done) {
|
||||
var start = Date.now();
|
||||
s = readtest(tsize, bsizes[0]);
|
||||
s = readtest(tsize, bsize);
|
||||
s.addListener('close', function() {
|
||||
var end = Date.now();
|
||||
var diff = end - start;
|
||||
|
||||
63
benchmark/tls-fragmentation.js
Normal file
63
benchmark/tls-fragmentation.js
Normal file
@@ -0,0 +1,63 @@
|
||||
// Copyright Joyent, Inc. and other Node contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
// persons to whom the Software is furnished to do so, subject to the
|
||||
// following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
if (!process.versions.openssl) {
|
||||
console.error('Skipping because node compiled without OpenSSL.');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
var common = require('../common');
|
||||
var assert = require('assert');
|
||||
var tls = require('tls');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
var options = {
|
||||
key: fs.readFileSync(path.join(common.fixturesDir, 'test_key.pem')),
|
||||
cert: fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem'))
|
||||
};
|
||||
|
||||
var fragment = 'fr';
|
||||
var dataSize = 1024 * 1024;
|
||||
var sent = 0;
|
||||
var received = 0;
|
||||
|
||||
var server = tls.createServer(options, function (stream) {
|
||||
for (sent = 0; sent <= dataSize; sent += fragment.length) {
|
||||
stream.write(fragment);
|
||||
}
|
||||
stream.end();
|
||||
});
|
||||
|
||||
server.listen(common.PORT, function () {
|
||||
var client = tls.connect(common.PORT, function () {
|
||||
client.on('data', function (data) {
|
||||
received += data.length;
|
||||
});
|
||||
client.on('end', function () {
|
||||
server.close();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
process.on('exit', function () {
|
||||
assert.equal(sent, received);
|
||||
});
|
||||
76
common.gypi
76
common.gypi
@@ -1,13 +1,24 @@
|
||||
{
|
||||
'variables': {
|
||||
'node_no_strict_aliasing%': 0, # turn off -fstrict-aliasing
|
||||
'visibility%': 'hidden', # V8's visibility setting
|
||||
'target_arch%': 'ia32', # set v8's target architecture
|
||||
'host_arch%': 'ia32', # set v8's host architecture
|
||||
'want_separate_host_toolset': 0, # V8 should not build target and host
|
||||
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
|
||||
'component%': 'static_library', # NB. these names match with what V8 expects
|
||||
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
|
||||
|
||||
# Enable V8's post-mortem debugging only on unix flavors.
|
||||
'conditions': [
|
||||
['OS != "win"', {
|
||||
'v8_postmortem_support': 'true'
|
||||
}]
|
||||
],
|
||||
},
|
||||
|
||||
'target_defaults': {
|
||||
'default_configuration': 'Debug',
|
||||
'default_configuration': 'Release',
|
||||
'configurations': {
|
||||
'Debug': {
|
||||
'defines': [ 'DEBUG', '_DEBUG' ],
|
||||
@@ -19,13 +30,7 @@
|
||||
],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
'target_conditions': [
|
||||
['library=="static_library"', {
|
||||
'RuntimeLibrary': 1, # static debug
|
||||
}, {
|
||||
'RuntimeLibrary': 3, # DLL debug
|
||||
}],
|
||||
],
|
||||
'RuntimeLibrary': 1, # static debug
|
||||
'Optimization': 0, # /Od, no optimization
|
||||
'MinimalRebuild': 'false',
|
||||
'OmitFramePointers': 'false',
|
||||
@@ -37,22 +42,23 @@
|
||||
},
|
||||
},
|
||||
'Release': {
|
||||
'defines': [ 'NDEBUG' ],
|
||||
'cflags': [ '-O3', '-fomit-frame-pointer', '-fdata-sections', '-ffunction-sections' ],
|
||||
'cflags': [ '-O3', '-fdata-sections', '-ffunction-sections' ],
|
||||
'conditions': [
|
||||
['target_arch=="x64"', {
|
||||
'msvs_configuration_platform': 'x64',
|
||||
}],
|
||||
['OS=="solaris"', {
|
||||
'cflags': [ '-fno-omit-frame-pointer' ],
|
||||
# pull in V8's postmortem metadata
|
||||
'ldflags': [ '-Wl,-z,allextract' ]
|
||||
}],
|
||||
['node_no_strict_aliasing==1', {
|
||||
'cflags': [ '-fno-strict-aliasing' ],
|
||||
}],
|
||||
],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
'target_conditions': [
|
||||
['library=="static_library"', {
|
||||
'RuntimeLibrary': 0, # static release
|
||||
}, {
|
||||
'RuntimeLibrary': 2, # debug release
|
||||
}],
|
||||
],
|
||||
'RuntimeLibrary': 0, # static release
|
||||
'Optimization': 3, # /Ox, full optimization
|
||||
'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
|
||||
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
|
||||
@@ -60,6 +66,8 @@
|
||||
'OmitFramePointers': 'true',
|
||||
'EnableFunctionLevelLinking': 'true',
|
||||
'EnableIntrinsicFunctions': 'true',
|
||||
'RuntimeTypeInfo': 'false',
|
||||
'ExceptionHandling': '0',
|
||||
'AdditionalOptions': [
|
||||
'/MP', # compile across multiple CPUs
|
||||
],
|
||||
@@ -122,6 +130,11 @@
|
||||
'BUILDING_V8_SHARED=1',
|
||||
'BUILDING_UV_SHARED=1',
|
||||
],
|
||||
}, {
|
||||
'defines': [
|
||||
'_LARGEFILE_SOURCE',
|
||||
'_FILE_OFFSET_BITS=64',
|
||||
],
|
||||
}],
|
||||
[ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
|
||||
'cflags': [ '-Wall', '-pthread', ],
|
||||
@@ -132,15 +145,23 @@
|
||||
'cflags': [ '-m32' ],
|
||||
'ldflags': [ '-m32' ],
|
||||
}],
|
||||
[ 'OS=="linux"', {
|
||||
'cflags': [ '-ansi' ],
|
||||
[ 'target_arch=="x64"', {
|
||||
'cflags': [ '-m64' ],
|
||||
'ldflags': [ '-m64' ],
|
||||
}],
|
||||
[ 'visibility=="hidden"', {
|
||||
'cflags': [ '-fvisibility=hidden' ],
|
||||
[ 'OS=="linux"', {
|
||||
'ldflags': [ '-rdynamic' ],
|
||||
}],
|
||||
[ 'OS=="solaris"', {
|
||||
'cflags': [ '-pthreads' ],
|
||||
'ldflags': [ '-pthreads' ],
|
||||
'cflags!': [ '-pthread' ],
|
||||
'ldflags!': [ '-pthread' ],
|
||||
}],
|
||||
],
|
||||
}],
|
||||
['OS=="mac"', {
|
||||
'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
|
||||
'xcode_settings': {
|
||||
'ALWAYS_SEARCH_USER_PATHS': 'NO',
|
||||
'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
|
||||
@@ -149,14 +170,11 @@
|
||||
'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
|
||||
'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
|
||||
'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
|
||||
# GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
|
||||
'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
|
||||
'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
|
||||
'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
|
||||
'GCC_VERSION': '4.2',
|
||||
'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
|
||||
'MACOSX_DEPLOYMENT_TARGET': '10.4', # -mmacosx-version-min=10.4
|
||||
'PREBINDING': 'NO', # No -Wl,-prebind
|
||||
'MACOSX_DEPLOYMENT_TARGET': '10.5', # -mmacosx-version-min=10.5
|
||||
'USE_HEADERMAP': 'NO',
|
||||
'OTHER_CFLAGS': [
|
||||
'-fno-strict-aliasing',
|
||||
@@ -173,6 +191,14 @@
|
||||
'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
|
||||
}],
|
||||
],
|
||||
'conditions': [
|
||||
['target_arch=="ia32"', {
|
||||
'xcode_settings': {'ARCHS': ['i386']},
|
||||
}],
|
||||
['target_arch=="x64"', {
|
||||
'xcode_settings': {'ARCHS': ['x86_64']},
|
||||
}],
|
||||
],
|
||||
}],
|
||||
],
|
||||
}
|
||||
|
||||
436
configure
vendored
436
configure
vendored
@@ -1,25 +1,423 @@
|
||||
#! /bin/sh
|
||||
#!/usr/bin/env python
|
||||
import optparse
|
||||
import os
|
||||
import pprint
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
# v8 doesn't like ccache
|
||||
if [ ! -z "`echo $CC | grep ccache`" ]; then
|
||||
echo "Error: V8 doesn't like ccache. Please set your CC env var to 'gcc'"
|
||||
echo " (ba)sh: export CC=gcc"
|
||||
exit 1
|
||||
fi
|
||||
CC = os.environ.get('CC', 'cc')
|
||||
|
||||
if [ -z "$PYTHON" ]; then
|
||||
PYTHON=python
|
||||
fi
|
||||
root_dir = os.path.dirname(__file__)
|
||||
sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))
|
||||
|
||||
CUR_DIR=$PWD
|
||||
# parse our options
|
||||
parser = optparse.OptionParser()
|
||||
|
||||
#possible relative path
|
||||
WORKINGDIR=`dirname $0`
|
||||
cd "$WORKINGDIR"
|
||||
#abs path
|
||||
WORKINGDIR=`pwd`
|
||||
cd "$CUR_DIR"
|
||||
parser.add_option("--debug",
|
||||
action="store_true",
|
||||
dest="debug",
|
||||
help="Also build debug build")
|
||||
|
||||
"$PYTHON" "${WORKINGDIR}/tools/waf-light" --jobs=1 configure $*
|
||||
parser.add_option("--prefix",
|
||||
action="store",
|
||||
dest="prefix",
|
||||
help="Select the install prefix (defaults to /usr/local)")
|
||||
|
||||
exit $?
|
||||
parser.add_option("--without-npm",
|
||||
action="store_true",
|
||||
dest="without_npm",
|
||||
help="Don\'t install the bundled npm package manager")
|
||||
|
||||
parser.add_option("--without-waf",
|
||||
action="store_true",
|
||||
dest="without_waf",
|
||||
help="Don\'t install node-waf")
|
||||
|
||||
parser.add_option("--without-ssl",
|
||||
action="store_true",
|
||||
dest="without_ssl",
|
||||
help="Build without SSL")
|
||||
|
||||
parser.add_option("--without-snapshot",
|
||||
action="store_true",
|
||||
dest="without_snapshot",
|
||||
help="Build without snapshotting V8 libraries. You might want to set"
|
||||
" this for cross-compiling. [Default: False]")
|
||||
|
||||
parser.add_option("--shared-v8",
|
||||
action="store_true",
|
||||
dest="shared_v8",
|
||||
help="Link to a shared V8 DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-v8-includes",
|
||||
action="store",
|
||||
dest="shared_v8_includes",
|
||||
help="Directory containing V8 header files")
|
||||
|
||||
parser.add_option("--shared-v8-libpath",
|
||||
action="store",
|
||||
dest="shared_v8_libpath",
|
||||
help="A directory to search for the shared V8 DLL")
|
||||
|
||||
parser.add_option("--shared-v8-libname",
|
||||
action="store",
|
||||
dest="shared_v8_libname",
|
||||
help="Alternative lib name to link to (default: 'v8')")
|
||||
|
||||
parser.add_option("--shared-openssl",
|
||||
action="store_true",
|
||||
dest="shared_openssl",
|
||||
help="Link to a shared OpenSSl DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-openssl-includes",
|
||||
action="store",
|
||||
dest="shared_openssl_includes",
|
||||
help="Directory containing OpenSSL header files")
|
||||
|
||||
parser.add_option("--shared-openssl-libpath",
|
||||
action="store",
|
||||
dest="shared_openssl_libpath",
|
||||
help="A directory to search for the shared OpenSSL DLLs")
|
||||
|
||||
parser.add_option("--shared-openssl-libname",
|
||||
action="store",
|
||||
dest="shared_openssl_libname",
|
||||
help="Alternative lib name to link to (default: 'crypto,ssl')")
|
||||
|
||||
# deprecated
|
||||
parser.add_option("--openssl-use-sys",
|
||||
action="store_true",
|
||||
dest="shared_openssl",
|
||||
help=optparse.SUPPRESS_HELP)
|
||||
|
||||
# deprecated
|
||||
parser.add_option("--openssl-includes",
|
||||
action="store",
|
||||
dest="shared_openssl_includes",
|
||||
help=optparse.SUPPRESS_HELP)
|
||||
|
||||
# deprecated
|
||||
parser.add_option("--openssl-libpath",
|
||||
action="store",
|
||||
dest="shared_openssl_libpath",
|
||||
help=optparse.SUPPRESS_HELP)
|
||||
|
||||
parser.add_option("--no-ssl2",
|
||||
action="store_true",
|
||||
dest="no_ssl2",
|
||||
help="Disable OpenSSL v2")
|
||||
|
||||
parser.add_option("--shared-zlib",
|
||||
action="store_true",
|
||||
dest="shared_zlib",
|
||||
help="Link to a shared zlib DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-zlib-includes",
|
||||
action="store",
|
||||
dest="shared_zlib_includes",
|
||||
help="Directory containing zlib header files")
|
||||
|
||||
parser.add_option("--shared-zlib-libpath",
|
||||
action="store",
|
||||
dest="shared_zlib_libpath",
|
||||
help="A directory to search for the shared zlib DLL")
|
||||
|
||||
parser.add_option("--shared-zlib-libname",
|
||||
action="store",
|
||||
dest="shared_zlib_libname",
|
||||
help="Alternative lib name to link to (default: 'z')")
|
||||
|
||||
parser.add_option("--with-dtrace",
|
||||
action="store_true",
|
||||
dest="with_dtrace",
|
||||
help="Build with DTrace (default is true on supported systems)")
|
||||
|
||||
parser.add_option("--without-dtrace",
|
||||
action="store_true",
|
||||
dest="without_dtrace",
|
||||
help="Build without DTrace")
|
||||
|
||||
parser.add_option("--with-etw",
|
||||
action="store_true",
|
||||
dest="with_etw",
|
||||
help="Build with ETW (default is true on Windows)")
|
||||
|
||||
parser.add_option("--without-etw",
|
||||
action="store_true",
|
||||
dest="without_etw",
|
||||
help="Build without ETW")
|
||||
|
||||
# CHECKME does this still work with recent releases of V8?
|
||||
parser.add_option("--gdb",
|
||||
action="store_true",
|
||||
dest="gdb",
|
||||
help="add gdb support")
|
||||
|
||||
parser.add_option("--dest-cpu",
|
||||
action="store",
|
||||
dest="dest_cpu",
|
||||
help="CPU architecture to build for. Valid values are: arm, ia32, x64")
|
||||
|
||||
parser.add_option("--no-ifaddrs",
|
||||
action="store_true",
|
||||
dest="no_ifaddrs",
|
||||
help="Use on deprecated SunOS systems that do not support ifaddrs.h")
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
|
||||
def b(value):
|
||||
"""Returns the string 'true' if value is truthy, 'false' otherwise."""
|
||||
if value:
|
||||
return 'true'
|
||||
else:
|
||||
return 'false'
|
||||
|
||||
|
||||
def pkg_config(pkg):
|
||||
cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
|
||||
libs = cmd.readline().strip()
|
||||
ret = cmd.close()
|
||||
if (ret): return None
|
||||
|
||||
cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
|
||||
cflags = cmd.readline().strip()
|
||||
ret = cmd.close()
|
||||
if (ret): return None
|
||||
|
||||
return (libs, cflags)
|
||||
|
||||
|
||||
def host_arch_cc():
|
||||
"""Host architecture check using the CC command."""
|
||||
|
||||
try:
|
||||
p = subprocess.Popen(CC.split() + ['-dM', '-E', '-'],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
except OSError:
|
||||
print '''Node.js configure error: No acceptable C compiler found!
|
||||
|
||||
Please make sure you have a C compiler installed on your system and/or
|
||||
consider adjusting the CC environment variable if you installed
|
||||
it in a non-standard prefix.
|
||||
'''
|
||||
sys.exit()
|
||||
|
||||
p.stdin.write('\n')
|
||||
out = p.communicate()[0]
|
||||
|
||||
out = str(out).split('\n')
|
||||
|
||||
k = {}
|
||||
for line in out:
|
||||
import shlex
|
||||
lst = shlex.split(line)
|
||||
if len(lst) > 2:
|
||||
key = lst[1]
|
||||
val = lst[2]
|
||||
k[key] = val
|
||||
|
||||
matchup = {
|
||||
'__x86_64__' : 'x64',
|
||||
'__i386__' : 'ia32',
|
||||
'__arm__' : 'arm',
|
||||
}
|
||||
|
||||
rtn = 'ia32' # default
|
||||
|
||||
for i in matchup:
|
||||
if i in k and k[i] != '0':
|
||||
rtn = matchup[i]
|
||||
break
|
||||
|
||||
return rtn
|
||||
|
||||
|
||||
def host_arch_win():
|
||||
"""Host architecture check using environ vars (better way to do this?)"""
|
||||
|
||||
arch = os.environ.get('PROCESSOR_ARCHITECTURE', 'x86')
|
||||
|
||||
matchup = {
|
||||
'AMD64' : 'x64',
|
||||
'x86' : 'ia32',
|
||||
'arm' : 'arm',
|
||||
}
|
||||
|
||||
return matchup.get(arch, 'ia32')
|
||||
|
||||
|
||||
def host_arch():
|
||||
"""Host architecture. One of arm, ia32 or x64."""
|
||||
if os.name == 'nt':
|
||||
arch = host_arch_win()
|
||||
else:
|
||||
arch = host_arch_cc()
|
||||
return arch
|
||||
|
||||
|
||||
def target_arch():
|
||||
return host_arch()
|
||||
|
||||
|
||||
def compiler_version():
|
||||
try:
|
||||
proc = subprocess.Popen(CC.split() + ['--version'], stdout=subprocess.PIPE)
|
||||
except WindowsError:
|
||||
return (0, False)
|
||||
|
||||
is_clang = 'clang' in proc.communicate()[0].split('\n')[0]
|
||||
|
||||
proc = subprocess.Popen(CC.split() + ['-dumpversion'], stdout=subprocess.PIPE)
|
||||
version = tuple(map(int, proc.communicate()[0].split('.')))
|
||||
|
||||
return (version, is_clang)
|
||||
|
||||
|
||||
def configure_node(o):
|
||||
# TODO add gdb
|
||||
o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
|
||||
o['variables']['node_install_npm'] = b(not options.without_npm)
|
||||
o['variables']['node_install_waf'] = b(not options.without_waf)
|
||||
o['variables']['host_arch'] = host_arch()
|
||||
o['variables']['target_arch'] = options.dest_cpu or target_arch()
|
||||
o['default_configuration'] = 'Debug' if options.debug else 'Release'
|
||||
|
||||
cc_version, is_clang = compiler_version()
|
||||
|
||||
# turn off strict aliasing if gcc < 4.6.0 unless it's llvm-gcc
|
||||
# see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45883
|
||||
# see http://code.google.com/p/v8/issues/detail?id=884
|
||||
no_strict_aliasing = int(not(is_clang or cc_version >= (4,6,0)))
|
||||
o['variables']['v8_no_strict_aliasing'] = no_strict_aliasing
|
||||
o['variables']['node_no_strict_aliasing'] = no_strict_aliasing
|
||||
|
||||
# clang has always supported -fvisibility=hidden, right?
|
||||
if not is_clang and cc_version < (4,0,0):
|
||||
o['variables']['visibility'] = ''
|
||||
|
||||
# By default, enable DTrace on SunOS systems. Don't allow it on other
|
||||
# systems, since it won't work. (The MacOS build process is different than
|
||||
# SunOS, and we haven't implemented it.)
|
||||
if sys.platform.startswith('sunos'):
|
||||
o['variables']['node_use_dtrace'] = b(not options.without_dtrace);
|
||||
# Strict aliasing causes problems with the V8 snapshots on SunOS
|
||||
o['variables']['strict_aliasing'] = b(False);
|
||||
elif b(options.with_dtrace) == 'true':
|
||||
raise Exception('DTrace is currently only supported on SunOS systems.')
|
||||
else:
|
||||
o['variables']['node_use_dtrace'] = 'false'
|
||||
|
||||
if options.no_ifaddrs:
|
||||
o['defines'] += ['SUNOS_NO_IFADDRS']
|
||||
|
||||
# By default, enable ETW on Windows.
|
||||
if sys.platform.startswith('win32'):
|
||||
o['variables']['node_use_etw'] = b(not options.without_etw);
|
||||
elif b(options.with_etw) == 'true':
|
||||
raise Exception('ETW is only supported on Windows.')
|
||||
else:
|
||||
o['variables']['node_use_etw'] = 'false'
|
||||
|
||||
|
||||
def configure_libz(o):
|
||||
o['variables']['node_shared_zlib'] = b(options.shared_zlib)
|
||||
|
||||
# assume shared_zlib if one of these is set?
|
||||
if options.shared_zlib_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_zlib_libpath]
|
||||
if options.shared_zlib_libname:
|
||||
o['libraries'] += ['-l%s' % options.shared_zlib_libname]
|
||||
elif options.shared_zlib:
|
||||
o['libraries'] += ['-lz']
|
||||
if options.shared_zlib_includes:
|
||||
o['include_dirs'] += [options.shared_zlib_includes]
|
||||
|
||||
|
||||
def configure_v8(o):
|
||||
o['variables']['v8_use_snapshot'] = b(not options.without_snapshot)
|
||||
o['variables']['node_shared_v8'] = b(options.shared_v8)
|
||||
|
||||
# assume shared_v8 if one of these is set?
|
||||
if options.shared_v8_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_v8_libpath]
|
||||
if options.shared_v8_libname:
|
||||
o['libraries'] += ['-l%s' % options.shared_v8_libname]
|
||||
elif options.shared_v8:
|
||||
o['libraries'] += ['-lv8']
|
||||
if options.shared_v8_includes:
|
||||
o['include_dirs'] += [options.shared_v8_includes]
|
||||
|
||||
|
||||
def configure_openssl(o):
|
||||
o['variables']['node_use_openssl'] = b(not options.without_ssl)
|
||||
o['variables']['node_shared_openssl'] = b(options.shared_openssl)
|
||||
|
||||
if options.without_ssl:
|
||||
return
|
||||
|
||||
if options.no_ssl2:
|
||||
o['defines'] += ['OPENSSL_NO_SSL2=1']
|
||||
|
||||
if options.shared_openssl:
|
||||
(libs, cflags) = pkg_config('openssl') or ('-lssl -lcrypto', '')
|
||||
|
||||
if options.shared_openssl_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_openssl_libpath]
|
||||
|
||||
if options.shared_openssl_libname:
|
||||
libnames = options.shared_openssl_libname.split(',')
|
||||
o['libraries'] += ['-l%s' % s for s in libnames]
|
||||
else:
|
||||
o['libraries'] += libs.split()
|
||||
|
||||
if options.shared_openssl_includes:
|
||||
o['include_dirs'] += [options.shared_openssl_includes]
|
||||
else:
|
||||
o['cflags'] += cflags.split()
|
||||
|
||||
|
||||
output = {
|
||||
'variables': {},
|
||||
'include_dirs': [],
|
||||
'libraries': [],
|
||||
'defines': [],
|
||||
'cflags': [],
|
||||
}
|
||||
|
||||
configure_node(output)
|
||||
configure_libz(output)
|
||||
configure_v8(output)
|
||||
configure_openssl(output)
|
||||
|
||||
# variables should be a root level element,
|
||||
# move everything else to target_defaults
|
||||
variables = output['variables']
|
||||
del output['variables']
|
||||
output = {
|
||||
'variables': variables,
|
||||
'target_defaults': output
|
||||
}
|
||||
pprint.pprint(output, indent=2)
|
||||
|
||||
def write(filename, data):
|
||||
filename = os.path.join(root_dir, filename)
|
||||
print "creating ", filename
|
||||
f = open(filename, 'w+')
|
||||
f.write(data)
|
||||
|
||||
write('config.gypi', "# Do not edit. Generated by the configure script.\n" +
|
||||
pprint.pformat(output, indent=2) + "\n")
|
||||
|
||||
write('config.mk', "# Do not edit. Generated by the configure script.\n" +
|
||||
("BUILDTYPE=%s\n" % ('Debug' if options.debug else 'Release')))
|
||||
|
||||
if os.name == 'nt':
|
||||
gyp_args = ['-f', 'msvs', '-G', 'msvs_version=2010']
|
||||
else:
|
||||
gyp_args = ['-f', 'make']
|
||||
|
||||
subprocess.call([sys.executable, 'tools/gyp_node'] + gyp_args)
|
||||
|
||||
247
configure-gyp
247
configure-gyp
@@ -1,247 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import optparse
|
||||
import os
|
||||
import json
|
||||
import sys
|
||||
|
||||
root_dir = os.path.dirname(__file__)
|
||||
sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))
|
||||
import utils # GuessArchitecture
|
||||
|
||||
# parse our options
|
||||
parser = optparse.OptionParser()
|
||||
|
||||
parser.add_option("--debug",
|
||||
action="store_true",
|
||||
dest="debug",
|
||||
help="Also build debug build")
|
||||
|
||||
parser.add_option("--prefix",
|
||||
action="store",
|
||||
dest="prefix",
|
||||
help="Select the install prefix (defaults to /usr/local)")
|
||||
|
||||
parser.add_option("--without-ssl",
|
||||
action="store_true",
|
||||
dest="without_ssl",
|
||||
help="Build without SSL")
|
||||
|
||||
parser.add_option("--without-snapshot",
|
||||
action="store_true",
|
||||
dest="without_snapshot",
|
||||
help="Build without snapshotting V8 libraries. You might want to set"
|
||||
" this for cross-compiling. [Default: False]")
|
||||
|
||||
parser.add_option("--shared-v8",
|
||||
action="store_true",
|
||||
dest="shared_v8",
|
||||
help="Link to a shared V8 DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-v8-includes",
|
||||
action="store",
|
||||
dest="shared_v8_includes",
|
||||
help="Directory containing V8 header files")
|
||||
|
||||
parser.add_option("--shared-v8-libpath",
|
||||
action="store",
|
||||
dest="shared_v8_libpath",
|
||||
help="A directory to search for the shared V8 DLL")
|
||||
|
||||
parser.add_option("--shared-v8-libname",
|
||||
action="store",
|
||||
dest="shared_v8_libname",
|
||||
help="Alternative lib name to link to (default: 'v8')")
|
||||
|
||||
parser.add_option("--openssl-includes",
|
||||
action="store",
|
||||
dest="openssl_includes",
|
||||
help="A directory to search for the OpenSSL includes")
|
||||
|
||||
parser.add_option("--openssl-libpath",
|
||||
action="store",
|
||||
dest="openssl_libpath",
|
||||
help="A directory to search for the OpenSSL libraries")
|
||||
|
||||
parser.add_option("--no-ssl2",
|
||||
action="store_true",
|
||||
dest="no_ssl2",
|
||||
help="Disable OpenSSL v2")
|
||||
|
||||
parser.add_option("--shared-cares",
|
||||
action="store_true",
|
||||
dest="shared_cares",
|
||||
help="Link to a shared C-Ares DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-cares-includes",
|
||||
action="store",
|
||||
dest="shared_cares_includes",
|
||||
help="Directory containing C-Ares header files")
|
||||
|
||||
parser.add_option("--shared-cares-libpath",
|
||||
action="store",
|
||||
dest="shared_cares_libpath",
|
||||
help="A directory to search for the shared C-Ares DLL")
|
||||
|
||||
parser.add_option("--with-dtrace",
|
||||
action="store_true",
|
||||
dest="with_dtrace",
|
||||
help="Build with DTrace (experimental)")
|
||||
|
||||
# CHECKME does this still work with recent releases of V8?
|
||||
parser.add_option("--gdb",
|
||||
action="store_true",
|
||||
dest="gdb",
|
||||
help="add gdb support")
|
||||
|
||||
parser.add_option("--dest-cpu",
|
||||
action="store",
|
||||
dest="dest_cpu",
|
||||
help="CPU architecture to build for. Valid values are: arm, ia32, x64")
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
|
||||
def pkg_config(pkg):
|
||||
cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
|
||||
libs = cmd.readline().strip()
|
||||
ret = cmd.close()
|
||||
if (ret): return None
|
||||
|
||||
cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
|
||||
cflags = cmd.readline().strip()
|
||||
ret = cmd.close()
|
||||
if (ret): return None
|
||||
|
||||
return (libs, cflags)
|
||||
|
||||
|
||||
def uname(switch):
|
||||
f = os.popen('uname %s' % switch)
|
||||
s = f.read().strip()
|
||||
f.close()
|
||||
return s
|
||||
|
||||
|
||||
def host_arch():
|
||||
"""Host architecture. One of arm, ia32 or x64."""
|
||||
arch = uname('-p')
|
||||
|
||||
if arch == 'unknown':
|
||||
arch = uname('-m')
|
||||
|
||||
return {
|
||||
'arm': 'arm',
|
||||
'x86': 'ia32',
|
||||
'i386': 'ia32',
|
||||
'x86_64': 'x64',
|
||||
}.get(arch, 'ia32')
|
||||
|
||||
|
||||
def target_arch():
|
||||
# TODO act on options.dest_cpu
|
||||
return host_arch()
|
||||
|
||||
|
||||
def configure_node(o):
|
||||
# TODO add gdb and dest_cpu
|
||||
o['variables']['node_debug'] = 'true' if options.debug else 'false'
|
||||
o['variables']['node_prefix'] = options.prefix if options.prefix else ''
|
||||
o['variables']['node_use_dtrace'] = 'true' if options.with_dtrace else 'false'
|
||||
o['variables']['host_arch'] = host_arch()
|
||||
o['variables']['target_arch'] = target_arch()
|
||||
|
||||
# TODO move to node.gyp
|
||||
if sys.platform == 'sunos5':
|
||||
o['variables']['visibility'] = '' # FIXME -fvisibility=hidden, should be a gcc check
|
||||
|
||||
|
||||
def configure_libz(o):
|
||||
o['libraries'] += ['-lz']
|
||||
|
||||
|
||||
def configure_v8(o):
|
||||
o['variables']['v8_use_snapshot'] = 'true' if not options.without_snapshot else 'false'
|
||||
o['variables']['node_shared_v8'] = 'true' if options.shared_v8 else 'false'
|
||||
|
||||
# assume shared_v8 if one of these is set?
|
||||
if options.shared_v8_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_v8_libpath]
|
||||
if options.shared_v8_libname:
|
||||
o['libraries'] += ['-l%s' % options.shared_v8_libname]
|
||||
if options.shared_v8_includes:
|
||||
o['include_dirs'] += [options.shared_v8_includes]
|
||||
|
||||
|
||||
def configure_cares(o):
|
||||
o['variables']['node_shared_cares'] = 'true' if options.shared_cares else 'false'
|
||||
|
||||
# assume shared_cares if one of these is set?
|
||||
if options.shared_cares_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_cares_libpath]
|
||||
if options.shared_cares_includes:
|
||||
o['include_dirs'] += [options.shared_cares_includes]
|
||||
|
||||
|
||||
def configure_openssl(o):
|
||||
o['variables']['node_use_openssl'] = 'false' if options.without_ssl else 'true'
|
||||
|
||||
if options.without_ssl:
|
||||
return
|
||||
|
||||
if options.no_ssl2:
|
||||
o['defines'] += ['OPENSSL_NO_SSL2=1']
|
||||
|
||||
out = pkg_config('openssl')
|
||||
(libs, cflags) = out if out else ('', '')
|
||||
|
||||
if options.openssl_libpath:
|
||||
o['libraries'] += ['-L%s' % options.openssl_libpath, '-lssl', '-lcrypto']
|
||||
else:
|
||||
o['libraries'] += libs.split()
|
||||
|
||||
if options.openssl_includes:
|
||||
o['include_dirs'] += [options.openssl_includes]
|
||||
else:
|
||||
o['cflags'] += cflags.split()
|
||||
|
||||
if libs or cflags or options.openssl_libpath or options.openssl_includes:
|
||||
o['variables']['node_use_system_openssl'] = 'true'
|
||||
else:
|
||||
o['variables']['node_use_system_openssl'] = 'false'
|
||||
|
||||
|
||||
print "configure options:", options
|
||||
|
||||
output = {
|
||||
'variables': {},
|
||||
'include_dirs': [],
|
||||
'libraries': [],
|
||||
'defines': [],
|
||||
'cflags': [],
|
||||
}
|
||||
|
||||
configure_node(output)
|
||||
configure_libz(output)
|
||||
configure_v8(output)
|
||||
configure_cares(output)
|
||||
configure_openssl(output)
|
||||
|
||||
# variables should be a root level element,
|
||||
# move everything else to target_defaults
|
||||
variables = output['variables']
|
||||
del output['variables']
|
||||
output = {
|
||||
'variables': variables,
|
||||
'target_defaults': output
|
||||
}
|
||||
|
||||
fn = os.path.join(root_dir, 'options.gypi')
|
||||
print "creating ", fn
|
||||
|
||||
f = open(fn, 'w+')
|
||||
f.write("# Do not edit. Generated by the configure script.\n")
|
||||
json.dump(output, f, indent=2, skipkeys=True)
|
||||
f.write("\n")
|
||||
f.close()
|
||||
|
||||
3
deps/http_parser/.gitignore
vendored
3
deps/http_parser/.gitignore
vendored
@@ -1,5 +1,8 @@
|
||||
core
|
||||
tags
|
||||
*.o
|
||||
test
|
||||
test_g
|
||||
test_fast
|
||||
*.mk
|
||||
*.Makefile
|
||||
|
||||
4
deps/http_parser/.mailmap
vendored
Normal file
4
deps/http_parser/.mailmap
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
# update AUTHORS with:
|
||||
# git log --all --reverse --format='%aN <%aE>' | perl -ne 'BEGIN{print "# Authors ordered by first contribution.\n"} print unless $h{$_}; $h{$_} = 1' > AUTHORS
|
||||
Ryan Dahl <ry@tinyclouds.org>
|
||||
Salman Haq <salman.haq@asti-usa.com>
|
||||
32
deps/http_parser/AUTHORS
vendored
Normal file
32
deps/http_parser/AUTHORS
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors ordered by first contribution.
|
||||
Ryan Dahl <ry@tinyclouds.org>
|
||||
Jeremy Hinegardner <jeremy@hinegardner.org>
|
||||
Sergey Shepelev <temotor@gmail.com>
|
||||
Joe Damato <ice799@gmail.com>
|
||||
tomika <tomika_nospam@freemail.hu>
|
||||
Phoenix Sol <phoenix@burninglabs.com>
|
||||
Cliff Frey <cliff@meraki.com>
|
||||
Ewen Cheslack-Postava <ewencp@cs.stanford.edu>
|
||||
Santiago Gala <sgala@apache.org>
|
||||
Tim Becker <tim.becker@syngenio.de>
|
||||
Jeff Terrace <jterrace@gmail.com>
|
||||
Ben Noordhuis <info@bnoordhuis.nl>
|
||||
Nathan Rajlich <nathan@tootallnate.net>
|
||||
Mark Nottingham <mnot@mnot.net>
|
||||
Aman Gupta <aman@tmm1.net>
|
||||
Tim Becker <tim.becker@kuriositaet.de>
|
||||
Sean Cunningham <sean.cunningham@mandiant.com>
|
||||
Peter Griess <pg@std.in>
|
||||
Salman Haq <salman.haq@asti-usa.com>
|
||||
Cliff Frey <clifffrey@gmail.com>
|
||||
Jon Kolb <jon@b0g.us>
|
||||
Fouad Mardini <f.mardini@gmail.com>
|
||||
Paul Querna <pquerna@apache.org>
|
||||
Felix Geisendörfer <felix@debuggable.com>
|
||||
koichik <koichik@improvement.jp>
|
||||
Andre Caron <andre.l.caron@gmail.com>
|
||||
Ivo Raisr <ivosh@ivosh.net>
|
||||
James McLaughlin <jamie@lacewing-project.org>
|
||||
David Gwynne <loki@animata.net>
|
||||
LE ROUX Thomas <thomas@procheo.fr>
|
||||
Randy Rizun <rrizun@ortivawireless.com>
|
||||
10
deps/http_parser/Makefile
vendored
10
deps/http_parser/Makefile
vendored
@@ -10,7 +10,7 @@ CPPFLAGS_FAST += $(CPPFLAGS_FAST_EXTRA)
|
||||
CFLAGS += -Wall -Wextra -Werror
|
||||
CFLAGS_DEBUG = $(CFLAGS) -O0 -g $(CFLAGS_DEBUG_EXTRA)
|
||||
CFLAGS_FAST = $(CFLAGS) -O3 $(CFLAGS_FAST_EXTRA)
|
||||
|
||||
CFLAGS_LIB = $(CFLAGS_FAST) -fPIC
|
||||
|
||||
test: test_g test_fast
|
||||
./test_g
|
||||
@@ -40,6 +40,12 @@ test-run-timed: test_fast
|
||||
test-valgrind: test_g
|
||||
valgrind ./test_g
|
||||
|
||||
libhttp_parser.o: http_parser.c http_parser.h Makefile
|
||||
$(CC) $(CPPFLAGS_FAST) $(CFLAGS_LIB) -c http_parser.c -o libhttp_parser.o
|
||||
|
||||
library: libhttp_parser.o
|
||||
$(CC) -shared -o libhttp_parser.so libhttp_parser.o
|
||||
|
||||
package: http_parser.o
|
||||
$(AR) rcs libhttp_parser.a http_parser.o
|
||||
|
||||
@@ -47,6 +53,6 @@ tags: http_parser.c http_parser.h test.c
|
||||
ctags $^
|
||||
|
||||
clean:
|
||||
rm -f *.o *.a test test_fast test_g http_parser.tar tags
|
||||
rm -f *.o *.a test test_fast test_g http_parser.tar tags libhttp_parser.so libhttp_parser.o
|
||||
|
||||
.PHONY: clean package test-run test-run-timed test-valgrind
|
||||
|
||||
11
deps/http_parser/README.md
vendored
11
deps/http_parser/README.md
vendored
@@ -164,8 +164,15 @@ and apply following logic:
|
||||
------------------------ ------------ --------------------------------------------
|
||||
|
||||
|
||||
Parsing URLs
|
||||
------------
|
||||
|
||||
A simplistic zero-copy URL parser is provided as `http_parser_parse_url()`.
|
||||
Users of this library may wish to use it to parse URLs constructed from
|
||||
consecutive `on_url` callbacks.
|
||||
|
||||
See examples of reading in headers:
|
||||
|
||||
* [partial example](http://gist.github.com/155877) in C
|
||||
* [from http-parser tests](http://github.com/ry/http-parser/blob/37a0ff8928fb0d83cec0d0d8909c5a4abcd221af/test.c#L403) in C
|
||||
* [from Node library](http://github.com/ry/node/blob/842eaf446d2fdcb33b296c67c911c32a0dabc747/src/http.js#L284) in Javascript
|
||||
* [from http-parser tests](http://github.com/joyent/http-parser/blob/37a0ff8/test.c#L403) in C
|
||||
* [from Node library](http://github.com/joyent/node/blob/842eaf4/src/http.js#L284) in Javascript
|
||||
|
||||
1365
deps/http_parser/http_parser.c
vendored
1365
deps/http_parser/http_parser.c
vendored
File diff suppressed because it is too large
Load Diff
124
deps/http_parser/http_parser.h
vendored
124
deps/http_parser/http_parser.h
vendored
@@ -65,7 +65,6 @@ typedef int ssize_t;
|
||||
|
||||
typedef struct http_parser http_parser;
|
||||
typedef struct http_parser_settings http_parser_settings;
|
||||
typedef struct http_parser_result http_parser_result;
|
||||
|
||||
|
||||
/* Callbacks should return non-zero to indicate an error. The parser will
|
||||
@@ -86,36 +85,44 @@ typedef int (*http_cb) (http_parser*);
|
||||
|
||||
|
||||
/* Request Methods */
|
||||
#define HTTP_METHOD_MAP(XX) \
|
||||
XX(0, DELETE, DELETE) \
|
||||
XX(1, GET, GET) \
|
||||
XX(2, HEAD, HEAD) \
|
||||
XX(3, POST, POST) \
|
||||
XX(4, PUT, PUT) \
|
||||
/* pathological */ \
|
||||
XX(5, CONNECT, CONNECT) \
|
||||
XX(6, OPTIONS, OPTIONS) \
|
||||
XX(7, TRACE, TRACE) \
|
||||
/* webdav */ \
|
||||
XX(8, COPY, COPY) \
|
||||
XX(9, LOCK, LOCK) \
|
||||
XX(10, MKCOL, MKCOL) \
|
||||
XX(11, MOVE, MOVE) \
|
||||
XX(12, PROPFIND, PROPFIND) \
|
||||
XX(13, PROPPATCH, PROPPATCH) \
|
||||
XX(14, SEARCH, SEARCH) \
|
||||
XX(15, UNLOCK, UNLOCK) \
|
||||
/* subversion */ \
|
||||
XX(16, REPORT, REPORT) \
|
||||
XX(17, MKACTIVITY, MKACTIVITY) \
|
||||
XX(18, CHECKOUT, CHECKOUT) \
|
||||
XX(19, MERGE, MERGE) \
|
||||
/* upnp */ \
|
||||
XX(20, MSEARCH, M-SEARCH) \
|
||||
XX(21, NOTIFY, NOTIFY) \
|
||||
XX(22, SUBSCRIBE, SUBSCRIBE) \
|
||||
XX(23, UNSUBSCRIBE, UNSUBSCRIBE) \
|
||||
/* RFC-5789 */ \
|
||||
XX(24, PATCH, PATCH) \
|
||||
XX(25, PURGE, PURGE) \
|
||||
|
||||
enum http_method
|
||||
{ HTTP_DELETE = 0
|
||||
, HTTP_GET
|
||||
, HTTP_HEAD
|
||||
, HTTP_POST
|
||||
, HTTP_PUT
|
||||
/* pathological */
|
||||
, HTTP_CONNECT
|
||||
, HTTP_OPTIONS
|
||||
, HTTP_TRACE
|
||||
/* webdav */
|
||||
, HTTP_COPY
|
||||
, HTTP_LOCK
|
||||
, HTTP_MKCOL
|
||||
, HTTP_MOVE
|
||||
, HTTP_PROPFIND
|
||||
, HTTP_PROPPATCH
|
||||
, HTTP_UNLOCK
|
||||
/* subversion */
|
||||
, HTTP_REPORT
|
||||
, HTTP_MKACTIVITY
|
||||
, HTTP_CHECKOUT
|
||||
, HTTP_MERGE
|
||||
/* upnp */
|
||||
, HTTP_MSEARCH
|
||||
, HTTP_NOTIFY
|
||||
, HTTP_SUBSCRIBE
|
||||
, HTTP_UNSUBSCRIBE
|
||||
/* RFC-5789 */
|
||||
, HTTP_PATCH
|
||||
{
|
||||
#define XX(num, name, string) HTTP_##name = num,
|
||||
HTTP_METHOD_MAP(XX)
|
||||
#undef XX
|
||||
};
|
||||
|
||||
|
||||
@@ -143,10 +150,7 @@ enum flags
|
||||
\
|
||||
/* Callback-related errors */ \
|
||||
XX(CB_message_begin, "the on_message_begin callback failed") \
|
||||
XX(CB_path, "the on_path callback failed") \
|
||||
XX(CB_query_string, "the on_query_string callback failed") \
|
||||
XX(CB_url, "the on_url callback failed") \
|
||||
XX(CB_fragment, "the on_fragment callback failed") \
|
||||
XX(CB_header_field, "the on_header_field callback failed") \
|
||||
XX(CB_header_value, "the on_header_value callback failed") \
|
||||
XX(CB_headers_complete, "the on_headers_complete callback failed") \
|
||||
@@ -177,6 +181,7 @@ enum flags
|
||||
XX(INVALID_CONSTANT, "invalid constant string") \
|
||||
XX(INVALID_INTERNAL_STATE, "encountered unexpected internal state")\
|
||||
XX(STRICT, "strict mode assertion failed") \
|
||||
XX(PAUSED, "parser is paused") \
|
||||
XX(UNKNOWN, "an unknown error occurred")
|
||||
|
||||
|
||||
@@ -201,20 +206,20 @@ enum http_errno {
|
||||
|
||||
struct http_parser {
|
||||
/** PRIVATE **/
|
||||
unsigned char type : 2;
|
||||
unsigned char flags : 6; /* F_* values from 'flags' enum; semi-public */
|
||||
unsigned char state;
|
||||
unsigned char header_state;
|
||||
unsigned char index;
|
||||
unsigned char type : 2; /* enum http_parser_type */
|
||||
unsigned char flags : 6; /* F_* values from 'flags' enum; semi-public */
|
||||
unsigned char state; /* enum state from http_parser.c */
|
||||
unsigned char header_state; /* enum header_state from http_parser.c */
|
||||
unsigned char index; /* index into current matcher */
|
||||
|
||||
uint32_t nread;
|
||||
int64_t content_length;
|
||||
uint32_t nread; /* # bytes read in various scenarios */
|
||||
uint64_t content_length; /* # bytes in body (0 if no Content-Length header) */
|
||||
|
||||
/** READ-ONLY **/
|
||||
unsigned short http_major;
|
||||
unsigned short http_minor;
|
||||
unsigned short status_code; /* responses only */
|
||||
unsigned char method; /* requests only */
|
||||
unsigned char method; /* requests only */
|
||||
unsigned char http_errno : 7;
|
||||
|
||||
/* 1 = Upgrade header was present and the parser has exited because of that.
|
||||
@@ -244,6 +249,35 @@ struct http_parser_settings {
|
||||
};
|
||||
|
||||
|
||||
enum http_parser_url_fields
|
||||
{ UF_SCHEMA = 0
|
||||
, UF_HOST = 1
|
||||
, UF_PORT = 2
|
||||
, UF_PATH = 3
|
||||
, UF_QUERY = 4
|
||||
, UF_FRAGMENT = 5
|
||||
, UF_MAX = 6
|
||||
};
|
||||
|
||||
|
||||
/* Result structure for http_parser_parse_url().
|
||||
*
|
||||
* Callers should index into field_data[] with UF_* values iff field_set
|
||||
* has the relevant (1 << UF_*) bit set. As a courtesy to clients (and
|
||||
* because we probably have padding left over), we convert any port to
|
||||
* a uint16_t.
|
||||
*/
|
||||
struct http_parser_url {
|
||||
uint16_t field_set; /* Bitmask of (1 << UF_*) values */
|
||||
uint16_t port; /* Converted UF_PORT string */
|
||||
|
||||
struct {
|
||||
uint16_t off; /* Offset into buffer in which field starts */
|
||||
uint16_t len; /* Length of run in buffer */
|
||||
} field_data[UF_MAX];
|
||||
};
|
||||
|
||||
|
||||
void http_parser_init(http_parser *parser, enum http_parser_type type);
|
||||
|
||||
|
||||
@@ -270,6 +304,14 @@ const char *http_errno_name(enum http_errno err);
|
||||
/* Return a string description of the given error */
|
||||
const char *http_errno_description(enum http_errno err);
|
||||
|
||||
/* Parse a URL; return nonzero on failure */
|
||||
int http_parser_parse_url(const char *buf, size_t buflen,
|
||||
int is_connect,
|
||||
struct http_parser_url *u);
|
||||
|
||||
/* Pause or un-pause the parser; a nonzero value pauses */
|
||||
void http_parser_pause(http_parser *parser, int paused);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
100
deps/http_parser/test.c
vendored
100
deps/http_parser/test.c
vendored
@@ -680,56 +680,6 @@ const struct message requests[] =
|
||||
,.body= ""
|
||||
}
|
||||
|
||||
/* see https://github.com/ry/http-parser/issues/47 */
|
||||
#define EAT_TRAILING_CRLF_NO_CONNECTION_CLOSE 28
|
||||
, {.name = "eat CRLF between requests, no \"Connection: close\" header"
|
||||
,.raw= "POST / HTTP/1.1\r\n"
|
||||
"Host: www.example.com\r\n"
|
||||
"Content-Type: application/x-www-form-urlencoded\r\n"
|
||||
"Content-Length: 4\r\n"
|
||||
"\r\n"
|
||||
"q=42\r\n" /* note the trailing CRLF */
|
||||
,.should_keep_alive= TRUE
|
||||
,.message_complete_on_eof= FALSE
|
||||
,.http_major= 1
|
||||
,.http_minor= 1
|
||||
,.method= HTTP_POST
|
||||
,.request_url= "/"
|
||||
,.num_headers= 3
|
||||
,.upgrade= 0
|
||||
,.headers= { { "Host", "www.example.com" }
|
||||
, { "Content-Type", "application/x-www-form-urlencoded" }
|
||||
, { "Content-Length", "4" }
|
||||
}
|
||||
,.body= "q=42"
|
||||
}
|
||||
|
||||
/* see https://github.com/ry/http-parser/issues/47 */
|
||||
#define EAT_TRAILING_CRLF_WITH_CONNECTION_CLOSE 29
|
||||
, {.name = "eat CRLF between requests even if \"Connection: close\" is set"
|
||||
,.raw= "POST / HTTP/1.1\r\n"
|
||||
"Host: www.example.com\r\n"
|
||||
"Content-Type: application/x-www-form-urlencoded\r\n"
|
||||
"Content-Length: 4\r\n"
|
||||
"Connection: close\r\n"
|
||||
"\r\n"
|
||||
"q=42\r\n" /* note the trailing CRLF */
|
||||
,.should_keep_alive= FALSE
|
||||
,.message_complete_on_eof= FALSE /* input buffer isn't empty when on_message_complete is called */
|
||||
,.http_major= 1
|
||||
,.http_minor= 1
|
||||
,.method= HTTP_POST
|
||||
,.request_url= "/"
|
||||
,.num_headers= 4
|
||||
,.upgrade= 0
|
||||
,.headers= { { "Host", "www.example.com" }
|
||||
, { "Content-Type", "application/x-www-form-urlencoded" }
|
||||
, { "Content-Length", "4" }
|
||||
, { "Connection", "close" }
|
||||
}
|
||||
,.body= "q=42"
|
||||
}
|
||||
|
||||
, {.name= NULL } /* sentinel */
|
||||
};
|
||||
|
||||
@@ -830,8 +780,8 @@ const struct message responses[] =
|
||||
, {.name= "404 no headers no body"
|
||||
,.type= HTTP_RESPONSE
|
||||
,.raw= "HTTP/1.1 404 Not Found\r\n\r\n"
|
||||
,.should_keep_alive= FALSE
|
||||
,.message_complete_on_eof= TRUE
|
||||
,.should_keep_alive= TRUE
|
||||
,.message_complete_on_eof= FALSE
|
||||
,.http_major= 1
|
||||
,.http_minor= 1
|
||||
,.status_code= 404
|
||||
@@ -845,8 +795,8 @@ const struct message responses[] =
|
||||
, {.name= "301 no response phrase"
|
||||
,.type= HTTP_RESPONSE
|
||||
,.raw= "HTTP/1.1 301\r\n\r\n"
|
||||
,.should_keep_alive = FALSE
|
||||
,.message_complete_on_eof= TRUE
|
||||
,.should_keep_alive = TRUE
|
||||
,.message_complete_on_eof= FALSE
|
||||
,.http_major= 1
|
||||
,.http_minor= 1
|
||||
,.status_code= 301
|
||||
@@ -1107,46 +1057,8 @@ const struct message responses[] =
|
||||
{}
|
||||
,.body= ""
|
||||
}
|
||||
|
||||
#define NO_CONTENT_LENGTH_NO_TRANSFER_ENCODING_RESPONSE 13
|
||||
/* The client should wait for the server's EOF. That is, when neither
|
||||
* content-length nor transfer-encoding is specified, the end of body
|
||||
* is specified by the EOF.
|
||||
*/
|
||||
, {.name= "neither content-length nor transfer-encoding response"
|
||||
,.type= HTTP_RESPONSE
|
||||
,.raw= "HTTP/1.1 200 OK\r\n"
|
||||
"Content-Type: text/plain\r\n"
|
||||
"\r\n"
|
||||
"hello world"
|
||||
,.should_keep_alive= FALSE
|
||||
,.message_complete_on_eof= TRUE
|
||||
,.http_major= 1
|
||||
,.http_minor= 1
|
||||
,.status_code= 200
|
||||
,.num_headers= 1
|
||||
,.headers=
|
||||
{ { "Content-Type", "text/plain" }
|
||||
}
|
||||
,.body= "hello world"
|
||||
}
|
||||
|
||||
#define NO_HEADERS_NO_BODY_204 14
|
||||
, {.name= "204 no headers no body"
|
||||
,.type= HTTP_RESPONSE
|
||||
,.raw= "HTTP/1.1 204 No Content\r\n\r\n"
|
||||
,.should_keep_alive= TRUE
|
||||
,.message_complete_on_eof= FALSE
|
||||
,.http_major= 1
|
||||
,.http_minor= 1
|
||||
,.status_code= 204
|
||||
,.num_headers= 0
|
||||
,.headers= {}
|
||||
,.body_size= 0
|
||||
,.body= ""
|
||||
}
|
||||
|
||||
, {.name= NULL } /* sentinel */
|
||||
|
||||
};
|
||||
|
||||
int
|
||||
@@ -1976,7 +1888,7 @@ main (void)
|
||||
|
||||
printf("response scan 1/2 ");
|
||||
test_scan( &responses[TRAILING_SPACE_ON_CHUNKED_BODY]
|
||||
, &responses[NO_HEADERS_NO_BODY_204]
|
||||
, &responses[NO_HEADERS_NO_BODY_404]
|
||||
, &responses[NO_REASON_PHRASE]
|
||||
);
|
||||
|
||||
|
||||
25
deps/npm/.npmignore
vendored
25
deps/npm/.npmignore
vendored
@@ -1,16 +1,19 @@
|
||||
*.swp
|
||||
test/bin
|
||||
test/output.log
|
||||
test/packages/*/node_modules
|
||||
test/packages/npm-test-depends-on-spark/which-spark.log
|
||||
test/packages/test-package/random-data.txt
|
||||
test/root
|
||||
node_modules/ronn
|
||||
node_modules/.bin
|
||||
npm-debug.log
|
||||
./npmrc
|
||||
.gitignore
|
||||
release/
|
||||
/test/bin
|
||||
/test/output.log
|
||||
/test/packages/*/node_modules
|
||||
/test/packages/npm-test-depends-on-spark/which-spark.log
|
||||
/test/packages/test-package/random-data.txt
|
||||
/test/root
|
||||
/node_modules/ronn
|
||||
/node_modules/tap
|
||||
/node_modules/.bin
|
||||
/npmrc
|
||||
/release/
|
||||
|
||||
# don't need these in the npm package.
|
||||
html/*.png
|
||||
|
||||
# don't ignore .npmignore files
|
||||
# these are used in some tests.
|
||||
|
||||
6
deps/npm/AUTHORS
vendored
6
deps/npm/AUTHORS
vendored
@@ -65,3 +65,9 @@ Jens Grunert <jens.grunert@gmail.com>
|
||||
Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
|
||||
Dalmais Maxence <github@maxired.fr>
|
||||
Marcus Ekwall <marcus.ekwall@gmail.com>
|
||||
Aaron Stacy <aaron.r.stacy@gmail.com>
|
||||
Phillip Howell <phowell@cothm.org>
|
||||
Domenic Denicola <domenic@domenicdenicola.com>
|
||||
James Halliday <mail@substack.net>
|
||||
Jeremy Cantrell <jmcantrell@gmail.com>
|
||||
Ribettes <patlogan29@gmail.com>
|
||||
|
||||
5
deps/npm/LICENSE
vendored
5
deps/npm/LICENSE
vendored
@@ -49,6 +49,11 @@ and are not covered by this license.
|
||||
"npm Logo" created by Mathias Pettersson and Brian Hammond,
|
||||
used with permission.
|
||||
|
||||
"Gubblebum Blocky" font
|
||||
Copyright (c) 2007 by Tjarda Koster, http://jelloween.deviantart.com
|
||||
included for use in the npm website and documentation,
|
||||
used with permission.
|
||||
|
||||
This program uses "node-uuid", Copyright (c) 2010 Robert Kieffer,
|
||||
according to the terms of the MIT license.
|
||||
|
||||
|
||||
2
deps/npm/Makefile
vendored
2
deps/npm/Makefile
vendored
@@ -121,6 +121,8 @@ docpublish: doc-publish
|
||||
doc-publish: doc
|
||||
rsync -vazu --stats --no-implied-dirs --delete html/doc/ npmjs.org:/var/www/npmjs.org/public/doc
|
||||
rsync -vazu --stats --no-implied-dirs --delete html/api/ npmjs.org:/var/www/npmjs.org/public/api
|
||||
rsync -vazu --stats --no-implied-dirs --delete html/webfonts/ npmjs.org:/var/www/npmjs.org/public/webfonts
|
||||
scp html/style.css npmjs.org:/var/www/npmjs.org/public/
|
||||
|
||||
zip-publish: release
|
||||
scp release/* npmjs.org:/var/www/npmjs.org/public/dist/
|
||||
|
||||
6
deps/npm/README.md
vendored
6
deps/npm/README.md
vendored
@@ -89,21 +89,15 @@ To install the latest **unstable** development version from git:
|
||||
|
||||
git clone https://github.com/isaacs/npm.git
|
||||
cd npm
|
||||
git submodule update --init --recursive
|
||||
sudo make install # (or: `node cli.js install -gf`)
|
||||
|
||||
If you're sitting in the code folder reading this document in your
|
||||
terminal, then you've already got the code. Just do:
|
||||
|
||||
git submodule update --init --recursive
|
||||
sudo make install
|
||||
|
||||
and npm will install itself.
|
||||
|
||||
Note that github tarballs **do not contain submodules**, so
|
||||
those won't work. You'll have to also fetch the appropriate submodules
|
||||
listed in the .gitmodules file.
|
||||
|
||||
## Permissions when Using npm to Install Other Stuff
|
||||
|
||||
**tl;dr**
|
||||
|
||||
13
deps/npm/bin/npm
vendored
13
deps/npm/bin/npm
vendored
@@ -1,6 +1,13 @@
|
||||
#!/bin/sh
|
||||
if [ -x "`dirname "$0"`/node.exe" ]; then
|
||||
"`dirname "$0"`/node.exe" "`dirname "$0"`/node_modules/npm/bin/npm-cli.js" "$@"
|
||||
|
||||
basedir=`dirname "$0"`
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node.exe" ]; then
|
||||
"$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
|
||||
else
|
||||
node "`dirname "$0"`/node_modules/npm/bin/npm-cli.js" "$@"
|
||||
node "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
|
||||
fi
|
||||
|
||||
12
deps/npm/bin/npm-cli.js
vendored
12
deps/npm/bin/npm-cli.js
vendored
@@ -15,9 +15,9 @@ if (typeof WScript !== "undefined") {
|
||||
|
||||
process.title = "npm"
|
||||
|
||||
var log = require("../lib/utils/log.js")
|
||||
log.waitForConfig()
|
||||
log.info("ok", "it worked if it ends with")
|
||||
var log = require("npmlog")
|
||||
log.pause() // will be unpaused when config is loaded.
|
||||
log.info("it worked if it ends with", "ok")
|
||||
|
||||
var fs = require("graceful-fs")
|
||||
, path = require("path")
|
||||
@@ -36,7 +36,7 @@ if (path.basename(process.argv[1]).slice(-1) === "g") {
|
||||
process.argv.splice(1, 1, "npm", "-g")
|
||||
}
|
||||
|
||||
log.verbose(process.argv, "cli")
|
||||
log.verbose("cli", process.argv)
|
||||
|
||||
var conf = nopt(types, shorthands)
|
||||
npm.argv = conf.argv.remain
|
||||
@@ -56,8 +56,8 @@ if (conf.versions) {
|
||||
return
|
||||
}
|
||||
|
||||
log.info("npm@"+npm.version, "using")
|
||||
log.info("node@"+process.version, "using")
|
||||
log.info("using", "npm@%s", npm.version)
|
||||
log.info("using", "node@%s", process.version)
|
||||
|
||||
// make sure that this version of node works with this version of npm.
|
||||
var semver = require("semver")
|
||||
|
||||
2
deps/npm/bin/read-package-json.js
vendored
2
deps/npm/bin/read-package-json.js
vendored
@@ -6,7 +6,7 @@ if (argv.length < 3) {
|
||||
|
||||
var fs = require("fs")
|
||||
, file = argv[2]
|
||||
, readJson = require("../lib/utils/read-json")
|
||||
, readJson = require("read-package-json")
|
||||
|
||||
readJson(file, function (er, data) {
|
||||
if (er) throw er
|
||||
|
||||
21
deps/npm/doc/cli/coding-style.md
vendored
21
deps/npm/doc/cli/coding-style.md
vendored
@@ -129,29 +129,18 @@ Just send the error message back as the first argument to the callback.
|
||||
Always create a new Error object with your message. Don't just return a
|
||||
string message to the callback. Stack traces are handy.
|
||||
|
||||
Use the `require("./utils/log").er` function. It takes a callback and an
|
||||
error message, and returns an object that will report the message in the
|
||||
event of a failure. It's quite handy.
|
||||
|
||||
function myThing (args, cb) {
|
||||
getData(args, function (er, data) {
|
||||
if (er) return log.er(cb, "Couldn't get data")(er)
|
||||
doSomethingElse(data, cb)
|
||||
})
|
||||
}
|
||||
function justHasToWork (cb) {
|
||||
doSomething(log.er(cb, "the doSomething failed."))
|
||||
}
|
||||
|
||||
## Logging
|
||||
|
||||
Logging is done using the [npmlog](https://github.com/isaacs/npmlog)
|
||||
utility.
|
||||
|
||||
Please clean up logs when they are no longer helpful. In particular,
|
||||
logging the same object over and over again is not helpful. Logs should
|
||||
report what's happening so that it's easier to track down where a fault
|
||||
occurs.
|
||||
|
||||
Use appropriate log levels. The default log() function logs at the
|
||||
"info" level. See `npm-config(1)` and search for "loglevel".
|
||||
Use appropriate log levels. See `npm-config(1)` and search for
|
||||
"loglevel".
|
||||
|
||||
## Case, naming, etc.
|
||||
|
||||
|
||||
148
deps/npm/doc/cli/config.md
vendored
148
deps/npm/doc/cli/config.md
vendored
@@ -117,6 +117,7 @@ The following shorthands are parsed on the command-line:
|
||||
* `-S`: `--save`
|
||||
* `-D`: `--save-dev`
|
||||
* `-O`: `--save-optional`
|
||||
* `-B`: `--save-bundle`
|
||||
* `-y`: `--yes`
|
||||
* `-n`: `--yes false`
|
||||
* `ll` and `la` commands: `ls --long`
|
||||
@@ -167,32 +168,6 @@ then the user could change the behavior by doing:
|
||||
Force npm to always require authentication when accessing the registry,
|
||||
even for `GET` requests.
|
||||
|
||||
### bin-publish
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
If set to true, then binary packages will be created on publish.
|
||||
|
||||
This is the way to opt into the "bindist" behavior described below.
|
||||
|
||||
### bindist
|
||||
|
||||
* Default: Unstable node versions, `null`, otherwise
|
||||
`"<node version>-<platform>-<os release>"`
|
||||
* Type: String or `null`
|
||||
|
||||
Experimental: on stable versions of node, binary distributions will be
|
||||
created with this tag. If a user then installs that package, and their
|
||||
`bindist` tag is found in the list of binary distributions, they will
|
||||
get that prebuilt version.
|
||||
|
||||
Pre-build node packages have their preinstall, install, and postinstall
|
||||
scripts stripped (since they are run prior to publishing), and do not
|
||||
have their `build` directories automatically ignored.
|
||||
|
||||
It's yet to be seen if this is a good idea.
|
||||
|
||||
### browser
|
||||
|
||||
* Default: OS X: `"open"`, others: `"google-chrome"`
|
||||
@@ -220,6 +195,27 @@ See also the `strict-ssl` config.
|
||||
|
||||
The location of npm's cache directory. See `npm-cache(1)`
|
||||
|
||||
### cache-lock-stale
|
||||
|
||||
* Default: 60000 (1 minute)
|
||||
* Type: Number
|
||||
|
||||
The number of ms before cache folder lockfiles are considered stale.
|
||||
|
||||
### cache-lock-retries
|
||||
|
||||
* Default: 10
|
||||
* Type: Number
|
||||
|
||||
Number of times to retry to acquire a lock on cache folder lockfiles.
|
||||
|
||||
### cache-lock-wait
|
||||
|
||||
* Default: 10000 (10 seconds)
|
||||
* Type: Number
|
||||
|
||||
Number of ms to wait for cache lock files to expire.
|
||||
|
||||
### cache-max
|
||||
|
||||
* Default: Infinity
|
||||
@@ -291,6 +287,15 @@ set.
|
||||
|
||||
The command to run for `npm edit` or `npm config edit`.
|
||||
|
||||
### engine-strict
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
If set to true, then npm will stubbornly refuse to install (or even
|
||||
consider installing) any package that claims to not be compatible with
|
||||
the current Node.js version.
|
||||
|
||||
### force
|
||||
|
||||
* Default: false
|
||||
@@ -303,6 +308,38 @@ Makes various commands more forceful.
|
||||
* skips cache when requesting from the registry.
|
||||
* prevents checks against clobbering non-npm files.
|
||||
|
||||
### fetch-retries
|
||||
|
||||
* Default: 2
|
||||
* Type: Number
|
||||
|
||||
The "retries" config for the `retry` module to use when fetching
|
||||
packages from the registry.
|
||||
|
||||
### fetch-retry-factor
|
||||
|
||||
* Default: 10
|
||||
* Type: Number
|
||||
|
||||
The "factor" config for the `retry` module to use when fetching
|
||||
packages.
|
||||
|
||||
### fetch-retry-mintimeout
|
||||
|
||||
* Default: 10000 (10 seconds)
|
||||
* Type: Number
|
||||
|
||||
The "minTimeout" config for the `retry` module to use when fetching
|
||||
packages.
|
||||
|
||||
### fetch-retry-maxtimeout
|
||||
|
||||
* Default: 60000 (1 minute)
|
||||
* Type: Number
|
||||
|
||||
The "maxTimeout" config for the `retry` module to use when fetching
|
||||
packages.
|
||||
|
||||
### git
|
||||
|
||||
* Default: `"git"`
|
||||
@@ -375,6 +412,16 @@ Sets a User-Agent to the request header
|
||||
A white-space separated list of glob patterns of files to always exclude
|
||||
from packages when building tarballs.
|
||||
|
||||
### init-module
|
||||
|
||||
* Default: ~/.npm-init.js
|
||||
* Type: path
|
||||
|
||||
A module that will be loaded by the `npm init` command. See the
|
||||
documentation for the
|
||||
[init-package-json](https://github.com/isaacs/init-package-json) module
|
||||
for more information, or npm-init(1).
|
||||
|
||||
### init.version
|
||||
|
||||
* Default: "0.0.0"
|
||||
@@ -430,13 +477,6 @@ if one of the two conditions are met:
|
||||
* the globally installed version is identical to the version that is
|
||||
being installed locally.
|
||||
|
||||
### logfd
|
||||
|
||||
* Default: stderr file descriptor
|
||||
* Type: Number or Stream
|
||||
|
||||
The location to write log output.
|
||||
|
||||
### loglevel
|
||||
|
||||
* Default: "http"
|
||||
@@ -449,13 +489,17 @@ What level of logs to report. On failure, *all* logs are written to
|
||||
Any logs of a higher level than the setting are shown.
|
||||
The default is "http", which shows http, warn, and error output.
|
||||
|
||||
### logprefix
|
||||
### logstream
|
||||
|
||||
* Default: true on Posix, false on Windows
|
||||
* Type: Boolean
|
||||
* Default: process.stderr
|
||||
* Type: Stream
|
||||
|
||||
Whether or not to prefix log messages with "npm" and the log level. See
|
||||
also "color" and "loglevel".
|
||||
This is the stream that is passed to the
|
||||
[npmlog](https://github.com/isaacs/npmlog) module at run time.
|
||||
|
||||
It cannot be set from the command line, but if you are using npm
|
||||
programmatically, you may wish to send logs to somewhere other than
|
||||
stderr.
|
||||
|
||||
### long
|
||||
|
||||
@@ -503,13 +547,6 @@ The url to report npat test results.
|
||||
A node module to `require()` when npm loads. Useful for programmatic
|
||||
usage.
|
||||
|
||||
### outfd
|
||||
|
||||
* Default: standard output file descriptor
|
||||
* Type: Number or Stream
|
||||
|
||||
Where to write "normal" output. This has no effect on log output.
|
||||
|
||||
### parseable
|
||||
|
||||
* Default: false
|
||||
@@ -584,8 +621,23 @@ Remove failed installs.
|
||||
|
||||
Save installed packages to a package.json file as dependencies.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the dependencies
|
||||
hash.
|
||||
|
||||
Only works if there is already a package.json file present.
|
||||
|
||||
### save-bundle
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
If a package would be saved at install time by the use of `--save`,
|
||||
`--save-dev`, or `--save-optional`, then also put it in the
|
||||
`bundleDependencies` list.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the
|
||||
bundledDependencies list.
|
||||
|
||||
### save-dev
|
||||
|
||||
* Default: false
|
||||
@@ -593,6 +645,9 @@ Only works if there is already a package.json file present.
|
||||
|
||||
Save installed packages to a package.json file as devDependencies.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the devDependencies
|
||||
hash.
|
||||
|
||||
Only works if there is already a package.json file present.
|
||||
|
||||
### save-optional
|
||||
@@ -602,6 +657,9 @@ Only works if there is already a package.json file present.
|
||||
|
||||
Save installed packages to a package.json file as optionalDependencies.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the devDependencies
|
||||
hash.
|
||||
|
||||
Only works if there is already a package.json file present.
|
||||
|
||||
### searchopts
|
||||
|
||||
1
deps/npm/doc/cli/init.md
vendored
1
deps/npm/doc/cli/init.md
vendored
@@ -20,5 +20,6 @@ without a really good reason to do so.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* <https://github.com/isaacs/init-package-json>
|
||||
* npm-json(1)
|
||||
* npm-version(1)
|
||||
|
||||
2
deps/npm/doc/cli/install.md
vendored
2
deps/npm/doc/cli/install.md
vendored
@@ -160,7 +160,7 @@ local copy exists on disk.
|
||||
npm install sax --force
|
||||
|
||||
The `--global` argument will cause npm to install the package globally
|
||||
rather than locally. See `npm-global(1)`.
|
||||
rather than locally. See `npm-folders(1)`.
|
||||
|
||||
The `--link` argument will cause npm to link global installs into the
|
||||
local space in some cases.
|
||||
|
||||
50
deps/npm/doc/cli/json.md
vendored
50
deps/npm/doc/cli/json.md
vendored
@@ -394,6 +394,7 @@ Git urls can be of the form:
|
||||
|
||||
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
|
||||
|
||||
@@ -420,10 +421,39 @@ Array of package names that will be bundled when publishing the package.
|
||||
|
||||
If this is spelled `"bundleDependencies"`, then that is also honorable.
|
||||
|
||||
## optionalDependencies
|
||||
|
||||
If a dependency can be used, but you would like npm to proceed if it
|
||||
cannot be found or fails to install, then you may put it in the
|
||||
`optionalDependencies` hash. This is a map of package name to version
|
||||
or url, just like the `dependencies` hash. The difference is that
|
||||
failure is tolerated.
|
||||
|
||||
It is still your program's responsibility to handle the lack of the
|
||||
dependency. For example, something like this:
|
||||
|
||||
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()
|
||||
}
|
||||
|
||||
Entries in `optionalDependencies` will override entries of the same name in
|
||||
`dependencies`, so it's usually best to only put in one place.
|
||||
|
||||
## engines
|
||||
|
||||
You can specify the version of
|
||||
node that your stuff works on:
|
||||
You can specify the version of node that your stuff works on:
|
||||
|
||||
{ "engines" : { "node" : ">=0.1.27 <0.1.30" } }
|
||||
|
||||
@@ -439,6 +469,22 @@ are capable of properly installing your program. For example:
|
||||
|
||||
{ "engines" : { "npm" : "~1.0.20" } }
|
||||
|
||||
Note that, unless the user has set the `engine-strict` config flag, this
|
||||
field is advisory only.
|
||||
|
||||
## engineStrict
|
||||
|
||||
If you are sure that your module will *definitely not* run properly on
|
||||
versions of Node/npm other than those specified in the `engines` hash,
|
||||
then you can set `"engineStrict": true` in your package.json file.
|
||||
This will override the user's `engine-strict` config setting.
|
||||
|
||||
Please do not do this unless you are really very very sure. If your
|
||||
engines hash is something overly restrictive, you can quite easily and
|
||||
inadvertently lock yourself into obscurity and prevent your users from
|
||||
updating to new versions of Node. Consider this choice carefully. If
|
||||
people abuse it, it will be removed in a future version of npm.
|
||||
|
||||
## os
|
||||
|
||||
You can specify which operating systems your
|
||||
|
||||
BIN
deps/npm/html/api/GubbleBum-Blocky.ttf
vendored
BIN
deps/npm/html/api/GubbleBum-Blocky.ttf
vendored
Binary file not shown.
69
deps/npm/html/api/author.html
vendored
69
deps/npm/html/api/author.html
vendored
@@ -1,69 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>author</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../api/owner.html">owner</a></h1> <p>Manage package owners</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.owner(args, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>The first element of the 'args' parameter defines what to do, and the subsequent
|
||||
elements depend on the action. Possible values for the action are (order of
|
||||
parameters are given in parenthesis):</p>
|
||||
|
||||
<ul><li>ls (package):
|
||||
List all the users who have access to modify a package and push new versions.
|
||||
Handy when you need to know who to bug for help.</li><li>add (user, package):
|
||||
Add a new user as a maintainer of a package. This user is enabled to modify
|
||||
metadata, publish new versions, and add other owners.</li><li>rm (user, package):
|
||||
Remove a user from the package owner list. This immediately revokes their
|
||||
privileges.</li></ul>
|
||||
|
||||
<p>Note that there is only one level of access. Either you can modify a package,
|
||||
or you can't. Future versions may contain more fine-grained access levels, but
|
||||
that is not implemented at this time.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">author — npm@1.1.0-alpha-3</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
||||
.filter(function (el) {
|
||||
return el.parentNode === wrapper
|
||||
&& el.tagName.match(/H[1-6]/)
|
||||
&& el.id
|
||||
})
|
||||
var l = 2
|
||||
, toc = document.createElement("ul")
|
||||
toc.innerHTML = els.map(function (el) {
|
||||
var i = el.tagName.charAt(1)
|
||||
, out = ""
|
||||
while (i > l) {
|
||||
out += "<ul>"
|
||||
l ++
|
||||
}
|
||||
while (i < l) {
|
||||
out += "</ul>"
|
||||
l --
|
||||
}
|
||||
out += "<li><a href='#" + el.id + "'>" +
|
||||
( el.innerText || el.text || el.innerHTML)
|
||||
+ "</a>"
|
||||
return out
|
||||
}).join("\n")
|
||||
toc.id = "toc"
|
||||
document.body.appendChild(toc)
|
||||
})()
|
||||
</script>
|
||||
</body></html>
|
||||
4
deps/npm/html/api/bin.html
vendored
4
deps/npm/html/api/bin.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>bin</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -19,7 +19,7 @@
|
||||
<p>This function should not be used programmatically. Instead, just refer
|
||||
to the <code>npm.bin</code> member.</p>
|
||||
</div>
|
||||
<p id="footer">bin — npm@1.1.21</p>
|
||||
<p id="footer">bin — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/bugs.html
vendored
4
deps/npm/html/api/bugs.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>bugs</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -25,7 +25,7 @@ optional version number.</p>
|
||||
<p>This command will launch a browser, so this command may not be the most
|
||||
friendly for programmatic use.</p>
|
||||
</div>
|
||||
<p id="footer">bugs — npm@1.1.21</p>
|
||||
<p id="footer">bugs — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/commands.html
vendored
4
deps/npm/html/api/commands.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>commands</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -28,7 +28,7 @@ usage, or <code>man 3 npm-<command></code> for programmatic usage.</p>
|
||||
|
||||
<ul><li><a href="../doc/index.html">index(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">commands — npm@1.1.21</p>
|
||||
<p id="footer">commands — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/config.html
vendored
4
deps/npm/html/api/config.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>config</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -33,7 +33,7 @@ functions instead.</p>
|
||||
|
||||
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">config — npm@1.1.21</p>
|
||||
<p id="footer">config — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/deprecate.html
vendored
4
deps/npm/html/api/deprecate.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>deprecate</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -30,7 +30,7 @@ install the package.</p></li></ul>
|
||||
|
||||
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">deprecate — npm@1.1.21</p>
|
||||
<p id="footer">deprecate — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/docs.html
vendored
4
deps/npm/html/api/docs.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>docs</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -25,7 +25,7 @@ optional version number.</p>
|
||||
<p>This command will launch a browser, so this command may not be the most
|
||||
friendly for programmatic use.</p>
|
||||
</div>
|
||||
<p id="footer">docs — npm@1.1.21</p>
|
||||
<p id="footer">docs — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/edit.html
vendored
4
deps/npm/html/api/edit.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>edit</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -30,7 +30,7 @@ to open. The package can optionally have a version number attached.</p>
|
||||
<p>Since this command opens an editor in a new process, be careful about where
|
||||
and how this is used.</p>
|
||||
</div>
|
||||
<p id="footer">edit — npm@1.1.21</p>
|
||||
<p id="footer">edit — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/explore.html
vendored
4
deps/npm/html/api/explore.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>explore</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -24,7 +24,7 @@ sure to use <code>npm rebuild <pkg></code> if you make any changes.</p>
|
||||
|
||||
<p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
|
||||
</div>
|
||||
<p id="footer">explore — npm@1.1.21</p>
|
||||
<p id="footer">explore — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
88
deps/npm/html/api/find.html
vendored
88
deps/npm/html/api/find.html
vendored
@@ -1,88 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>find</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../api/ls.html">ls</a></h1> <p>List installed packages</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.ls(args, [silent,] callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command will print to stdout all the versions of packages that are
|
||||
installed, as well as their dependencies, in a tree-structure. It will also
|
||||
return that data using the callback.</p>
|
||||
|
||||
<p>This command does not take any arguments, but args must be defined.
|
||||
Beyond that, if any arguments are passed in, npm will politely warn that it
|
||||
does not take positional arguments, though you may set config flags
|
||||
like with any other command, such as <code>global</code> to list global packages.</p>
|
||||
|
||||
<p>It will print out extraneous, missing, and invalid packages.</p>
|
||||
|
||||
<p>If the silent parameter is set to true, nothing will be output to the screen,
|
||||
but the data will still be returned.</p>
|
||||
|
||||
<h2 id="CONFIGURATION">CONFIGURATION</h2>
|
||||
|
||||
<h3 id="long">long</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>Show extended information.</p>
|
||||
|
||||
<h3 id="parseable">parseable</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>Show parseable output instead of tree view.</p>
|
||||
|
||||
<h3 id="global">global</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>List packages in the global install prefix instead of in the current
|
||||
project.</p>
|
||||
|
||||
<p>Note, if parseable is set or long isn't set, then duplicates will be trimmed.
|
||||
This means that if a submodule a same dependency as a parent module, then the
|
||||
dependency will only be output once.</p>
|
||||
</div>
|
||||
<p id="footer">find — npm@1.1.0-alpha-3</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
||||
.filter(function (el) {
|
||||
return el.parentNode === wrapper
|
||||
&& el.tagName.match(/H[1-6]/)
|
||||
&& el.id
|
||||
})
|
||||
var l = 2
|
||||
, toc = document.createElement("ul")
|
||||
toc.innerHTML = els.map(function (el) {
|
||||
var i = el.tagName.charAt(1)
|
||||
, out = ""
|
||||
while (i > l) {
|
||||
out += "<ul>"
|
||||
l ++
|
||||
}
|
||||
while (i < l) {
|
||||
out += "</ul>"
|
||||
l --
|
||||
}
|
||||
out += "<li><a href='#" + el.id + "'>" +
|
||||
( el.innerText || el.text || el.innerHTML)
|
||||
+ "</a>"
|
||||
return out
|
||||
}).join("\n")
|
||||
toc.id = "toc"
|
||||
document.body.appendChild(toc)
|
||||
})()
|
||||
</script>
|
||||
</body></html>
|
||||
68
deps/npm/html/api/get.html
vendored
68
deps/npm/html/api/get.html
vendored
@@ -1,68 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>get</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../api/config.html">config</a></h1> <p>Manage the npm configuration files</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.config(args, callback)
|
||||
var val = npm.config.get(key)
|
||||
npm.config.set(key, val)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This function acts much the same way as the command-line version. The first
|
||||
element in the array tells config what to do. Possible values are:</p>
|
||||
|
||||
<ul><li><p><code>set</code></p><p>Sets a config parameter. The second element in <code>args</code> is interpreted as the
|
||||
key, and the third element is interpreted as the value.</p></li><li><p><code>get</code></p><p>Gets the value of a config parameter. The second element in <code>args</code> is the
|
||||
key to get the value of.</p></li><li><p><code>delete</code> (<code>rm</code> or <code>del</code>)</p><p>Deletes a parameter from the config. The second element in <code>args</code> is the
|
||||
key to delete.</p></li><li><p><code>list</code> (<code>ls</code>)</p><p>Show all configs that aren't secret. No parameters necessary.</p></li><li><p><code>edit</code>:</p><p>Opens the config file in the default editor. This command isn't very useful
|
||||
programmatically, but it is made available.</p></li></ul>
|
||||
|
||||
<p>To programmatically access npm configuration settings, or set them for
|
||||
the duration of a program, use the <code>npm.config.set</code> and <code>npm.config.get</code>
|
||||
functions instead.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">get — npm@1.1.0-alpha-3</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
||||
.filter(function (el) {
|
||||
return el.parentNode === wrapper
|
||||
&& el.tagName.match(/H[1-6]/)
|
||||
&& el.id
|
||||
})
|
||||
var l = 2
|
||||
, toc = document.createElement("ul")
|
||||
toc.innerHTML = els.map(function (el) {
|
||||
var i = el.tagName.charAt(1)
|
||||
, out = ""
|
||||
while (i > l) {
|
||||
out += "<ul>"
|
||||
l ++
|
||||
}
|
||||
while (i < l) {
|
||||
out += "</ul>"
|
||||
l --
|
||||
}
|
||||
out += "<li><a href='#" + el.id + "'>" +
|
||||
( el.innerText || el.text || el.innerHTML)
|
||||
+ "</a>"
|
||||
return out
|
||||
}).join("\n")
|
||||
toc.id = "toc"
|
||||
document.body.appendChild(toc)
|
||||
})()
|
||||
</script>
|
||||
</body></html>
|
||||
4
deps/npm/html/api/help-search.html
vendored
4
deps/npm/html/api/help-search.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>help-search</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -32,7 +32,7 @@ Name of the file that matched</li></ul>
|
||||
|
||||
<p>The silent parameter is not neccessary not used, but it may in the future.</p>
|
||||
</div>
|
||||
<p id="footer">help-search — npm@1.1.21</p>
|
||||
<p id="footer">help-search — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
60
deps/npm/html/api/home.html
vendored
60
deps/npm/html/api/home.html
vendored
@@ -1,60 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>home</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../api/docs.html">docs</a></h1> <p>Docs for a package in a web browser maybe</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.docs(package, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
documentation URL, and then tries to open it using the <code>--browser</code>
|
||||
config param.</p>
|
||||
|
||||
<p>Like other commands, the first parameter is an array. This command only
|
||||
uses the first element, which is expected to be a package name with an
|
||||
optional version number.</p>
|
||||
|
||||
<p>This command will launch a browser, so this command may not be the most
|
||||
friendly for programmatic use.</p>
|
||||
</div>
|
||||
<p id="footer">home — npm@1.1.0-alpha-3</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
||||
.filter(function (el) {
|
||||
return el.parentNode === wrapper
|
||||
&& el.tagName.match(/H[1-6]/)
|
||||
&& el.id
|
||||
})
|
||||
var l = 2
|
||||
, toc = document.createElement("ul")
|
||||
toc.innerHTML = els.map(function (el) {
|
||||
var i = el.tagName.charAt(1)
|
||||
, out = ""
|
||||
while (i > l) {
|
||||
out += "<ul>"
|
||||
l ++
|
||||
}
|
||||
while (i < l) {
|
||||
out += "</ul>"
|
||||
l --
|
||||
}
|
||||
out += "<li><a href='#" + el.id + "'>" +
|
||||
( el.innerText || el.text || el.innerHTML)
|
||||
+ "</a>"
|
||||
return out
|
||||
}).join("\n")
|
||||
toc.id = "toc"
|
||||
document.body.appendChild(toc)
|
||||
})()
|
||||
</script>
|
||||
</body></html>
|
||||
4
deps/npm/html/api/init.html
vendored
4
deps/npm/html/api/init.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>init</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -35,7 +35,7 @@ then go ahead and use this programmatically.</p>
|
||||
|
||||
<p><a href="../doc/json.html">json(1)</a></p>
|
||||
</div>
|
||||
<p id="footer">init — npm@1.1.21</p>
|
||||
<p id="footer">init — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/install.html
vendored
4
deps/npm/html/api/install.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>install</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -25,7 +25,7 @@ the name of a package to be installed.</p>
|
||||
<p>Finally, 'callback' is a function that will be called when all packages have been
|
||||
installed or when an error has been encountered.</p>
|
||||
</div>
|
||||
<p id="footer">install — npm@1.1.21</p>
|
||||
<p id="footer">install — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/link.html
vendored
4
deps/npm/html/api/link.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>link</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -39,7 +39,7 @@ npm.commands.link('redis', cb) # link-install the package</code></pre>
|
||||
<p>Now, any changes to the redis package will be reflected in
|
||||
the package in the current working directory</p>
|
||||
</div>
|
||||
<p id="footer">link — npm@1.1.21</p>
|
||||
<p id="footer">link — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
88
deps/npm/html/api/list.html
vendored
88
deps/npm/html/api/list.html
vendored
@@ -1,88 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>list</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../api/ls.html">ls</a></h1> <p>List installed packages</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.ls(args, [silent,] callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command will print to stdout all the versions of packages that are
|
||||
installed, as well as their dependencies, in a tree-structure. It will also
|
||||
return that data using the callback.</p>
|
||||
|
||||
<p>This command does not take any arguments, but args must be defined.
|
||||
Beyond that, if any arguments are passed in, npm will politely warn that it
|
||||
does not take positional arguments, though you may set config flags
|
||||
like with any other command, such as <code>global</code> to list global packages.</p>
|
||||
|
||||
<p>It will print out extraneous, missing, and invalid packages.</p>
|
||||
|
||||
<p>If the silent parameter is set to true, nothing will be output to the screen,
|
||||
but the data will still be returned.</p>
|
||||
|
||||
<h2 id="CONFIGURATION">CONFIGURATION</h2>
|
||||
|
||||
<h3 id="long">long</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>Show extended information.</p>
|
||||
|
||||
<h3 id="parseable">parseable</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>Show parseable output instead of tree view.</p>
|
||||
|
||||
<h3 id="global">global</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>List packages in the global install prefix instead of in the current
|
||||
project.</p>
|
||||
|
||||
<p>Note, if parseable is set or long isn't set, then duplicates will be trimmed.
|
||||
This means that if a submodule a same dependency as a parent module, then the
|
||||
dependency will only be output once.</p>
|
||||
</div>
|
||||
<p id="footer">list — npm@1.1.0-alpha-3</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
||||
.filter(function (el) {
|
||||
return el.parentNode === wrapper
|
||||
&& el.tagName.match(/H[1-6]/)
|
||||
&& el.id
|
||||
})
|
||||
var l = 2
|
||||
, toc = document.createElement("ul")
|
||||
toc.innerHTML = els.map(function (el) {
|
||||
var i = el.tagName.charAt(1)
|
||||
, out = ""
|
||||
while (i > l) {
|
||||
out += "<ul>"
|
||||
l ++
|
||||
}
|
||||
while (i < l) {
|
||||
out += "</ul>"
|
||||
l --
|
||||
}
|
||||
out += "<li><a href='#" + el.id + "'>" +
|
||||
( el.innerText || el.text || el.innerHTML)
|
||||
+ "</a>"
|
||||
return out
|
||||
}).join("\n")
|
||||
toc.id = "toc"
|
||||
document.body.appendChild(toc)
|
||||
})()
|
||||
</script>
|
||||
</body></html>
|
||||
74
deps/npm/html/api/ln.html
vendored
74
deps/npm/html/api/ln.html
vendored
@@ -1,74 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>ln</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../api/link.html">link</a></h1> <p>Symlink a package folder</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.command.link(callback)
|
||||
npm.command.link(packages, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>Package linking is a two-step process.</p>
|
||||
|
||||
<p>Without parameters, link will create a globally-installed
|
||||
symbolic link from <code>prefix/package-name</code> to the current folder.</p>
|
||||
|
||||
<p>With a parameters, link will create a symlink from the local <code>node_modules</code>
|
||||
folder to the global symlink.</p>
|
||||
|
||||
<p>When creating tarballs for <code>npm publish</code>, the linked packages are
|
||||
"snapshotted" to their current state by resolving the symbolic links.</p>
|
||||
|
||||
<p>This is
|
||||
handy for installing your own stuff, so that you can work on it and test it
|
||||
iteratively without having to continually rebuild.</p>
|
||||
|
||||
<p>For example:</p>
|
||||
|
||||
<pre><code>npm.commands.link(cb) # creates global link from the cwd
|
||||
# (say redis package)
|
||||
npm.commands.link('redis', cb) # link-install the package</code></pre>
|
||||
|
||||
<p>Now, any changes to the redis package will be reflected in
|
||||
the package in the current working directory</p>
|
||||
</div>
|
||||
<p id="footer">ln — npm@1.1.0-alpha-3</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
||||
.filter(function (el) {
|
||||
return el.parentNode === wrapper
|
||||
&& el.tagName.match(/H[1-6]/)
|
||||
&& el.id
|
||||
})
|
||||
var l = 2
|
||||
, toc = document.createElement("ul")
|
||||
toc.innerHTML = els.map(function (el) {
|
||||
var i = el.tagName.charAt(1)
|
||||
, out = ""
|
||||
while (i > l) {
|
||||
out += "<ul>"
|
||||
l ++
|
||||
}
|
||||
while (i < l) {
|
||||
out += "</ul>"
|
||||
l --
|
||||
}
|
||||
out += "<li><a href='#" + el.id + "'>" +
|
||||
( el.innerText || el.text || el.innerHTML)
|
||||
+ "</a>"
|
||||
return out
|
||||
}).join("\n")
|
||||
toc.id = "toc"
|
||||
document.body.appendChild(toc)
|
||||
})()
|
||||
</script>
|
||||
</body></html>
|
||||
4
deps/npm/html/api/load.html
vendored
4
deps/npm/html/api/load.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>load</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -32,7 +32,7 @@ config object.</p>
|
||||
|
||||
<p>For a list of all the available command-line configs, see <code>npm help config</code></p>
|
||||
</div>
|
||||
<p id="footer">load — npm@1.1.21</p>
|
||||
<p id="footer">load — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/ls.html
vendored
4
deps/npm/html/api/ls.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>ls</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -59,7 +59,7 @@ project.</p>
|
||||
This means that if a submodule a same dependency as a parent module, then the
|
||||
dependency will only be output once.</p>
|
||||
</div>
|
||||
<p id="footer">ls — npm@1.1.21</p>
|
||||
<p id="footer">ls — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
6
deps/npm/html/api/npm.html
vendored
6
deps/npm/html/api/npm.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>npm</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -24,7 +24,7 @@ npm.load(configObject, function (er, npm) {
|
||||
|
||||
<h2 id="VERSION">VERSION</h2>
|
||||
|
||||
<p>1.1.21</p>
|
||||
<p>1.1.36</p>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
@@ -91,7 +91,7 @@ method names. Use the <code>npm.deref</code> method to find the real name.</p>
|
||||
|
||||
<pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre>
|
||||
</div>
|
||||
<p id="footer">npm — npm@1.1.21</p>
|
||||
<p id="footer">npm — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/outdated.html
vendored
4
deps/npm/html/api/outdated.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>outdated</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -19,7 +19,7 @@ currently outdated.</p>
|
||||
|
||||
<p>If the 'packages' parameter is left out, npm will check all packages.</p>
|
||||
</div>
|
||||
<p id="footer">outdated — npm@1.1.21</p>
|
||||
<p id="footer">outdated — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/owner.html
vendored
4
deps/npm/html/api/owner.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>owner</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -34,7 +34,7 @@ that is not implemented at this time.</p>
|
||||
|
||||
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">owner — npm@1.1.21</p>
|
||||
<p id="footer">owner — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/pack.html
vendored
4
deps/npm/html/api/pack.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>pack</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -25,7 +25,7 @@ overwritten the second time.</p>
|
||||
|
||||
<p>If no arguments are supplied, then npm packs the current package folder.</p>
|
||||
</div>
|
||||
<p id="footer">pack — npm@1.1.21</p>
|
||||
<p id="footer">pack — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/prefix.html
vendored
4
deps/npm/html/api/prefix.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>prefix</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
<p>This function is not useful programmatically</p>
|
||||
</div>
|
||||
<p id="footer">prefix — npm@1.1.21</p>
|
||||
<p id="footer">prefix — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/prune.html
vendored
4
deps/npm/html/api/prune.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>prune</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -23,7 +23,7 @@
|
||||
<p>Extraneous packages are packages that are not listed on the parent
|
||||
package's dependencies list.</p>
|
||||
</div>
|
||||
<p id="footer">prune — npm@1.1.21</p>
|
||||
<p id="footer">prune — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/publish.html
vendored
4
deps/npm/html/api/publish.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>publish</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -32,7 +32,7 @@ the registry. Overwrites when the "force" environment variable is set.</p>
|
||||
|
||||
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../api/owner.html">owner(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">publish — npm@1.1.21</p>
|
||||
<p id="footer">publish — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/rebuild.html
vendored
4
deps/npm/html/api/rebuild.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>rebuild</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -22,7 +22,7 @@ the new binary. If no 'packages' parameter is specify, every package will be reb
|
||||
|
||||
<p>See <code>npm help build</code></p>
|
||||
</div>
|
||||
<p id="footer">rebuild — npm@1.1.21</p>
|
||||
<p id="footer">rebuild — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/restart.html
vendored
4
deps/npm/html/api/restart.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>restart</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -27,7 +27,7 @@ in the <code>packages</code> parameter.</p>
|
||||
|
||||
<ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">restart — npm@1.1.21</p>
|
||||
<p id="footer">restart — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
57
deps/npm/html/api/rm.html
vendored
57
deps/npm/html/api/rm.html
vendored
@@ -1,57 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>rm</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../api/uninstall.html">uninstall</a></h1> <p>uninstall a package programmatically</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.uninstall(packages, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This acts much the same ways as uninstalling on the command-line.</p>
|
||||
|
||||
<p>The 'packages' parameter is an array of strings. Each element in the array is
|
||||
the name of a package to be uninstalled.</p>
|
||||
|
||||
<p>Finally, 'callback' is a function that will be called when all packages have been
|
||||
uninstalled or when an error has been encountered.</p>
|
||||
</div>
|
||||
<p id="footer">rm — npm@1.1.0-alpha-3</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
||||
.filter(function (el) {
|
||||
return el.parentNode === wrapper
|
||||
&& el.tagName.match(/H[1-6]/)
|
||||
&& el.id
|
||||
})
|
||||
var l = 2
|
||||
, toc = document.createElement("ul")
|
||||
toc.innerHTML = els.map(function (el) {
|
||||
var i = el.tagName.charAt(1)
|
||||
, out = ""
|
||||
while (i > l) {
|
||||
out += "<ul>"
|
||||
l ++
|
||||
}
|
||||
while (i < l) {
|
||||
out += "</ul>"
|
||||
l --
|
||||
}
|
||||
out += "<li><a href='#" + el.id + "'>" +
|
||||
( el.innerText || el.text || el.innerHTML)
|
||||
+ "</a>"
|
||||
return out
|
||||
}).join("\n")
|
||||
toc.id = "toc"
|
||||
document.body.appendChild(toc)
|
||||
})()
|
||||
</script>
|
||||
</body></html>
|
||||
4
deps/npm/html/api/root.html
vendored
4
deps/npm/html/api/root.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>root</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
<p>This function is not useful programmatically.</p>
|
||||
</div>
|
||||
<p id="footer">root — npm@1.1.21</p>
|
||||
<p id="footer">root — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/run-script.html
vendored
4
deps/npm/html/api/run-script.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>run-script</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -29,7 +29,7 @@ assumed to be the command to run. All other elements are ignored.</p>
|
||||
|
||||
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../api/test.html">test(3)</a></li><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/restart.html">restart(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">run-script — npm@1.1.21</p>
|
||||
<p id="footer">run-script — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/search.html
vendored
4
deps/npm/html/api/search.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>search</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -32,7 +32,7 @@ excluded term (the "searchexclude" config). The search is case insensitive
|
||||
and doesn't try to read your mind (it doesn't do any verb tense matching or the
|
||||
like).</p>
|
||||
</div>
|
||||
<p id="footer">search — npm@1.1.21</p>
|
||||
<p id="footer">search — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
68
deps/npm/html/api/set.html
vendored
68
deps/npm/html/api/set.html
vendored
@@ -1,68 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>set</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../api/config.html">config</a></h1> <p>Manage the npm configuration files</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.config(args, callback)
|
||||
var val = npm.config.get(key)
|
||||
npm.config.set(key, val)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This function acts much the same way as the command-line version. The first
|
||||
element in the array tells config what to do. Possible values are:</p>
|
||||
|
||||
<ul><li><p><code>set</code></p><p>Sets a config parameter. The second element in <code>args</code> is interpreted as the
|
||||
key, and the third element is interpreted as the value.</p></li><li><p><code>get</code></p><p>Gets the value of a config parameter. The second element in <code>args</code> is the
|
||||
key to get the value of.</p></li><li><p><code>delete</code> (<code>rm</code> or <code>del</code>)</p><p>Deletes a parameter from the config. The second element in <code>args</code> is the
|
||||
key to delete.</p></li><li><p><code>list</code> (<code>ls</code>)</p><p>Show all configs that aren't secret. No parameters necessary.</p></li><li><p><code>edit</code>:</p><p>Opens the config file in the default editor. This command isn't very useful
|
||||
programmatically, but it is made available.</p></li></ul>
|
||||
|
||||
<p>To programmatically access npm configuration settings, or set them for
|
||||
the duration of a program, use the <code>npm.config.set</code> and <code>npm.config.get</code>
|
||||
functions instead.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">set — npm@1.1.0-alpha-3</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
||||
.filter(function (el) {
|
||||
return el.parentNode === wrapper
|
||||
&& el.tagName.match(/H[1-6]/)
|
||||
&& el.id
|
||||
})
|
||||
var l = 2
|
||||
, toc = document.createElement("ul")
|
||||
toc.innerHTML = els.map(function (el) {
|
||||
var i = el.tagName.charAt(1)
|
||||
, out = ""
|
||||
while (i > l) {
|
||||
out += "<ul>"
|
||||
l ++
|
||||
}
|
||||
while (i < l) {
|
||||
out += "</ul>"
|
||||
l --
|
||||
}
|
||||
out += "<li><a href='#" + el.id + "'>" +
|
||||
( el.innerText || el.text || el.innerHTML)
|
||||
+ "</a>"
|
||||
return out
|
||||
}).join("\n")
|
||||
toc.id = "toc"
|
||||
document.body.appendChild(toc)
|
||||
})()
|
||||
</script>
|
||||
</body></html>
|
||||
4
deps/npm/html/api/shrinkwrap.html
vendored
4
deps/npm/html/api/shrinkwrap.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>shrinkwrap</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -26,7 +26,7 @@ but the shrinkwrap file will still be written.</p>
|
||||
<p>Finally, 'callback' is a function that will be called when the shrinkwrap has
|
||||
been saved.</p>
|
||||
</div>
|
||||
<p id="footer">shrinkwrap — npm@1.1.21</p>
|
||||
<p id="footer">shrinkwrap — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/start.html
vendored
4
deps/npm/html/api/start.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>start</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -19,7 +19,7 @@
|
||||
<p>npm can run tests on multiple packages. Just specify multiple packages
|
||||
in the <code>packages</code> parameter.</p>
|
||||
</div>
|
||||
<p id="footer">start — npm@1.1.21</p>
|
||||
<p id="footer">start — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/stop.html
vendored
4
deps/npm/html/api/stop.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>stop</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -19,7 +19,7 @@
|
||||
<p>npm can run stop on multiple packages. Just specify multiple packages
|
||||
in the <code>packages</code> parameter.</p>
|
||||
</div>
|
||||
<p id="footer">stop — npm@1.1.21</p>
|
||||
<p id="footer">stop — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
336
deps/npm/html/api/style.css
vendored
336
deps/npm/html/api/style.css
vendored
@@ -1,336 +0,0 @@
|
||||
|
||||
/* reset */
|
||||
* {
|
||||
margin:0;
|
||||
padding:0;
|
||||
border:none;
|
||||
font-family:inherit;
|
||||
font-size:inherit;
|
||||
font-weight:inherit;
|
||||
}
|
||||
:target::before {
|
||||
content:" >>> ";
|
||||
position:absolute;
|
||||
display:block;
|
||||
opacity:0.5;
|
||||
color:#f00;
|
||||
margin:0 0 0 -2em;
|
||||
}
|
||||
abbr, acronym {
|
||||
border-bottom:1px dotted #aaa;
|
||||
}
|
||||
kbd, code, pre {
|
||||
font-family:monospace;
|
||||
margin:0;
|
||||
font-size:18px;
|
||||
line-height:24px;
|
||||
background:#eee;
|
||||
outline:1px solid #ccc;
|
||||
}
|
||||
kbd code, kbd pre, kbd kbd,
|
||||
pre code, pre pre, pre kbd,
|
||||
code code, code pre, code kbd { outline: none }
|
||||
.dollar::before {
|
||||
content:"$ ";
|
||||
display:inline;
|
||||
}
|
||||
p, ul, ol, dl, pre {
|
||||
margin:30px 0;
|
||||
line-height:30px;
|
||||
}
|
||||
hr {
|
||||
margin:30px auto 29px;
|
||||
width:66%;
|
||||
height:1px;
|
||||
background:#aaa;
|
||||
}
|
||||
pre {
|
||||
display:block;
|
||||
}
|
||||
dd :first-child {
|
||||
margin-top:0;
|
||||
}
|
||||
|
||||
body {
|
||||
quotes:"“" "”" "‘" "’";
|
||||
width:666px;
|
||||
margin:30px auto 120px;
|
||||
font-family:Times New Roman, serif;
|
||||
font-size:20px;
|
||||
background:#fff;
|
||||
line-height:30px;
|
||||
color:#111;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
position:relative;
|
||||
font-size:16px;
|
||||
line-height:30px;
|
||||
font-weight:bold;
|
||||
width:85%;
|
||||
margin:0 auto;
|
||||
}
|
||||
blockquote::before {
|
||||
font-size:90px;
|
||||
display:block;
|
||||
position:absolute;
|
||||
top:20px;
|
||||
right:100%;
|
||||
content:"“";
|
||||
padding-right:10px;
|
||||
color:#ccc;
|
||||
}
|
||||
.source cite::before {
|
||||
content:"— ";
|
||||
}
|
||||
.source {
|
||||
padding-left:20%;
|
||||
margin-top:30px;
|
||||
}
|
||||
.source cite span {
|
||||
font-style:normal;
|
||||
}
|
||||
blockquote p {
|
||||
margin-bottom:0;
|
||||
}
|
||||
.quote blockquote {
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6, dt, #header {
|
||||
font-family:serif;
|
||||
font-size:20px;
|
||||
font-weight:bold;
|
||||
}
|
||||
h2 {
|
||||
background:#eee;
|
||||
}
|
||||
h1, h2 {
|
||||
line-height:40px;
|
||||
}
|
||||
|
||||
i, em, cite {
|
||||
font-style:italic;
|
||||
}
|
||||
b, strong {
|
||||
font-weight:bold;
|
||||
}
|
||||
i, em, cite, b, strong, small {
|
||||
line-height:28px;
|
||||
}
|
||||
small, .small, .small *, aside {
|
||||
font-style:italic;
|
||||
color:#669;
|
||||
font-size:18px;
|
||||
}
|
||||
spall a, .small a {
|
||||
text-decoration:underline;
|
||||
}
|
||||
del {
|
||||
text-decoration:line-through;
|
||||
}
|
||||
ins {
|
||||
text-decoration:underline;
|
||||
}
|
||||
.alignright { display:block; float:right; margin-left:1em; }
|
||||
.alignleft { display:block; float:left; margin-right:1em; }
|
||||
|
||||
q:before, q q q:before, q q q q q:before, q q q q q q q:before { content:"“"; }
|
||||
q q:before, q q q q:before, q q q q q q:before, q q q q q q q q:before { content:"‘"; }
|
||||
q:after, q q q:after, q q q q q:after, q q q q q q q:after { content:"”"; }
|
||||
q q:after, q q q q:after, q q q q q q:after, q q q q q q q q:after { content:"’"; }
|
||||
|
||||
a { color:#00f; text-decoration:none; }
|
||||
a:visited { color:#636; }
|
||||
a:hover, a:active { color:#900!important; text-decoration:underline; }
|
||||
|
||||
h1 {
|
||||
font-weight:bold;
|
||||
background:#fff;
|
||||
}
|
||||
h1 a, h1 a:visited {
|
||||
font-family:gubblefont, GubbleBum Blocky, GubbleBum, monospace;
|
||||
font-size:60px;
|
||||
color:#900;
|
||||
display:block;
|
||||
}
|
||||
h1 a:focus, h1 a:hover, h1 a:active {
|
||||
color:#f00!important;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.navigation {
|
||||
display:table;
|
||||
width:100%;
|
||||
margin:0 0 30px 0;
|
||||
position:relative;
|
||||
}
|
||||
#nav-above {
|
||||
margin-bottom:0;
|
||||
}
|
||||
.navigation .nav-previous {
|
||||
display:table-cell;
|
||||
text-align:left;
|
||||
width:50%;
|
||||
}
|
||||
/* hang the » and « off into the margins */
|
||||
.navigation .nav-previous a:before, .navigation .nav-next a:after {
|
||||
content: "«";
|
||||
display:block;
|
||||
height:30px;
|
||||
margin-bottom:-30px;
|
||||
text-decoration:none;
|
||||
margin-left:-15px;
|
||||
}
|
||||
.navigation .nav-next a:after {
|
||||
content: "»";
|
||||
text-align:right;
|
||||
margin-left:0;
|
||||
margin-top:-30px;
|
||||
margin-right:-15px;
|
||||
}
|
||||
|
||||
|
||||
.navigation .nav-next {
|
||||
display:table-cell;
|
||||
text-align:right;
|
||||
width:50%;
|
||||
}
|
||||
.navigation a {
|
||||
display:block;
|
||||
width:100%;
|
||||
height:100%;
|
||||
}
|
||||
|
||||
input, button, textarea {
|
||||
border:0;
|
||||
line-height:30px;
|
||||
}
|
||||
textarea {
|
||||
height:300px;
|
||||
}
|
||||
input {
|
||||
height:30px;
|
||||
line-height:30px;
|
||||
}
|
||||
input.submit, input#submit, input.button, button, input[type=submit] {
|
||||
cursor:hand; cursor:pointer;
|
||||
outline:1px solid #ccc;
|
||||
}
|
||||
|
||||
#wrapper {
|
||||
margin-bottom:90px;
|
||||
position:relative;
|
||||
z-index:1;
|
||||
*zoom:1;
|
||||
background:#fff;
|
||||
}
|
||||
#wrapper:after {
|
||||
display:block;
|
||||
content:".";
|
||||
visibility:hidden;
|
||||
width:0;
|
||||
height:0;
|
||||
clear:both;
|
||||
}
|
||||
|
||||
.sidebar .xoxo > li {
|
||||
float:left;
|
||||
width:50%;
|
||||
}
|
||||
.sidebar li {
|
||||
list-style:none;
|
||||
}
|
||||
.sidebar #elsewhere {
|
||||
margin-left:-10%;
|
||||
margin-right:-10%;
|
||||
}
|
||||
.sidebar #rss-links, .sidebar #twitter-feeds {
|
||||
float:right;
|
||||
clear:right;
|
||||
width:20%;
|
||||
}
|
||||
.sidebar #comment {
|
||||
clear:both;
|
||||
float:none;
|
||||
width:100%;
|
||||
}
|
||||
.sidebar #search {
|
||||
clear:both;
|
||||
float:none;
|
||||
width:100%;
|
||||
}
|
||||
.sidebar #search h2 {
|
||||
margin-left:40%;
|
||||
}
|
||||
.sidebar #search #s {
|
||||
width:90%;
|
||||
float:left;
|
||||
}
|
||||
.sidebar #search #searchsubmit {
|
||||
width:10%;
|
||||
float:right;
|
||||
}
|
||||
.sidebar * {
|
||||
font-size:15px;
|
||||
line-height:30px;
|
||||
}
|
||||
|
||||
#footer, #footer * {
|
||||
text-align:right;
|
||||
font-size:16px;
|
||||
color:#ccc;
|
||||
font-style:italic;
|
||||
word-spacing:1em;
|
||||
}
|
||||
|
||||
#toc {
|
||||
position:absolute;
|
||||
top:0;
|
||||
right:0;
|
||||
padding:40px 0 40px 20px;
|
||||
margin:0;
|
||||
width:200px;
|
||||
opacity:0.2;
|
||||
z-index:-1;
|
||||
}
|
||||
#toc:hover {
|
||||
opacity:1;
|
||||
background:#fff;
|
||||
z-index:999;
|
||||
}
|
||||
#toc ul {
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
#toc, #toc li {
|
||||
list-style-type:none;
|
||||
font-size:15px;
|
||||
line-height:15px;
|
||||
}
|
||||
#toc li {
|
||||
padding:0 0 0 10px;
|
||||
}
|
||||
#toc li a {
|
||||
position:relative;
|
||||
display:block;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family:gubblefont;
|
||||
src: url(./GubbleBum-Blocky.ttf) format("truetype");
|
||||
}
|
||||
|
||||
@media print {
|
||||
a[href] {
|
||||
color:inherit;
|
||||
}
|
||||
a[href]:after {
|
||||
white-space:nowrap;
|
||||
content:" " attr(href);
|
||||
}
|
||||
a[href^=\#], .navigation {
|
||||
display:none;
|
||||
}
|
||||
}
|
||||
|
||||
4
deps/npm/html/api/submodule.html
vendored
4
deps/npm/html/api/submodule.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>submodule</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
|
||||
|
||||
<ul><li>npm help json</li><li>git help submodule</li></ul>
|
||||
</div>
|
||||
<p id="footer">submodule — npm@1.1.21</p>
|
||||
<p id="footer">submodule — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/tag.html
vendored
4
deps/npm/html/api/tag.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>tag</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -29,7 +29,7 @@ parameter is missing or falsey (empty), the default froom the config will be
|
||||
used. For more information about how to set this config, check
|
||||
<code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p>
|
||||
</div>
|
||||
<p id="footer">tag — npm@1.1.21</p>
|
||||
<p id="footer">tag — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/test.html
vendored
4
deps/npm/html/api/test.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>test</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -22,7 +22,7 @@ true.</p>
|
||||
<p>npm can run tests on multiple packages. Just specify multiple packages
|
||||
in the <code>packages</code> parameter.</p>
|
||||
</div>
|
||||
<p id="footer">test — npm@1.1.21</p>
|
||||
<p id="footer">test — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/uninstall.html
vendored
4
deps/npm/html/api/uninstall.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>uninstall</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -22,7 +22,7 @@ the name of a package to be uninstalled.</p>
|
||||
<p>Finally, 'callback' is a function that will be called when all packages have been
|
||||
uninstalled or when an error has been encountered.</p>
|
||||
</div>
|
||||
<p id="footer">uninstall — npm@1.1.21</p>
|
||||
<p id="footer">uninstall — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/unpublish.html
vendored
4
deps/npm/html/api/unpublish.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>unpublish</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -26,7 +26,7 @@ is what is meant.</p>
|
||||
<p>If no version is specified, or if all versions are removed then
|
||||
the root package entry is removed from the registry entirely.</p>
|
||||
</div>
|
||||
<p id="footer">unpublish — npm@1.1.21</p>
|
||||
<p id="footer">unpublish — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/update.html
vendored
4
deps/npm/html/api/update.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>update</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
<p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p>
|
||||
</div>
|
||||
<p id="footer">update — npm@1.1.21</p>
|
||||
<p id="footer">update — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/version.html
vendored
4
deps/npm/html/api/version.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>version</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -24,7 +24,7 @@ fail if the repo is not clean.</p>
|
||||
parameter. The difference, however, is this function will fail if it does
|
||||
not have exactly one element. The only element should be a version number.</p>
|
||||
</div>
|
||||
<p id="footer">version — npm@1.1.21</p>
|
||||
<p id="footer">version — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/view.html
vendored
4
deps/npm/html/api/view.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>view</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -99,7 +99,7 @@ the field name.</p>
|
||||
|
||||
<p>corresponding to the list of fields selected.</p>
|
||||
</div>
|
||||
<p id="footer">view — npm@1.1.21</p>
|
||||
<p id="footer">view — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/api/whoami.html
vendored
4
deps/npm/html/api/whoami.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>whoami</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
<p>This function is not useful programmatically</p>
|
||||
</div>
|
||||
<p id="footer">whoami — npm@1.1.21</p>
|
||||
<p id="footer">whoami — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
BIN
deps/npm/html/doc/GubbleBum-Blocky.ttf
vendored
BIN
deps/npm/html/doc/GubbleBum-Blocky.ttf
vendored
Binary file not shown.
12
deps/npm/html/doc/README.html
vendored
12
deps/npm/html/doc/README.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>README</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -96,21 +96,15 @@ git, and mess with it directly.</p>
|
||||
|
||||
<pre><code>git clone https://github.com/isaacs/npm.git
|
||||
cd npm
|
||||
git submodule update --init --recursive
|
||||
sudo make install # (or: `node cli.js install -gf`)</code></pre>
|
||||
|
||||
<p>If you're sitting in the code folder reading this document in your
|
||||
terminal, then you've already got the code. Just do:</p>
|
||||
|
||||
<pre><code>git submodule update --init --recursive
|
||||
sudo make install</code></pre>
|
||||
<pre><code>sudo make install</code></pre>
|
||||
|
||||
<p>and npm will install itself.</p>
|
||||
|
||||
<p>Note that github tarballs <strong>do not contain submodules</strong>, so
|
||||
those won't work. You'll have to also fetch the appropriate submodules
|
||||
listed in the .gitmodules file.</p>
|
||||
|
||||
<h2 id="Permissions-when-Using-npm-to-Install-Other-Stuff">Permissions when Using npm to Install Other Stuff</h2>
|
||||
|
||||
<p><strong>tl;dr</strong></p>
|
||||
@@ -267,7 +261,7 @@ will no doubt tell you to put the output in a gist or email.</p>
|
||||
|
||||
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer"><a href="../doc/README.html">README</a> — npm@1.1.21</p>
|
||||
<p id="footer"><a href="../doc/README.html">README</a> — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/doc/adduser.html
vendored
4
deps/npm/html/doc/adduser.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>adduser</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -39,7 +39,7 @@ authorize on a new machine.</p>
|
||||
|
||||
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">adduser — npm@1.1.21</p>
|
||||
<p id="footer">adduser — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
69
deps/npm/html/doc/author.html
vendored
69
deps/npm/html/doc/author.html
vendored
@@ -1,69 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>author</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../doc/owner.html">owner</a></h1> <p>Manage package owners</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm owner ls <package name>
|
||||
npm owner add <user> <package name>
|
||||
npm owner rm <user> <package name></code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>Manage ownership of published packages.</p>
|
||||
|
||||
<ul><li>ls:
|
||||
List all the users who have access to modify a package and push new versions.
|
||||
Handy when you need to know who to bug for help.</li><li>add:
|
||||
Add a new user as a maintainer of a package. This user is enabled to modify
|
||||
metadata, publish new versions, and add other owners.</li><li>rm:
|
||||
Remove a user from the package owner list. This immediately revokes their
|
||||
privileges.</li></ul>
|
||||
|
||||
<p>Note that there is only one level of access. Either you can modify a package,
|
||||
or you can't. Future versions may contain more fine-grained access levels, but
|
||||
that is not implemented at this time.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">author — npm@1.1.0-alpha-3</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
||||
.filter(function (el) {
|
||||
return el.parentNode === wrapper
|
||||
&& el.tagName.match(/H[1-6]/)
|
||||
&& el.id
|
||||
})
|
||||
var l = 2
|
||||
, toc = document.createElement("ul")
|
||||
toc.innerHTML = els.map(function (el) {
|
||||
var i = el.tagName.charAt(1)
|
||||
, out = ""
|
||||
while (i > l) {
|
||||
out += "<ul>"
|
||||
l ++
|
||||
}
|
||||
while (i < l) {
|
||||
out += "</ul>"
|
||||
l --
|
||||
}
|
||||
out += "<li><a href='#" + el.id + "'>" +
|
||||
( el.innerText || el.text || el.innerHTML)
|
||||
+ "</a>"
|
||||
return out
|
||||
}).join("\n")
|
||||
toc.id = "toc"
|
||||
document.body.appendChild(toc)
|
||||
})()
|
||||
</script>
|
||||
</body></html>
|
||||
4
deps/npm/html/doc/bin.html
vendored
4
deps/npm/html/doc/bin.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>bin</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">bin — npm@1.1.21</p>
|
||||
<p id="footer">bin — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/doc/bugs.html
vendored
4
deps/npm/html/doc/bugs.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>bugs</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -36,7 +36,7 @@ config param.</p>
|
||||
|
||||
<ul><li><a href="../doc/docs.html">docs(1)</a></li><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">bugs — npm@1.1.21</p>
|
||||
<p id="footer">bugs — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/doc/build.html
vendored
4
deps/npm/html/doc/build.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>build</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -25,7 +25,7 @@ A folder containing a <code>package.json</code> file in its root.</li></ul>
|
||||
|
||||
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">build — npm@1.1.21</p>
|
||||
<p id="footer">build — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/doc/bundle.html
vendored
4
deps/npm/html/doc/bundle.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>bundle</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -20,7 +20,7 @@ install packages into the local space.</p>
|
||||
|
||||
<ul><li><a href="../doc/install.html">install(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">bundle — npm@1.1.21</p>
|
||||
<p id="footer">bundle — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/doc/cache.html
vendored
4
deps/npm/html/doc/cache.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>cache</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -66,7 +66,7 @@ they do not make an HTTP request to the registry.</p>
|
||||
|
||||
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">cache — npm@1.1.21</p>
|
||||
<p id="footer">cache — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/doc/changelog.html
vendored
4
deps/npm/html/doc/changelog.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>changelog</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">changelog — npm@1.1.21</p>
|
||||
<p id="footer">changelog — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
25
deps/npm/html/doc/coding-style.html
vendored
25
deps/npm/html/doc/coding-style.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>coding-style</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -133,29 +133,18 @@ Just send the error message back as the first argument to the callback.</p>
|
||||
<p>Always create a new Error object with your message. Don't just return a
|
||||
string message to the callback. Stack traces are handy.</p>
|
||||
|
||||
<p>Use the <code>require("./utils/log").er</code> function. It takes a callback and an
|
||||
error message, and returns an object that will report the message in the
|
||||
event of a failure. It's quite handy.</p>
|
||||
|
||||
<pre><code>function myThing (args, cb) {
|
||||
getData(args, function (er, data) {
|
||||
if (er) return log.er(cb, "Couldn't get data")(er)
|
||||
doSomethingElse(data, cb)
|
||||
})
|
||||
}
|
||||
function justHasToWork (cb) {
|
||||
doSomething(log.er(cb, "the doSomething failed."))
|
||||
}</code></pre>
|
||||
|
||||
<h2 id="Logging">Logging</h2>
|
||||
|
||||
<p>Logging is done using the <a href="https://github.com/isaacs/npmlog">npmlog</a>
|
||||
utility.</p>
|
||||
|
||||
<p>Please clean up logs when they are no longer helpful. In particular,
|
||||
logging the same object over and over again is not helpful. Logs should
|
||||
report what's happening so that it's easier to track down where a fault
|
||||
occurs.</p>
|
||||
|
||||
<p>Use appropriate log levels. The default log() function logs at the
|
||||
"info" level. See <code><a href="../doc/config.html">config(1)</a></code> and search for "loglevel".</p>
|
||||
<p>Use appropriate log levels. See <code><a href="../doc/config.html">config(1)</a></code> and search for
|
||||
"loglevel".</p>
|
||||
|
||||
<h2 id="Case-naming-etc">Case, naming, etc.</h2>
|
||||
|
||||
@@ -191,7 +180,7 @@ set to anything."</p>
|
||||
|
||||
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">coding-style — npm@1.1.21</p>
|
||||
<p id="footer">coding-style — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
4
deps/npm/html/doc/completion.html
vendored
4
deps/npm/html/doc/completion.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>completion</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -33,7 +33,7 @@ completions based on the arguments.</p>
|
||||
|
||||
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">completion — npm@1.1.21</p>
|
||||
<p id="footer">completion — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
137
deps/npm/html/doc/config.html
vendored
137
deps/npm/html/doc/config.html
vendored
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<title>config</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
@@ -105,7 +105,7 @@ global config.</p>
|
||||
|
||||
<p>The following shorthands are parsed on the command-line:</p>
|
||||
|
||||
<ul><li><code>-v</code>: <code>--version</code></li><li><code>-h</code>, <code>-?</code>, <code>--help</code>, <code>-H</code>: <code>--usage</code></li><li><code>-s</code>, <code>--silent</code>: <code>--loglevel silent</code></li><li><code>-q</code>, <code>--quiet</code>: <code>--loglevel warn</code></li><li><code>-d</code>: <code>--loglevel info</code></li><li><code>-dd</code>, <code>--verbose</code>: <code>--loglevel verbose</code></li><li><code>-ddd</code>: <code>--loglevel silly</code></li><li><code>-g</code>: <code>--global</code></li><li><code>-l</code>: <code>--long</code></li><li><code>-m</code>: <code>--message</code></li><li><code>-p</code>, <code>--porcelain</code>: <code>--parseable</code></li><li><code>-reg</code>: <code>--registry</code></li><li><code>-v</code>: <code>--version</code></li><li><code>-f</code>: <code>--force</code></li><li><code>-l</code>: <code>--long</code></li><li><code>-desc</code>: <code>--description</code></li><li><code>-S</code>: <code>--save</code></li><li><code>-D</code>: <code>--save-dev</code></li><li><code>-O</code>: <code>--save-optional</code></li><li><code>-y</code>: <code>--yes</code></li><li><code>-n</code>: <code>--yes false</code></li><li><code>ll</code> and <code>la</code> commands: <code>ls --long</code></li></ul>
|
||||
<ul><li><code>-v</code>: <code>--version</code></li><li><code>-h</code>, <code>-?</code>, <code>--help</code>, <code>-H</code>: <code>--usage</code></li><li><code>-s</code>, <code>--silent</code>: <code>--loglevel silent</code></li><li><code>-q</code>, <code>--quiet</code>: <code>--loglevel warn</code></li><li><code>-d</code>: <code>--loglevel info</code></li><li><code>-dd</code>, <code>--verbose</code>: <code>--loglevel verbose</code></li><li><code>-ddd</code>: <code>--loglevel silly</code></li><li><code>-g</code>: <code>--global</code></li><li><code>-l</code>: <code>--long</code></li><li><code>-m</code>: <code>--message</code></li><li><code>-p</code>, <code>--porcelain</code>: <code>--parseable</code></li><li><code>-reg</code>: <code>--registry</code></li><li><code>-v</code>: <code>--version</code></li><li><code>-f</code>: <code>--force</code></li><li><code>-l</code>: <code>--long</code></li><li><code>-desc</code>: <code>--description</code></li><li><code>-S</code>: <code>--save</code></li><li><code>-D</code>: <code>--save-dev</code></li><li><code>-O</code>: <code>--save-optional</code></li><li><code>-B</code>: <code>--save-bundle</code></li><li><code>-y</code>: <code>--yes</code></li><li><code>-n</code>: <code>--yes false</code></li><li><code>ll</code> and <code>la</code> commands: <code>ls --long</code></li></ul>
|
||||
|
||||
<p>If the specified configuration param resolves unambiguously to a known
|
||||
configuration parameter, then it is expanded to that configuration
|
||||
@@ -152,30 +152,6 @@ the package.json has this:</p>
|
||||
<p>Force npm to always require authentication when accessing the registry,
|
||||
even for <code>GET</code> requests.</p>
|
||||
|
||||
<h3 id="bin-publish">bin-publish</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>If set to true, then binary packages will be created on publish.</p>
|
||||
|
||||
<p>This is the way to opt into the "bindist" behavior described below.</p>
|
||||
|
||||
<h3 id="bindist">bindist</h3>
|
||||
|
||||
<ul><li>Default: Unstable node versions, <code>null</code>, otherwise
|
||||
<code>"<node version>-<platform>-<os release>"</code></li><li>Type: String or <code>null</code></li></ul>
|
||||
|
||||
<p>Experimental: on stable versions of node, binary distributions will be
|
||||
created with this tag. If a user then installs that package, and their
|
||||
<code>bindist</code> tag is found in the list of binary distributions, they will
|
||||
get that prebuilt version.</p>
|
||||
|
||||
<p>Pre-build node packages have their preinstall, install, and postinstall
|
||||
scripts stripped (since they are run prior to publishing), and do not
|
||||
have their <code>build</code> directories automatically ignored.</p>
|
||||
|
||||
<p>It's yet to be seen if this is a good idea.</p>
|
||||
|
||||
<h3 id="browser">browser</h3>
|
||||
|
||||
<ul><li>Default: OS X: <code>"open"</code>, others: <code>"google-chrome"</code></li><li>Type: String</li></ul>
|
||||
@@ -200,6 +176,24 @@ to trust only that specific signing authority.</p>
|
||||
|
||||
<p>The location of npm's cache directory. See <code><a href="../doc/cache.html">cache(1)</a></code></p>
|
||||
|
||||
<h3 id="cache-lock-stale">cache-lock-stale</h3>
|
||||
|
||||
<ul><li>Default: 60000 (1 minute)</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>The number of ms before cache folder lockfiles are considered stale.</p>
|
||||
|
||||
<h3 id="cache-lock-retries">cache-lock-retries</h3>
|
||||
|
||||
<ul><li>Default: 10</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>Number of times to retry to acquire a lock on cache folder lockfiles.</p>
|
||||
|
||||
<h3 id="cache-lock-wait">cache-lock-wait</h3>
|
||||
|
||||
<ul><li>Default: 10000 (10 seconds)</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>Number of ms to wait for cache lock files to expire.</p>
|
||||
|
||||
<h3 id="cache-max">cache-max</h3>
|
||||
|
||||
<ul><li>Default: Infinity</li><li>Type: Number</li></ul>
|
||||
@@ -263,6 +257,14 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
|
||||
|
||||
<p>The command to run for <code>npm edit</code> or <code>npm config edit</code>.</p>
|
||||
|
||||
<h3 id="engine-strict">engine-strict</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>If set to true, then npm will stubbornly refuse to install (or even
|
||||
consider installing) any package that claims to not be compatible with
|
||||
the current Node.js version.</p>
|
||||
|
||||
<h3 id="force">force</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
@@ -271,6 +273,34 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
|
||||
|
||||
<ul><li>lifecycle script failure does not block progress.</li><li>publishing clobbers previously published versions.</li><li>skips cache when requesting from the registry.</li><li>prevents checks against clobbering non-npm files.</li></ul>
|
||||
|
||||
<h3 id="fetch-retries">fetch-retries</h3>
|
||||
|
||||
<ul><li>Default: 2</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>The "retries" config for the <code>retry</code> module to use when fetching
|
||||
packages from the registry.</p>
|
||||
|
||||
<h3 id="fetch-retry-factor">fetch-retry-factor</h3>
|
||||
|
||||
<ul><li>Default: 10</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>The "factor" config for the <code>retry</code> module to use when fetching
|
||||
packages.</p>
|
||||
|
||||
<h3 id="fetch-retry-mintimeout">fetch-retry-mintimeout</h3>
|
||||
|
||||
<ul><li>Default: 10000 (10 seconds)</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>The "minTimeout" config for the <code>retry</code> module to use when fetching
|
||||
packages.</p>
|
||||
|
||||
<h3 id="fetch-retry-maxtimeout">fetch-retry-maxtimeout</h3>
|
||||
|
||||
<ul><li>Default: 60000 (1 minute)</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>The "maxTimeout" config for the <code>retry</code> module to use when fetching
|
||||
packages.</p>
|
||||
|
||||
<h3 id="git">git</h3>
|
||||
|
||||
<ul><li>Default: <code>"git"</code></li><li>Type: String</li></ul>
|
||||
@@ -333,6 +363,15 @@ user.</p>
|
||||
<p>A white-space separated list of glob patterns of files to always exclude
|
||||
from packages when building tarballs.</p>
|
||||
|
||||
<h3 id="init-module">init-module</h3>
|
||||
|
||||
<ul><li>Default: ~/.npm-init.js</li><li>Type: path</li></ul>
|
||||
|
||||
<p>A module that will be loaded by the <code>npm init</code> command. See the
|
||||
documentation for the
|
||||
<a href="https://github.com/isaacs/init-package-json">init-package-json</a> module
|
||||
for more information, or <a href="../doc/init.html">init(1)</a>.</p>
|
||||
|
||||
<h3 id="init-version">init.version</h3>
|
||||
|
||||
<ul><li>Default: "0.0.0"</li><li>Type: semver</li></ul>
|
||||
@@ -381,12 +420,6 @@ if one of the two conditions are met:</p>
|
||||
<ul><li>The package is not already installed globally, or</li><li>the globally installed version is identical to the version that is
|
||||
being installed locally.</li></ul>
|
||||
|
||||
<h3 id="logfd">logfd</h3>
|
||||
|
||||
<ul><li>Default: stderr file descriptor</li><li>Type: Number or Stream</li></ul>
|
||||
|
||||
<p>The location to write log output.</p>
|
||||
|
||||
<h3 id="loglevel">loglevel</h3>
|
||||
|
||||
<ul><li>Default: "http"</li><li>Type: String</li><li>Values: "silent", "win", "error", "warn", "http", "info", "verbose", "silly"</li></ul>
|
||||
@@ -397,12 +430,16 @@ being installed locally.</li></ul>
|
||||
<p>Any logs of a higher level than the setting are shown.
|
||||
The default is "http", which shows http, warn, and error output.</p>
|
||||
|
||||
<h3 id="logprefix">logprefix</h3>
|
||||
<h3 id="logstream">logstream</h3>
|
||||
|
||||
<ul><li>Default: true on Posix, false on Windows</li><li>Type: Boolean</li></ul>
|
||||
<ul><li>Default: process.stderr</li><li>Type: Stream</li></ul>
|
||||
|
||||
<p>Whether or not to prefix log messages with "npm" and the log level. See
|
||||
also "color" and "loglevel".</p>
|
||||
<p>This is the stream that is passed to the
|
||||
<a href="https://github.com/isaacs/npmlog">npmlog</a> module at run time.</p>
|
||||
|
||||
<p>It cannot be set from the command line, but if you are using npm
|
||||
programmatically, you may wish to send logs to somewhere other than
|
||||
stderr.</p>
|
||||
|
||||
<h3 id="long">long</h3>
|
||||
|
||||
@@ -444,12 +481,6 @@ also "color" and "loglevel".</p>
|
||||
<p>A node module to <code>require()</code> when npm loads. Useful for programmatic
|
||||
usage.</p>
|
||||
|
||||
<h3 id="outfd">outfd</h3>
|
||||
|
||||
<ul><li>Default: standard output file descriptor</li><li>Type: Number or Stream</li></ul>
|
||||
|
||||
<p>Where to write "normal" output. This has no effect on log output.</p>
|
||||
|
||||
<h3 id="parseable">parseable</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
@@ -514,14 +545,31 @@ this as true.</p>
|
||||
|
||||
<p>Save installed packages to a package.json file as dependencies.</p>
|
||||
|
||||
<p>When used with the <code>npm rm</code> command, it removes it from the dependencies
|
||||
hash.</p>
|
||||
|
||||
<p>Only works if there is already a package.json file present.</p>
|
||||
|
||||
<h3 id="save-bundle">save-bundle</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>If a package would be saved at install time by the use of <code>--save</code>,
|
||||
<code>--save-dev</code>, or <code>--save-optional</code>, then also put it in the
|
||||
<code>bundleDependencies</code> list.</p>
|
||||
|
||||
<p>When used with the <code>npm rm</code> command, it removes it from the
|
||||
bundledDependencies list.</p>
|
||||
|
||||
<h3 id="save-dev">save-dev</h3>
|
||||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>Save installed packages to a package.json file as devDependencies.</p>
|
||||
|
||||
<p>When used with the <code>npm rm</code> command, it removes it from the devDependencies
|
||||
hash.</p>
|
||||
|
||||
<p>Only works if there is already a package.json file present.</p>
|
||||
|
||||
<h3 id="save-optional">save-optional</h3>
|
||||
@@ -530,6 +578,9 @@ this as true.</p>
|
||||
|
||||
<p>Save installed packages to a package.json file as optionalDependencies.</p>
|
||||
|
||||
<p>When used with the <code>npm rm</code> command, it removes it from the devDependencies
|
||||
hash.</p>
|
||||
|
||||
<p>Only works if there is already a package.json file present.</p>
|
||||
|
||||
<h3 id="searchopts">searchopts</h3>
|
||||
@@ -684,7 +735,7 @@ then answer "no" to any prompt.</p>
|
||||
|
||||
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">config — npm@1.1.21</p>
|
||||
<p id="footer">config — npm@1.1.36</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user