mirror of
https://github.com/nodejs/node-v0.x-archive.git
synced 2026-04-28 03:01:10 -04:00
Compare commits
761 Commits
move-debug
...
node-revie
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3cc2e17831 | ||
|
|
fbcf039759 | ||
|
|
293f036bd4 | ||
|
|
54206e32a6 | ||
|
|
28451aeaba | ||
|
|
b7b51cb96b | ||
|
|
2f26d2acdc | ||
|
|
c77fd4a03e | ||
|
|
6a3e38af85 | ||
|
|
1be221c1ef | ||
|
|
b94a3f6897 | ||
|
|
67d013ed7e | ||
|
|
552bcf3395 | ||
|
|
8d5bc968eb | ||
|
|
874dd590cf | ||
|
|
db7df57e03 | ||
|
|
61dd74bc5d | ||
|
|
47f119cabf | ||
|
|
1a4a189578 | ||
|
|
d87480beb2 | ||
|
|
685ac099e9 | ||
|
|
42ecd48c7f | ||
|
|
7a0cfe9b11 | ||
|
|
8efcc7f456 | ||
|
|
270e998c90 | ||
|
|
9116b240c9 | ||
|
|
a2a3fd4893 | ||
|
|
6462519d3c | ||
|
|
bdc2ea4d52 | ||
|
|
573e6afc09 | ||
|
|
7b4a540422 | ||
|
|
4809c7aa4f | ||
|
|
6e4bd494a5 | ||
|
|
f04f3a0d01 | ||
|
|
0a22ed4cc8 | ||
|
|
f769d133b7 | ||
|
|
640ad632e3 | ||
|
|
8392e8cdfb | ||
|
|
87ce067636 | ||
|
|
cb97bcd6f9 | ||
|
|
83d7d9e6d8 | ||
|
|
e9ca7b9d8d | ||
|
|
862cc28183 | ||
|
|
8dc6be1747 | ||
|
|
b705b73e46 | ||
|
|
ac2857b12c | ||
|
|
95726b0fce | ||
|
|
1781c8b85b | ||
|
|
57ed3daebf | ||
|
|
f2a78de6ec | ||
|
|
734fb49a2a | ||
|
|
f4df80584d | ||
|
|
979d0ca874 | ||
|
|
de312cfd7c | ||
|
|
2122a77f51 | ||
|
|
9d95774722 | ||
|
|
f3473d7db6 | ||
|
|
51b6b6844e | ||
|
|
8e4fc88c79 | ||
|
|
fd896d5acf | ||
|
|
9fad8958df | ||
|
|
b26dd4e5ab | ||
|
|
efa47e593d | ||
|
|
f773fb41cc | ||
|
|
2f7234d89c | ||
|
|
4dbb84fc52 | ||
|
|
7c3c51b8ff | ||
|
|
7fd35e6ea4 | ||
|
|
c5f5d4cd11 | ||
|
|
6e08bb94e8 | ||
|
|
64d6de9f34 | ||
|
|
4c9b30db67 | ||
|
|
d66adf0c85 | ||
|
|
30bd7b672c | ||
|
|
9c992bdb75 | ||
|
|
cb4ed3c78f | ||
|
|
c615545416 | ||
|
|
03e93526e6 | ||
|
|
378d9723f2 | ||
|
|
468fb547bb | ||
|
|
7ca5af87a0 | ||
|
|
84952da241 | ||
|
|
1a8b0e807f | ||
|
|
0fe0d12155 | ||
|
|
daca803e9e | ||
|
|
1fddc1fee8 | ||
|
|
6e689ece46 | ||
|
|
21e60643b0 | ||
|
|
174f7d2820 | ||
|
|
0664ddc093 | ||
|
|
11d57a535c | ||
|
|
7c5fabe405 | ||
|
|
630f0c4660 | ||
|
|
f3836af2f8 | ||
|
|
8d9493c315 | ||
|
|
b8a8e5558d | ||
|
|
6f07d2fa1b | ||
|
|
f9ce97084c | ||
|
|
bf5e2f246e | ||
|
|
06526a2a93 | ||
|
|
299cf84490 | ||
|
|
150d6f1249 | ||
|
|
8e6706ea95 | ||
|
|
b33a47ef47 | ||
|
|
1e99486cc8 | ||
|
|
de9a444ab4 | ||
|
|
176f0bd3df | ||
|
|
86bb7fa5cd | ||
|
|
029cfc12a0 | ||
|
|
9b8837b355 | ||
|
|
73631bbcc8 | ||
|
|
7343c77cdb | ||
|
|
68c14d6923 | ||
|
|
627c1a92eb | ||
|
|
4bd396a9bf | ||
|
|
a054f8eb29 | ||
|
|
81a9739108 | ||
|
|
8e60b4523c | ||
|
|
cdc01faed2 | ||
|
|
90d1147b8b | ||
|
|
fcfe820481 | ||
|
|
16b0a3393e | ||
|
|
92419f8762 | ||
|
|
53fc14c569 | ||
|
|
f6877f37b2 | ||
|
|
0dfedb7127 | ||
|
|
6e453fad87 | ||
|
|
b869797a2d | ||
|
|
f7d6147e43 | ||
|
|
0f2956192c | ||
|
|
6adf3ecebb | ||
|
|
f39e608c6e | ||
|
|
ada85d7307 | ||
|
|
8a7d7f8b2b | ||
|
|
3122e0eae6 | ||
|
|
c0f30f6058 | ||
|
|
4ef2a5a672 | ||
|
|
5086d6ef94 | ||
|
|
adf2cfd54d | ||
|
|
3998914ec8 | ||
|
|
437c2f4383 | ||
|
|
7be96f5285 | ||
|
|
7fabdc23d8 | ||
|
|
6a11bfe74b | ||
|
|
b9960eefc2 | ||
|
|
d1dd0d6b38 | ||
|
|
ffd0116eda | ||
|
|
181b8a5d3a | ||
|
|
9134a3bf41 | ||
|
|
fd80a31e06 | ||
|
|
0d357fa135 | ||
|
|
0565d52a71 | ||
|
|
c7b42fe2e5 | ||
|
|
f5f5bd76e6 | ||
|
|
7d1860a678 | ||
|
|
6b97c2e986 | ||
|
|
5d824c89c9 | ||
|
|
44743eaf24 | ||
|
|
807acf7f98 | ||
|
|
a8845ebd45 | ||
|
|
00004160a1 | ||
|
|
678ead2608 | ||
|
|
931cbc175f | ||
|
|
0718426506 | ||
|
|
42bda05af8 | ||
|
|
93f3b640d0 | ||
|
|
6ea5d16731 | ||
|
|
10fa8e3999 | ||
|
|
b1741ea1fa | ||
|
|
2a415358ee | ||
|
|
4516e6dda4 | ||
|
|
a5778cdf01 | ||
|
|
b0277f35bd | ||
|
|
d6b4766a78 | ||
|
|
cc08106d62 | ||
|
|
28eee0adb7 | ||
|
|
7ca4fa56d0 | ||
|
|
e49429ebd2 | ||
|
|
aa3b4b4d10 | ||
|
|
70cc9968f6 | ||
|
|
63a4268218 | ||
|
|
e643fe4c4b | ||
|
|
430678640c | ||
|
|
53b4accb6e | ||
|
|
7da63a10ac | ||
|
|
20229d6896 | ||
|
|
6f043940bd | ||
|
|
962e651476 | ||
|
|
47a103a029 | ||
|
|
2fd7ee12d9 | ||
|
|
37c2a52833 | ||
|
|
aab126bb06 | ||
|
|
8e2cc69e78 | ||
|
|
bbb2dccd1b | ||
|
|
d287b8e58a | ||
|
|
92518892ec | ||
|
|
4b59db008c | ||
|
|
4f2b08c523 | ||
|
|
98c69e892c | ||
|
|
bc0ff830af | ||
|
|
7169879879 | ||
|
|
530af9cb8e | ||
|
|
1223cafea6 | ||
|
|
4f1ae11a62 | ||
|
|
9d281934df | ||
|
|
befbbad051 | ||
|
|
ff6117b8ed | ||
|
|
4e68a28e20 | ||
|
|
1a84ba2d66 | ||
|
|
1a52d6abcc | ||
|
|
bae019f182 | ||
|
|
9f36c0d235 | ||
|
|
0381cf5698 | ||
|
|
7166b55015 | ||
|
|
f310c0f16b | ||
|
|
38f6fcd822 | ||
|
|
ef3c4ed3dd | ||
|
|
e1fb1b58f9 | ||
|
|
832ec1cd50 | ||
|
|
9a63a1d89b | ||
|
|
61ddad1314 | ||
|
|
338ba2bc80 | ||
|
|
93390ffc20 | ||
|
|
e1ce8ba639 | ||
|
|
2bb4867312 | ||
|
|
300dd3499c | ||
|
|
ea89fdfec4 | ||
|
|
96b166f291 | ||
|
|
2f0017aa53 | ||
|
|
ba09409479 | ||
|
|
eba7aae107 | ||
|
|
4c48df5a35 | ||
|
|
3530fa9cd0 | ||
|
|
1d3d8c0e55 | ||
|
|
857975d5e7 | ||
|
|
9d9fc3fa30 | ||
|
|
a96d6603b3 | ||
|
|
04d6fc2c3f | ||
|
|
b96e38ac3a | ||
|
|
b692493766 | ||
|
|
da30c0084a | ||
|
|
c4e5fde362 | ||
|
|
7f86baf5c7 | ||
|
|
b87ca794e3 | ||
|
|
9452ea2ef5 | ||
|
|
a7b14f7a89 | ||
|
|
feac62d8d6 | ||
|
|
245469587c | ||
|
|
e1fec22f97 | ||
|
|
832d4db5f2 | ||
|
|
fc6eae8da2 | ||
|
|
46ccb201cb | ||
|
|
71fc4d9486 | ||
|
|
e2f2a20279 | ||
|
|
df205360f5 | ||
|
|
803c3f0aa0 | ||
|
|
a382c9a97c | ||
|
|
11337db35f | ||
|
|
20247064b6 | ||
|
|
e345253562 | ||
|
|
449ffecbb0 | ||
|
|
c7c904b1fc | ||
|
|
ae1e325e8a | ||
|
|
9cbfd6ef51 | ||
|
|
7cb38309fe | ||
|
|
47ee9a48a8 | ||
|
|
1100f3de7a | ||
|
|
613654e882 | ||
|
|
02b8109c14 | ||
|
|
423725b34d | ||
|
|
1c0ec71725 | ||
|
|
4128d4d2ba | ||
|
|
b5175003bc | ||
|
|
7fa4a9697d | ||
|
|
a97bdef06d | ||
|
|
73343d5cee | ||
|
|
6b09f9cd41 | ||
|
|
c94afdccf3 | ||
|
|
2cae44f169 | ||
|
|
1a1b1a7534 | ||
|
|
35b9580cd8 | ||
|
|
922afd9164 | ||
|
|
c147e81091 | ||
|
|
e50749bb05 | ||
|
|
56d767fd69 | ||
|
|
61baefce1e | ||
|
|
a55c60c715 | ||
|
|
16ed194659 | ||
|
|
ad5e8ec3e2 | ||
|
|
fcbffa71d0 | ||
|
|
be8114e5c5 | ||
|
|
c08da463ad | ||
|
|
ee95e4f5f7 | ||
|
|
72dcc26c7a | ||
|
|
4f1782ef75 | ||
|
|
e22ea56647 | ||
|
|
361aa5344d | ||
|
|
c047127410 | ||
|
|
d5198768de | ||
|
|
d78a3787d2 | ||
|
|
5d178188a7 | ||
|
|
dde590d8b9 | ||
|
|
3a280b2034 | ||
|
|
5413d9abe0 | ||
|
|
1cd48c7ae5 | ||
|
|
e00cafa311 | ||
|
|
03e9f84933 | ||
|
|
eef0715db5 | ||
|
|
ca55037380 | ||
|
|
4d04c7b5ee | ||
|
|
90c9891084 | ||
|
|
4cd522d157 | ||
|
|
61770f2125 | ||
|
|
f6ba61bd15 | ||
|
|
1a09da6ec2 | ||
|
|
1cb6f1a46a | ||
|
|
fc21bcb017 | ||
|
|
ce82d6b847 | ||
|
|
ab50fad63b | ||
|
|
7fd5a4d096 | ||
|
|
e9170cbc3d | ||
|
|
f051f31790 | ||
|
|
535c7777ac | ||
|
|
0da4c67165 | ||
|
|
881ac26f27 | ||
|
|
80eff96829 | ||
|
|
9fbd0f0f7d | ||
|
|
22b839845c | ||
|
|
2efe4ab761 | ||
|
|
1df32af74a | ||
|
|
bd988a590a | ||
|
|
9920ae67b5 | ||
|
|
a7dd0e51f3 | ||
|
|
2f8627528b | ||
|
|
8ae32a9864 | ||
|
|
715bb7f89f | ||
|
|
820aaf5b3d | ||
|
|
72cc66e503 | ||
|
|
c7b02034ef | ||
|
|
57c5655885 | ||
|
|
329103540c | ||
|
|
4c672c8a5e | ||
|
|
4394c8a9b3 | ||
|
|
c862c03485 | ||
|
|
6f952845a6 | ||
|
|
681013223f | ||
|
|
32b4563280 | ||
|
|
1bbb3cc00d | ||
|
|
13553c1332 | ||
|
|
a367f62adf | ||
|
|
d0c7d93536 | ||
|
|
48675784fe | ||
|
|
e86c9421ef | ||
|
|
4729202d1e | ||
|
|
f09b02786f | ||
|
|
01c2a670a1 | ||
|
|
31150df92a | ||
|
|
e7bfbaf891 | ||
|
|
929e2ed5ba | ||
|
|
765b03255c | ||
|
|
58cc362251 | ||
|
|
f1dc55d701 | ||
|
|
655ec2113a | ||
|
|
1d90b5b78e | ||
|
|
4a2c349473 | ||
|
|
89cb740fc3 | ||
|
|
8a6c36dc37 | ||
|
|
c06495713a | ||
|
|
7bd08c5062 | ||
|
|
885142a5ed | ||
|
|
8ee9f04de6 | ||
|
|
4a90f51bfe | ||
|
|
6569812531 | ||
|
|
52527e03d3 | ||
|
|
92875501d2 | ||
|
|
b1a44dfe9e | ||
|
|
e1aa066fe1 | ||
|
|
0f503cf0de | ||
|
|
53b2e02a46 | ||
|
|
9b7888ef88 | ||
|
|
5344d0c103 | ||
|
|
a4f2f9ea8a | ||
|
|
f10fd1ddba | ||
|
|
79e8f65cb1 | ||
|
|
f7ede33f09 | ||
|
|
522dda2f12 | ||
|
|
17fbdc18b8 | ||
|
|
41d8e10f0d | ||
|
|
82fca9136d | ||
|
|
1ab98a130e | ||
|
|
120f7cf55f | ||
|
|
044da47353 | ||
|
|
d3204b0225 | ||
|
|
00890e43fb | ||
|
|
a960d1707a | ||
|
|
8398bf9128 | ||
|
|
9479399d3b | ||
|
|
29518c17be | ||
|
|
a6583ebd11 | ||
|
|
0ed4aba0ac | ||
|
|
bfe1fdb8ab | ||
|
|
d857d5ab09 | ||
|
|
99c9930ad6 | ||
|
|
b148cbe09d | ||
|
|
dbec0a0cd8 | ||
|
|
89223ae860 | ||
|
|
8637a40ea8 | ||
|
|
1285008fca | ||
|
|
7abd826366 | ||
|
|
cb7911f78a | ||
|
|
b19b60a05c | ||
|
|
f76c3938d0 | ||
|
|
d1fe6857ba | ||
|
|
1038959dbf | ||
|
|
3d3d48d4b7 | ||
|
|
d0fc5538d1 | ||
|
|
7b72e15665 | ||
|
|
ab7a3d098d | ||
|
|
26a1b712ec | ||
|
|
793c76e5c6 | ||
|
|
d13e0297c3 | ||
|
|
226f98a356 | ||
|
|
3f3a71e61e | ||
|
|
250782d139 | ||
|
|
681fe599d7 | ||
|
|
f9ced08de3 | ||
|
|
0ee99565f9 | ||
|
|
b0fa931e07 | ||
|
|
bd24ab2bd7 | ||
|
|
a60a9b0dbd | ||
|
|
4601e7c892 | ||
|
|
3950024c2f | ||
|
|
89e88e96df | ||
|
|
0f3b72460b | ||
|
|
afaff70a9b | ||
|
|
345c40b661 | ||
|
|
b3ef289ffb | ||
|
|
77d1f4a91f | ||
|
|
75bc11cf12 | ||
|
|
9520adeb37 | ||
|
|
2c6b424829 | ||
|
|
c7f424e44b | ||
|
|
1bd4f3a605 | ||
|
|
940974ed03 | ||
|
|
2272052461 | ||
|
|
c61b0e9cbc | ||
|
|
8e823bcbe6 | ||
|
|
4c36f3e7e6 | ||
|
|
525fad473b | ||
|
|
bfb7de5e75 | ||
|
|
632c135622 | ||
|
|
045f765a1a | ||
|
|
592be014b6 | ||
|
|
af69f88a9d | ||
|
|
c20b209dbb | ||
|
|
3054decc19 | ||
|
|
de7c0e8c02 | ||
|
|
d6fd118727 | ||
|
|
f2b297cc7c | ||
|
|
c2d32f4c0e | ||
|
|
a0a180a0ad | ||
|
|
42b9343710 | ||
|
|
962f96d341 | ||
|
|
95dbb6bf64 | ||
|
|
42a33c1bb8 | ||
|
|
cdc093b31f | ||
|
|
006d42786e | ||
|
|
08a5b442e4 | ||
|
|
d4fcb23e38 | ||
|
|
c7214fe355 | ||
|
|
5e24adbb90 | ||
|
|
67e078094b | ||
|
|
f984555d47 | ||
|
|
8d6fa72d97 | ||
|
|
490d5ab780 | ||
|
|
e9ce8fc82a | ||
|
|
47bed4828c | ||
|
|
5d2aef17ee | ||
|
|
b55c9d68aa | ||
|
|
6d15b163b0 | ||
|
|
85d595c8c2 | ||
|
|
d24946b1b4 | ||
|
|
ef096f8d8f | ||
|
|
a9d22247ad | ||
|
|
e781832ea1 | ||
|
|
a030c7b902 | ||
|
|
f68a116c3c | ||
|
|
70f198ddb1 | ||
|
|
bd547d6598 | ||
|
|
69b8279d4b | ||
|
|
9f23fe1141 | ||
|
|
7989f42f86 | ||
|
|
b76a1ff940 | ||
|
|
b84ebfe886 | ||
|
|
7b9771f569 | ||
|
|
4d140746f0 | ||
|
|
ee4b9b552d | ||
|
|
23dfa71dd5 | ||
|
|
c30cc4e3a5 | ||
|
|
e87ceb2b42 | ||
|
|
ad15d75750 | ||
|
|
8eb76075cf | ||
|
|
f6ea0c203a | ||
|
|
a3dca9a3a6 | ||
|
|
91b4a561df | ||
|
|
1f17f88071 | ||
|
|
d0ff900a65 | ||
|
|
0c5a0ecc7c | ||
|
|
030d03190f | ||
|
|
ce04c726a3 | ||
|
|
1c7bf245dc | ||
|
|
93c3674ff7 | ||
|
|
9bd934cb96 | ||
|
|
44bf5f8c50 | ||
|
|
7d6b8db40f | ||
|
|
0c2e28d68f | ||
|
|
e496707d39 | ||
|
|
e2fcfea46e | ||
|
|
d2f2a32b89 | ||
|
|
e92d35d80b | ||
|
|
b444392a98 | ||
|
|
43a29f53ca | ||
|
|
f0d870501e | ||
|
|
a18c9b7dde | ||
|
|
e108ff4da7 | ||
|
|
68bfa91af7 | ||
|
|
6bd78fd770 | ||
|
|
5e06ce4fb9 | ||
|
|
a9d24fa40d | ||
|
|
bd8a5755dc | ||
|
|
31ce34887f | ||
|
|
caca4f33aa | ||
|
|
6eb4d1d15c | ||
|
|
06453a94a7 | ||
|
|
78d245f5b2 | ||
|
|
34bf6e46be | ||
|
|
5596f936d8 | ||
|
|
3b88dc6f19 | ||
|
|
37d3c56c0b | ||
|
|
a2eeb43ded | ||
|
|
6e1eac744b | ||
|
|
269de79fbf | ||
|
|
afc29ed397 | ||
|
|
cd08c8a0e5 | ||
|
|
f3189ace6b | ||
|
|
0a5d8ca197 | ||
|
|
d6bbb19f1d | ||
|
|
d307bebec4 | ||
|
|
47abdd9c43 | ||
|
|
0a01a42e87 | ||
|
|
846f304fa8 | ||
|
|
20176a9841 | ||
|
|
c1bb886990 | ||
|
|
a22a2d8656 | ||
|
|
b5f9779c2f | ||
|
|
2ca4d9d662 | ||
|
|
98a0909da0 | ||
|
|
67dfcd55be | ||
|
|
bfc823de90 | ||
|
|
fa0ac99541 | ||
|
|
581b8585eb | ||
|
|
407e295f43 | ||
|
|
d2952cce36 | ||
|
|
aae51ecf7d | ||
|
|
de56ffa58b | ||
|
|
265fdc8e91 | ||
|
|
78a854f872 | ||
|
|
95bb347d6c | ||
|
|
3a3b7488b5 | ||
|
|
e324717f8d | ||
|
|
440b9e2245 | ||
|
|
af1418325b | ||
|
|
70ea5bac43 | ||
|
|
1efe6837b2 | ||
|
|
dbae8b569f | ||
|
|
75adde07f9 | ||
|
|
e746bbdc2b | ||
|
|
e0c5302590 | ||
|
|
a6f89ccd76 | ||
|
|
b7776fb192 | ||
|
|
b940e0fd86 | ||
|
|
b105997193 | ||
|
|
845e5d3458 | ||
|
|
085db9dd6c | ||
|
|
ae418f974d | ||
|
|
0206925b0d | ||
|
|
cc56c62ed8 | ||
|
|
31c510ca88 | ||
|
|
1fa5cff4f2 | ||
|
|
1d734a75b5 | ||
|
|
3e6e63406d | ||
|
|
c2aea3747d | ||
|
|
abbde2fafa | ||
|
|
ae02992872 | ||
|
|
937e2e351b | ||
|
|
59baab2776 | ||
|
|
a226be4f76 | ||
|
|
466a9b5c78 | ||
|
|
562b015170 | ||
|
|
e5eadcfa19 | ||
|
|
217bb0c964 | ||
|
|
c0d73e6de1 | ||
|
|
cfe0bab85b | ||
|
|
c980280159 | ||
|
|
3ae0b17c76 | ||
|
|
7589a0007c | ||
|
|
829a9b8cba | ||
|
|
75ea11fc08 | ||
|
|
a4436bab7b | ||
|
|
3421d29d63 | ||
|
|
940abd0b19 | ||
|
|
0f40eac366 | ||
|
|
86b8d84811 | ||
|
|
bb2af7dd4d | ||
|
|
0f10dd4cb2 | ||
|
|
8f94ef46b7 | ||
|
|
527cabefcb | ||
|
|
3da36fe00e | ||
|
|
e7a03f1c62 | ||
|
|
6b4f72b7ac | ||
|
|
55543d3c45 | ||
|
|
37376debe5 | ||
|
|
b222374b07 | ||
|
|
e8df267674 | ||
|
|
fa4eb47caa | ||
|
|
d58c206862 | ||
|
|
e2a1d9a9ac | ||
|
|
dee5270a6c | ||
|
|
c0d81f9099 | ||
|
|
28dbc96a6c | ||
|
|
abe4c34c86 | ||
|
|
e3ec2f7dab | ||
|
|
eadb4f5606 | ||
|
|
5c832e44c3 | ||
|
|
2e8bb57fe3 | ||
|
|
3595139b51 | ||
|
|
d10a68736d | ||
|
|
96379f83e0 | ||
|
|
2ee86c624e | ||
|
|
56e80a37e0 | ||
|
|
4b77bd39a4 | ||
|
|
e3d8359021 | ||
|
|
bbd56d881d | ||
|
|
2b6e078833 | ||
|
|
8874a31748 | ||
|
|
f1de13b8ab | ||
|
|
1317032c97 | ||
|
|
6cbfcdad46 | ||
|
|
d9e1e4c661 | ||
|
|
4a9af3fecb | ||
|
|
c9abb59638 | ||
|
|
1d2fab37e6 | ||
|
|
d23ac0ea9c | ||
|
|
010222d39f | ||
|
|
4dc6f4adf4 | ||
|
|
1f2f3fa83a | ||
|
|
528a3ce3ed | ||
|
|
5ce458032f | ||
|
|
bae545dab7 | ||
|
|
d2147c55c2 | ||
|
|
15de8c2b60 | ||
|
|
f65ce02ddd | ||
|
|
09c51d5e40 | ||
|
|
2315703035 | ||
|
|
9a60bf3726 | ||
|
|
3dcf7253a8 | ||
|
|
154d9d2163 | ||
|
|
9b37b83a20 | ||
|
|
643a7d8c16 | ||
|
|
fac8f396cc | ||
|
|
49c2372e68 | ||
|
|
e796e11087 | ||
|
|
c8c26f12e4 | ||
|
|
a98d541733 | ||
|
|
e63268e433 | ||
|
|
245cf3f746 | ||
|
|
b46e774215 | ||
|
|
95b8a75d5e | ||
|
|
8c05570258 | ||
|
|
fc26fd6b38 | ||
|
|
597eb6a5ae | ||
|
|
657cd2c4e5 | ||
|
|
8eaa1ac463 | ||
|
|
ab54e32bbd | ||
|
|
9836a4eeda | ||
|
|
eaf76648a6 | ||
|
|
114bff467e | ||
|
|
2f5e77f55b | ||
|
|
cd2d3aedaa | ||
|
|
76b98462e5 | ||
|
|
f4c8020d10 | ||
|
|
dc1ffd0da6 | ||
|
|
14d6df8702 | ||
|
|
c37e1b7c4b | ||
|
|
d2de8ba34d | ||
|
|
64d33a7519 | ||
|
|
b4c4e0bbaa | ||
|
|
cc4b6e6e58 | ||
|
|
00efcb4cd7 | ||
|
|
896e19330a | ||
|
|
0ec3770767 | ||
|
|
a454063ea1 | ||
|
|
c1b1f31203 | ||
|
|
640912d18a | ||
|
|
d019eac5b5 | ||
|
|
9975ff603b | ||
|
|
485fcf9c63 | ||
|
|
74656ca189 | ||
|
|
42cd468901 | ||
|
|
5d4f4ee310 | ||
|
|
f78e5df854 | ||
|
|
5aebc73525 | ||
|
|
eb7c7be7da | ||
|
|
24d05f21be | ||
|
|
c79c304ead | ||
|
|
b0e5f195df | ||
|
|
bc2f31ae1d | ||
|
|
8b7ec73331 | ||
|
|
56ebf308dc | ||
|
|
103b89673e | ||
|
|
c7f5c98ee9 | ||
|
|
6514a4128c | ||
|
|
74d9aa49d5 | ||
|
|
e6016dae34 | ||
|
|
f32c1ffe56 | ||
|
|
b9bec2031e | ||
|
|
cdde9a386a | ||
|
|
661190af13 | ||
|
|
e57ab7ba06 | ||
|
|
1442c1c6de | ||
|
|
2a0b619f7b | ||
|
|
22879e749e | ||
|
|
bf08ac462e | ||
|
|
60fcc11be2 | ||
|
|
63ccfc3536 | ||
|
|
159da758e4 | ||
|
|
5393d02c0c | ||
|
|
edfc0d9ffe | ||
|
|
e12e72eb58 | ||
|
|
574f71444c | ||
|
|
6cc95b06ea | ||
|
|
442d2d0cde | ||
|
|
7f9b01509f | ||
|
|
023f0a3122 | ||
|
|
8c303115f5 | ||
|
|
25f9e92813 | ||
|
|
f645c40fcd | ||
|
|
cda41f8775 | ||
|
|
db5abd726f | ||
|
|
262a752c29 | ||
|
|
1d57a5caa4 | ||
|
|
61c0d571bf | ||
|
|
abe02553f2 | ||
|
|
67e9298fb6 | ||
|
|
198ed0bd0d | ||
|
|
549be1caa8 | ||
|
|
24856f04b2 | ||
|
|
7f81ca2c47 | ||
|
|
e7f7e2aeca | ||
|
|
a05dae2ced | ||
|
|
346b59e4a3 |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -42,8 +42,10 @@ ipch/
|
||||
/dist-osx
|
||||
/npm.wxs
|
||||
/tools/msvs/npm.wixobj
|
||||
/test/addons/doc-*/
|
||||
email.md
|
||||
deps/v8-*
|
||||
deps/icu
|
||||
./node_modules
|
||||
.svn/
|
||||
|
||||
@@ -63,3 +65,7 @@ deps/zlib/zlib.target.mk
|
||||
/SHASUMS*.txt*
|
||||
|
||||
/tools/wrk/wrk
|
||||
|
||||
# test artifacts
|
||||
tools/faketime
|
||||
icu_config.gypi
|
||||
|
||||
54
AUTHORS
54
AUTHORS
@@ -514,3 +514,57 @@ Benjamin Waters <benjamin.waters@outlook.com>
|
||||
Lev Gimelfarb <lev.gimelfarb@gmail.com>
|
||||
Peter Flannery <flannery.peter@ntlworld.com>
|
||||
Tuğrul Topuz <tugrultopuz@gmail.com>
|
||||
Lorenz Leutgeb <lorenz.leutgeb@gmail.com>
|
||||
Brandon Cheng <bcheng.gt@gmail.com>
|
||||
Alexis Campailla <alexis@janeasystems.com>
|
||||
Yang Tianyang <contact@ayanamist.com>
|
||||
Tom Gallacher <tomgallacher23@gmail.com>
|
||||
Jo Liss <joliss42@gmail.com>
|
||||
Jun Ma <roammm@gmail.com>
|
||||
Jacob Hoffman-Andrews <github@hoffman-andrews.com>
|
||||
Keith M Wesolowski <wesolows@joyent.com>
|
||||
Maxime Quandalle <maxime.quandalle@gmail.com>
|
||||
Doron Pagot <doronpagot@gmail.com>
|
||||
Oguz Bastemur <obastemur@gmail.com>
|
||||
Kenan Sulayman <kenan@sly.mn>
|
||||
Christian Schulz <me@rndm.de>
|
||||
Pedro Ballesteros <nitroduna@gmail.com>
|
||||
Anton Khlynovskiy <subzey@gmail.com>
|
||||
Nicolas Talle <dev@nicolab.net>
|
||||
Austin Moran <moraustin@gmail.com>
|
||||
Mike Pennisi <mike@mikepennisi.com>
|
||||
Maxwell Krohn <themax@gmail.com>
|
||||
Saúl Ibarra Corretgé <saghul@gmail.com>
|
||||
Greg Brail <greg@apigee.com>
|
||||
Shuhei Kagawa <shuhei.kagawa@gmail.com>
|
||||
Yuriy Nemtsov <nemtsov@gmail.com>
|
||||
Josh Dague <daguej@email.uc.edu>
|
||||
Goh Yisheng (Andrew) <mail.yisheng@gmail.com>
|
||||
William Bert <william@spanishdict.com>
|
||||
James Pickard <james.pickard@gmail.com>
|
||||
Andrew Low <Andrew_Low@ca.ibm.com>
|
||||
Nick Apperson <apperson@gmail.com>
|
||||
C. Scott Ananian <cscott@cscott.net>
|
||||
Yuki KAN <re@pixely.jp>
|
||||
Evan Carroll <me@evancarroll.com>
|
||||
goussardg <guillaume.goussard@mgo.com>
|
||||
Geir Hauge <geir.hauge@ntnu.no>
|
||||
Farrin Reid <blakmatrix@gmail.com>
|
||||
Denys Zariaiev <denys.zariaiev@gmail.com>
|
||||
Sean McArthur <sean.monstar@gmail.com>
|
||||
Rasmus Christian Pedersen <zerhacken@yahoo.com>
|
||||
Greg Sabia Tucker <greg@narrowlabs.com>
|
||||
Calvin Metcalf <calvin.metcalf@gmail.com>
|
||||
cjihrig <cjihrig@gmail.com>
|
||||
Chris Barber <chris@cb1inc.com>
|
||||
Nick Apperson <apperson@gmail.com>
|
||||
Oguz Bastemur <obastemur@gmail.com>
|
||||
Maurice Butler <maurice.butler@gmail.com>
|
||||
Chris Dickinson <christopher.s.dickinson@gmail.com>
|
||||
Julien Gilli <julien.gilli@joyent.com>
|
||||
Jakob Gillich <jakob@gillich.me>
|
||||
James Halliday <mail@substack.net>
|
||||
Kevin Simper <kevin.simper@gmail.com>
|
||||
Jackson Tian <shyvo1987@gmail.com>
|
||||
Tristan Berger <tristan.berger@gmail.com>
|
||||
Mathias Schreck <schreck.mathias@googlemail.com>
|
||||
|
||||
@@ -9,7 +9,7 @@ through the process.
|
||||
Fork the project [on GitHub](https://github.com/joyent/node) and check out
|
||||
your copy.
|
||||
|
||||
```
|
||||
```sh
|
||||
$ git clone git@github.com:username/node.git
|
||||
$ cd node
|
||||
$ git remote add upstream git://github.com/joyent/node.git
|
||||
@@ -48,7 +48,7 @@ does not align with that of a project maintainer.
|
||||
Okay, so you have decided on the proper branch. Create a feature branch
|
||||
and start hacking:
|
||||
|
||||
```
|
||||
```sh
|
||||
$ git checkout -b my-feature-branch -t origin/v0.10
|
||||
```
|
||||
|
||||
@@ -59,7 +59,7 @@ $ git checkout -b my-feature-branch -t origin/v0.10
|
||||
|
||||
Make sure git knows your name and email address:
|
||||
|
||||
```
|
||||
```sh
|
||||
$ git config --global user.name "J. Random User"
|
||||
$ git config --global user.email "j.random.user@example.com"
|
||||
```
|
||||
@@ -99,7 +99,7 @@ what subsystem (or subsystems) your changes touch.
|
||||
|
||||
Use `git rebase` (not `git merge`) to sync your work from time to time.
|
||||
|
||||
```
|
||||
```sh
|
||||
$ git fetch upstream
|
||||
$ git rebase upstream/v0.10 # or upstream/master
|
||||
```
|
||||
@@ -111,17 +111,30 @@ Bug fixes and features should come with tests. Add your tests in the
|
||||
test/simple/ directory. Look at other tests to see how they should be
|
||||
structured (license boilerplate, common includes, etc.).
|
||||
|
||||
```
|
||||
```sh
|
||||
$ make jslint test
|
||||
```
|
||||
|
||||
Make sure the linter is happy and that all tests pass. Please, do not submit
|
||||
patches that fail either check.
|
||||
|
||||
If you are updating tests and just want to run a single test to check it, you
|
||||
can use this syntax to run it exactly as the test harness would:
|
||||
|
||||
```
|
||||
python tools/test.py -v --mode=release simple/test-stream2-transform
|
||||
```
|
||||
|
||||
You can run tests directly with node:
|
||||
|
||||
```
|
||||
node ./test/simple/test-streams2-transform.js
|
||||
```
|
||||
|
||||
|
||||
### PUSH
|
||||
|
||||
```
|
||||
```sh
|
||||
$ git push origin my-feature-branch
|
||||
```
|
||||
|
||||
@@ -134,12 +147,6 @@ feature branch. Post a comment in the pull request afterwards; GitHub does
|
||||
not send out notifications when you add commits.
|
||||
|
||||
|
||||
### CONTRIBUTOR LICENSE AGREEMENT
|
||||
|
||||
Please visit http://nodejs.org/cla.html and sign the Contributor License
|
||||
Agreement. You only need to do that once.
|
||||
|
||||
|
||||
[stability index page]: https://github.com/joyent/node/blob/master/doc/api/documentation.markdown
|
||||
[issue tracker]: https://github.com/joyent/node/issues
|
||||
[node.js mailing list]: http://groups.google.com/group/nodejs
|
||||
|
||||
527
ChangeLog
527
ChangeLog
@@ -1,4 +1,346 @@
|
||||
2013.12.31, Version 0.11.10 (Unstable)
|
||||
2014.09.24, Version 0.11.14 (Unstable)
|
||||
|
||||
* uv: Upgrade to v1.0.0-rc1
|
||||
|
||||
* http_parser: Upgrade to v2.3.0
|
||||
|
||||
* npm: Upgrade to v2.0.0
|
||||
|
||||
* openssl: Upgrade to v1.0.1i
|
||||
|
||||
* v8: Upgrade to 3.26.33
|
||||
|
||||
* Add fast path for simple URL parsing (Gabriel Wicke)
|
||||
|
||||
* Added support for options parameter in console.dir() (Xavi Magrinyà)
|
||||
|
||||
* Cluster: fix shared handles on Windows (Alexis Campailla)
|
||||
|
||||
* buffer: Fix incorrect Buffer.compare behavior (Feross Aboukhadijeh)
|
||||
|
||||
* buffer: construct new buffer from buffer toJSON() output (cjihrig)
|
||||
|
||||
* buffer: improve Buffer constructor (Kang-Hao Kenny)
|
||||
|
||||
* build: linking CoreFoundation framework for OSX (Thorsten Lorenz)
|
||||
|
||||
* child_process: accept uid/gid everywhere (Fedor Indutny)
|
||||
|
||||
* child_process: add path to spawn ENOENT Error (Ryan Cole)
|
||||
|
||||
* child_process: copy spawnSync() cwd option to proper buffer (cjihrig)
|
||||
|
||||
* child_process: do not access stderr when stdio set to 'ignore' (cjihrig)
|
||||
|
||||
* child_process: don't throw on EAGAIN (Charles)
|
||||
|
||||
* child_process: don't throw on EMFILE/ENFILE (Ben Noordhuis)
|
||||
|
||||
* child_process: use full path for cmd.exe on Win32 (Ed Morley)
|
||||
|
||||
* cluster: allow multiple calls to setupMaster() (Ryan Graham)
|
||||
|
||||
* cluster: centralize removal from workers list. (Julien Gilli)
|
||||
|
||||
* cluster: enable error/message events using .worker (cjihrig)
|
||||
|
||||
* cluster: include settings object in 'setup' event (Ryan Graham)
|
||||
|
||||
* cluster: restore v0.10.x setupMaster() behaviour (Ryan Graham)
|
||||
|
||||
* cluster: support options in Worker constructor (cjihrig)
|
||||
|
||||
* cluster: test events emit on cluster.worker (Sam Roberts)
|
||||
|
||||
* console: console.dir() accepts options object (Xavi Magrinyà)
|
||||
|
||||
* crypto: add `honorCipherOrder` argument (Fedor Indutny)
|
||||
|
||||
* crypto: allow padding in RSA methods (Fedor Indutny)
|
||||
|
||||
* crypto: clarify RandomBytes() error msg (Mickael van der Beek)
|
||||
|
||||
* crypto: never store pointer to conn in SSL_CTX (Fedor Indutny)
|
||||
|
||||
* crypto: unsigned value can't be negative (Brian White)
|
||||
|
||||
* dgram: remove new keyword from errnoException (Jackson Tian)
|
||||
|
||||
* dns: always set variable family in lookup() (cjihrig)
|
||||
|
||||
* dns: include host name in error message if available (Maciej Małecki)
|
||||
|
||||
* dns: introduce lookupService function (Saúl Ibarra Corretgé)
|
||||
|
||||
* dns: send lookup c-ares errors to callback (Chris Dickinson)
|
||||
|
||||
* dns: throw if hostname is not string or falsey (cjihrig)
|
||||
|
||||
* events: Output the event that is leaking (Arnout Kazemier)
|
||||
|
||||
* fs: close file if fstat() fails in readFile() (cjihrig)
|
||||
|
||||
* fs: fs.readFile should not throw uncaughtException (Jackson Tian)
|
||||
|
||||
* http: add 308 status_code, see RFC7238 (Yazhong Liu)
|
||||
|
||||
* http: don't default OPTIONS to chunked encoding (Nick Muerdter)
|
||||
|
||||
* http: fix bailout for writeHead (Alex Kocharin)
|
||||
|
||||
* http: remove unused code block (Fedor Indutny)
|
||||
|
||||
* http: write() after end() emits an error. (Julien Gilli)
|
||||
|
||||
* lib, src: add vm.runInDebugContext() (Ben Noordhuis)
|
||||
|
||||
* lib: noisy deprecation of child_process customFds (Ryan Graham)
|
||||
|
||||
* module: don't require fs several times (Robert Kowalski)
|
||||
|
||||
* net,dgram: workers can listen on exclusive ports (cjihrig)
|
||||
|
||||
* net,stream: add isPaused, don't read() when paused (Chris Dickinson)
|
||||
|
||||
* net: Ensure consistent binding to IPV6 if address is absent (Raymond Feng)
|
||||
|
||||
* net: add remoteFamily for socket (Jackson Tian)
|
||||
|
||||
* net: don't emit listening if handle is closed (Eli Skeggs)
|
||||
|
||||
* net: don't prefer IPv4 addresses during resolution (cjihrig)
|
||||
|
||||
* net: don't throw on net.Server.close() (cjihrig)
|
||||
|
||||
* net: reset `errorEmitted` on reconnect (Ed Umansky)
|
||||
|
||||
* node: set names for prototype methods (Trevor Norris)
|
||||
|
||||
* node: support v8 microtask queue (Vladimir Kurchatkin)
|
||||
|
||||
* path: fix slice OOB in trim (Lucio M. Tato)
|
||||
|
||||
* path: isAbsolute() should always return boolean (Herman Lee)
|
||||
|
||||
* process: throw TypeError if kill pid not a number (Sam Roberts)
|
||||
|
||||
* querystring: custom encode and decode (fengmk2)
|
||||
|
||||
* querystring: do not add sep for empty array (cjihrig)
|
||||
|
||||
* querystring: remove prepended ? from query field (Ezequiel Rabinovich)
|
||||
|
||||
* readline: fix close event of readline.Interface() (Yazhong Liu)
|
||||
|
||||
* readline: fixes scoping bug (Dan Kaplun)
|
||||
|
||||
* readline: implements keypress buffering (Dan Kaplun)
|
||||
|
||||
* repl: fix multi-line input (Fedor Indutny)
|
||||
|
||||
* repl: fix overwrite for this._prompt (Yazhong Liu)
|
||||
|
||||
* repl: proper `setPrompt()` and `multiline` support (Fedor Indutny)
|
||||
|
||||
* stream: don't try to finish if buffer is not empty (Vladimir Kurchatkin)
|
||||
|
||||
* stream: only end reading on null, not undefined (Jonathan Reem)
|
||||
|
||||
* streams: set default hwm properly for Duplex (Andrew Oppenlander)
|
||||
|
||||
* string_bytes: ucs2 support big endian (Andrew Low)
|
||||
|
||||
* tls, crypto: add DHE support (Shigeki Ohtsu)
|
||||
|
||||
* tls: `checkServerIdentity` option (Trevor Livingston)
|
||||
|
||||
* tls: add DHE-RSA-AES128-SHA256 to the def ciphers (Shigeki Ohtsu)
|
||||
|
||||
* tls: better error reporting at cert validation (Fedor Indutny)
|
||||
|
||||
* tls: support multiple keys/certs (Fedor Indutny)
|
||||
|
||||
* tls: throw an error, not string (Jackson Tian)
|
||||
|
||||
* udp: make it possible to receive empty udp packets (Andrius Bentkus)
|
||||
|
||||
* url: treat \ the same as / (isaacs)
|
||||
|
||||
|
||||
2014.05.01, Version 0.11.13 (Unstable), 99c9930ad626e2796af23def7cac19b65c608d18
|
||||
|
||||
* v8: upgrade to 3.24.35.22
|
||||
|
||||
* buffer: add compare and equals methods (Sean McArthur)
|
||||
|
||||
* buffer: improve {read,write}{U}Int* methods (Nick Apperson)
|
||||
|
||||
* buffer: return uint if MSB is 1 in readUInt32 (goussardg)
|
||||
|
||||
* buffer: truncate buffer after string decode (Fedor Indutny)
|
||||
|
||||
* child_process: fix assertion error in spawnSync (Shigeki Ohtsu)
|
||||
|
||||
* crypto: fix memory leak in CipherBase::Final (Fedor Indutny)
|
||||
|
||||
* crypto: improve error messages (Ingmar Runge)
|
||||
|
||||
* crypto: move `createCredentials` to tls (Fedor Indutny)
|
||||
|
||||
* crypto: work around OpenSSL oddness (Fedor Indutny)
|
||||
|
||||
* dgram: introduce `reuseAddr` option (Fedor Indutny)
|
||||
|
||||
* domain: don't crash on "throw null" (Alex Kocharin)
|
||||
|
||||
* events: check if _events is an own property (Vladimir Kurchatkin)
|
||||
|
||||
* fs: improve performance of all stat functions (James Pickard)
|
||||
|
||||
* fs: return blksize on stats object (Trevor Norris)
|
||||
|
||||
* http: add request.flush() method (Ben Noordhuis)
|
||||
|
||||
* http: better client "protocol not supported" error (Nathan Rajlich)
|
||||
|
||||
* http: use defaultAgent.protocol in protocol check (Nathan Rajlich)
|
||||
|
||||
* main: Handle SIGINT properly. (Geir Hauge)
|
||||
|
||||
* net: bind to `::` TCP address by default (Fedor Indutny)
|
||||
|
||||
* readline: consider newlines for cursor position (Yazhong Liu)
|
||||
|
||||
* stream: split `objectMode` for Duplex (Vladimir Kurchatkin)
|
||||
|
||||
* tls: `getPeerCertificate(detailed)` (Fedor Indutny)
|
||||
|
||||
* tls: do not call SNICallback unless present (Fedor Indutny)
|
||||
|
||||
* tls: force readable/writable to `true` (Fedor Indutny)
|
||||
|
||||
* tls: support OCSP on client and server (Fedor Indutny)
|
||||
|
||||
* util: made util.isArray a direct alias for Array.isArray (Evan Carroll)
|
||||
|
||||
|
||||
2014.03.11, Version 0.11.12 (Unstable), 7d6b8db40f32e817ff145b7cfe6b3aec3179fba7
|
||||
|
||||
* uv: Upgrade to v0.11.22 (Timothy J Fontaine)
|
||||
|
||||
* buffer: allow toString to accept Infinity for end (Brian White)
|
||||
|
||||
* child_process: add spawnSync/execSync (Bert Belder, Timothy J Fontaine)
|
||||
|
||||
* cluster: handle bind errors on Windows (Alexis Campailla)
|
||||
|
||||
* contextify: handle infinite recursion errors (Fedor Indutny)
|
||||
|
||||
* crypto: allow custom generator for DiffieHellman (Brian White)
|
||||
|
||||
* crypto: allow setting add'l authenticated data (Brian White)
|
||||
|
||||
* crypto: fix CipherFinal return value check (Brian White)
|
||||
|
||||
* crypto: make NewSessionDoneCb public (Fedor Indutny)
|
||||
|
||||
* dgram: pass the bytes sent to the send callback (Timothy J Fontaine)
|
||||
|
||||
* dns: validate arguments in resolver (Kenan Sulayman)
|
||||
|
||||
* dns: verify argument is valid function in resolve (Kenan Sulayman)
|
||||
|
||||
* http: avoid duplicate keys in writeHead (David Björklund)
|
||||
|
||||
* net: add localPort to connect options (Timothy J Fontaine)
|
||||
|
||||
* node: do not print SyntaxError hints to stderr (Fedor Indutny)
|
||||
|
||||
* node: invoke `beforeExit` again if loop was active (Fedor Indutny)
|
||||
|
||||
* node: make AsyncListenerInst field more explicit (Trevor Norris)
|
||||
|
||||
* os: networkInterfaces include scopeid for ipv6 (Xidorn Quan)
|
||||
|
||||
* process: allow changing `exitCode` in `on('exit')` (Fedor Indutny)
|
||||
|
||||
* readline: fix `line` event, if input emit 'end' (Yazhong Liu)
|
||||
|
||||
* src: add tracing.v8.on('gc') statistics hooks (Ben Noordhuis)
|
||||
|
||||
* src: add v8.getHeapStatistics() function (Ben Noordhuis)
|
||||
|
||||
* src: emit 'beforeExit' event on process object (Ben Noordhuis)
|
||||
|
||||
* src: move AsyncListener from process to tracing (Trevor Norris)
|
||||
|
||||
* tls: fix crash in SNICallback (Fedor Indutny)
|
||||
|
||||
* tls: introduce asynchronous `newSession` (Fedor Indutny)
|
||||
|
||||
* util: show meaningful values for boxed primitives (Nathan Rajlich)
|
||||
|
||||
* vm: don't copy Proxy object from parent context (Ben Noordhuis)
|
||||
|
||||
* windows: make stdout/sterr pipes blocking (Alexis Campailla)
|
||||
|
||||
* zlib: add sync versions for convenience methods (Nikolai Vavilov)
|
||||
|
||||
|
||||
2014.01.29, Version 0.11.11 (Unstable), b46e77421581ea358e221a8a843d057c747f7e90
|
||||
|
||||
* v8: Upgrade to 3.22.24.19
|
||||
|
||||
* http_parser: Upgrade to 2.2.1
|
||||
|
||||
* openssl: Upgrade to 1.0.1f
|
||||
|
||||
* uv: Upgrade to 0.11.18
|
||||
|
||||
* async-listener: revamp of subsystem (Trevor Norris)
|
||||
|
||||
* node: do not ever close stdio (Fedor Indutny)
|
||||
|
||||
* http: use writev on chunked encoding (Trevor Norris)
|
||||
|
||||
* async_wrap/timers: remove Add/RemoveAsyncListener (Trevor Norris)
|
||||
|
||||
* child_process: better error reporting for exec (Fedor Indutny)
|
||||
|
||||
* crypto: add newline to cert and key if not present (Fedor Indutny)
|
||||
|
||||
* crypto: clear error in GetPeerCertificate (Fedor Indutny)
|
||||
|
||||
* crypto: honor default ciphers in client mode (Jacob Hoffman-Andrews)
|
||||
|
||||
* crypto: introduce .setEngine(engine, [flags]) (Fedor Indutny)
|
||||
|
||||
* crypto: support custom pbkdf2 digest methods (Ben Noordhuis)
|
||||
|
||||
* domain: fix off-by-one in Domain.exit() (Ryan Graham)
|
||||
|
||||
* http: concatenate duplicate headers by default (Alex Kocharin)
|
||||
|
||||
* http: do not emit EOF non-readable socket (Fedor Indutny)
|
||||
|
||||
* node: fix argument parsing with -p arg (Alexis Campailla)
|
||||
|
||||
* path: improve POSIX path.join() performance (Jo Liss)
|
||||
|
||||
* tls: emit `clientError` on early socket close (Fedor Indutny)
|
||||
|
||||
* tls: introduce `.setMaxSendFragment(size)` (Fedor Indutny)
|
||||
|
||||
* tls: make cert/pfx optional in tls.createServer() (Ben Noordhuis)
|
||||
|
||||
* tls: process accumulated input (Fedor Indutny)
|
||||
|
||||
* tls: show human-readable error messages (Ben Noordhuis)
|
||||
|
||||
* util: handle escaped forward slashes correctly (Tom Gallacher)
|
||||
|
||||
|
||||
2013.12.31, Version 0.11.10 (Unstable), 66931791f06207d1cdfea5ec1529edf3c94026d3
|
||||
|
||||
* http_parser: update to 2.2
|
||||
|
||||
@@ -445,6 +787,189 @@
|
||||
* console: `console.dir()` bypasses inspect() methods (Nathan Rajlich)
|
||||
|
||||
|
||||
2014.09.16, Version 0.10.32 (Stable)
|
||||
|
||||
* npm: Update to 1.4.28
|
||||
|
||||
* v8: fix a crash introduced by previous release (Fedor Indutny)
|
||||
|
||||
* configure: add --openssl-no-asm flag (Fedor Indutny)
|
||||
|
||||
* crypto: use domains for any callback-taking method (Chris Dickinson)
|
||||
|
||||
* http: do not send `0\r\n\r\n` in TE HEAD responses (Fedor Indutny)
|
||||
|
||||
* querystring: fix unescape override (Tristan Berger)
|
||||
|
||||
* url: Add support for RFC 3490 separators (Mathias Bynens)
|
||||
|
||||
|
||||
2014.08.19, Version 0.10.31 (Stable), 7fabdc23d843cb705d2d0739e7bbdaaf50aa3292
|
||||
|
||||
* v8: backport CVE-2013-6668
|
||||
|
||||
* openssl: Update to v1.0.1i
|
||||
|
||||
* npm: Update to v1.4.23
|
||||
|
||||
* cluster: disconnect should not be synchronous (Sam Roberts)
|
||||
|
||||
* fs: fix fs.readFileSync fd leak when get RangeError (Jackson Tian)
|
||||
|
||||
* stream: fix Readable.wrap objectMode falsy values (James Halliday)
|
||||
|
||||
* timers: fix timers with non-integer delay hanging. (Julien Gilli)
|
||||
|
||||
|
||||
2014.07.31, Version 0.10.30 (Stable), bc0ff830aff1e016163d855e86ded5c98b0899e8
|
||||
|
||||
* uv: Upgrade to v0.10.28
|
||||
|
||||
* npm: Upgrade to v1.4.21
|
||||
|
||||
* v8: Interrupts must not mask stack overflow.
|
||||
|
||||
* Revert "stream: start old-mode read in a next tick" (Fedor Indutny)
|
||||
|
||||
* buffer: fix sign overflow in `readUIn32BE` (Fedor Indutny)
|
||||
|
||||
* buffer: improve {read,write}{U}Int* methods (Nick Apperson)
|
||||
|
||||
* child_process: handle writeUtf8String error (Fedor Indutny)
|
||||
|
||||
* deps: backport 4ed5fde4f from v8 upstream (Fedor Indutny)
|
||||
|
||||
* deps: cherry-pick eca441b2 from OpenSSL (Fedor Indutny)
|
||||
|
||||
* lib: remove and restructure calls to isNaN() (cjihrig)
|
||||
|
||||
* module: eliminate double `getenv()` (Maciej Małecki)
|
||||
|
||||
* stream2: flush extant data on read of ended stream (Chris Dickinson)
|
||||
|
||||
* streams: remove unused require('assert') (Rod Vagg)
|
||||
|
||||
* timers: backport f8193ab (Julien Gilli)
|
||||
|
||||
* util.h: interface compatibility (Oguz Bastemur)
|
||||
|
||||
* zlib: do not crash on write after close (Fedor Indutny)
|
||||
|
||||
|
||||
2014.06.05, Version 0.10.29 (Stable), ce82d6b8474bde7ac7df6d425fb88fb1bcba35bc
|
||||
|
||||
* openssl: to 1.0.1h (CVE-2014-0224)
|
||||
|
||||
* npm: upgrade to 1.4.14
|
||||
|
||||
* utf8: Prevent Node from sending invalid UTF-8 (Felix Geisendörfer)
|
||||
- *NOTE* this introduces a breaking change, previously you could construct
|
||||
invalid UTF-8 and invoke an error in a client that was expecting valid
|
||||
UTF-8, now unmatched surrogate pairs are replaced with the unknown UTF-8
|
||||
character. To restore the old functionality simply have NODE_INVALID_UTF8
|
||||
environment variable set.
|
||||
|
||||
* child_process: do not set args before throwing (Greg Sabia Tucker)
|
||||
|
||||
* child_process: spawn() does not throw TypeError (Greg Sabia Tucker)
|
||||
|
||||
* constants: export O_NONBLOCK (Fedor Indutny)
|
||||
|
||||
* crypto: improve memory usage (Alexis Campailla)
|
||||
|
||||
* fs: close file if fstat() fails in readFile() (cjihrig)
|
||||
|
||||
* lib: name EventEmitter prototype methods (Ben Noordhuis)
|
||||
|
||||
* tls: fix performance issue (Alexis Campailla)
|
||||
|
||||
|
||||
2014.05.01, Version 0.10.28 (Stable), b148cbe09d4657766fdb61575ba985734c2ff0a8
|
||||
|
||||
* npm: upgrade to v1.4.9
|
||||
|
||||
|
||||
2014.05.01, Version 0.10.27 (Stable), cb7911f78ae96ef7a540df992cc1359ba9636e86
|
||||
|
||||
* npm: upgrade to v1.4.8
|
||||
|
||||
* openssl: upgrade to 1.0.1g
|
||||
|
||||
* uv: update to v0.10.27
|
||||
|
||||
* dns: fix certain txt entries (Fedor Indutny)
|
||||
|
||||
* assert: Ensure reflexivity of deepEqual (Mike Pennisi)
|
||||
|
||||
* child_process: fix deadlock when sending handles (Fedor Indutny)
|
||||
|
||||
* child_process: fix sending handle twice (Fedor Indutny)
|
||||
|
||||
* crypto: do not lowercase cipher/hash names (Fedor Indutny)
|
||||
|
||||
* dtrace: workaround linker bug on FreeBSD (Fedor Indutny)
|
||||
|
||||
* http: do not emit EOF non-readable socket (Fedor Indutny)
|
||||
|
||||
* http: invoke createConnection when no agent (Nathan Rajlich)
|
||||
|
||||
* stream: remove useless check (Brian White)
|
||||
|
||||
* timer: don't reschedule timer bucket in a domain (Greg Brail)
|
||||
|
||||
* url: treat \ the same as / (isaacs)
|
||||
|
||||
* util: format as Error if instanceof Error (Rod Vagg)
|
||||
|
||||
|
||||
2014.02.18, Version 0.10.26 (Stable), cc56c62ed879ad4f93b1fdab3235c43e60f48b7e
|
||||
|
||||
* uv: Upgrade to v0.10.25 (Timothy J Fontaine)
|
||||
|
||||
* npm: upgrade to 1.4.3 (isaacs)
|
||||
|
||||
* v8: support compiling with VS2013 (Fedor Indutny)
|
||||
|
||||
* cares: backport TXT parsing fix (Fedor Indutny)
|
||||
|
||||
* crypto: throw on SignFinal failure (Fedor Indutny)
|
||||
|
||||
* crypto: update root certificates (Ben Noordhuis)
|
||||
|
||||
* debugger: Fix breakpoint not showing after restart (Farid Neshat)
|
||||
|
||||
* fs: make unwatchFile() insensitive to path (iamdoron)
|
||||
|
||||
* net: do not re-emit stream errors (Fedor Indutny)
|
||||
|
||||
* net: make Socket destroy() re-entrance safe (Jun Ma)
|
||||
|
||||
* net: reset `endEmitted` on reconnect (Fedor Indutny)
|
||||
|
||||
* node: do not close stdio implicitly (Fedor Indutny)
|
||||
|
||||
* zlib: avoid assertion in close (Fedor Indutny)
|
||||
|
||||
|
||||
2014.01.23, Version 0.10.25 (Stable), b0e5f195dfce3e2b99f5091373d49f6616682596
|
||||
|
||||
* uv: Upgrade to v0.10.23
|
||||
|
||||
* npm: Upgrade to v1.3.24
|
||||
|
||||
* v8: Fix enumeration for objects with lots of properties
|
||||
|
||||
* child_process: fix spawn() optional arguments (Sam Roberts)
|
||||
|
||||
* cluster: report more errors to workers (Fedor Indutny)
|
||||
|
||||
* domains: exit() only affects active domains (Ryan Graham)
|
||||
|
||||
* src: OnFatalError handler must abort() (Timothy J Fontaine)
|
||||
|
||||
* stream: writes may return false but forget to emit drain (Yang Tianyang)
|
||||
|
||||
|
||||
2013.12.18, Version 0.10.24 (Stable), b7fd6bc899ccb629d790c47aee06aba87e535c41
|
||||
|
||||
* uv: Upgrade to v0.10.21
|
||||
|
||||
76
Makefile
76
Makefile
@@ -100,77 +100,81 @@ test/gc/node_modules/weak/build/Release/weakref.node:
|
||||
--directory="$(shell pwd)/test/gc/node_modules/weak" \
|
||||
--nodedir="$(shell pwd)"
|
||||
|
||||
build-addons:
|
||||
@if [ ! -f node ]; then make all; fi
|
||||
rm -rf test/addons/doc-*/
|
||||
./node tools/doc/addon-verify.js
|
||||
$(foreach dir, \
|
||||
$(sort $(dir $(wildcard test/addons/*/*.gyp))), \
|
||||
./node deps/npm/node_modules/node-gyp/bin/node-gyp rebuild \
|
||||
--directory="$(shell pwd)/$(dir)" \
|
||||
--nodedir="$(shell pwd)" && ) echo "build done"
|
||||
|
||||
test-gc: all test/gc/node_modules/weak/build/Release/weakref.node
|
||||
$(PYTHON) tools/test.py --mode=release gc
|
||||
|
||||
test-all: all test/gc/node_modules/weak/build/Release/weakref.node
|
||||
test-build: all build-addons
|
||||
|
||||
test-all: test-build test/gc/node_modules/weak/build/Release/weakref.node
|
||||
$(PYTHON) tools/test.py --mode=debug,release
|
||||
make test-npm
|
||||
|
||||
test-all-http1: all
|
||||
test-all-http1: test-build
|
||||
$(PYTHON) tools/test.py --mode=debug,release --use-http1
|
||||
|
||||
test-all-valgrind: all
|
||||
test-all-valgrind: test-build
|
||||
$(PYTHON) tools/test.py --mode=debug,release --valgrind
|
||||
|
||||
test-release: all
|
||||
test-release: test-build
|
||||
$(PYTHON) tools/test.py --mode=release
|
||||
|
||||
test-debug: all
|
||||
test-debug: test-build
|
||||
$(PYTHON) tools/test.py --mode=debug
|
||||
|
||||
test-message: all
|
||||
test-message: test-build
|
||||
$(PYTHON) tools/test.py message
|
||||
|
||||
test-simple: all
|
||||
$(PYTHON) tools/test.py simple
|
||||
|
||||
test-pummel: all
|
||||
test-pummel: all wrk
|
||||
$(PYTHON) tools/test.py pummel
|
||||
|
||||
test-internet: all
|
||||
$(PYTHON) tools/test.py internet
|
||||
|
||||
test-debugger: all
|
||||
$(PYTHON) tools/test.py debugger
|
||||
|
||||
test-npm: node
|
||||
./node deps/npm/test/run.js
|
||||
|
||||
test-npm-publish: node
|
||||
npm_package_config_publishtest=true ./node deps/npm/test/run.js
|
||||
|
||||
test-addons: test-build
|
||||
$(PYTHON) tools/test.py --mode=release addons
|
||||
|
||||
test-timers:
|
||||
$(MAKE) --directory=tools faketime
|
||||
$(PYTHON) tools/test.py --mode=release timers
|
||||
|
||||
test-timers-clean:
|
||||
$(MAKE) --directory=tools clean
|
||||
|
||||
apidoc_sources = $(wildcard doc/api/*.markdown)
|
||||
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html)) \
|
||||
$(addprefix out/,$(apidoc_sources:.markdown=.json))
|
||||
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets out/doc/about out/doc/community out/doc/download out/doc/logos out/doc/images
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
|
||||
|
||||
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
|
||||
|
||||
doc_images = $(addprefix out/,$(wildcard doc/images/* doc/*.jpg doc/*.png))
|
||||
|
||||
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/sh.css \
|
||||
out/doc/favicon.ico \
|
||||
out/doc/pipe.css \
|
||||
out/doc/about/index.html \
|
||||
out/doc/community/index.html \
|
||||
out/doc/download/index.html \
|
||||
out/doc/logos/index.html \
|
||||
out/doc/changelog.html \
|
||||
$(doc_images)
|
||||
out/doc/sh_javascript.min.js
|
||||
|
||||
doc: $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/ blog node
|
||||
|
||||
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
|
||||
doc: $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/ out/doc/changelog.html node
|
||||
|
||||
$(apidoc_dirs):
|
||||
mkdir -p $@
|
||||
@@ -181,9 +185,6 @@ out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
|
||||
out/doc/changelog.html: ChangeLog doc/changelog-head.html doc/changelog-foot.html tools/build-changelog.sh node
|
||||
bash tools/build-changelog.sh
|
||||
|
||||
out/doc/%.html: doc/%.html node
|
||||
cat $< | sed -e 's|__VERSION__|'$(VERSION)'|g' > $@
|
||||
|
||||
out/doc/%: doc/%
|
||||
cp -r $< $@
|
||||
|
||||
@@ -200,9 +201,6 @@ 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 '\
|
||||
@@ -408,11 +406,11 @@ CPPLINT_EXCLUDE += src/queue.h
|
||||
CPPLINT_EXCLUDE += src/tree.h
|
||||
CPPLINT_EXCLUDE += src/v8abbr.h
|
||||
|
||||
CPPLINT_FILES = $(filter-out $(CPPLINT_EXCLUDE), $(wildcard src/*.cc src/*.h src/*.c))
|
||||
CPPLINT_FILES = $(filter-out $(CPPLINT_EXCLUDE), $(wildcard src/*.cc src/*.h src/*.c tools/icu/*.h tools/icu/*.cc deps/debugger-agent/include/* deps/debugger-agent/src/*))
|
||||
|
||||
cpplint:
|
||||
@$(PYTHON) tools/cpplint.py $(CPPLINT_FILES)
|
||||
|
||||
lint: jslint cpplint
|
||||
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install install-includes install-bin all staticlib dynamiclib test test-all website-upload pkg blog blogclean tar binary release-only bench-http-simple bench-idle bench-all bench bench-misc bench-array bench-buffer bench-net bench-http bench-fs bench-tls
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install install-includes install-bin all staticlib dynamiclib test test-all test-addons build-addons website-upload pkg blog blogclean tar binary release-only bench-http-simple bench-idle bench-all bench bench-misc bench-array bench-buffer bench-net bench-http bench-fs bench-tls
|
||||
|
||||
89
README.md
89
README.md
@@ -6,32 +6,28 @@ Evented I/O for V8 javascript.
|
||||
Prerequisites (Unix only):
|
||||
|
||||
* GCC 4.2 or newer
|
||||
* G++ 4.2 or newer
|
||||
* Python 2.6 or 2.7
|
||||
* GNU Make 3.81 or newer
|
||||
* libexecinfo (FreeBSD and OpenBSD only)
|
||||
|
||||
Unix/Macintosh:
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
With libicu i18n support:
|
||||
|
||||
svn checkout --force --revision 214189 \
|
||||
http://src.chromium.org/svn/trunk/deps/third_party/icu46 \
|
||||
deps/v8/third_party/icu46
|
||||
./configure --with-icu-path=deps/v8/third_party/icu46/icu.gyp
|
||||
make
|
||||
make install
|
||||
```sh
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
```
|
||||
|
||||
If your python binary is in a non-standard location or has a
|
||||
non-standard name, run the following instead:
|
||||
|
||||
export PYTHON=/path/to/python
|
||||
$PYTHON ./configure
|
||||
make
|
||||
make install
|
||||
```sh
|
||||
export PYTHON=/path/to/python
|
||||
$PYTHON ./configure
|
||||
make
|
||||
make install
|
||||
```
|
||||
|
||||
Prerequisites (Windows only):
|
||||
|
||||
@@ -40,38 +36,81 @@ Prerequisites (Windows only):
|
||||
|
||||
Windows:
|
||||
|
||||
vcbuild nosign
|
||||
```sh
|
||||
vcbuild nosign
|
||||
```
|
||||
|
||||
You can download pre-built binaries for various operating systems from
|
||||
[http://nodejs.org/download/](http://nodejs.org/download/). The Windows
|
||||
and OS X installers will prompt you for the location to install to.
|
||||
and OS X installers will prompt you for the location in which to install.
|
||||
The tarballs are self-contained; you can extract them to a local directory
|
||||
with:
|
||||
|
||||
tar xzf /path/to/node-<version>-<platform>-<arch>.tar.gz
|
||||
```sh
|
||||
tar xzf /path/to/node-<version>-<platform>-<arch>.tar.gz
|
||||
```
|
||||
|
||||
Or system-wide with:
|
||||
|
||||
cd /usr/local && tar --strip-components 1 -xzf \
|
||||
/path/to/node-<version>-<platform>-<arch>.tar.gz
|
||||
```sh
|
||||
cd /usr/local && tar --strip-components 1 -xzf \
|
||||
/path/to/node-<version>-<platform>-<arch>.tar.gz
|
||||
```
|
||||
|
||||
### To run the tests:
|
||||
|
||||
Unix/Macintosh:
|
||||
|
||||
make test
|
||||
```sh
|
||||
make test
|
||||
```
|
||||
|
||||
Windows:
|
||||
|
||||
vcbuild test
|
||||
```sh
|
||||
vcbuild test
|
||||
```
|
||||
|
||||
### To build the documentation:
|
||||
|
||||
make doc
|
||||
```sh
|
||||
make doc
|
||||
```
|
||||
|
||||
### To read the documentation:
|
||||
|
||||
man doc/node.1
|
||||
```sh
|
||||
man doc/node.1
|
||||
```
|
||||
|
||||
### To build `Intl` (ECMA-402) support:
|
||||
|
||||
*Note:* more docs, including how to reduce disk footprint, are on
|
||||
[the wiki](https://github.com/joyent/node/wiki/Intl).
|
||||
|
||||
#### Use existing installed ICU (Unix/Macintosh only):
|
||||
|
||||
```sh
|
||||
pkg-config --modversion icu-i18n && ./configure --with-intl=system-icu
|
||||
```
|
||||
|
||||
#### Build ICU from source:
|
||||
|
||||
First: Unpack latest ICU
|
||||
[icu4c-**##.#**-src.tgz](http://icu-project.org/download) (or `.zip`)
|
||||
as `deps/icu` (You'll have: `deps/icu/source/...`)
|
||||
|
||||
Unix/Macintosh:
|
||||
|
||||
```sh
|
||||
./configure --with-intl=full-icu
|
||||
```
|
||||
|
||||
Windows:
|
||||
|
||||
```sh
|
||||
vcbuild full-icu
|
||||
```
|
||||
|
||||
Resources for Newcomers
|
||||
---
|
||||
|
||||
115
benchmark/README.md
Normal file
115
benchmark/README.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Node.js core benchmark tests
|
||||
|
||||
This folder contains benchmark tests to measure the performance for certain
|
||||
Node.js APIs.
|
||||
|
||||
## How to run tests
|
||||
|
||||
There are two ways to run benchmark tests:
|
||||
|
||||
1. Run all tests of a given type, for example, buffers
|
||||
|
||||
```sh
|
||||
node benchmark/common.js buffers
|
||||
```
|
||||
|
||||
The above command will find all scripts under `buffers` directory and require
|
||||
each of them as a module. When a test script is required, it creates an instance
|
||||
of `Benchmark` (a class defined in common.js). In the next tick, the `Benchmark`
|
||||
constructor iterates through the configuration object property values and run
|
||||
the test function with each of the combined arguments in spawned processes. For
|
||||
example, buffers/buffer-read.js has the following configuration:
|
||||
|
||||
```js
|
||||
var bench = common.createBenchmark(main, {
|
||||
noAssert: [false, true],
|
||||
buffer: ['fast', 'slow'],
|
||||
type: ['UInt8', 'UInt16LE', 'UInt16BE',
|
||||
'UInt32LE', 'UInt32BE',
|
||||
'Int8', 'Int16LE', 'Int16BE',
|
||||
'Int32LE', 'Int32BE',
|
||||
'FloatLE', 'FloatBE',
|
||||
'DoubleLE', 'DoubleBE'],
|
||||
millions: [1]
|
||||
});
|
||||
```
|
||||
The runner takes one item from each of the property array value to build a list
|
||||
of arguments to run the main function. The main function will receive the conf
|
||||
object as follows:
|
||||
|
||||
- first run:
|
||||
```js
|
||||
{ noAssert: false,
|
||||
buffer: 'fast',
|
||||
type: 'UInt8',
|
||||
millions: 1
|
||||
}
|
||||
```
|
||||
- second run:
|
||||
```js
|
||||
{
|
||||
noAssert: false,
|
||||
buffer: 'fast',
|
||||
type: 'UInt16LE',
|
||||
millions: 1
|
||||
}
|
||||
```
|
||||
...
|
||||
|
||||
In this case, the main function will run 2*2*14*1 = 56 times. The console output
|
||||
looks like the following:
|
||||
|
||||
```
|
||||
buffers//buffer-read.js
|
||||
buffers/buffer-read.js noAssert=false buffer=fast type=UInt8 millions=1: 271.83
|
||||
buffers/buffer-read.js noAssert=false buffer=fast type=UInt16LE millions=1: 239.43
|
||||
buffers/buffer-read.js noAssert=false buffer=fast type=UInt16BE millions=1: 244.57
|
||||
...
|
||||
```
|
||||
|
||||
2. Run an individual test, for example, buffer-slice.js
|
||||
|
||||
```sh
|
||||
node benchmark/buffers/buffer-read.js
|
||||
```
|
||||
The output:
|
||||
```
|
||||
buffers/buffer-read.js noAssert=false buffer=fast type=UInt8 millions=1: 246.79
|
||||
buffers/buffer-read.js noAssert=false buffer=fast type=UInt16LE millions=1: 240.11
|
||||
buffers/buffer-read.js noAssert=false buffer=fast type=UInt16BE millions=1: 245.91
|
||||
...
|
||||
```
|
||||
|
||||
## How to write a benchmark test
|
||||
|
||||
The benchmark tests are grouped by types. Each type corresponds to a subdirectory,
|
||||
such as `arrays`, `buffers`, or `fs`.
|
||||
|
||||
Let's add a benchmark test for Buffer.slice function. We first create a file
|
||||
buffers/buffer-slice.js.
|
||||
|
||||
### The code snippet
|
||||
|
||||
```js
|
||||
var common = require('../common.js'); // Load the test runner
|
||||
|
||||
var SlowBuffer = require('buffer').SlowBuffer;
|
||||
|
||||
// Create a benchmark test for function `main` and the configuration variants
|
||||
var bench = common.createBenchmark(main, {
|
||||
type: ['fast', 'slow'], // Two types of buffer
|
||||
n: [512] // Number of times (each unit is 1024) to call the slice API
|
||||
});
|
||||
|
||||
function main(conf) {
|
||||
// Read the parameters from the configuration
|
||||
var n = +conf.n;
|
||||
var b = conf.type === 'fast' ? buf : slowBuf;
|
||||
bench.start(); // Start benchmarking
|
||||
for (var i = 0; i < n * 1024; i++) {
|
||||
// Add your test here
|
||||
b.slice(10, 256);
|
||||
}
|
||||
bench.end(n); // End benchmarking
|
||||
}
|
||||
```
|
||||
@@ -28,9 +28,8 @@ function main(conf) {
|
||||
var b = Buffer(N);
|
||||
var s = '';
|
||||
for (var i = 0; i < 256; ++i) s += String.fromCharCode(i);
|
||||
|
||||
bench.start();
|
||||
for (var i = 0; i < N; i += 256) b.write(s, i, 256, 'ascii');
|
||||
bench.start();
|
||||
for (var i = 0; i < 32; ++i) b.toString('base64');
|
||||
bench.end(64);
|
||||
}
|
||||
|
||||
42
benchmark/buffers/buffer-compare.js
Normal file
42
benchmark/buffers/buffer-compare.js
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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 common = require('../common.js');
|
||||
|
||||
var bench = common.createBenchmark(main, {
|
||||
size: [16, 512, 1024, 4096, 16386],
|
||||
millions: [1]
|
||||
});
|
||||
|
||||
function main(conf) {
|
||||
var iter = (conf.millions >>> 0) * 1e6;
|
||||
var size = (conf.size >>> 0);
|
||||
var b0 = new Buffer(size).fill('a');
|
||||
var b1 = new Buffer(size).fill('a');
|
||||
|
||||
b1[size - 1] = 'b'.charCodeAt(0);
|
||||
|
||||
bench.start();
|
||||
for (var i = 0; i < iter; i++) {
|
||||
Buffer.compare(b0, b1);
|
||||
}
|
||||
bench.end(iter / 1e6);
|
||||
}
|
||||
@@ -20,9 +20,12 @@ function main(conf) {
|
||||
var fn = 'read' + conf.type;
|
||||
|
||||
buff.writeDoubleLE(0, 0, noAssert);
|
||||
var testFunction = new Function('buff', [
|
||||
"for (var i = 0; i !== " + len + "; i++) {",
|
||||
" buff." + fn + "(0, " + JSON.stringify(noAssert) + ");",
|
||||
"}"
|
||||
].join("\n"));
|
||||
bench.start();
|
||||
for (var i = 0; i < len; i++) {
|
||||
buff[fn](0, noAssert);
|
||||
}
|
||||
testFunction(buff);
|
||||
bench.end(len / 1e6);
|
||||
}
|
||||
|
||||
20
benchmark/buffers/buffer-slice.js
Normal file
20
benchmark/buffers/buffer-slice.js
Normal file
@@ -0,0 +1,20 @@
|
||||
var common = require('../common.js');
|
||||
var SlowBuffer = require('buffer').SlowBuffer;
|
||||
|
||||
var bench = common.createBenchmark(main, {
|
||||
type: ['fast', 'slow'],
|
||||
n: [1024]
|
||||
});
|
||||
|
||||
var buf = new Buffer(1024);
|
||||
var slowBuf = new SlowBuffer(1024);
|
||||
|
||||
function main(conf) {
|
||||
var n = +conf.n;
|
||||
var b = conf.type === 'fast' ? buf : slowBuf;
|
||||
bench.start();
|
||||
for (var i = 0; i < n * 1024; i++) {
|
||||
b.slice(10, 256);
|
||||
}
|
||||
bench.end(n);
|
||||
}
|
||||
@@ -15,9 +15,9 @@ var bench = common.createBenchmark(main, {
|
||||
const INT8 = 0x7f;
|
||||
const INT16 = 0x7fff;
|
||||
const INT32 = 0x7fffffff;
|
||||
const UINT8 = INT8 * 2;
|
||||
const UINT16 = INT16 * 2;
|
||||
const UINT32 = INT32 * 2;
|
||||
const UINT8 = (INT8 * 2) + 1;
|
||||
const UINT16 = (INT16 * 2) + 1;
|
||||
const UINT32 = INT32;
|
||||
|
||||
var mod = {
|
||||
writeInt8: INT8,
|
||||
@@ -47,17 +47,23 @@ function main(conf) {
|
||||
|
||||
function benchInt(buff, fn, len, noAssert) {
|
||||
var m = mod[fn];
|
||||
var testFunction = new Function('buff', [
|
||||
"for (var i = 0; i !== " + len + "; i++) {",
|
||||
" buff." + fn + "(i & " + m + ", 0, " + JSON.stringify(noAssert) + ");",
|
||||
"}"
|
||||
].join("\n"));
|
||||
bench.start();
|
||||
for (var i = 0; i < len; i++) {
|
||||
buff[fn](i % m, 0, noAssert);
|
||||
}
|
||||
testFunction(buff);
|
||||
bench.end(len / 1e6);
|
||||
}
|
||||
|
||||
function benchFloat(buff, fn, len, noAssert) {
|
||||
var testFunction = new Function('buff', [
|
||||
"for (var i = 0; i !== " + len + "; i++) {",
|
||||
" buff." + fn + "(i, 0, " + JSON.stringify(noAssert) + ");",
|
||||
"}"
|
||||
].join("\n"));
|
||||
bench.start();
|
||||
for (var i = 0; i < len; i++) {
|
||||
buff[fn](i * 0.1, 0, noAssert);
|
||||
}
|
||||
testFunction(buff);
|
||||
bench.end(len / 1e6);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ function main(conf) {
|
||||
var chunk = new Buffer(conf.size);
|
||||
chunk.fill('8');
|
||||
|
||||
var args = ['-r', 5000, '-t', 8, '-c', conf.c];
|
||||
var args = ['-d', '10s', '-t', 8, '-c', conf.c];
|
||||
|
||||
var server = http.createServer(function(req, res) {
|
||||
function send(left) {
|
||||
|
||||
@@ -26,8 +26,7 @@ function main(conf) {
|
||||
|
||||
setTimeout(function() {
|
||||
var path = '/' + conf.type + '/' + conf.length;
|
||||
var args = ['-r', '-t', 5, '-c', conf.c, '-k'];
|
||||
var args = ['-r', 5000, '-t', 8, '-c', conf.c];
|
||||
var args = ['-d', '10s', '-t', 8, '-c', conf.c];
|
||||
|
||||
bench.http(path, args, function() {
|
||||
w1.destroy();
|
||||
|
||||
@@ -45,7 +45,7 @@ function main(conf) {
|
||||
}
|
||||
|
||||
var method = conf.method === 'write' ? write : end;
|
||||
var args = ['-r', 5000, '-t', 8, '-c', conf.c];
|
||||
var args = ['-d', '10s', '-t', 8, '-c', conf.c];
|
||||
|
||||
var server = http.createServer(function(req, res) {
|
||||
method(res);
|
||||
|
||||
@@ -15,7 +15,7 @@ function main(conf) {
|
||||
var server = require('../http_simple.js');
|
||||
setTimeout(function() {
|
||||
var path = '/' + conf.type + '/' + conf.length + '/' + conf.chunks;
|
||||
var args = ['-r', 5000, '-t', 8, '-c', conf.c];
|
||||
var args = ['-d', '10s', '-t', 8, '-c', conf.c];
|
||||
|
||||
bench.http(path, args, function() {
|
||||
server.close();
|
||||
|
||||
72
benchmark/misc/module-loader.js
Normal file
72
benchmark/misc/module-loader.js
Normal file
@@ -0,0 +1,72 @@
|
||||
// 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 fs = require('fs');
|
||||
var path = require('path');
|
||||
var common = require('../common.js');
|
||||
var packageJson = '{"main": "index.js"}';
|
||||
|
||||
var tmpDirectory = path.join(__dirname, '..', 'tmp');
|
||||
var benchmarkDirectory = path.join(tmpDirectory, 'nodejs-benchmark-module');
|
||||
|
||||
var bench = common.createBenchmark(main, {
|
||||
thousands: [50]
|
||||
});
|
||||
|
||||
function main(conf) {
|
||||
rmrf(tmpDirectory);
|
||||
try { fs.mkdirSync(tmpDirectory); } catch (e) {}
|
||||
try { fs.mkdirSync(benchmarkDirectory); } catch (e) {}
|
||||
|
||||
var n = +conf.thousands * 1e3;
|
||||
for (var i = 0; i <= n; i++) {
|
||||
fs.mkdirSync(benchmarkDirectory + i);
|
||||
fs.writeFileSync(benchmarkDirectory + i + '/package.json', '{"main": "index.js"}');
|
||||
fs.writeFileSync(benchmarkDirectory + i + '/index.js', 'module.exports = "";');
|
||||
}
|
||||
|
||||
measure(n);
|
||||
}
|
||||
|
||||
function measure(n) {
|
||||
bench.start();
|
||||
for (var i = 0; i <= n; i++) {
|
||||
require(benchmarkDirectory + i);
|
||||
}
|
||||
bench.end(n / 1e3);
|
||||
}
|
||||
|
||||
function rmrf(location) {
|
||||
if (fs.existsSync(location)) {
|
||||
var things = fs.readdirSync(location);
|
||||
things.forEach(function(thing) {
|
||||
var cur = path.join(location, thing),
|
||||
isDirectory = fs.statSync(cur).isDirectory();
|
||||
if (isDirectory) {
|
||||
rmrf(cur);
|
||||
return;
|
||||
}
|
||||
fs.unlinkSync(cur);
|
||||
});
|
||||
fs.rmdirSync(location);
|
||||
}
|
||||
}
|
||||
@@ -51,7 +51,7 @@ function server() {
|
||||
if (nread < 0)
|
||||
fail(nread, 'read');
|
||||
|
||||
var writeReq = {};
|
||||
var writeReq = { async: false };
|
||||
err = clientHandle.writeBuffer(writeReq, buffer);
|
||||
|
||||
if (err)
|
||||
|
||||
@@ -68,7 +68,7 @@ function server() {
|
||||
write();
|
||||
|
||||
function write() {
|
||||
var writeReq = { oncomplete: afterWrite };
|
||||
var writeReq = { async: false, oncomplete: afterWrite };
|
||||
var err;
|
||||
switch (type) {
|
||||
case 'buf':
|
||||
@@ -82,8 +82,13 @@ function server() {
|
||||
break;
|
||||
}
|
||||
|
||||
if (err)
|
||||
if (err) {
|
||||
fail(err, 'write');
|
||||
} else if (!writeReq.async) {
|
||||
process.nextTick(function() {
|
||||
afterWrite(null, clientHandle, writeReq);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function afterWrite(err, handle, req) {
|
||||
|
||||
49
common.gypi
49
common.gypi
@@ -1,16 +1,20 @@
|
||||
{
|
||||
'variables': {
|
||||
'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
|
||||
'werror': '', # Turn off -Werror in V8 build.
|
||||
'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
|
||||
'gcc_version%': 'unknown',
|
||||
'clang%': 0,
|
||||
'python%': 'python',
|
||||
|
||||
# Enable disassembler for `--print-code` v8 options
|
||||
'v8_enable_disassembler': 1,
|
||||
|
||||
# Enable V8's post-mortem debugging only on unix flavors.
|
||||
'conditions': [
|
||||
['OS == "win"', {
|
||||
@@ -19,7 +23,14 @@
|
||||
}, {
|
||||
'os_posix': 1,
|
||||
'v8_postmortem_support': 'true'
|
||||
}]
|
||||
}],
|
||||
['GENERATOR == "ninja" or OS== "mac"', {
|
||||
'OBJ_DIR': '<(PRODUCT_DIR)/obj',
|
||||
'V8_BASE': '<(PRODUCT_DIR)/libv8_base.a',
|
||||
}, {
|
||||
'OBJ_DIR': '<(PRODUCT_DIR)/obj.target',
|
||||
'V8_BASE': '<(PRODUCT_DIR)/obj.target/deps/v8/tools/gyp/libv8_base.a',
|
||||
}],
|
||||
],
|
||||
},
|
||||
|
||||
@@ -27,6 +38,9 @@
|
||||
'default_configuration': 'Release',
|
||||
'configurations': {
|
||||
'Debug': {
|
||||
'variables': {
|
||||
'v8_enable_handle_zapping%': 1,
|
||||
},
|
||||
'defines': [ 'DEBUG', '_DEBUG' ],
|
||||
'cflags': [ '-g', '-O0' ],
|
||||
'conditions': [
|
||||
@@ -51,6 +65,9 @@
|
||||
},
|
||||
},
|
||||
'Release': {
|
||||
'variables': {
|
||||
'v8_enable_handle_zapping%': 0,
|
||||
},
|
||||
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
|
||||
'conditions': [
|
||||
['target_arch=="x64"', {
|
||||
@@ -59,9 +76,6 @@
|
||||
['OS=="solaris"', {
|
||||
# pull in V8's postmortem metadata
|
||||
'ldflags': [ '-Wl,-z,allextract' ]
|
||||
}, {
|
||||
# Doesn't work with the Solaris linker.
|
||||
'ldflags': [ '-Wl,--gc-sections' ],
|
||||
}],
|
||||
['clang == 0 and gcc_version >= 40', {
|
||||
'cflags': [ '-fno-tree-vrp' ], # Work around compiler bug.
|
||||
@@ -159,7 +173,7 @@
|
||||
}],
|
||||
[ 'OS in "linux freebsd openbsd solaris android"', {
|
||||
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
|
||||
'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
|
||||
'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++0x' ],
|
||||
'ldflags': [ '-rdynamic' ],
|
||||
'target_conditions': [
|
||||
['_type=="static_library"', {
|
||||
@@ -223,10 +237,21 @@
|
||||
['target_arch=="x64"', {
|
||||
'xcode_settings': {'ARCHS': ['x86_64']},
|
||||
}],
|
||||
['clang==1', {
|
||||
'xcode_settings': {
|
||||
'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
|
||||
'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++0x', # -std=gnu++0x
|
||||
},
|
||||
}],
|
||||
],
|
||||
}],
|
||||
['OS=="freebsd" and node_use_dtrace=="true"', {
|
||||
'libraries': [ '-lelf' ],
|
||||
}],
|
||||
['OS=="freebsd"', {
|
||||
'ldflags': [
|
||||
'-Wl,--export-dynamic',
|
||||
],
|
||||
}]
|
||||
],
|
||||
}
|
||||
|
||||
238
configure
vendored
238
configure
vendored
@@ -54,6 +54,17 @@ parser.add_option('--no-ifaddrs',
|
||||
dest='no_ifaddrs',
|
||||
help='use on deprecated SunOS systems that do not support ifaddrs.h')
|
||||
|
||||
parser.add_option("--fully-static",
|
||||
action="store_true",
|
||||
dest="fully_static",
|
||||
help="Generate an executable without external dynamic libraries. This "
|
||||
"will not work on OSX when using default compilation environment")
|
||||
|
||||
parser.add_option("--openssl-no-asm",
|
||||
action="store_true",
|
||||
dest="openssl_no_asm",
|
||||
help="Do not build optimized assembly for OpenSSL")
|
||||
|
||||
# deprecated
|
||||
parser.add_option('--openssl-includes',
|
||||
action='store',
|
||||
@@ -204,6 +215,11 @@ parser.add_option('--tag',
|
||||
dest='tag',
|
||||
help='custom build tag')
|
||||
|
||||
parser.add_option('--v8-options',
|
||||
action='store',
|
||||
dest='v8_options',
|
||||
help='v8 options to pass, see `node --v8-options` for examples.')
|
||||
|
||||
parser.add_option('--with-arm-float-abi',
|
||||
action='store',
|
||||
dest='arm_float_abi',
|
||||
@@ -225,6 +241,11 @@ parser.add_option('--with-icu-path',
|
||||
dest='with_icu_path',
|
||||
help='Path to icu.gyp (ICU i18n, Chromium version only.)')
|
||||
|
||||
parser.add_option('--with-intl',
|
||||
action='store',
|
||||
dest='with_intl',
|
||||
help='Intl mode: none, full-icu, small-icu (default is none)')
|
||||
|
||||
parser.add_option('--with-perfctr',
|
||||
action='store_true',
|
||||
dest='with_perfctr',
|
||||
@@ -337,6 +358,13 @@ def is_arch_armv7():
|
||||
'__ARM_ARCH_7M__' in cc_macros_cache)
|
||||
|
||||
|
||||
def is_arch_armv6():
|
||||
"""Check for ARMv6 instructions"""
|
||||
cc_macros_cache = cc_macros()
|
||||
return ('__ARM_ARCH_6__' in cc_macros_cache or
|
||||
'__ARM_ARCH_6M__' in cc_macros_cache)
|
||||
|
||||
|
||||
def is_arm_neon():
|
||||
"""Check for ARM NEON support"""
|
||||
return '__ARM_NEON__' in cc_macros()
|
||||
@@ -397,7 +425,8 @@ def host_arch_cc():
|
||||
def host_arch_win():
|
||||
"""Host architecture check using environ vars (better way to do this?)"""
|
||||
|
||||
arch = os.environ.get('PROCESSOR_ARCHITECTURE', 'x86')
|
||||
observed_arch = os.environ.get('PROCESSOR_ARCHITECTURE', 'x86')
|
||||
arch = os.environ.get('PROCESSOR_ARCHITEW6432', observed_arch)
|
||||
|
||||
matchup = {
|
||||
'AMD64' : 'x64',
|
||||
@@ -432,7 +461,14 @@ def configure_arm(o):
|
||||
arm_float_abi = 'hard'
|
||||
else:
|
||||
arm_float_abi = 'default'
|
||||
o['variables']['armv7'] = int(is_arch_armv7())
|
||||
|
||||
if is_arch_armv7():
|
||||
o['variables']['arm_version'] = '7'
|
||||
elif is_arch_armv6():
|
||||
o['variables']['arm_version'] = '6'
|
||||
else:
|
||||
o['variables']['arm_version'] = 'default'
|
||||
|
||||
o['variables']['arm_fpu'] = 'vfpv3' # V8 3.18 no longer supports VFP2.
|
||||
o['variables']['arm_neon'] = int(is_arm_neon())
|
||||
o['variables']['arm_thumb'] = 0 # -marm
|
||||
@@ -451,6 +487,11 @@ def configure_node(o):
|
||||
o['variables']['host_arch'] = host_arch
|
||||
o['variables']['target_arch'] = target_arch
|
||||
|
||||
if target_arch != host_arch and not options.without_snapshot:
|
||||
o['variables']['want_separate_host_toolset'] = 1
|
||||
else:
|
||||
o['variables']['want_separate_host_toolset'] = 0
|
||||
|
||||
if target_arch == 'arm':
|
||||
configure_arm(o)
|
||||
|
||||
@@ -461,16 +502,20 @@ def configure_node(o):
|
||||
o['variables']['gcc_version'] = 10 * cc_version[0] + cc_version[1]
|
||||
|
||||
# clang has always supported -fvisibility=hidden, right?
|
||||
if not is_clang and cc_version < (4,0,0):
|
||||
o['variables']['visibility'] = ''
|
||||
if flavor != 'win' and not is_clang and cc_version < (4,7,0):
|
||||
raise Exception(
|
||||
'Need at least gcc 4.7 to compile V8, you have {version}'.format(
|
||||
version=cc_version))
|
||||
|
||||
if flavor in ('solaris', 'mac', 'linux'):
|
||||
if flavor in ('solaris', 'mac', 'linux', 'freebsd'):
|
||||
use_dtrace = not options.without_dtrace
|
||||
# Don't enable by default on linux, it needs the sdt-devel package.
|
||||
# Don't enable by default on linux and freebsd
|
||||
if flavor in ('linux', 'freebsd'):
|
||||
use_dtrace = options.with_dtrace
|
||||
|
||||
if flavor == 'linux':
|
||||
if options.systemtap_includes:
|
||||
o['include_dirs'] += [options.systemtap_includes]
|
||||
use_dtrace = options.with_dtrace
|
||||
o['variables']['node_use_dtrace'] = b(use_dtrace)
|
||||
o['variables']['uv_use_dtrace'] = b(use_dtrace)
|
||||
o['variables']['uv_parent_path'] = '/deps/uv/'
|
||||
@@ -511,6 +556,9 @@ def configure_node(o):
|
||||
else:
|
||||
o['variables']['node_tag'] = ''
|
||||
|
||||
if options.v8_options:
|
||||
o['variables']['node_v8_options'] = options.v8_options.replace('"', '\\"')
|
||||
|
||||
|
||||
def configure_libz(o):
|
||||
o['variables']['node_shared_zlib'] = b(options.shared_zlib)
|
||||
@@ -560,6 +608,9 @@ def configure_libuv(o):
|
||||
# assume shared libuv if one of these is set?
|
||||
if options.shared_libuv_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_libuv_libpath]
|
||||
else:
|
||||
o['variables']['uv_library'] = 'static_library'
|
||||
|
||||
if options.shared_libuv_libname:
|
||||
o['libraries'] += ['-l%s' % options.shared_libuv_libname]
|
||||
elif options.shared_libuv:
|
||||
@@ -590,6 +641,8 @@ def configure_v8(o):
|
||||
def configure_openssl(o):
|
||||
o['variables']['node_use_openssl'] = b(not options.without_ssl)
|
||||
o['variables']['node_shared_openssl'] = b(options.shared_openssl)
|
||||
o['variables']['openssl_no_asm'] = (
|
||||
1 if options.openssl_no_asm else 0)
|
||||
|
||||
if options.without_ssl:
|
||||
return
|
||||
@@ -617,6 +670,14 @@ def configure_openssl(o):
|
||||
o['cflags'] += cflags.split()
|
||||
|
||||
|
||||
def configure_fullystatic(o):
|
||||
if options.fully_static:
|
||||
o['libraries'] += ['-static']
|
||||
if flavor == 'mac':
|
||||
print("Generation of static executable will not work on OSX "
|
||||
"when using default compilation environment")
|
||||
|
||||
|
||||
def configure_winsdk(o):
|
||||
if flavor != 'win':
|
||||
return
|
||||
@@ -632,13 +693,159 @@ def configure_winsdk(o):
|
||||
print('ctrpp not found in WinSDK path--using pre-gen files '
|
||||
'from tools/msvs/genfiles.')
|
||||
|
||||
def write(filename, data):
|
||||
filename = os.path.join(root_dir, filename)
|
||||
print 'creating ', filename
|
||||
f = open(filename, 'w+')
|
||||
f.write(data)
|
||||
|
||||
def configure_icu(o):
|
||||
do_not_edit = '# Do not edit. Generated by the configure script.\n'
|
||||
|
||||
def glob_to_var(dir_base, dir_sub):
|
||||
list = []
|
||||
dir_all = os.path.join(dir_base, dir_sub)
|
||||
files = os.walk(dir_all)
|
||||
for ent in files:
|
||||
(path, dirs, files) = ent
|
||||
for file in files:
|
||||
if file.endswith('.cpp') or file.endswith('.c') or file.endswith('.h'):
|
||||
list.append('%s/%s' % (dir_sub, file))
|
||||
break
|
||||
return list
|
||||
|
||||
def configure_intl(o):
|
||||
icu_config = {
|
||||
'variables': {}
|
||||
}
|
||||
icu_config_name = 'icu_config.gypi'
|
||||
def write_config(data, name):
|
||||
return
|
||||
|
||||
# write an empty file to start with
|
||||
write(icu_config_name, do_not_edit +
|
||||
pprint.pformat(icu_config, indent=2) + '\n')
|
||||
|
||||
# small ICU is off by default.
|
||||
# always set icu_small, node.gyp depends on it being defined.
|
||||
o['variables']['icu_small'] = b(False)
|
||||
|
||||
with_intl = options.with_intl
|
||||
have_icu_path = bool(options.with_icu_path)
|
||||
o['variables']['v8_enable_i18n_support'] = int(have_icu_path)
|
||||
if have_icu_path:
|
||||
if have_icu_path and with_intl:
|
||||
print 'Error: Cannot specify both --with-icu-path and --with-intl'
|
||||
sys.exit(1)
|
||||
elif have_icu_path:
|
||||
# Chromium .gyp mode: --with-icu-path
|
||||
o['variables']['v8_enable_i18n_support'] = 1
|
||||
# use the .gyp given
|
||||
o['variables']['icu_gyp_path'] = options.with_icu_path
|
||||
return
|
||||
# --with-intl=<with_intl>
|
||||
if with_intl == 'none' or with_intl is None:
|
||||
o['variables']['v8_enable_i18n_support'] = 0
|
||||
return # no Intl
|
||||
elif with_intl == 'small-icu':
|
||||
# small ICU (English only)
|
||||
o['variables']['v8_enable_i18n_support'] = 1
|
||||
o['variables']['icu_small'] = b(True)
|
||||
elif with_intl == 'full-icu':
|
||||
# full ICU
|
||||
o['variables']['v8_enable_i18n_support'] = 1
|
||||
elif with_intl == 'system-icu':
|
||||
# ICU from pkg-config.
|
||||
o['variables']['v8_enable_i18n_support'] = 1
|
||||
pkgicu = pkg_config('icu-i18n')
|
||||
if not pkgicu:
|
||||
print 'Error: could not load pkg-config data for "icu-i18n".'
|
||||
print 'See above errors or the README.md.'
|
||||
sys.exit(1)
|
||||
(libs, cflags) = pkgicu
|
||||
o['libraries'] += libs.split()
|
||||
o['cflags'] += cflags.split()
|
||||
# use the "system" .gyp
|
||||
o['variables']['icu_gyp_path'] = 'tools/icu/icu-system.gyp'
|
||||
return
|
||||
else:
|
||||
print 'Error: unknown value --with-intl=%s' % with_intl
|
||||
sys.exit(1)
|
||||
# Note: non-ICU implementations could use other 'with_intl'
|
||||
# values.
|
||||
|
||||
# ICU mode. (icu-generic.gyp)
|
||||
byteorder = sys.byteorder
|
||||
o['variables']['icu_gyp_path'] = 'tools/icu/icu-generic.gyp'
|
||||
# ICU source dir relative to root
|
||||
icu_full_path = os.path.join(root_dir, 'deps/icu')
|
||||
o['variables']['icu_path'] = icu_full_path
|
||||
if not os.path.isdir(icu_full_path):
|
||||
print 'Error: ICU path is not a directory: %s' % (icu_full_path)
|
||||
sys.exit(1)
|
||||
# Now, what version of ICU is it? We just need the "major", such as 54.
|
||||
# uvernum.h contains it as a #define.
|
||||
uvernum_h = os.path.join(icu_full_path, 'source/common/unicode/uvernum.h')
|
||||
if not os.path.isfile(uvernum_h):
|
||||
print 'Error: could not load %s - is ICU installed?' % uvernum_h
|
||||
sys.exit(1)
|
||||
icu_ver_major = None
|
||||
matchVerExp = r'^\s*#define\s+U_ICU_VERSION_SHORT\s+"([^"]*)".*'
|
||||
match_version = re.compile(matchVerExp)
|
||||
for line in open(uvernum_h).readlines():
|
||||
m = match_version.match(line)
|
||||
if m:
|
||||
icu_ver_major = m.group(1)
|
||||
if not icu_ver_major:
|
||||
print 'Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h
|
||||
sys.exit(1)
|
||||
icu_endianness = sys.byteorder[0]; # TODO(srl295): EBCDIC should be 'e'
|
||||
o['variables']['icu_ver_major'] = icu_ver_major
|
||||
o['variables']['icu_endianness'] = icu_endianness
|
||||
icu_data_file_l = 'icudt%s%s.dat' % (icu_ver_major, 'l')
|
||||
icu_data_file = 'icudt%s%s.dat' % (icu_ver_major, icu_endianness)
|
||||
# relative to configure
|
||||
icu_data_path = os.path.join(icu_full_path,
|
||||
'source/data/in',
|
||||
icu_data_file_l)
|
||||
# relative to dep..
|
||||
icu_data_in = os.path.join('../../deps/icu/source/data/in', icu_data_file_l)
|
||||
if not os.path.isfile(icu_data_path) and icu_endianness != 'l':
|
||||
# use host endianness
|
||||
icu_data_path = os.path.join(icu_full_path,
|
||||
'source/data/in',
|
||||
icu_data_file)
|
||||
# relative to dep..
|
||||
icu_data_in = os.path.join('icu/source/data/in',
|
||||
icu_data_file)
|
||||
# this is the input '.dat' file to use .. icudt*.dat
|
||||
# may be little-endian if from a icu-project.org tarball
|
||||
o['variables']['icu_data_in'] = icu_data_in
|
||||
# this is the icudt*.dat file which node will be using (platform endianness)
|
||||
o['variables']['icu_data_file'] = icu_data_file
|
||||
if not os.path.isfile(icu_data_path):
|
||||
print 'Error: ICU prebuilt data file %s does not exist.' % icu_data_path
|
||||
print 'See the README.md.'
|
||||
# .. and we're not about to build it from .gyp!
|
||||
sys.exit(1)
|
||||
# map from variable name to subdirs
|
||||
icu_src = {
|
||||
'stubdata': 'stubdata',
|
||||
'common': 'common',
|
||||
'i18n': 'i18n',
|
||||
'io': 'io',
|
||||
'tools': 'tools/toolutil',
|
||||
'genccode': 'tools/genccode',
|
||||
'genrb': 'tools/genrb',
|
||||
'icupkg': 'tools/icupkg',
|
||||
}
|
||||
# this creates a variable icu_src_XXX for each of the subdirs
|
||||
# with a list of the src files to use
|
||||
for i in icu_src:
|
||||
var = 'icu_src_%s' % i
|
||||
path = '../../deps/icu/source/%s' % icu_src[i]
|
||||
icu_config['variables'][var] = glob_to_var('tools/icu', path)
|
||||
# write updated icu_config.gypi with a bunch of paths
|
||||
write(icu_config_name, do_not_edit +
|
||||
pprint.pformat(icu_config, indent=2) + '\n')
|
||||
return # end of configure_intl
|
||||
|
||||
# determine the "flavor" (operating system) we're building for,
|
||||
# leveraging gyp's GetFlavor function
|
||||
@@ -663,7 +870,8 @@ configure_libuv(output)
|
||||
configure_v8(output)
|
||||
configure_openssl(output)
|
||||
configure_winsdk(output)
|
||||
configure_icu(output)
|
||||
configure_intl(output)
|
||||
configure_fullystatic(output)
|
||||
|
||||
# variables should be a root level element,
|
||||
# move everything else to target_defaults
|
||||
@@ -675,13 +883,7 @@ 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' +
|
||||
write('config.gypi', do_not_edit +
|
||||
pprint.pformat(output, indent=2) + '\n')
|
||||
|
||||
config = {
|
||||
|
||||
2
deps/cares/include/ares.h
vendored
2
deps/cares/include/ares.h
vendored
@@ -520,6 +520,8 @@ struct ares_txt_reply {
|
||||
struct ares_txt_reply *next;
|
||||
unsigned char *txt;
|
||||
size_t length; /* length excludes null termination */
|
||||
unsigned char record_start; /* 1 - if start of new record
|
||||
* 0 - if a chunk in the same record */
|
||||
};
|
||||
|
||||
struct ares_naptr_reply {
|
||||
|
||||
5
deps/cares/src/ares_parse_txt_reply.c
vendored
5
deps/cares/src/ares_parse_txt_reply.c
vendored
@@ -133,8 +133,6 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
break;
|
||||
}
|
||||
|
||||
++strptr;
|
||||
|
||||
/* Allocate storage for this TXT answer appending it to the list */
|
||||
txt_curr = ares_malloc_data(ARES_DATATYPE_TXT_REPLY);
|
||||
if (!txt_curr)
|
||||
@@ -152,6 +150,7 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
}
|
||||
txt_last = txt_curr;
|
||||
|
||||
txt_curr->record_start = strptr == aptr;
|
||||
txt_curr->length = substr_len;
|
||||
txt_curr->txt = malloc (substr_len + 1/* Including null byte */);
|
||||
if (txt_curr->txt == NULL)
|
||||
@@ -159,6 +158,8 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
status = ARES_ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
++strptr;
|
||||
memcpy ((char *) txt_curr->txt, strptr, substr_len);
|
||||
|
||||
/* Make sure we NULL-terminate */
|
||||
|
||||
24
deps/debugger-agent/debugger-agent.gyp
vendored
Normal file
24
deps/debugger-agent/debugger-agent.gyp
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"targets": [{
|
||||
"target_name": "debugger-agent",
|
||||
"type": "<(library)",
|
||||
"include_dirs": [
|
||||
"src",
|
||||
"include",
|
||||
"../v8/include",
|
||||
"../uv/include",
|
||||
|
||||
# Private node.js folder and stuff needed to include from it
|
||||
"../../src",
|
||||
"../cares/include",
|
||||
],
|
||||
"direct_dependent_settings": {
|
||||
"include_dirs": [
|
||||
"include",
|
||||
],
|
||||
},
|
||||
"sources": [
|
||||
"src/agent.cc",
|
||||
],
|
||||
}],
|
||||
}
|
||||
109
deps/debugger-agent/include/debugger-agent.h
vendored
Normal file
109
deps/debugger-agent/include/debugger-agent.h
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
// Copyright Fedor Indutny 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.
|
||||
|
||||
#ifndef DEPS_DEBUGGER_AGENT_INCLUDE_DEBUGGER_AGENT_H_
|
||||
#define DEPS_DEBUGGER_AGENT_INCLUDE_DEBUGGER_AGENT_H_
|
||||
|
||||
#include "uv.h"
|
||||
#include "v8.h"
|
||||
#include "v8-debug.h"
|
||||
|
||||
namespace node {
|
||||
|
||||
// Forward declaration
|
||||
class Environment;
|
||||
|
||||
namespace debugger {
|
||||
|
||||
// Forward declaration
|
||||
class AgentMessage;
|
||||
|
||||
class Agent {
|
||||
public:
|
||||
explicit Agent(node::Environment* env);
|
||||
~Agent();
|
||||
|
||||
typedef void (*DispatchHandler)(node::Environment* env);
|
||||
|
||||
// Start the debugger agent thread
|
||||
bool Start(int port, bool wait);
|
||||
// Listen for debug events
|
||||
void Enable();
|
||||
// Stop the debugger agent
|
||||
void Stop();
|
||||
|
||||
inline void set_dispatch_handler(DispatchHandler handler) {
|
||||
dispatch_handler_ = handler;
|
||||
}
|
||||
|
||||
inline node::Environment* parent_env() const { return parent_env_; }
|
||||
inline node::Environment* child_env() const { return child_env_; }
|
||||
|
||||
protected:
|
||||
void InitAdaptor(Environment* env);
|
||||
|
||||
// Worker body
|
||||
void WorkerRun();
|
||||
|
||||
static void ThreadCb(Agent* agent);
|
||||
static void ParentSignalCb(uv_async_t* signal);
|
||||
static void ChildSignalCb(uv_async_t* signal);
|
||||
static void MessageHandler(const v8::Debug::Message& message);
|
||||
|
||||
// V8 API
|
||||
static Agent* Unwrap(const v8::FunctionCallbackInfo<v8::Value>& args);
|
||||
static void NotifyListen(const v8::FunctionCallbackInfo<v8::Value>& args);
|
||||
static void NotifyWait(const v8::FunctionCallbackInfo<v8::Value>& args);
|
||||
static void SendCommand(const v8::FunctionCallbackInfo<v8::Value>& args);
|
||||
|
||||
void EnqueueMessage(AgentMessage* message);
|
||||
|
||||
enum State {
|
||||
kNone,
|
||||
kRunning
|
||||
};
|
||||
|
||||
// TODO(indutny): Verify that there are no races
|
||||
State state_;
|
||||
|
||||
int port_;
|
||||
bool wait_;
|
||||
|
||||
uv_sem_t start_sem_;
|
||||
uv_mutex_t message_mutex_;
|
||||
uv_async_t child_signal_;
|
||||
|
||||
uv_thread_t thread_;
|
||||
node::Environment* parent_env_;
|
||||
node::Environment* child_env_;
|
||||
uv_loop_t child_loop_;
|
||||
v8::Persistent<v8::Object> api_;
|
||||
|
||||
// QUEUE
|
||||
void* messages_[2];
|
||||
|
||||
DispatchHandler dispatch_handler_;
|
||||
};
|
||||
|
||||
} // namespace debugger
|
||||
} // namespace node
|
||||
|
||||
#endif // DEPS_DEBUGGER_AGENT_INCLUDE_DEBUGGER_AGENT_H_
|
||||
191
deps/debugger-agent/lib/_debugger_agent.js
vendored
Normal file
191
deps/debugger-agent/lib/_debugger_agent.js
vendored
Normal file
@@ -0,0 +1,191 @@
|
||||
var assert = require('assert');
|
||||
var net = require('net');
|
||||
var util = require('util');
|
||||
var Buffer = require('buffer').Buffer;
|
||||
|
||||
var Transform = require('stream').Transform;
|
||||
|
||||
exports.start = function start() {
|
||||
var agent = new Agent();
|
||||
|
||||
// Do not let `agent.listen()` request listening from cluster master
|
||||
var cluster = require('cluster');
|
||||
cluster.isWorker = false;
|
||||
cluster.isMaster = true;
|
||||
|
||||
agent.on('error', function(err) {
|
||||
process._rawDebug(err.stack || err);
|
||||
});
|
||||
|
||||
agent.listen(process._debugAPI.port, function() {
|
||||
var addr = this.address();
|
||||
process._rawDebug('Debugger listening on port %d', addr.port);
|
||||
process._debugAPI.notifyListen();
|
||||
});
|
||||
|
||||
// Just to spin-off events
|
||||
// TODO(indutny): Figure out why node.cc isn't doing this
|
||||
setImmediate(function() {
|
||||
});
|
||||
|
||||
process._debugAPI.onclose = function() {
|
||||
// We don't care about it, but it prevents loop from cleaning up gently
|
||||
// NOTE: removeAllListeners won't work, as it doesn't call `removeListener`
|
||||
process.listeners('SIGWINCH').forEach(function(fn) {
|
||||
process.removeListener('SIGWINCH', fn);
|
||||
});
|
||||
|
||||
agent.close();
|
||||
};
|
||||
|
||||
// Not used now, but anyway
|
||||
return agent;
|
||||
};
|
||||
|
||||
function Agent() {
|
||||
net.Server.call(this, this.onConnection);
|
||||
|
||||
this.first = true;
|
||||
this.binding = process._debugAPI;
|
||||
|
||||
var self = this;
|
||||
this.binding.onmessage = function(msg) {
|
||||
self.clients.forEach(function(client) {
|
||||
client.send({}, msg);
|
||||
});
|
||||
};
|
||||
|
||||
this.clients = [];
|
||||
assert(this.binding, 'Debugger agent running without bindings!');
|
||||
}
|
||||
util.inherits(Agent, net.Server);
|
||||
|
||||
Agent.prototype.onConnection = function onConnection(socket) {
|
||||
var c = new Client(this, socket);
|
||||
|
||||
c.start();
|
||||
this.clients.push(c);
|
||||
|
||||
var self = this;
|
||||
c.once('close', function() {
|
||||
var index = self.clients.indexOf(c);
|
||||
assert(index !== -1);
|
||||
self.clients.splice(index, 1);
|
||||
});
|
||||
};
|
||||
|
||||
Agent.prototype.notifyWait = function notifyWait() {
|
||||
if (this.first)
|
||||
this.binding.notifyWait();
|
||||
this.first = false;
|
||||
};
|
||||
|
||||
function Client(agent, socket) {
|
||||
Transform.call(this);
|
||||
this._readableState.objectMode = true;
|
||||
|
||||
this.agent = agent;
|
||||
this.binding = this.agent.binding;
|
||||
this.socket = socket;
|
||||
|
||||
// Parse incoming data
|
||||
this.state = 'headers';
|
||||
this.headers = {};
|
||||
this.buffer = '';
|
||||
socket.pipe(this);
|
||||
|
||||
this.on('data', this.onCommand);
|
||||
|
||||
var self = this;
|
||||
this.socket.on('close', function() {
|
||||
self.destroy();
|
||||
});
|
||||
}
|
||||
util.inherits(Client, Transform);
|
||||
|
||||
Client.prototype.destroy = function destroy(msg) {
|
||||
this.socket.destroy();
|
||||
|
||||
this.emit('close');
|
||||
};
|
||||
|
||||
Client.prototype._transform = function _transform(data, enc, cb) {
|
||||
cb();
|
||||
|
||||
this.buffer += data;
|
||||
|
||||
while (true) {
|
||||
if (this.state === 'headers') {
|
||||
// Not enough data
|
||||
if (!/\r\n/.test(this.buffer))
|
||||
break;
|
||||
|
||||
if (/^\r\n/.test(this.buffer)) {
|
||||
this.buffer = this.buffer.slice(2);
|
||||
this.state = 'body';
|
||||
continue;
|
||||
}
|
||||
|
||||
// Match:
|
||||
// Header-name: header-value\r\n
|
||||
var match = this.buffer.match(/^([^:\s\r\n]+)\s*:\s*([^\s\r\n]+)\r\n/);
|
||||
if (!match)
|
||||
return this.destroy('Expected header, but failed to parse it');
|
||||
|
||||
this.headers[match[1].toLowerCase()] = match[2];
|
||||
|
||||
this.buffer = this.buffer.slice(match[0].length);
|
||||
} else {
|
||||
var len = this.headers['content-length'];
|
||||
if (len === undefined)
|
||||
return this.destroy('Expected content-length');
|
||||
|
||||
len = len | 0;
|
||||
if (Buffer.byteLength(this.buffer) < len)
|
||||
break;
|
||||
|
||||
this.push(new Command(this.headers, this.buffer.slice(0, len)));
|
||||
this.state = 'headers';
|
||||
this.buffer = this.buffer.slice(len);
|
||||
this.headers = {};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Client.prototype.send = function send(headers, data) {
|
||||
if (!data)
|
||||
data = '';
|
||||
|
||||
var out = [];
|
||||
Object.keys(headers).forEach(function(key) {
|
||||
out.push(key + ': ' + headers[key]);
|
||||
});
|
||||
out.push('Content-Length: ' + Buffer.byteLength(data), '');
|
||||
|
||||
this.socket.cork();
|
||||
this.socket.write(out.join('\r\n') + '\r\n');
|
||||
|
||||
if (data.length > 0)
|
||||
this.socket.write(data);
|
||||
this.socket.uncork();
|
||||
};
|
||||
|
||||
Client.prototype.start = function start() {
|
||||
this.send({
|
||||
Type: 'connect',
|
||||
'V8-Version': process.versions.v8,
|
||||
'Protocol-Version': 1,
|
||||
'Embedding-Host': 'node ' + process.version
|
||||
});
|
||||
};
|
||||
|
||||
Client.prototype.onCommand = function onCommand(cmd) {
|
||||
this.binding.sendCommand(cmd.body);
|
||||
|
||||
this.agent.notifyWait();
|
||||
};
|
||||
|
||||
function Command(headers, body) {
|
||||
this.headers = headers;
|
||||
this.body = body;
|
||||
}
|
||||
347
deps/debugger-agent/src/agent.cc
vendored
Normal file
347
deps/debugger-agent/src/agent.cc
vendored
Normal file
@@ -0,0 +1,347 @@
|
||||
// Copyright Fedor Indutny 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.
|
||||
|
||||
#include "agent.h"
|
||||
#include "debugger-agent.h"
|
||||
|
||||
#include "node.h"
|
||||
#include "node_internals.h" // ARRAY_SIZE
|
||||
#include "env.h"
|
||||
#include "env-inl.h"
|
||||
#include "v8.h"
|
||||
#include "v8-debug.h"
|
||||
#include "util.h"
|
||||
#include "util-inl.h"
|
||||
#include "queue.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
namespace node {
|
||||
namespace debugger {
|
||||
|
||||
using v8::Context;
|
||||
using v8::Function;
|
||||
using v8::FunctionCallbackInfo;
|
||||
using v8::FunctionTemplate;
|
||||
using v8::Handle;
|
||||
using v8::HandleScope;
|
||||
using v8::Integer;
|
||||
using v8::Isolate;
|
||||
using v8::Local;
|
||||
using v8::Locker;
|
||||
using v8::Object;
|
||||
using v8::String;
|
||||
using v8::Value;
|
||||
|
||||
|
||||
Agent::Agent(Environment* env) : state_(kNone),
|
||||
port_(5858),
|
||||
wait_(false),
|
||||
parent_env_(env),
|
||||
child_env_(NULL),
|
||||
dispatch_handler_(NULL) {
|
||||
int err;
|
||||
|
||||
err = uv_sem_init(&start_sem_, 0);
|
||||
CHECK_EQ(err, 0);
|
||||
|
||||
err = uv_mutex_init(&message_mutex_);
|
||||
CHECK_EQ(err, 0);
|
||||
|
||||
QUEUE_INIT(&messages_);
|
||||
}
|
||||
|
||||
|
||||
Agent::~Agent() {
|
||||
Stop();
|
||||
|
||||
uv_sem_destroy(&start_sem_);
|
||||
uv_mutex_destroy(&message_mutex_);
|
||||
|
||||
// Clean-up messages
|
||||
while (!QUEUE_EMPTY(&messages_)) {
|
||||
QUEUE* q = QUEUE_HEAD(&messages_);
|
||||
QUEUE_REMOVE(q);
|
||||
AgentMessage* msg = ContainerOf(&AgentMessage::member, q);
|
||||
delete msg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool Agent::Start(int port, bool wait) {
|
||||
int err;
|
||||
|
||||
if (state_ == kRunning)
|
||||
return false;
|
||||
|
||||
err = uv_loop_init(&child_loop_);
|
||||
if (err != 0)
|
||||
goto loop_init_failed;
|
||||
|
||||
// Interruption signal handler
|
||||
err = uv_async_init(&child_loop_, &child_signal_, ChildSignalCb);
|
||||
if (err != 0)
|
||||
goto async_init_failed;
|
||||
uv_unref(reinterpret_cast<uv_handle_t*>(&child_signal_));
|
||||
|
||||
port_ = port;
|
||||
wait_ = wait;
|
||||
|
||||
err = uv_thread_create(&thread_,
|
||||
reinterpret_cast<uv_thread_cb>(ThreadCb),
|
||||
this);
|
||||
if (err != 0)
|
||||
goto thread_create_failed;
|
||||
|
||||
uv_sem_wait(&start_sem_);
|
||||
|
||||
state_ = kRunning;
|
||||
|
||||
return true;
|
||||
|
||||
thread_create_failed:
|
||||
uv_close(reinterpret_cast<uv_handle_t*>(&child_signal_), NULL);
|
||||
|
||||
async_init_failed:
|
||||
err = uv_loop_close(&child_loop_);
|
||||
CHECK_EQ(err, 0);
|
||||
|
||||
loop_init_failed:
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void Agent::Enable() {
|
||||
v8::Debug::SetMessageHandler(MessageHandler);
|
||||
|
||||
// Assign environment to the debugger's context
|
||||
// NOTE: The debugger context is created after `SetMessageHandler()` call
|
||||
parent_env()->AssignToContext(v8::Debug::GetDebugContext());
|
||||
}
|
||||
|
||||
|
||||
void Agent::Stop() {
|
||||
int err;
|
||||
|
||||
if (state_ != kRunning) {
|
||||
return;
|
||||
}
|
||||
|
||||
v8::Debug::SetMessageHandler(NULL);
|
||||
|
||||
// Send empty message to terminate things
|
||||
EnqueueMessage(new AgentMessage(NULL, 0));
|
||||
|
||||
// Signal worker thread to make it stop
|
||||
err = uv_async_send(&child_signal_);
|
||||
CHECK_EQ(err, 0);
|
||||
|
||||
err = uv_thread_join(&thread_);
|
||||
CHECK_EQ(err, 0);
|
||||
|
||||
uv_close(reinterpret_cast<uv_handle_t*>(&child_signal_), NULL);
|
||||
uv_run(&child_loop_, UV_RUN_NOWAIT);
|
||||
|
||||
err = uv_loop_close(&child_loop_);
|
||||
CHECK_EQ(err, 0);
|
||||
|
||||
state_ = kNone;
|
||||
}
|
||||
|
||||
|
||||
void Agent::WorkerRun() {
|
||||
static const char* argv[] = { "node", "--debug-agent" };
|
||||
Isolate* isolate = Isolate::New();
|
||||
{
|
||||
Locker locker(isolate);
|
||||
Isolate::Scope isolate_scope(isolate);
|
||||
|
||||
HandleScope handle_scope(isolate);
|
||||
Local<Context> context = Context::New(isolate);
|
||||
|
||||
Context::Scope context_scope(context);
|
||||
Environment* env = CreateEnvironment(
|
||||
isolate,
|
||||
&child_loop_,
|
||||
context,
|
||||
ARRAY_SIZE(argv),
|
||||
argv,
|
||||
ARRAY_SIZE(argv),
|
||||
argv);
|
||||
|
||||
child_env_ = env;
|
||||
|
||||
// Expose API
|
||||
InitAdaptor(env);
|
||||
LoadEnvironment(env);
|
||||
|
||||
CHECK_EQ(&child_loop_, env->event_loop());
|
||||
uv_run(&child_loop_, UV_RUN_DEFAULT);
|
||||
|
||||
// Clean-up peristent
|
||||
api_.Reset();
|
||||
|
||||
// Clean-up all running handles
|
||||
env->CleanupHandles();
|
||||
|
||||
env->Dispose();
|
||||
env = NULL;
|
||||
}
|
||||
isolate->Dispose();
|
||||
}
|
||||
|
||||
|
||||
void Agent::InitAdaptor(Environment* env) {
|
||||
Isolate* isolate = env->isolate();
|
||||
HandleScope scope(isolate);
|
||||
|
||||
// Create API adaptor
|
||||
Local<FunctionTemplate> t = FunctionTemplate::New(isolate);
|
||||
t->InstanceTemplate()->SetInternalFieldCount(1);
|
||||
t->SetClassName(String::NewFromUtf8(isolate, "DebugAPI"));
|
||||
|
||||
NODE_SET_PROTOTYPE_METHOD(t, "notifyListen", NotifyListen);
|
||||
NODE_SET_PROTOTYPE_METHOD(t, "notifyWait", NotifyWait);
|
||||
NODE_SET_PROTOTYPE_METHOD(t, "sendCommand", SendCommand);
|
||||
|
||||
Local<Object> api = t->GetFunction()->NewInstance();
|
||||
api->SetAlignedPointerInInternalField(0, this);
|
||||
|
||||
api->Set(String::NewFromUtf8(isolate, "port"), Integer::New(isolate, port_));
|
||||
|
||||
env->process_object()->Set(String::NewFromUtf8(isolate, "_debugAPI"), api);
|
||||
api_.Reset(env->isolate(), api);
|
||||
}
|
||||
|
||||
|
||||
Agent* Agent::Unwrap(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
||||
void* ptr = args.Holder()->GetAlignedPointerFromInternalField(0);
|
||||
return reinterpret_cast<Agent*>(ptr);
|
||||
}
|
||||
|
||||
|
||||
void Agent::NotifyListen(const FunctionCallbackInfo<Value>& args) {
|
||||
Agent* a = Unwrap(args);
|
||||
|
||||
// Notify other thread that we are ready to process events
|
||||
uv_sem_post(&a->start_sem_);
|
||||
}
|
||||
|
||||
|
||||
void Agent::NotifyWait(const FunctionCallbackInfo<Value>& args) {
|
||||
Agent* a = Unwrap(args);
|
||||
|
||||
a->wait_ = false;
|
||||
|
||||
int err = uv_async_send(&a->child_signal_);
|
||||
CHECK_EQ(err, 0);
|
||||
}
|
||||
|
||||
|
||||
void Agent::SendCommand(const FunctionCallbackInfo<Value>& args) {
|
||||
Agent* a = Unwrap(args);
|
||||
Environment* env = a->child_env();
|
||||
HandleScope scope(env->isolate());
|
||||
|
||||
String::Value v(args[0]);
|
||||
|
||||
v8::Debug::SendCommand(a->parent_env()->isolate(), *v, v.length());
|
||||
if (a->dispatch_handler_ != NULL)
|
||||
a->dispatch_handler_(a->parent_env());
|
||||
}
|
||||
|
||||
|
||||
void Agent::ThreadCb(Agent* agent) {
|
||||
agent->WorkerRun();
|
||||
}
|
||||
|
||||
|
||||
void Agent::ChildSignalCb(uv_async_t* signal) {
|
||||
Agent* a = ContainerOf(&Agent::child_signal_, signal);
|
||||
Isolate* isolate = a->child_env()->isolate();
|
||||
|
||||
HandleScope scope(isolate);
|
||||
Local<Object> api = PersistentToLocal(isolate, a->api_);
|
||||
|
||||
uv_mutex_lock(&a->message_mutex_);
|
||||
while (!QUEUE_EMPTY(&a->messages_)) {
|
||||
QUEUE* q = QUEUE_HEAD(&a->messages_);
|
||||
AgentMessage* msg = ContainerOf(&AgentMessage::member, q);
|
||||
|
||||
// Time to close everything
|
||||
if (msg->data() == NULL) {
|
||||
QUEUE_REMOVE(q);
|
||||
delete msg;
|
||||
|
||||
MakeCallback(isolate, api, "onclose", 0, NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
// Waiting for client, do not send anything just yet
|
||||
// TODO(indutny): move this to js-land
|
||||
if (a->wait_)
|
||||
break;
|
||||
|
||||
QUEUE_REMOVE(q);
|
||||
Local<Value> argv[] = {
|
||||
String::NewFromTwoByte(isolate,
|
||||
msg->data(),
|
||||
String::kNormalString,
|
||||
msg->length())
|
||||
};
|
||||
|
||||
// Emit message
|
||||
MakeCallback(isolate,
|
||||
api,
|
||||
"onmessage",
|
||||
ARRAY_SIZE(argv),
|
||||
argv);
|
||||
delete msg;
|
||||
}
|
||||
uv_mutex_unlock(&a->message_mutex_);
|
||||
}
|
||||
|
||||
|
||||
void Agent::EnqueueMessage(AgentMessage* message) {
|
||||
uv_mutex_lock(&message_mutex_);
|
||||
QUEUE_INSERT_TAIL(&messages_, &message->member);
|
||||
uv_mutex_unlock(&message_mutex_);
|
||||
uv_async_send(&child_signal_);
|
||||
}
|
||||
|
||||
|
||||
void Agent::MessageHandler(const v8::Debug::Message& message) {
|
||||
Isolate* isolate = message.GetIsolate();
|
||||
Environment* env = Environment::GetCurrent(isolate);
|
||||
Agent* a = env->debugger_agent();
|
||||
CHECK_NE(a, NULL);
|
||||
CHECK_EQ(isolate, a->parent_env()->isolate());
|
||||
|
||||
HandleScope scope(isolate);
|
||||
Local<String> json = message.GetJSON();
|
||||
String::Value v(json);
|
||||
|
||||
AgentMessage* msg = new AgentMessage(*v, v.length());
|
||||
a->EnqueueMessage(msg);
|
||||
}
|
||||
|
||||
} // namespace debugger
|
||||
} // namespace node
|
||||
64
deps/debugger-agent/src/agent.h
vendored
Normal file
64
deps/debugger-agent/src/agent.h
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
// Copyright Fedor Indutny 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.
|
||||
|
||||
#ifndef DEPS_DEBUGGER_AGENT_SRC_AGENT_H_
|
||||
#define DEPS_DEBUGGER_AGENT_SRC_AGENT_H_
|
||||
|
||||
#include "v8.h"
|
||||
#include "v8-debug.h"
|
||||
#include "queue.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
namespace node {
|
||||
namespace debugger {
|
||||
|
||||
class AgentMessage {
|
||||
public:
|
||||
AgentMessage(uint16_t* val, int length) : length_(length) {
|
||||
if (val == NULL) {
|
||||
data_ = val;
|
||||
} else {
|
||||
data_ = new uint16_t[length];
|
||||
memcpy(data_, val, length * sizeof(*data_));
|
||||
}
|
||||
}
|
||||
|
||||
~AgentMessage() {
|
||||
delete[] data_;
|
||||
data_ = NULL;
|
||||
}
|
||||
|
||||
inline const uint16_t* data() const { return data_; }
|
||||
inline int length() const { return length_; }
|
||||
|
||||
QUEUE member;
|
||||
|
||||
private:
|
||||
uint16_t* data_;
|
||||
int length_;
|
||||
};
|
||||
|
||||
} // namespace debugger
|
||||
} // namespace node
|
||||
|
||||
#endif // DEPS_DEBUGGER_AGENT_SRC_AGENT_H_
|
||||
13
deps/http_parser/.gitignore
vendored
13
deps/http_parser/.gitignore
vendored
@@ -12,3 +12,16 @@ parsertrace_g
|
||||
*.Makefile
|
||||
*.so.*
|
||||
*.a
|
||||
|
||||
|
||||
# Visual Studio uglies
|
||||
*.suo
|
||||
*.sln
|
||||
*.vcxproj
|
||||
*.vcxproj.filters
|
||||
*.vcxproj.user
|
||||
*.opensdf
|
||||
*.ncrunchsolution*
|
||||
*.sdf
|
||||
*.vsp
|
||||
*.psess
|
||||
|
||||
3
deps/http_parser/AUTHORS
vendored
3
deps/http_parser/AUTHORS
vendored
@@ -45,3 +45,6 @@ Chris Dickinson <christopher.s.dickinson@gmail.com>
|
||||
Uli Köhler <ukoehler@btronik.de>
|
||||
Charlie Somerville <charlie@charliesomerville.com>
|
||||
Fedor Indutny <fedor.indutny@gmail.com>
|
||||
runner <runner.mei@gmail.com>
|
||||
Alexis Campailla <alexis@janeasystems.com>
|
||||
David Wragg <david@wragg.org>
|
||||
|
||||
2
deps/http_parser/Makefile
vendored
2
deps/http_parser/Makefile
vendored
@@ -19,7 +19,7 @@
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
PLATFORM ?= $(shell sh -c 'uname -s | tr "[A-Z]" "[a-z]"')
|
||||
SONAME ?= libhttp_parser.so.2.2
|
||||
SONAME ?= libhttp_parser.so.2.3
|
||||
|
||||
CC?=gcc
|
||||
AR?=ar
|
||||
|
||||
69
deps/http_parser/http_parser.c
vendored
69
deps/http_parser/http_parser.c
vendored
@@ -280,6 +280,9 @@ enum state
|
||||
|
||||
, s_header_field_start
|
||||
, s_header_field
|
||||
, s_header_value_discard_ws
|
||||
, s_header_value_discard_ws_almost_done
|
||||
, s_header_value_discard_lws
|
||||
, s_header_value_start
|
||||
, s_header_value
|
||||
, s_header_value_lws
|
||||
@@ -1380,7 +1383,7 @@ size_t http_parser_execute (http_parser *parser,
|
||||
}
|
||||
|
||||
if (ch == ':') {
|
||||
parser->state = s_header_value_start;
|
||||
parser->state = s_header_value_discard_ws;
|
||||
CALLBACK_DATA(header_field);
|
||||
break;
|
||||
}
|
||||
@@ -1401,28 +1404,28 @@ size_t http_parser_execute (http_parser *parser,
|
||||
goto error;
|
||||
}
|
||||
|
||||
case s_header_value_start:
|
||||
{
|
||||
case s_header_value_discard_ws:
|
||||
if (ch == ' ' || ch == '\t') break;
|
||||
|
||||
MARK(header_value);
|
||||
|
||||
parser->state = s_header_value;
|
||||
parser->index = 0;
|
||||
|
||||
if (ch == CR) {
|
||||
parser->header_state = h_general;
|
||||
parser->state = s_header_almost_done;
|
||||
CALLBACK_DATA(header_value);
|
||||
parser->state = s_header_value_discard_ws_almost_done;
|
||||
break;
|
||||
}
|
||||
|
||||
if (ch == LF) {
|
||||
parser->state = s_header_field_start;
|
||||
CALLBACK_DATA(header_value);
|
||||
parser->state = s_header_value_discard_lws;
|
||||
break;
|
||||
}
|
||||
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case s_header_value_start:
|
||||
{
|
||||
MARK(header_value);
|
||||
|
||||
parser->state = s_header_value;
|
||||
parser->index = 0;
|
||||
|
||||
c = LOWER(ch);
|
||||
|
||||
switch (parser->header_state) {
|
||||
@@ -1509,8 +1512,8 @@ size_t http_parser_execute (http_parser *parser,
|
||||
t *= 10;
|
||||
t += ch - '0';
|
||||
|
||||
/* Overflow? */
|
||||
if (t < parser->content_length || t == ULLONG_MAX) {
|
||||
/* Overflow? Test against a conservative limit for simplicity. */
|
||||
if ((ULLONG_MAX - 10) / 10 < parser->content_length) {
|
||||
SET_ERRNO(HPE_INVALID_CONTENT_LENGTH);
|
||||
goto error;
|
||||
}
|
||||
@@ -1570,7 +1573,17 @@ size_t http_parser_execute (http_parser *parser,
|
||||
STRICT_CHECK(ch != LF);
|
||||
|
||||
parser->state = s_header_value_lws;
|
||||
break;
|
||||
}
|
||||
|
||||
case s_header_value_lws:
|
||||
{
|
||||
if (ch == ' ' || ch == '\t') {
|
||||
parser->state = s_header_value_start;
|
||||
goto reexecute_byte;
|
||||
}
|
||||
|
||||
/* finished the header */
|
||||
switch (parser->header_state) {
|
||||
case h_connection_keep_alive:
|
||||
parser->flags |= F_CONNECTION_KEEP_ALIVE;
|
||||
@@ -1585,19 +1598,29 @@ size_t http_parser_execute (http_parser *parser,
|
||||
break;
|
||||
}
|
||||
|
||||
parser->state = s_header_field_start;
|
||||
goto reexecute_byte;
|
||||
}
|
||||
|
||||
case s_header_value_discard_ws_almost_done:
|
||||
{
|
||||
STRICT_CHECK(ch != LF);
|
||||
parser->state = s_header_value_discard_lws;
|
||||
break;
|
||||
}
|
||||
|
||||
case s_header_value_lws:
|
||||
case s_header_value_discard_lws:
|
||||
{
|
||||
if (ch == ' ' || ch == '\t')
|
||||
parser->state = s_header_value_start;
|
||||
else
|
||||
{
|
||||
if (ch == ' ' || ch == '\t') {
|
||||
parser->state = s_header_value_discard_ws;
|
||||
break;
|
||||
} else {
|
||||
/* header value was empty */
|
||||
MARK(header_value);
|
||||
parser->state = s_header_field_start;
|
||||
CALLBACK_DATA_NOADVANCE(header_value);
|
||||
goto reexecute_byte;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case s_headers_almost_done:
|
||||
@@ -1782,8 +1805,8 @@ size_t http_parser_execute (http_parser *parser,
|
||||
t *= 16;
|
||||
t += unhex_val;
|
||||
|
||||
/* Overflow? */
|
||||
if (t < parser->content_length || t == ULLONG_MAX) {
|
||||
/* Overflow? Test against a conservative limit for simplicity. */
|
||||
if ((ULLONG_MAX - 16) / 16 < parser->content_length) {
|
||||
SET_ERRNO(HPE_INVALID_CONTENT_LENGTH);
|
||||
goto error;
|
||||
}
|
||||
|
||||
2
deps/http_parser/http_parser.h
vendored
2
deps/http_parser/http_parser.h
vendored
@@ -26,7 +26,7 @@ extern "C" {
|
||||
|
||||
/* Also update SONAME in the Makefile whenever you change these. */
|
||||
#define HTTP_PARSER_VERSION_MAJOR 2
|
||||
#define HTTP_PARSER_VERSION_MINOR 2
|
||||
#define HTTP_PARSER_VERSION_MINOR 3
|
||||
#define HTTP_PARSER_VERSION_PATCH 0
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
56
deps/http_parser/test.c
vendored
56
deps/http_parser/test.c
vendored
@@ -608,8 +608,14 @@ const struct message requests[] =
|
||||
" mno \r\n"
|
||||
"\t \tqrs\r\n"
|
||||
"Line2: \t line2\t\r\n"
|
||||
"Line3:\r\n"
|
||||
" line3\r\n"
|
||||
"Line4: \r\n"
|
||||
" \r\n"
|
||||
"Connection:\r\n"
|
||||
" close\r\n"
|
||||
"\r\n"
|
||||
,.should_keep_alive= TRUE
|
||||
,.should_keep_alive= FALSE
|
||||
,.message_complete_on_eof= FALSE
|
||||
,.http_major= 1
|
||||
,.http_minor= 1
|
||||
@@ -618,9 +624,12 @@ const struct message requests[] =
|
||||
,.fragment= ""
|
||||
,.request_path= "/"
|
||||
,.request_url= "/"
|
||||
,.num_headers= 2
|
||||
,.headers= { { "Line1", "abcdefghijklmno qrs" }
|
||||
,.num_headers= 5
|
||||
,.headers= { { "Line1", "abc\tdef ghi\t\tjkl mno \t \tqrs" }
|
||||
, { "Line2", "line2\t" }
|
||||
, { "Line3", "line3" }
|
||||
, { "Line4", "" }
|
||||
, { "Connection", "close" },
|
||||
}
|
||||
,.body= ""
|
||||
}
|
||||
@@ -904,6 +913,43 @@ const struct message requests[] =
|
||||
,.body= ""
|
||||
}
|
||||
|
||||
#define LINE_FOLDING_IN_HEADER_WITH_LF 34
|
||||
, {.name= "line folding in header value"
|
||||
,.type= HTTP_REQUEST
|
||||
,.raw= "GET / HTTP/1.1\n"
|
||||
"Line1: abc\n"
|
||||
"\tdef\n"
|
||||
" ghi\n"
|
||||
"\t\tjkl\n"
|
||||
" mno \n"
|
||||
"\t \tqrs\n"
|
||||
"Line2: \t line2\t\n"
|
||||
"Line3:\n"
|
||||
" line3\n"
|
||||
"Line4: \n"
|
||||
" \n"
|
||||
"Connection:\n"
|
||||
" close\n"
|
||||
"\n"
|
||||
,.should_keep_alive= FALSE
|
||||
,.message_complete_on_eof= FALSE
|
||||
,.http_major= 1
|
||||
,.http_minor= 1
|
||||
,.method= HTTP_GET
|
||||
,.query_string= ""
|
||||
,.fragment= ""
|
||||
,.request_path= "/"
|
||||
,.request_url= "/"
|
||||
,.num_headers= 5
|
||||
,.headers= { { "Line1", "abc\tdef ghi\t\tjkl mno \t \tqrs" }
|
||||
, { "Line2", "line2\t" }
|
||||
, { "Line3", "line3" }
|
||||
, { "Line4", "" }
|
||||
, { "Connection", "close" },
|
||||
}
|
||||
,.body= ""
|
||||
}
|
||||
|
||||
|
||||
, {.name= NULL } /* sentinel */
|
||||
};
|
||||
@@ -2938,7 +2984,7 @@ test_header_content_length_overflow_error (void)
|
||||
"HTTP/1.1 200 OK\r\n" \
|
||||
"Content-Length: " #size "\r\n" \
|
||||
"\r\n"
|
||||
const char a[] = X(18446744073709551614); /* 2^64-2 */
|
||||
const char a[] = X(1844674407370955160); /* 2^64 / 10 - 1 */
|
||||
const char b[] = X(18446744073709551615); /* 2^64-1 */
|
||||
const char c[] = X(18446744073709551616); /* 2^64 */
|
||||
#undef X
|
||||
@@ -2956,7 +3002,7 @@ test_chunk_content_length_overflow_error (void)
|
||||
"\r\n" \
|
||||
#size "\r\n" \
|
||||
"..."
|
||||
const char a[] = X(FFFFFFFFFFFFFFFE); /* 2^64-2 */
|
||||
const char a[] = X(FFFFFFFFFFFFFFE); /* 2^64 / 16 - 1 */
|
||||
const char b[] = X(FFFFFFFFFFFFFFFF); /* 2^64-1 */
|
||||
const char c[] = X(10000000000000000); /* 2^64 */
|
||||
#undef X
|
||||
|
||||
595
deps/mdb_v8/mdb_v8.c
vendored
595
deps/mdb_v8/mdb_v8.c
vendored
File diff suppressed because it is too large
Load Diff
1
deps/npm/.npmignore
vendored
1
deps/npm/.npmignore
vendored
@@ -7,6 +7,7 @@ npm-debug.log
|
||||
/test/packages/npm-test-depends-on-spark/which-spark.log
|
||||
/test/packages/test-package/random-data.txt
|
||||
/test/root
|
||||
node_modules/marked
|
||||
node_modules/ronn
|
||||
node_modules/tap
|
||||
node_modules/.bin
|
||||
|
||||
2
deps/npm/.npmrc
vendored
Normal file
2
deps/npm/.npmrc
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
save-prefix = ~
|
||||
proprietary-attribs = false
|
||||
7
deps/npm/.tern-project
vendored
7
deps/npm/.tern-project
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"libs": [
|
||||
],
|
||||
"plugins": {
|
||||
"node": {}
|
||||
}
|
||||
}
|
||||
11
deps/npm/.travis.yml
vendored
Normal file
11
deps/npm/.travis.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.11"
|
||||
- "0.10"
|
||||
env:
|
||||
- DEPLOY_VERSION=testing
|
||||
before_install:
|
||||
- "npm config set spin false"
|
||||
- "npm install -g npm@^2"
|
||||
- "sudo mkdir -p /var/run/couchdb"
|
||||
script: "npm run-script tap"
|
||||
41
deps/npm/AUTHORS
vendored
41
deps/npm/AUTHORS
vendored
@@ -115,3 +115,44 @@ Vaz Allen <vaz@tryptid.com>
|
||||
elisee <elisee@sparklin.org>
|
||||
Evan You <yyx990803@gmail.com>
|
||||
Wil Moore III <wil.moore@wilmoore.com>
|
||||
Dylan Greene <dylang@gmail.com>
|
||||
zeke <zeke@sikelianos.com>
|
||||
Andrew Horton <andrew.j.horton@gmail.com>
|
||||
Denis Gladkikh <outcoldman@gmail.com>
|
||||
Daniel Santiago <daniel.santiago@highlevelwebs.com>
|
||||
Alex Kocharin <alex@kocharin.ru>
|
||||
Evan Lucas <evanlucas@me.com>
|
||||
Steve Mason <stevem@brandwatch.com>
|
||||
Quinn Slack <qslack@qslack.com>
|
||||
Sébastien Santoro <dereckson@espace-win.org>
|
||||
CamilleM <camille.moulin@alterway.fr>
|
||||
Tom Huang <hzlhu.dargon@gmail.com>
|
||||
Sergey Belov <peimei@ya.ru>
|
||||
Younghoon Park <sola92@gmail.com>
|
||||
Yazhong Liu <yorkiefixer@gmail.com>
|
||||
Mikola Lysenko <mikolalysenko@gmail.com>
|
||||
Rafael de Oleza <rafa@spotify.com>
|
||||
Yeonghoon Park <sola92@gmail.com>
|
||||
Franck Cuny <franck.cuny@gmail.com>
|
||||
Alan Shaw <alan@freestyle-developments.co.uk>
|
||||
Alex Rodionov <p0deje@gmail.com>
|
||||
Alexej Yaroshevich <alex@qfox.ru>
|
||||
Elan Shanker <elan.shanker@gmail.com>
|
||||
François Frisch <francoisfrisch@gmail.com>
|
||||
Gabriel Falkenberg <gabriel.falkenberg@gmail.com>
|
||||
Jason Diamond <jason@diamond.name>
|
||||
Jess Martin <jessmartin@gmail.com>
|
||||
Jon Spencer <jon@jonspencer.ca>
|
||||
Matt Colyer <matt@colyer.name>
|
||||
Matt McClure <matt.mcclure@mapmyfitness.com>
|
||||
Maximilian Antoni <maximilian.antoni@juliusbaer.com>
|
||||
Nicholas Kinsey <pyro@feisty.io>
|
||||
Paulo Cesar <pauloc062@gmail.com>
|
||||
Quim Calpe <quim@kalpe.com>
|
||||
Robert Gieseke <robert.gieseke@gmail.com>
|
||||
Spain Train <michael.spainhower@opower.com>
|
||||
TJ Holowaychuk <tj@vision-media.ca>
|
||||
Thom Blake <tblake@brightroll.com>
|
||||
Trevor Burnham <tburnham@hubspot.com>
|
||||
bitspill <bitspill+github@bitspill.net>
|
||||
Neil Gentleman <ngentleman@gmail.com>
|
||||
|
||||
981
deps/npm/CHANGELOG.md
vendored
Normal file
981
deps/npm/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,981 @@
|
||||
### v2.0.0 (2014-09-12):
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
* [`4378a17`](https://github.com/npm/npm/commit/4378a17db340404a725ffe2eb75c9936f1612670)
|
||||
`semver@4.0.0`: prerelease versions no longer show up in ranges; `^0.x.y`
|
||||
behaves the way it did in `semver@2` rather than `semver@3`; docs have been
|
||||
reorganized for comprehensibility ([@isaacs](https://github.com/isaacs))
|
||||
* [`c6ddb64`](https://github.com/npm/npm/commit/c6ddb6462fe32bf3a27b2c4a62a032a92e982429)
|
||||
npm now assumes that node is newer than 0.6
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
Other changes:
|
||||
|
||||
* [`ea515c3`](https://github.com/npm/npm/commit/ea515c3b858bf493a7b87fa4cdc2110a0d9cef7f)
|
||||
[#6043](https://github.com/npm/npm/issues/6043) `slide@1.1.6`: wait until all
|
||||
callbacks have finished before proceeding
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`0b0a59d`](https://github.com/npm/npm/commit/0b0a59d504f20f424294b1590ace73a7464f0378)
|
||||
[#6043](https://github.com/npm/npm/issues/6043) defer rollbacks until just
|
||||
before the CLI exits ([@isaacs](https://github.com/isaacs))
|
||||
* [`a11c88b`](https://github.com/npm/npm/commit/a11c88bdb1488b87d8dcac69df9a55a7a91184b6)
|
||||
[#6175](https://github.com/npm/npm/issues/6175) pack scoped packages
|
||||
correctly ([@othiym23](https://github.com/othiym23))
|
||||
* [`e4e48e0`](https://github.com/npm/npm/commit/e4e48e037d4e95fdb6acec80b04c5c6eaee59970)
|
||||
[#6121](https://github.com/npm/npm/issues/6121) `read-installed@3.1.2`: don't
|
||||
mark linked dev dependencies as extraneous
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`d673e41`](https://github.com/npm/npm/commit/d673e4185d43362c2b2a91acbca8c057e7303c7b)
|
||||
`cmd-shim@2.0.1`: depend on `graceful-fs` directly
|
||||
([@ForbesLindesay](https://github.com/ForbesLindesay))
|
||||
* [`9d54d45`](https://github.com/npm/npm/commit/9d54d45e602d595bdab7eae09b9fa1dc46370147)
|
||||
`npm-registry-couchapp@2.5.3`: make tests more reliable on Travis
|
||||
([@iarna](https://github.com/iarna))
|
||||
* [`673d738`](https://github.com/npm/npm/commit/673d738c6142c3d043dcee0b7aa02c9831a2e0ca)
|
||||
ensure permissions are set correctly in cache when running as root
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`6e6a5fb`](https://github.com/npm/npm/commit/6e6a5fb74af10fd345411df4e121e554e2e3f33e)
|
||||
prepare for upgrade to `node-semver@4.0.0`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`ab8dd87`](https://github.com/npm/npm/commit/ab8dd87b943262f5996744e8d4cc30cc9358b7d7)
|
||||
swap out `ronn` for `marked-man@0.1.3` ([@isaacs](https://github.com/isaacs))
|
||||
* [`803da54`](https://github.com/npm/npm/commit/803da5404d5a0b7c9defa3fe7fa0f2d16a2b19d3)
|
||||
`npm-registry-client@3.2.0`: prepare for `node-semver@4.0.0` and include more
|
||||
error information ([@isaacs](https://github.com/isaacs))
|
||||
* [`4af0e71`](https://github.com/npm/npm/commit/4af0e7134f5757c3d456d83e8349224a4ba12660)
|
||||
make default error display less scary ([@isaacs](https://github.com/isaacs))
|
||||
* [`4fd9e79`](https://github.com/npm/npm/commit/4fd9e7901a15abff7a3dd478d99ce239b9580bca)
|
||||
`npm-registry-client@3.2.1`: handle errors returned by the registry much,
|
||||
much better ([@othiym23](https://github.com/othiym23))
|
||||
* [`ca791e2`](https://github.com/npm/npm/commit/ca791e27e97e51c1dd491bff6622ac90b54c3e23)
|
||||
restore a long (always?) missing pass for deduping
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`ca0ef0e`](https://github.com/npm/npm/commit/ca0ef0e99bbdeccf28d550d0296baa4cb5e7ece2)
|
||||
correctly interpret relative paths for local dependencies
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`5eb8db2`](https://github.com/npm/npm/commit/5eb8db2c370eeb4cd34f6e8dc6a935e4ea325621)
|
||||
`npm-package-arg@2.1.2`: support git+file:// URLs for local bare repos
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`860a185`](https://github.com/npm/npm/commit/860a185c43646aca84cb93d1c05e2266045c316b)
|
||||
tweak docs to no longer advocate checking in `node_modules`
|
||||
([@hunterloftis](https://github.com/hunterloftis))
|
||||
* [`80e9033`](https://github.com/npm/npm/commit/80e9033c40e373775e35c674faa6c1948661782b)
|
||||
add links to nodejs.org downloads to docs
|
||||
([@meetar](https://github.com/meetar))
|
||||
|
||||
### v1.4.28 (2014-09-12):
|
||||
|
||||
* [`f4540b6`](https://github.com/npm/npm/commit/f4540b6537a87e653d7495a9ddcf72949fdd4d14)
|
||||
[#6043](https://github.com/npm/npm/issues/6043) defer rollbacks until just
|
||||
before the CLI exits ([@isaacs](https://github.com/isaacs))
|
||||
* [`1eabfd5`](https://github.com/npm/npm/commit/1eabfd5c03f33c2bd28823714ff02059eeee3899)
|
||||
[#6043](https://github.com/npm/npm/issues/6043) `slide@1.1.6`: wait until all
|
||||
callbacks have finished before proceeding
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v2.0.0-beta.3 (2014-09-04):
|
||||
|
||||
* [`fa79413`](https://github.com/npm/npm/commit/fa794138bec8edb7b88639db25ee9c010d2f4c2b)
|
||||
[#6119](https://github.com/npm/npm/issues/6119) fall back to registry installs
|
||||
if package.json is missing in a local directory ([@iarna](https://github.com/iarna))
|
||||
* [`16073e2`](https://github.com/npm/npm/commit/16073e2d8ae035961c4c189b602d4aacc6d6b387)
|
||||
`npm-package-arg@2.1.0`: support file URIs as local specs
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`9164acb`](https://github.com/npm/npm/commit/9164acbdee28956fa816ce5e473c559395ae4ec2)
|
||||
`github-url-from-username-repo@1.0.2`: don't match strings that are already
|
||||
URIs ([@othiym23](https://github.com/othiym23))
|
||||
* [`4067d6b`](https://github.com/npm/npm/commit/4067d6bf303a69be13f3af4b19cf4fee1b0d3e12)
|
||||
[#5629](https://github.com/npm/npm/issues/5629) support saving of local packages
|
||||
in `package.json` ([@dylang](https://github.com/dylang))
|
||||
* [`1b2ffdf`](https://github.com/npm/npm/commit/1b2ffdf359a8c897a78f91fc5a5d535c97aaec97)
|
||||
[#6097](https://github.com/npm/npm/issues/6097) document scoped packages
|
||||
([@seldo](https://github.com/seldo))
|
||||
* [`0a67d53`](https://github.com/npm/npm/commit/0a67d536067c4808a594d81288d34c0f7e97e105)
|
||||
[#6007](https://github.com/npm/npm/issues/6007) `request@2.42.0`: properly
|
||||
set headers on proxy requests ([@isaacs](https://github.com/isaacs))
|
||||
* [`9bac6b8`](https://github.com/npm/npm/commit/9bac6b860b674d24251bb7b8ba412fdb26cbc836)
|
||||
`npmconf@2.0.8`: disallow semver ranges in tag configuration
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`d2d4d7c`](https://github.com/npm/npm/commit/d2d4d7cd3c32f91a87ffa11fe464d524029011c3)
|
||||
[#6082](https://github.com/npm/npm/issues/6082) don't allow tagging with a
|
||||
semver range as the tag name ([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.27 (2014-09-04):
|
||||
|
||||
* [`4cf3c8f`](https://github.com/npm/npm/commit/4cf3c8fd78c9e2693a5f899f50c28f4823c88e2e)
|
||||
[#6007](https://github.com/npm/npm/issues/6007) request@2.42.0: properly set
|
||||
headers on proxy requests ([@isaacs](https://github.com/isaacs))
|
||||
* [`403cb52`](https://github.com/npm/npm/commit/403cb526be1472bb7545fa8e62d4976382cdbbe5)
|
||||
[#6055](https://github.com/npm/npm/issues/6055) npmconf@1.1.8: restore
|
||||
case-insensitivity of environmental config
|
||||
([@iarna](https://github.com/iarna))
|
||||
|
||||
### v2.0.0-beta.2 (2014-08-29):
|
||||
|
||||
SPECIAL LABOR DAY WEEKEND RELEASE PARTY WOOO
|
||||
|
||||
* [`ed207e8`](https://github.com/npm/npm/commit/ed207e88019de3150037048df6267024566e1093)
|
||||
`npm-registry-client@3.1.7`: Clean up auth logic and improve logging around
|
||||
auth decisions. Also error on trying to change a user document without
|
||||
writing to it. ([@othiym23](https://github.com/othiym23))
|
||||
* [`66c7423`](https://github.com/npm/npm/commit/66c7423b7fb07a326b83c83727879410d43c439f)
|
||||
`npmconf@2.0.7`: support -C as an alias for --prefix
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`0dc6a07`](https://github.com/npm/npm/commit/0dc6a07c778071c94c2251429c7d107e88a45095)
|
||||
[#6059](https://github.com/npm/npm/issues/6059) run commands in prefix, not
|
||||
cwd ([@isaacs](https://github.com/isaacs))
|
||||
* [`65d2179`](https://github.com/npm/npm/commit/65d2179af96737eb9038eaa24a293a62184aaa13)
|
||||
`github-url-from-username-repo@1.0.1`: part 3 handle slashes in branch names
|
||||
([@robertkowalski](https://github.com/robertkowalski))
|
||||
* [`e8d75d0`](https://github.com/npm/npm/commit/e8d75d0d9f148ce2b3e8f7671fa281945bac363d)
|
||||
[#6057](https://github.com/npm/npm/issues/6057) `read-installed@3.1.1`:
|
||||
properly handle extraneous dev dependencies of required dependencies
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`0602f70`](https://github.com/npm/npm/commit/0602f708f070d524ad41573afd4c57171cab21ad)
|
||||
[#6064](https://github.com/npm/npm/issues/6064) ls: do not show deps of
|
||||
extraneous deps ([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v2.0.0-beta.1 (2014-08-28):
|
||||
|
||||
* [`78a1fc1`](https://github.com/npm/npm/commit/78a1fc12307a0cbdbc944775ed831b876ee65855)
|
||||
`github-url-from-git@1.4.0`: add support for git+https and git+ssh
|
||||
([@stefanbuck](https://github.com/stefanbuck))
|
||||
* [`bf247ed`](https://github.com/npm/npm/commit/bf247edf5429c6b3ec4d4cb798fa0eb0a9c19fc1)
|
||||
`columnify@1.2.1` ([@othiym23](https://github.com/othiym23))
|
||||
* [`4bbe682`](https://github.com/npm/npm/commit/4bbe682a6d4eabcd23f892932308c9f228bf4de3)
|
||||
`cmd-shim@2.0.0`: upgrade to graceful-fs 3
|
||||
([@ForbesLindesay](https://github.com/ForbesLindesay))
|
||||
* [`ae1d590`](https://github.com/npm/npm/commit/ae1d590bdfc2476a4ed446e760fea88686e3ae05)
|
||||
`npm-package-arg@2.0.4`: accept slashes in branch names
|
||||
([@thealphanerd](https://github.com/thealphanerd))
|
||||
* [`b2f51ae`](https://github.com/npm/npm/commit/b2f51aecadf585711e145b6516f99e7c05f53614)
|
||||
`semver@3.0.1`: semver.clean() is cleaner
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`1d041a8`](https://github.com/npm/npm/commit/1d041a8a5ebd5bf6cecafab2072d4ec07823adab)
|
||||
`github-url-from-username-repo@1.0.0`: accept slashes in branch names
|
||||
([@robertkowalski](https://github.com/robertkowalski))
|
||||
* [`02c85d5`](https://github.com/npm/npm/commit/02c85d592c4058e5d9eafb0be36b6743ae631998)
|
||||
`async-some@1.0.1` ([@othiym23](https://github.com/othiym23))
|
||||
* [`5af493e`](https://github.com/npm/npm/commit/5af493efa8a463cd1acc4a9a394699e2c0793b9c)
|
||||
ensure lifecycle spawn errors caught properly
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`60fe012`](https://github.com/npm/npm/commit/60fe012fac9570d6c72554cdf34a6fa95bf0f0a6)
|
||||
`npmconf@2.0.6`: init.version defaults to 1.0.0
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`b4c717b`](https://github.com/npm/npm/commit/b4c717bbf58fb6a0d64ad229036c79a184297ee2)
|
||||
`npm-registry-client@3.1.4`: properly encode % in passwords
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`7b55f44`](https://github.com/npm/npm/commit/7b55f44420252baeb3f30da437d22956315c31c9)
|
||||
doc: Fix 'npm help index' ([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.26 (2014-08-28):
|
||||
|
||||
* [`eceea95`](https://github.com/npm/npm/commit/eceea95c804fa15b18e91c52c0beb08d42a3e77d)
|
||||
`github-url-from-git@1.4.0`: add support for git+https and git+ssh
|
||||
([@stefanbuck](https://github.com/stefanbuck))
|
||||
* [`e561758`](https://github.com/npm/npm/commit/e5617587e7d7ab686192391ce55357dbc7fed0a3)
|
||||
`columnify@1.2.1` ([@othiym23](https://github.com/othiym23))
|
||||
* [`0c4fab3`](https://github.com/npm/npm/commit/0c4fab372ee76eab01dda83b6749429a8564902e)
|
||||
`cmd-shim@2.0.0`: upgrade to graceful-fs 3
|
||||
([@ForbesLindesay](https://github.com/ForbesLindesay))
|
||||
* [`2d69e4d`](https://github.com/npm/npm/commit/2d69e4d95777671958b5e08d3b2f5844109d73e4)
|
||||
`github-url-from-username-repo@1.0.0`: accept slashes in branch names
|
||||
([@robertkowalski](https://github.com/robertkowalski))
|
||||
* [`81f9b2b`](https://github.com/npm/npm/commit/81f9b2bac9d34c223ea093281ba3c495f23f10d1)
|
||||
ensure lifecycle spawn errors caught properly
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`bfaab8c`](https://github.com/npm/npm/commit/bfaab8c6e0942382a96b250634ded22454c36b5a)
|
||||
`npm-registry-client@2.0.7`: properly encode % in passwords
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`91cfb58`](https://github.com/npm/npm/commit/91cfb58dda851377ec604782263519f01fd96ad8)
|
||||
doc: Fix 'npm help index' ([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v2.0.0-beta.0 (2014-08-21):
|
||||
|
||||
* [`685f8be`](https://github.com/npm/npm/commit/685f8be1f2770cc75fd0e519a8d7aac72735a270)
|
||||
`npm-registry-client@3.1.3`: Print the notification header returned by the
|
||||
registry, and make sure status codes are printed without gratuitous quotes
|
||||
around them. ([@isaacs](https://github.com/isaacs) /
|
||||
[@othiym23](https://github.com/othiym23))
|
||||
* [`a8cb676`](https://github.com/npm/npm/commit/a8cb676aef0561eaf04487d2719672b097392c85)
|
||||
[#5900](https://github.com/npm/npm/issues/5900) remove `npm` from its own
|
||||
`engines` field in `package.json`. None of us remember why it was there.
|
||||
([@timoxley](https://github.com/timoxley))
|
||||
* [`6c47201`](https://github.com/npm/npm/commit/6c47201a7d071e8bf091b36933daf4199cc98e80)
|
||||
[#5752](https://github.com/npm/npm/issues/5752),
|
||||
[#6013](https://github.com/npm/npm/issues/6013) save git URLs correctly in
|
||||
`_resolved` fields ([@isaacs](https://github.com/isaacs))
|
||||
* [`e4e1223`](https://github.com/npm/npm/commit/e4e1223a91c37688ba3378e1fc9d5ae045654d00)
|
||||
[#5936](https://github.com/npm/npm/issues/5936) document the use of tags in
|
||||
`package.json` ([@KenanY](https://github.com/KenanY))
|
||||
* [`c92b8d4`](https://github.com/npm/npm/commit/c92b8d4db7bde2a501da5b7d612684de1d629a42)
|
||||
[#6004](https://github.com/npm/npm/issues/6004) manually installed scoped
|
||||
packages are tracked correctly ([@dead](https://github.com/dead)-horse)
|
||||
* [`21ca0aa`](https://github.com/npm/npm/commit/21ca0aaacbcfe2b89b0a439d914da0cae62de550)
|
||||
[#5945](https://github.com/npm/npm/issues/5945) link scoped packages
|
||||
correctly ([@dead](https://github.com/dead)-horse)
|
||||
* [`16bead7`](https://github.com/npm/npm/commit/16bead7f2c82aec35b83ff0ec04df051ba456764)
|
||||
[#5958](https://github.com/npm/npm/issues/5958) ensure that file streams work
|
||||
in all versions of node ([@dead](https://github.com/dead)-horse)
|
||||
* [`dbf0cab`](https://github.com/npm/npm/commit/dbf0cab29d0db43ac95e4b5a1fbdea1e0af75f10)
|
||||
you can now pass quoted args to `npm run-script`
|
||||
([@bcoe](https://github.com/bcoe))
|
||||
* [`0583874`](https://github.com/npm/npm/commit/05838743f01ccb8d2432b3858d66847002fb62df)
|
||||
`tar@1.0.1`: Add test for removing an extract target immediately after
|
||||
unpacking.
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`cdf3b04`](https://github.com/npm/npm/commit/cdf3b0428bc0b0183fb41dcde9e34e8f42c5e3a7)
|
||||
`lockfile@1.0.0`: Fix incorrect interaction between `wait`, `stale`, and
|
||||
`retries` options. Part 2 of race condition leading to `ENOENT`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
errors.
|
||||
* [`22d72a8`](https://github.com/npm/npm/commit/22d72a87a9e1a9ab56d9585397f63551887d9125)
|
||||
`fstream@1.0.2`: Fix a double-finish call which can result in excess FS
|
||||
operations after the `close` event. Part 1 of race condition leading to
|
||||
`ENOENT` errors.
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.25 (2014-08-21):
|
||||
|
||||
* [`64c0ec2`](https://github.com/npm/npm/commit/64c0ec241ef5d83761ca8de54acb3c41b079956e)
|
||||
`npm-registry-client@2.0.6`: Print the notification header returned by the
|
||||
registry, and make sure status codes are printed without gratuitous quotes
|
||||
around them.
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`a8ed12b`](https://github.com/npm/npm/commit/a8ed12b) `tar@1.0.1`:
|
||||
Add test for removing an extract target immediately after unpacking.
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`70fd11d`](https://github.com/npm/npm/commit/70fd11d)
|
||||
`lockfile@1.0.0`: Fix incorrect interaction between `wait`, `stale`,
|
||||
and `retries` options. Part 2 of race condition leading to `ENOENT`
|
||||
errors.
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`0072c4d`](https://github.com/npm/npm/commit/0072c4d)
|
||||
`fstream@1.0.2`: Fix a double-finish call which can result in excess
|
||||
FS operations after the `close` event. Part 2 of race condition
|
||||
leading to `ENOENT` errors.
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v2.0.0-alpha.7 (2014-08-14):
|
||||
|
||||
* [`f23f1d8`](https://github.com/npm/npm/commit/f23f1d8e8f86ec1b7ab8dad68250bccaa67d61b1)
|
||||
doc: update version doc to include `pre-*` increment args
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`b6bb746`](https://github.com/npm/npm/commit/b6bb7461824d4dc1c0936f46bd7929b5cd597986)
|
||||
build: add 'make tag' to tag current release as latest
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`27c4bb6`](https://github.com/npm/npm/commit/27c4bb606e46e5eaf604b19fe8477bc6567f8b2e)
|
||||
build: publish with `--tag=v1.4-next` ([@isaacs](https://github.com/isaacs))
|
||||
* [`cff66c3`](https://github.com/npm/npm/commit/cff66c3bf2850880058ebe2a26655dafd002495e)
|
||||
build: add script to output `v1.4-next` publish tag
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`22abec8`](https://github.com/npm/npm/commit/22abec8833474879ac49b9604c103bc845dad779)
|
||||
build: remove outdated `docpublish` make target
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`1be4de5`](https://github.com/npm/npm/commit/1be4de51c3976db8564f72b00d50384c921f0917)
|
||||
build: remove `unpublish` step from `make publish`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`e429e20`](https://github.com/npm/npm/commit/e429e2011f4d78e398f2461bca3e5a9a146fbd0c)
|
||||
doc: add new changelog ([@othiym23](https://github.com/othiym23))
|
||||
* [`9243d20`](https://github.com/npm/npm/commit/9243d207896ea307082256604c10817f7c318d68)
|
||||
lifecycle: test lifecycle path modification
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`021770b`](https://github.com/npm/npm/commit/021770b9cb07451509f0a44afff6c106311d8cf6)
|
||||
lifecycle: BREAKING CHANGE do not add the directory containing node executable
|
||||
([@chulkilee](https://github.com/chulkilee))
|
||||
* [`1d5c41d`](https://github.com/npm/npm/commit/1d5c41dd0d757bce8b87f10c4135f04ece55aeb9)
|
||||
install: rename .gitignore when unpacking foreign tarballs
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`9aac267`](https://github.com/npm/npm/commit/9aac2670a73423544d92b27cc301990a16a9563b)
|
||||
cache: detect non-gzipped tar files more reliably
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`3f24755`](https://github.com/npm/npm/commit/3f24755c8fce3c7ab11ed1dc632cc40d7ef42f62)
|
||||
`readdir-scoped-modules@1.0.0` ([@isaacs](https://github.com/isaacs))
|
||||
* [`151cd2f`](https://github.com/npm/npm/commit/151cd2ff87b8ac2fc9ea366bc9b7f766dc5b9684)
|
||||
`read-installed@3.1.0` ([@isaacs](https://github.com/isaacs))
|
||||
* [`f5a9434`](https://github.com/npm/npm/commit/f5a94343a8ebe4a8cd987320b55137aef53fb3fd)
|
||||
test: fix Travis timeouts ([@dylang](https://github.com/dylang))
|
||||
* [`126cafc`](https://github.com/npm/npm/commit/126cafcc6706814c88af3042f2ffff408747bff4)
|
||||
`npm-registry-couchapp@2.5.0` ([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.4.24 (2014-08-14):
|
||||
|
||||
* [`9344bd9`](https://github.com/npm/npm/commit/9344bd9b2929b5c399a0e0e0b34d45bce7bc24bb)
|
||||
doc: add new changelog ([@othiym23](https://github.com/othiym23))
|
||||
* [`4be76fd`](https://github.com/npm/npm/commit/4be76fd65e895883c337a99f275ccc8c801adda3)
|
||||
doc: update version doc to include `pre-*` increment args
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`e4f2620`](https://github.com/npm/npm/commit/e4f262036080a282ad60e236a9aeebd39fde9fe4)
|
||||
build: add `make tag` to tag current release as `latest`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`ec2596a`](https://github.com/npm/npm/commit/ec2596a7cb626772780b25b0a94a7e547a812bd5)
|
||||
build: publish with `--tag=v1.4-next` ([@isaacs](https://github.com/isaacs))
|
||||
* [`9ee55f8`](https://github.com/npm/npm/commit/9ee55f892b8b473032a43c59912c5684fd1b39e6)
|
||||
build: add script to output `v1.4-next` publish tag
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`aecb56f`](https://github.com/npm/npm/commit/aecb56f95a84687ea46920a0b98aaa587fee1568)
|
||||
build: remove outdated `docpublish` make target
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`b57a9b7`](https://github.com/npm/npm/commit/b57a9b7ccd13e6b38831ed63595c8ea5763da247)
|
||||
build: remove unpublish step from `make publish`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`2c6acb9`](https://github.com/npm/npm/commit/2c6acb96c71c16106965d5cd829b67195dd673c7)
|
||||
install: rename `.gitignore` when unpacking foreign tarballs
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`22f3681`](https://github.com/npm/npm/commit/22f3681923e993a47fc1769ba735bfa3dd138082)
|
||||
cache: detect non-gzipped tar files more reliably
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v2.0.0-alpha.6 (2014-08-07):
|
||||
|
||||
BREAKING CHANGE:
|
||||
|
||||
* [`ea547e2`](https://github.com/npm/npm/commit/ea547e2) Bump semver to
|
||||
version 3: `^0.x.y` is now functionally the same as `=0.x.y`.
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
Other changes:
|
||||
|
||||
* [`d987707`](https://github.com/npm/npm/commit/d987707) move fetch into
|
||||
npm-registry-client ([@othiym23](https://github.com/othiym23))
|
||||
* [`9b318e2`](https://github.com/npm/npm/commit/9b318e2) `read-installed@3.0.0`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`9d73de7`](https://github.com/npm/npm/commit/9d73de7) remove unnecessary
|
||||
mkdirps ([@isaacs](https://github.com/isaacs))
|
||||
* [`33ccd13`](https://github.com/npm/npm/commit/33ccd13) Don't squash execute
|
||||
perms in `_git-remotes/` dir ([@adammeadows](https://github.com/adammeadows))
|
||||
* [`48fd233`](https://github.com/npm/npm/commit/48fd233) `npm-package-arg@2.0.1`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.23 (2014-07-31):
|
||||
|
||||
* [`8dd11d1`](https://github.com/npm/npm/commit/8dd11d1) update several
|
||||
dependencies to avoid using `semver`s starting with 0.
|
||||
|
||||
### v1.4.22 (2014-07-31):
|
||||
|
||||
* [`d9a9e84`](https://github.com/npm/npm/commit/d9a9e84) `read-package-json@1.2.4`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`86f0340`](https://github.com/npm/npm/commit/86f0340)
|
||||
`github-url-from-git@1.2.0` ([@isaacs](https://github.com/isaacs))
|
||||
* [`a94136a`](https://github.com/npm/npm/commit/a94136a) `fstream@0.1.29`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`bb82d18`](https://github.com/npm/npm/commit/bb82d18) `glob@4.0.5`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`5b6bcf4`](https://github.com/npm/npm/commit/5b6bcf4) `cmd-shim@1.1.2`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`c2aa8b3`](https://github.com/npm/npm/commit/c2aa8b3) license: Cleaned up
|
||||
legalese with actual lawyer ([@isaacs](https://github.com/isaacs))
|
||||
* [`63fe0ee`](https://github.com/npm/npm/commit/63fe0ee) `init-package-json@1.0.0`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v2.0.0-alpha-5 (2014-07-22):
|
||||
|
||||
This release bumps up to 2.0 because of this breaking change, which could
|
||||
potentially affect how your package's scripts are run:
|
||||
|
||||
* [`df4b0e7`](https://github.com/npm/npm/commit/df4b0e7fc1abd9a54f98db75ec9e4d03d37d125b)
|
||||
[#5518](https://github.com/npm/npm/issues/5518) BREAKING CHANGE: support
|
||||
passing arguments to `run` scripts ([@bcoe](https://github.com/bcoe))
|
||||
|
||||
Other changes:
|
||||
|
||||
* [`cd422c9`](https://github.com/npm/npm/commit/cd422c9de510766797c65720d70f085000f50543)
|
||||
[#5748](https://github.com/npm/npm/issues/5748) link binaries for scoped
|
||||
packages ([@othiym23](https://github.com/othiym23))
|
||||
* [`4c3c778`](https://github.com/npm/npm/commit/4c3c77839920e830991e0c229c3c6a855c914d67)
|
||||
[#5758](https://github.com/npm/npm/issues/5758) `npm link` includes scope
|
||||
when linking scoped package ([@fengmk2](https://github.com/fengmk2))
|
||||
* [`f9f58dd`](https://github.com/npm/npm/commit/f9f58dd0f5b715d4efa6619f13901916d8f99c47)
|
||||
[#5707](https://github.com/npm/npm/issues/5707) document generic pre- /
|
||||
post-commands ([@sudodoki](https://github.com/sudodoki))
|
||||
* [`ac7a480`](https://github.com/npm/npm/commit/ac7a4801d80361b41dce4a18f22bcdf75e396000)
|
||||
[#5406](https://github.com/npm/npm/issues/5406) `npm cache` displays usage
|
||||
when called without arguments
|
||||
([@michaelnisi](https://github.com/michaelnisi))
|
||||
* [`f4554e9`](https://github.com/npm/npm/commit/f4554e99d34f77a8a02884493748f7d49a9a9d8b)
|
||||
Test fixes for Windows ([@isaacs](https://github.com/isaacs))
|
||||
* update dependencies ([@othiym23](https://github.com/othiym23))
|
||||
|
||||
|
||||
### v1.5.0-alpha-4 (2014-07-18):
|
||||
|
||||
* fall back to `_auth` config as default auth when using default registry
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* support for 'init.version' for those who don't want to deal with semver 0.0.x
|
||||
oddities ([@rvagg](https://github.com/rvagg))
|
||||
* [`be06213`](https://github.com/npm/npm/commit/be06213415f2d51a50d2c792b4cd0d3412a9a7b1)
|
||||
remove residual support for `win` log level
|
||||
([@aterris](https://github.com/aterris))
|
||||
|
||||
### v1.5.0-alpha-3 (2014-07-17):
|
||||
|
||||
* [`a3a85dd`](https://github.com/npm/npm/commit/a3a85dd004c9245a71ad2f0213bd1a9a90d64cd6)
|
||||
`--save` scoped packages correctly ([@othiym23](https://github.com/othiym23))
|
||||
* [`18a3385`](https://github.com/npm/npm/commit/18a3385bcf8bfb8312239216afbffb7eec759150)
|
||||
`npm-registry-client@3.0.2` ([@othiym23](https://github.com/othiym23))
|
||||
* [`375988b`](https://github.com/npm/npm/commit/375988b9bf5aa5170f06a790d624d31b1eb32c6d)
|
||||
invalid package names are an early error for optional deps
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* consistently use `node-package-arg` instead of arbitrary package spec
|
||||
splitting ([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.4.21 (2014-07-14):
|
||||
|
||||
* [`88f51aa`](https://github.com/npm/npm/commit/88f51aa27eb9a958d1fa7ec50fee5cfdedd05110)
|
||||
fix handling for 301s in `npm-registry-client@2.0.3`
|
||||
([@Raynos](https://github.com/Raynos))
|
||||
|
||||
### v1.5.0-alpha-2 (2014-07-01):
|
||||
|
||||
* [`54cf625`](https://github.com/npm/npm/commit/54cf62534e3331e3f454e609e44f0b944e819283)
|
||||
fix handling for 301s in `npm-registry-client@3.0.1`
|
||||
([@Raynos](https://github.com/Raynos))
|
||||
* [`e410861`](https://github.com/npm/npm/commit/e410861c69a3799c1874614cb5b87af8124ff98d)
|
||||
don't crash if no username set on `whoami`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`0353dde`](https://github.com/npm/npm/commit/0353ddeaca8171aa7dbdd8102b7e2eb581a86406)
|
||||
respect `--json` for output ([@isaacs](https://github.com/isaacs))
|
||||
* [`b3d112a`](https://github.com/npm/npm/commit/b3d112ae190b984cc1779b9e6de92218f22380c6)
|
||||
outdated: Don't show headings if there's nothing to output
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`bb4b90c`](https://github.com/npm/npm/commit/bb4b90c80dbf906a1cb26d85bc0625dc2758acc3)
|
||||
outdated: Default to `latest` rather than `*` for unspecified deps
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.20 (2014-07-02):
|
||||
|
||||
* [`0353dde`](https://github.com/npm/npm/commit/0353ddeaca8171aa7dbdd8102b7e2eb581a86406)
|
||||
respect `--json` for output ([@isaacs](https://github.com/isaacs))
|
||||
* [`b3d112a`](https://github.com/npm/npm/commit/b3d112ae190b984cc1779b9e6de92218f22380c6)
|
||||
outdated: Don't show headings if there's nothing to output
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`bb4b90c`](https://github.com/npm/npm/commit/bb4b90c80dbf906a1cb26d85bc0625dc2758acc3)
|
||||
outdated: Default to `latest` rather than `*` for unspecified deps
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.5.0-alpha-1 (2014-07-01):
|
||||
|
||||
* [`eef4884`](https://github.com/npm/npm/commit/eef4884d6487ee029813e60a5f9c54e67925d9fa)
|
||||
use the correct piece of the spec for GitHub shortcuts
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.5.0-alpha-0 (2014-07-01):
|
||||
|
||||
* [`7f55057`](https://github.com/npm/npm/commit/7f55057807cfdd9ceaf6331968e666424f48116c)
|
||||
install scoped packages ([#5239](https://github.com/npm/npm/issues/5239))
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`0df7e16`](https://github.com/npm/npm/commit/0df7e16c0232d8f4d036ebf4ec3563215517caac)
|
||||
publish scoped packages ([#5239](https://github.com/npm/npm/issues/5239))
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`0689ba2`](https://github.com/npm/npm/commit/0689ba249b92b4c6279a26804c96af6f92b3a501)
|
||||
support (and save) --scope=@s config
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`f34878f`](https://github.com/npm/npm/commit/f34878fc4cee29901e4daf7bace94be01e25cad7)
|
||||
scope credentials to registry ([@othiym23](https://github.com/othiym23))
|
||||
* [`0ac7ca2`](https://github.com/npm/npm/commit/0ac7ca233f7a69751fe4386af6c4daa3ee9fc0da)
|
||||
capture and store bearer tokens when sent by registry
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`63c3277`](https://github.com/npm/npm/commit/63c3277f089b2c4417e922826bdc313ac854cad6)
|
||||
only delete files that are created by npm
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`4f54043`](https://github.com/npm/npm/commit/4f540437091d1cbca3915cd20c2da83c2a88bb8e)
|
||||
`npm-package-arg@2.0.0` ([@othiym23](https://github.com/othiym23))
|
||||
* [`9e1460e`](https://github.com/npm/npm/commit/9e1460e6ac9433019758481ec031358f4af4cd44)
|
||||
`read-package-json@1.2.3` ([@othiym23](https://github.com/othiym23))
|
||||
* [`719d8ad`](https://github.com/npm/npm/commit/719d8adb9082401f905ff4207ede494661f8a554)
|
||||
`fs-vacuum@1.2.1` ([@othiym23](https://github.com/othiym23))
|
||||
* [`9ef8fe4`](https://github.com/npm/npm/commit/9ef8fe4d6ead3acb3e88c712000e2d3a9480ebec)
|
||||
`async-some@1.0.0` ([@othiym23](https://github.com/othiym23))
|
||||
* [`a964f65`](https://github.com/npm/npm/commit/a964f65ab662107b62a4ca58535ce817e8cca331)
|
||||
`npmconf@2.0.1` ([@othiym23](https://github.com/othiym23))
|
||||
* [`113765b`](https://github.com/npm/npm/commit/113765bfb7d3801917c1d9f124b8b3d942bec89a)
|
||||
`npm-registry-client@3.0.0` ([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.4.19 (2014-07-01):
|
||||
|
||||
* [`f687433`](https://github.com/npm/npm/commit/f687433) relative URLS for
|
||||
working non-root registry URLS ([@othiym23](https://github.com/othiym23))
|
||||
* [`bea190c`](https://github.com/npm/npm/commit/bea190c)
|
||||
[#5591](https://github.com/npm/npm/issues/5591) bump nopt and npmconf
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.18 (2014-06-29):
|
||||
|
||||
* Bump glob dependency from 4.0.2 to 4.0.3. It now uses graceful-fs when
|
||||
available, increasing resilience to [various filesystem
|
||||
errors](https://github.com/isaacs/node-graceful-fs#improvements-over-fs-module).
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.17 (2014-06-27):
|
||||
|
||||
* replace escape codes with ansicolors
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* Allow to build all the docs OOTB. ([@GeJ](https://github.com/GeJ))
|
||||
* Use core.longpaths on win32 git - fixes
|
||||
[#5525](https://github.com/npm/npm/issues/5525) ([@bmeck](https://github.com/bmeck))
|
||||
* `npmconf@1.1.2` ([@isaacs](https://github.com/isaacs))
|
||||
* Consolidate color sniffing in config/log loading process
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* add verbose log when project config file is ignored
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* npmconf: Float patch to remove 'scope' from config defs
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* doc: npm-explore can't handle a version
|
||||
([@robertkowalski](https://github.com/robertkowalski))
|
||||
* Add user-friendly errors for ENOSPC and EROFS.
|
||||
([@voodootikigod](https://github.com/voodootikigod))
|
||||
* bump tar and fstream deps ([@isaacs](https://github.com/isaacs))
|
||||
* Run the npm-registry-couchapp tests along with npm tests
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.2.8000 (2014-06-17):
|
||||
|
||||
* Same as v1.4.16, but with the spinner disabled, and a version number that
|
||||
starts with v1.2.
|
||||
|
||||
### v1.4.16 (2014-06-17):
|
||||
|
||||
* `npm-registry-client@2.0.2` ([@isaacs](https://github.com/isaacs))
|
||||
* `fstream@0.1.27` ([@isaacs](https://github.com/isaacs))
|
||||
* `sha@1.2.4` ([@isaacs](https://github.com/isaacs))
|
||||
* `rimraf@2.2.8` ([@isaacs](https://github.com/isaacs))
|
||||
* `npmlog@1.0.1` ([@isaacs](https://github.com/isaacs))
|
||||
* `npm-registry-client@2.0.1` ([@isaacs](https://github.com/isaacs))
|
||||
* removed redundant dependency ([@othiym23](https://github.com/othiym23))
|
||||
* `npmconf@1.0.5` ([@isaacs](https://github.com/isaacs))
|
||||
* Properly handle errors that can occur in the config-loading process
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.15 (2014-06-10):
|
||||
|
||||
* cache: atomic de-race-ified package.json writing
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* `fstream@0.1.26` ([@isaacs](https://github.com/isaacs))
|
||||
* `graceful-fs@3.0.2` ([@isaacs](https://github.com/isaacs))
|
||||
* `osenv@0.1.0` ([@isaacs](https://github.com/isaacs))
|
||||
* Only spin the spinner when we're fetching stuff
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Update `osenv@0.1.0` which removes ~/tmp as possible tmp-folder
|
||||
([@robertkowalski](https://github.com/robertkowalski))
|
||||
* `ini@1.2.1` ([@isaacs](https://github.com/isaacs))
|
||||
* `graceful-fs@3` ([@isaacs](https://github.com/isaacs))
|
||||
* Update glob and things depending on glob
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* github-url-from-username-repo and read-package-json updates
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* `editor@0.1.0` ([@isaacs](https://github.com/isaacs))
|
||||
* `columnify@1.1.0` ([@isaacs](https://github.com/isaacs))
|
||||
* bump ansi and associated deps ([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.14 (2014-06-05):
|
||||
|
||||
* char-spinner: update to not bork windows
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.13 (2014-05-23):
|
||||
|
||||
* Fix `npm install` on a tarball.
|
||||
([`ed3abf1`](https://github.com/npm/npm/commit/ed3abf1aa10000f0f687330e976d78d1955557f6),
|
||||
[#5330](https://github.com/npm/npm/issues/5330),
|
||||
[@othiym23](https://github.com/othiym23))
|
||||
* Fix an issue with the spinner on Node 0.8.
|
||||
([`9f00306`](https://github.com/npm/npm/commit/9f003067909440390198c0b8f92560d84da37762),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Re-add `npm.commands.cache.clean` and `npm.commands.cache.read` APIs, and
|
||||
document `npm.commands.cache.*` as npm-cache(3).
|
||||
([`e06799e`](https://github.com/npm/npm/commit/e06799e77e60c1fc51869619083a25e074d368b3),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.12 (2014-05-23):
|
||||
|
||||
* remove normalize-package-data from top level, de-^-ify inflight dep
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Always sort saved bundleDependencies ([@isaacs](https://github.com/isaacs))
|
||||
* add inflight to bundledDependencies
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.4.11 (2014-05-22):
|
||||
|
||||
* fix `npm ls` labeling issue
|
||||
* `node-gyp@0.13.1`
|
||||
* default repository to https:// instead of git://
|
||||
* addLocalTarball: Remove extraneous unpack
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Massive cache folder refactor ([@othiym23](https://github.com/othiym23) and
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Busy Spinner, no http noise ([@isaacs](https://github.com/isaacs))
|
||||
* Per-project .npmrc file support ([@isaacs](https://github.com/isaacs))
|
||||
* `npmconf@1.0.0`, Refactor config/uid/prefix loading process
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Allow once-disallowed characters in passwords
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Send npm version as 'version' header ([@isaacs](https://github.com/isaacs))
|
||||
* fix cygwin encoding issue (Karsten Tinnefeld)
|
||||
* Allow non-github repositories with `npm repo`
|
||||
([@evanlucas](https://github.com/evanlucas))
|
||||
* Allow peer deps to be satisfied by grandparent
|
||||
* Stop optional deps moving into deps on `update --save`
|
||||
([@timoxley](https://github.com/timoxley))
|
||||
* Ensure only matching deps update with `update --save*`
|
||||
([@timoxley](https://github.com/timoxley))
|
||||
* Add support for `prerelease`, `preminor`, `prepatch` to `npm version`
|
||||
|
||||
### v1.4.10 (2014-05-05):
|
||||
|
||||
* Don't set referer if already set
|
||||
* fetch: Send referer and npm-session headers
|
||||
* `run-script`: Support `--parseable` and `--json`
|
||||
* list runnable scripts ([@evanlucas](https://github.com/evanlucas))
|
||||
* Use marked instead of ronn for html docs
|
||||
|
||||
### v1.4.9 (2014-05-01):
|
||||
|
||||
* Send referer header (with any potentially private stuff redacted)
|
||||
* Fix critical typo bug in previous npm release
|
||||
|
||||
### v1.4.8 (2014-05-01):
|
||||
|
||||
* Check SHA before using files from cache
|
||||
* adduser: allow change of the saved password
|
||||
* Make `npm install` respect `config.unicode`
|
||||
* Fix lifecycle to pass `Infinity` for config env value
|
||||
* Don't return 0 exit code on invalid command
|
||||
* cache: Handle 404s and other HTTP errors as errors
|
||||
* Resolve ~ in path configs to env.HOME
|
||||
* Include npm version in default user-agent conf
|
||||
* npm init: Use ISC as default license, use save-prefix for deps
|
||||
* Many test and doc fixes
|
||||
|
||||
### v1.4.7 (2014-04-15):
|
||||
|
||||
* Add `--save-prefix` option that can be used to override the default of `^`
|
||||
when using `npm install --save` and its counterparts.
|
||||
([`64eefdf`](https://github.com/npm/npm/commit/64eefdfe26bb27db8dc90e3ab5d27a5ef18a4470),
|
||||
[@thlorenz](https://github.com/thlorenz))
|
||||
* Allow `--silent` to silence the echoing of commands that occurs with `npm
|
||||
run`.
|
||||
([`c95cf08`](https://github.com/npm/npm/commit/c95cf086e5b97dbb48ff95a72517b203a8f29eab),
|
||||
[@Raynos](https://github.com/Raynos))
|
||||
* Some speed improvements to the cache, which should improve install times.
|
||||
([`cb94310`](https://github.com/npm/npm/commit/cb94310a6adb18cb7b881eacb8d67171eda8b744),
|
||||
[`3b0870f`](https://github.com/npm/npm/commit/3b0870fb2f40358b3051abdab6be4319d196b99d),
|
||||
[`120f5a9`](https://github.com/npm/npm/commit/120f5a93437bbbea9249801574a2f33e44e81c33),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Improve ability to retry registry requests when a subset of the registry
|
||||
servers are down.
|
||||
([`4a5257d`](https://github.com/npm/npm/commit/4a5257de3870ac3dafa39667379f19f6dcd6093e),
|
||||
https://github.com/npm/npm-registry-client/commit/7686d02cb0b844626d6a401e58c0755ef3bc8432,
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fix marking of peer dependencies as extraneous.
|
||||
([`779b164`](https://github.com/npm/npm/commit/779b1649764607b062c031c7e5c972151b4a1754),
|
||||
https://github.com/npm/read-installed/commit/6680ba6ef235b1ca3273a00b70869798ad662ddc,
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fix npm crashing when doing `npm shrinkwrap` in the presence of a
|
||||
`package.json` with no dependencies.
|
||||
([`a9d9fa5`](https://github.com/npm/npm/commit/a9d9fa5ad3b8c925a589422b7be28d2735f320b0),
|
||||
[@kislyuk](https://github.com/kislyuk))
|
||||
* Fix error when using `npm view` on packages that have no versions or have
|
||||
been unpublished.
|
||||
([`94df2f5`](https://github.com/npm/npm/commit/94df2f56d684b35d1df043660180fc321b743dc8),
|
||||
[@juliangruber](https://github.com/juliangruber);
|
||||
[`2241a09`](https://github.com/npm/npm/commit/2241a09c843669c70633c399ce698cec3add40b3),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.6 (2014-03-19):
|
||||
|
||||
* Fix extraneous package detection to work in more cases.
|
||||
([`f671286`](https://github.com/npm/npm/commit/f671286), npm/read-installed#20,
|
||||
[@LaurentVB](https://github.com/LaurentVB))
|
||||
|
||||
### v1.4.5 (2014-03-18):
|
||||
|
||||
* Sort dependencies in `package.json` when doing `npm install --save` and all
|
||||
its variants.
|
||||
([`6fd6ff7`](https://github.com/npm/npm/commit/6fd6ff7e536ea6acd33037b1878d4eca1f931985),
|
||||
[@domenic](https://github.com/domenic))
|
||||
* Add `--save-exact` option, usable alongside `--save` and its variants, which
|
||||
will write the exact version number into `package.json` instead of the
|
||||
appropriate semver-compatibility range.
|
||||
([`17f07df`](https://github.com/npm/npm/commit/17f07df8ad8e594304c2445bf7489cb53346f2c5),
|
||||
[@timoxley](https://github.com/timoxley))
|
||||
* Accept gzipped content from the registry to speed up downloads and save
|
||||
bandwidth.
|
||||
([`a3762de`](https://github.com/npm/npm/commit/a3762de843b842be8fa0ab57cdcd6b164f145942),
|
||||
npm/npm-registry-client#40, [@fengmk2](https://github.com/fengmk2))
|
||||
* Fix `npm ls`'s `--depth` and `--log` options.
|
||||
([`1d29b17`](https://github.com/npm/npm/commit/1d29b17f5193d52a5c4faa412a95313dcf41ed91),
|
||||
npm/read-installed#13, [@zertosh](https://github.com/zertosh))
|
||||
* Fix "Adding a cache directory to the cache will make the world implode" in
|
||||
certain cases.
|
||||
([`9a4b2c4`](https://github.com/npm/npm/commit/9a4b2c4667c2b1e0054e3d5611ab86acb1760834),
|
||||
domenic/path-is-inside#1, [@pmarques](https://github.com/pmarques))
|
||||
* Fix readmes not being uploaded in certain rare cases.
|
||||
([`527b72c`](https://github.com/npm/npm/commit/527b72cca6c55762b51e592c48a9f28cc7e2ff8b),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.4 (2014-02-20):
|
||||
|
||||
* Add `npm t` as an alias for `npm test` (which is itself an alias for `npm run
|
||||
test`, or even `npm run-script test`). We like making running your tests
|
||||
easy. ([`14e650b`](https://github.com/npm/npm/commit/14e650bce0bfebba10094c961ac104a61417a5de), [@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.3 (2014-02-16):
|
||||
|
||||
* Add back `npm prune --production`, which was removed in 1.3.24.
|
||||
([`acc4d02`](https://github.com/npm/npm/commit/acc4d023c57d07704b20a0955e4bf10ee91bdc83),
|
||||
[@davglass](https://github.com/davglass))
|
||||
* Default `npm install --save` and its counterparts to use the `^` version
|
||||
specifier, instead of `~`.
|
||||
([`0a3151c`](https://github.com/npm/npm/commit/0a3151c9cbeb50c1c65895685c2eabdc7e2608dc),
|
||||
[@mikolalysenko](https://github.com/mikolalysenko))
|
||||
* Make `npm shrinkwrap` output dependencies in a sorted order, so that diffs
|
||||
between shrinkwrap files should be saner now.
|
||||
([`059b2bf`](https://github.com/npm/npm/commit/059b2bfd06ae775205a37257dca80142596a0113),
|
||||
[@Raynos](https://github.com/Raynos))
|
||||
* Fix `npm dedupe` not correctly respecting dependency constraints.
|
||||
([`86028e9`](https://github.com/npm/npm/commit/86028e9fd8524d5e520ce01ba2ebab5a030103fc),
|
||||
[@rafeca](https://github.com/rafeca))
|
||||
* Fix `npm ls` giving spurious warnings when you used `"latest"` as a version
|
||||
specifier.
|
||||
(https://github.com/npm/read-installed/commit/d2956400e0386931c926e0f30c334840e0938f14,
|
||||
[@bajtos](https://github.com/bajtos))
|
||||
* Fixed a bug where using `npm link` on packages without a `name` value could
|
||||
cause npm to delete itself.
|
||||
([`401a642`](https://github.com/npm/npm/commit/401a64286aa6665a94d1d2f13604f7014c5fce87),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fixed `npm install ./pkg@1.2.3` to actually install the directory at
|
||||
`pkg@1.2.3`; before it would try to find version `1.2.3` of the package
|
||||
`./pkg` in the npm registry.
|
||||
([`46d8768`](https://github.com/npm/npm/commit/46d876821d1dd94c050d5ebc86444bed12c56739),
|
||||
[@rlidwka](https://github.com/rlidwka); see also
|
||||
[`f851b79`](https://github.com/npm/npm/commit/f851b79a71d9a5f5125aa85877c94faaf91bea5f))
|
||||
* Fix `npm outdated` to respect the `color` configuration option.
|
||||
([`d4f6f3f`](https://github.com/npm/npm/commit/d4f6f3ff83bd14fb60d3ac6392cb8eb6b1c55ce1),
|
||||
[@timoxley](https://github.com/timoxley))
|
||||
* Fix `npm outdated --parseable`.
|
||||
([`9575a23`](https://github.com/npm/npm/commit/9575a23f955ce3e75b509c89504ef0bd707c8cf6),
|
||||
[@yhpark](https://github.com/yhpark))
|
||||
* Fix a lockfile-related errors when using certain Git URLs.
|
||||
([`164b97e`](https://github.com/npm/npm/commit/164b97e6089f64e686db7a9a24016f245effc37f),
|
||||
[@nigelzor](https://github.com/nigelzor))
|
||||
|
||||
### v1.4.2 (2014-02-13):
|
||||
|
||||
* Fixed an issue related to mid-publish GET requests made against the registry.
|
||||
(https://github.com/npm/npm-registry-client/commit/acbec48372bc1816c67c9e7cbf814cf50437ff93,
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.1 (2014-02-13):
|
||||
|
||||
* Fix `npm shrinkwrap` forgetting to shrinkwrap dependencies that were also
|
||||
development dependencies.
|
||||
([`9c575c5`](https://github.com/npm/npm/commit/9c575c56efa9b0c8b0d4a17cb9c1de3833004bcd),
|
||||
[@diwu1989](https://github.com/diwu1989))
|
||||
* Fixed publishing of pre-existing packages with uppercase characters in their
|
||||
name.
|
||||
(https://github.com/npm/npm-registry-client/commit/9345d3b6c3d8510dd5c4418f27ee1fce59acebad,
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.0 (2014-02-12):
|
||||
|
||||
* Remove `npm publish --force`. See
|
||||
https://github.com/npm/npmjs.org/issues/148.
|
||||
([@isaacs](https://github.com/isaacs),
|
||||
npm/npm-registry-client@2c8dba990de6a59af6545b75cc00a6dc12777c2a)
|
||||
* Other changes to the registry client related to saved configs and couch
|
||||
logins. ([@isaacs](https://github.com/isaacs);
|
||||
npm/npm-registry-client@25e2b019a1588155e5f87d035c27e79963b75951,
|
||||
npm/npm-registry-client@9e41e9101b68036e0f078398785f618575f3cdde,
|
||||
npm/npm-registry-client@2c8dba990de6a59af6545b75cc00a6dc12777c2a)
|
||||
* Show an error to the user when doing `npm update` and the `package.json`
|
||||
specifies a version that does not exist.
|
||||
([@evanlucas](https://github.com/evanlucas),
|
||||
[`027a33a`](https://github.com/npm/npm/commit/027a33a5c594124cc1d82ddec5aee2c18bc8dc32))
|
||||
* Fix some issues with cache ownership in certain installation configurations.
|
||||
([@outcoldman](https://github.com/outcoldman),
|
||||
[`a132690`](https://github.com/npm/npm/commit/a132690a2876cda5dcd1e4ca751f21dfcb11cb9e))
|
||||
* Fix issues where GitHub shorthand dependencies `user/repo` were not always
|
||||
treated the same as full Git URLs.
|
||||
([@robertkowalski](https://github.com/robertkowalski),
|
||||
https://github.com/meryn/normalize-package-data/commit/005d0b637aec1895117fcb4e3b49185eebf9e240)
|
||||
|
||||
### v1.3.26 (2014-02-02):
|
||||
|
||||
* Fixes and updates to publishing code
|
||||
([`735427a`](https://github.com/npm/npm/commit/735427a69ba4fe92aafa2d88f202aaa42920a9e2)
|
||||
and
|
||||
[`c0ac832`](https://github.com/npm/npm/commit/c0ac83224d49aa62e55577f8f27d53bbfd640dc5),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fix `npm bugs` with no arguments.
|
||||
([`b99d465`](https://github.com/npm/npm/commit/b99d465221ac03bca30976cbf4d62ca80ab34091),
|
||||
[@Hoops](https://github.com/Hoops))
|
||||
|
||||
### v1.3.25 (2014-01-25):
|
||||
|
||||
* Remove gubblebum blocky font from documentation headers.
|
||||
([`6940c9a`](https://github.com/npm/npm/commit/6940c9a100160056dc6be8f54a7ad7fa8ceda7e2),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.3.24 (2014-01-19):
|
||||
|
||||
* Make the search output prettier, with nice truncated columns, and a `--long`
|
||||
option to create wrapping columns.
|
||||
([`20439b2`](https://github.com/npm/npm/commit/20439b2) and
|
||||
[`3a6942d`](https://github.com/npm/npm/commit/3a6942d),
|
||||
[@timoxley](https://github.com/timoxley))
|
||||
* Support multiple packagenames in `npm docs`.
|
||||
([`823010b`](https://github.com/npm/npm/commit/823010b),
|
||||
[@timoxley](https://github.com/timoxley))
|
||||
* Fix the `npm adduser` bug regarding "Error: default value must be string or
|
||||
number" again. ([`b9b4248`](https://github.com/npm/npm/commit/b9b4248),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fix `scripts` entries containing whitespaces on Windows.
|
||||
([`80282ed`](https://github.com/npm/npm/commit/80282ed),
|
||||
[@robertkowalski](https://github.com/robertkowalski))
|
||||
* Fix `npm update` for Git URLs that have credentials in them
|
||||
([`93fc364`](https://github.com/npm/npm/commit/93fc364),
|
||||
[@danielsantiago](https://github.com/danielsantiago))
|
||||
* Fix `npm install` overwriting `npm link`-ed dependencies when they are tagged
|
||||
Git dependencies. ([`af9bbd9`](https://github.com/npm/npm/commit/af9bbd9),
|
||||
[@evanlucas](https://github.com/evanlucas))
|
||||
* Remove `npm prune --production` since it buggily removed some dependencies
|
||||
that were necessary for production; see
|
||||
[#4509](https://github.com/npm/npm/issues/4509). Hopefully it can make its
|
||||
triumphant return, one day.
|
||||
([`1101b6a`](https://github.com/npm/npm/commit/1101b6a),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
Dependency updates:
|
||||
* [`909cccf`](https://github.com/npm/npm/commit/909cccf) `read-package-json@1.1.6`
|
||||
* [`a3891b6`](https://github.com/npm/npm/commit/a3891b6) `rimraf@2.2.6`
|
||||
* [`ac6efbc`](https://github.com/npm/npm/commit/ac6efbc) `sha@1.2.3`
|
||||
* [`dd30038`](https://github.com/npm/npm/commit/dd30038) `node-gyp@0.12.2`
|
||||
* [`c8c3ebe`](https://github.com/npm/npm/commit/c8c3ebe) `npm-registry-client@0.3.3`
|
||||
* [`4315286`](https://github.com/npm/npm/commit/4315286) `npmconf@0.1.12`
|
||||
|
||||
### v1.3.23 (2014-01-03):
|
||||
|
||||
* Properly handle installations that contained a certain class of circular
|
||||
dependencies.
|
||||
([`5dc93e8`](https://github.com/npm/npm/commit/5dc93e8c82604c45b6067b1acf1c768e0bfce754),
|
||||
[@substack](https://github.com/substack))
|
||||
|
||||
### v1.3.22 (2013-12-25):
|
||||
|
||||
* Fix a critical bug in `npm adduser` that would manifest in the error message
|
||||
"Error: default value must be string or number."
|
||||
([`fba4bd2`](https://github.com/npm/npm/commit/fba4bd24bc2ab00ccfeda2043aa53af7d75ef7ce),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Allow `npm bugs` in the current directory to open the current package's bugs
|
||||
URL.
|
||||
([`d04cf64`](https://github.com/npm/npm/commit/d04cf6483932c693452f3f778c2fa90f6153a4af),
|
||||
[@evanlucas](https://github.com/evanlucas))
|
||||
* Several fixes to various error messages to include more useful or updated
|
||||
information.
|
||||
([`1e6f2a7`](https://github.com/npm/npm/commit/1e6f2a72ca058335f9f5e7ca22d01e1a8bb0f9f7),
|
||||
[`ff46366`](https://github.com/npm/npm/commit/ff46366bd40ff0ef33c7bac8400bc912c56201d1),
|
||||
[`8b4bb48`](https://github.com/npm/npm/commit/8b4bb4815d80a3612186dc5549d698e7b988eb03);
|
||||
[@rlidwka](https://github.com/rlidwka),
|
||||
[@evanlucas](https://github.com/evanlucas))
|
||||
|
||||
### v1.3.21 (2013-12-17):
|
||||
|
||||
* Fix a critical bug that prevented publishing due to incorrect hash
|
||||
calculation.
|
||||
([`4ca4a2c`](https://github.com/npm/npm-registry-client/commit/4ca4a2c6333144299428be6b572e2691aa59852e),
|
||||
[@dominictarr](https://github.com/dominictarr))
|
||||
|
||||
### v1.3.20 (2013-12-17):
|
||||
|
||||
* Fixes a critical bug in v1.3.19. Thankfully, due to that bug, no one could
|
||||
install npm v1.3.19 :)
|
||||
|
||||
### v1.3.19 (2013-12-16):
|
||||
|
||||
* Adds atomic PUTs for publishing packages, which should result in far fewer
|
||||
requests and less room for replication errors on the server-side.
|
||||
|
||||
### v1.3.18 (2013-12-16):
|
||||
|
||||
* Added an `--ignore-scripts` option, which will prevent `package.json` scripts
|
||||
from being run. Most notably, this will work on `npm install`, so e.g. `npm
|
||||
install --ignore-scripts` will not run preinstall and prepublish scripts.
|
||||
([`d7e67bf`](https://github.com/npm/npm/commit/d7e67bf0d94b085652ec1c87d595afa6f650a8f6),
|
||||
[@sqs](https://github.com/sqs))
|
||||
* Fixed a bug introduced in 1.3.16 that would manifest with certain cache
|
||||
configurations, by causing spurious errors saying "Adding a cache directory
|
||||
to the cache will make the world implode."
|
||||
([`966373f`](https://github.com/npm/npm/commit/966373fad8d741637f9744882bde9f6e94000865),
|
||||
[@domenic](https://github.com/domenic))
|
||||
* Re-fixed the multiple download of URL dependencies, whose fix was reverted in
|
||||
1.3.17.
|
||||
([`a362c3f`](https://github.com/npm/npm/commit/a362c3f1919987419ed8a37c8defa19d2e6697b0),
|
||||
[@spmason](https://github.com/spmason))
|
||||
|
||||
### v1.3.17 (2013-12-11):
|
||||
|
||||
* This release reverts
|
||||
[`644c2ff`](https://github.com/npm/npm/commit/644c2ff3e3d9c93764f7045762477f48864d64a7),
|
||||
which avoided re-downloading URL and shinkwrap dependencies when doing `npm
|
||||
install`. You can see the in-depth reasoning in
|
||||
[`d8c907e`](https://github.com/npm/npm/commit/d8c907edc2019b75cff0f53467e34e0ffd7e5fba);
|
||||
the problem was, that the patch changed the behavior of `npm install -f` to
|
||||
reinstall all dependencies.
|
||||
* A new version of the no-re-downloading fix has been submitted as
|
||||
[#4303](https://github.com/npm/npm/issues/4303) and will hopefully be
|
||||
included in the next release.
|
||||
|
||||
### v1.3.16 (2013-12-11):
|
||||
|
||||
* Git URL dependencies are now updated on `npm install`, fixing a two-year old
|
||||
bug
|
||||
([`5829ecf`](https://github.com/npm/npm/commit/5829ecf032b392d2133bd351f53d3c644961396b),
|
||||
[@robertkowalski](https://github.com/robertkowalski)). Additional progress on
|
||||
reducing the resulting Git-related I/O is tracked as
|
||||
[#4191](https://github.com/npm/npm/issues/4191), but for now, this will be a
|
||||
big improvement.
|
||||
* Added a `--json` mode to `npm outdated` to give a parseable output.
|
||||
([`0b6c9b7`](https://github.com/npm/npm/commit/0b6c9b7c8c5579f4d7d37a0c24d9b7a12ccbe5fe),
|
||||
[@yyx990803](https://github.com/yyx990803))
|
||||
* Made `npm outdated` much prettier and more useful. It now outputs a
|
||||
color-coded and easy-to-read table.
|
||||
([`fd3017f`](https://github.com/npm/npm/commit/fd3017fc3e9d42acf6394a5285122edb4dc16106),
|
||||
[@quimcalpe](https://github.com/quimcalpe))
|
||||
* Added the `--depth` option to `npm outdated`, so that e.g. you can do `npm
|
||||
outdated --depth=0` to show only top-level outdated dependencies.
|
||||
([`1d184ef`](https://github.com/npm/npm/commit/1d184ef3f4b4bc309d38e9128732e3e6fb46d49c),
|
||||
[@yyx990803](https://github.com/yyx990803))
|
||||
* Added a `--no-git-tag-version` option to `npm version`, for doing the usual
|
||||
job of `npm version` minus the Git tagging. This could be useful if you need
|
||||
to increase the version in other related files before actually adding the
|
||||
tag.
|
||||
([`59ca984`](https://github.com/npm/npm/commit/59ca9841ba4f4b2f11b8e72533f385c77ae9f8bd),
|
||||
[@evanlucas](https://github.com/evanlucas))
|
||||
* Made `npm repo` and `npm docs` work without any arguments, adding them to the
|
||||
list of npm commands that work on the package in the current directory when
|
||||
invoked without arguments.
|
||||
([`bf9048e`](https://github.com/npm/npm/commit/bf9048e2fa16d43fbc4b328d162b0a194ca484e8),
|
||||
[@robertkowalski](https://github.com/robertkowalski);
|
||||
[`07600d0`](https://github.com/npm/npm/commit/07600d006c652507cb04ac0dae9780e35073dd67),
|
||||
[@wilmoore](https://github.com/wilmoore)). There are a few other commands we
|
||||
still want to implement this for; see
|
||||
[#4204](https://github.com/npm/npm/issues/4204).
|
||||
* Pass through the `GIT_SSL_NO_VERIFY` environment variable to Git, if it is
|
||||
set; we currently do this with a few other environment variables, but we
|
||||
missed that one.
|
||||
([`c625de9`](https://github.com/npm/npm/commit/c625de91770df24c189c77d2e4bc821f2265efa8),
|
||||
[@arikon](https://github.com/arikon))
|
||||
* Fixed `npm dedupe` on Windows due to incorrect path separators being used
|
||||
([`7677de4`](https://github.com/npm/npm/commit/7677de4583100bc39407093ecc6bc13715bf8161),
|
||||
[@mcolyer](https://github.com/mcolyer)).
|
||||
* Fixed the `npm help` command when multiple words were searched for; it
|
||||
previously gave a `ReferenceError`.
|
||||
([`6a28dd1`](https://github.com/npm/npm/commit/6a28dd147c6957a93db12b1081c6e0da44fe5e3c),
|
||||
[@dereckson](https://github.com/dereckson))
|
||||
* Stopped re-downloading URL and shrinkwrap dependencies, as demonstrated in
|
||||
[#3463](https://github.com/npm/npm/issues/3463)
|
||||
([`644c2ff`](https://github.com/isaacs/npm/commit/644c2ff3e3d9c93764f7045762477f48864d64a7),
|
||||
[@spmason](https://github.com/spmason)). You can use the `--force` option to
|
||||
force re-download and installation of all dependencies.
|
||||
9
deps/npm/CONTRIBUTING.md
vendored
Normal file
9
deps/npm/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
## Before you submit a new issue
|
||||
|
||||
* Check if there's a simple solution in the
|
||||
[Troubleshooting](https://github.com/npm/npm/wiki/Troubleshooting)
|
||||
wiki.
|
||||
* [Search for similar
|
||||
issues](https://github.com/npm/npm/search?q=Similar%20issues&type=Issues).
|
||||
* Ensure your new issue conforms to the [Contributing
|
||||
Guidelines](https://github.com/npm/npm/wiki/Contributing-Guidelines).
|
||||
48
deps/npm/LICENSE
vendored
48
deps/npm/LICENSE
vendored
@@ -1,8 +1,11 @@
|
||||
Copyright (c) Isaac Z. Schlueter
|
||||
Copyright (c) npm, Inc. and Contributors
|
||||
All rights reserved.
|
||||
|
||||
npm is released under the Artistic License 2.0.
|
||||
The text of the License follows:
|
||||
npm is released under the Artistic License 2.0, subject to additional terms
|
||||
that are listed below.
|
||||
|
||||
The text of the npm License follows and the text of the additional terms
|
||||
follows the Artistic License 2.0 terms:
|
||||
|
||||
|
||||
--------
|
||||
@@ -214,14 +217,39 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
--------
|
||||
|
||||
|
||||
"Node.js" and "node" trademark Joyent, Inc. npm is not officially
|
||||
part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.
|
||||
The following additional terms shall apply to use of the npm software, the npm
|
||||
website, the npm repository and any other services or products offered by npm,
|
||||
Inc.:
|
||||
|
||||
Packages published in the npm registry (other than the Software and
|
||||
its included dependencies) are not part of npm itself, are the sole
|
||||
property of their respective maintainers, and are not covered by
|
||||
this license.
|
||||
"Node.js" trademark Joyent, Inc. npm is not officially part of the Node.js
|
||||
project, and is neither owned by nor affiliated with Joyent, Inc.
|
||||
|
||||
"npm" and "The npm Registry" are owned by npm, Inc. All rights reserved.
|
||||
|
||||
Modules published on the npm registry are not officially endorsed by npm, Inc.
|
||||
or the Node.js project.
|
||||
|
||||
Data published to the npm registry is not part of npm itself, and is the sole
|
||||
property of the publisher. While every effort is made to ensure accountability,
|
||||
there is absolutely no guarantee, warrantee, or assertion expressed or implied
|
||||
as to the quality, fitness for a specific purpose, or lack of malice in any
|
||||
given npm package. Packages downloaded through the npm registry are
|
||||
independently licensed and are not covered by this license.
|
||||
|
||||
Additional policies relating to, and restrictions on use of, npm products and
|
||||
services are available on the npm website. All such policies and restrictions,
|
||||
as updated from time to time, are hereby incorporated into this license
|
||||
agreement. By using npm, you acknowledge your agreement to all such policies
|
||||
and restrictions.
|
||||
|
||||
If you have a complaint about a package in the public npm registry, and cannot
|
||||
resolve it with the package owner, please email support@npmjs.com and explain
|
||||
the situation. See the [npm Dispute Resolution
|
||||
policy](https://github.com/npm/policies/blob/master/disputes.md) for more
|
||||
details.
|
||||
|
||||
Any data published to The npm Registry (including user account information) may
|
||||
be removed or modified at the sole discretion of the npm server administrators.
|
||||
|
||||
"npm Logo" created by Mathias Pettersson and Brian Hammond,
|
||||
used with permission.
|
||||
|
||||
77
deps/npm/Makefile
vendored
77
deps/npm/Makefile
vendored
@@ -1,11 +1,13 @@
|
||||
# vim: set softtabstop=2 shiftwidth=2:
|
||||
SHELL = bash
|
||||
|
||||
PUBLISHTAG = $(shell node scripts/publish-tag.js)
|
||||
BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
|
||||
|
||||
markdowns = $(shell find doc -name '*.md' | grep -v 'index') README.md
|
||||
|
||||
html_docdeps = html/dochead.html \
|
||||
html/docfoot.html \
|
||||
html/docfoot-script.html \
|
||||
scripts/doc-build.sh \
|
||||
package.json
|
||||
|
||||
@@ -70,7 +72,7 @@ dev: install
|
||||
link: uninstall
|
||||
node cli.js link -f
|
||||
|
||||
clean: ronnclean doc-clean uninstall
|
||||
clean: markedclean marked-manclean doc-clean uninstall
|
||||
rm -rf npmrc
|
||||
node cli.js cache clean
|
||||
|
||||
@@ -79,18 +81,22 @@ uninstall:
|
||||
|
||||
doc: $(mandocs) $(htmldocs)
|
||||
|
||||
ronnclean:
|
||||
rm -rf node_modules/ronn node_modules/.bin/ronn .building_ronn
|
||||
markedclean:
|
||||
rm -rf node_modules/marked node_modules/.bin/marked .building_marked
|
||||
|
||||
marked-manclean:
|
||||
rm -rf node_modules/marked-man node_modules/.bin/marked-man .building_marked-man
|
||||
|
||||
docclean: doc-clean
|
||||
doc-clean:
|
||||
rm -rf \
|
||||
.building_ronn \
|
||||
.building_marked \
|
||||
.building_marked-man \
|
||||
html/doc \
|
||||
html/api \
|
||||
man
|
||||
|
||||
# use `npm install ronn` for this to work.
|
||||
# use `npm install marked-man` for this to work.
|
||||
man/man1/npm-README.1: README.md scripts/doc-build.sh package.json
|
||||
@[ -d man/man1 ] || mkdir -p man/man1
|
||||
scripts/doc-build.sh $< $@
|
||||
@@ -150,11 +156,15 @@ html/doc/misc/%.html: doc/misc/%.md $(html_docdeps)
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
|
||||
marked: node_modules/.bin/marked
|
||||
|
||||
ronn: node_modules/.bin/ronn
|
||||
node_modules/.bin/marked:
|
||||
node cli.js install marked --no-global
|
||||
|
||||
node_modules/.bin/ronn:
|
||||
node cli.js install ronn --no-global
|
||||
marked-man: node_modules/.bin/marked-man
|
||||
|
||||
node_modules/.bin/marked-man:
|
||||
node cli.js install marked-man --no-global
|
||||
|
||||
doc: man
|
||||
|
||||
@@ -163,52 +173,15 @@ man: $(cli_docs) $(api_docs)
|
||||
test: doc
|
||||
node cli.js test
|
||||
|
||||
tag:
|
||||
npm tag npm@$(PUBLISHTAG) latest
|
||||
|
||||
publish: link doc
|
||||
@git push origin :v$(shell npm -v) 2>&1 || true
|
||||
@npm unpublish npm@$(shell npm -v) 2>&1 || true
|
||||
git clean -fd &&\
|
||||
git push origin &&\
|
||||
git push origin $(BRANCH) &&\
|
||||
git push origin --tags &&\
|
||||
npm publish &&\
|
||||
npm tag npm@$(shell npm -v) $(shell npm -v | awk -F. '{print $$1 "." $$2}') &&\
|
||||
make doc-publish &&\
|
||||
make zip-publish
|
||||
|
||||
docpublish: doc-publish
|
||||
doc-publish: doc
|
||||
# legacy urls
|
||||
for f in $$(find html/doc/{cli,files,misc}/ -name '*.html'); do \
|
||||
j=$$(basename $$f | sed 's|^npm-||g'); \
|
||||
if ! [ -f html/doc/$$j ] && [ $$j != README.html ] && [ $$j != index.html ]; then \
|
||||
perl -pi -e 's/ href="\.\.\// href="/g' <$$f >html/doc/$$j; \
|
||||
fi; \
|
||||
done
|
||||
mkdir -p html/api
|
||||
for f in $$(find html/doc/api/ -name '*.html'); do \
|
||||
j=$$(basename $$f | sed 's|^npm-||g'); \
|
||||
perl -pi -e 's/ href="\.\.\// href="/g' <$$f >html/api/$$j; \
|
||||
done
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/doc/* \
|
||||
node@npmjs.org:/home/node/npm-www/doc
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/static/webfonts/ \
|
||||
node@npmjs.org:/home/node/npm-www/static/webfonts
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/static/style.css \
|
||||
node@npmjs.org:/home/node/npm-www/static/
|
||||
#cleanup
|
||||
rm -rf html/api
|
||||
for f in html/doc/*.html; do \
|
||||
case $$f in \
|
||||
html/doc/README.html) continue ;; \
|
||||
html/doc/index.html) continue ;; \
|
||||
*) rm $$f ;; \
|
||||
esac; \
|
||||
done
|
||||
|
||||
zip-publish: release
|
||||
scp release/* node@nodejs.org:dist/npm/
|
||||
npm publish --tag=$(PUBLISHTAG)
|
||||
|
||||
release:
|
||||
@bash scripts/release.sh
|
||||
@@ -216,4 +189,4 @@ release:
|
||||
sandwich:
|
||||
@[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || (echo "make it yourself" && exit 13)
|
||||
|
||||
.PHONY: all latest install dev link doc clean uninstall test man doc-publish doc-clean docclean docpublish release zip-publish
|
||||
.PHONY: all latest install dev link doc clean uninstall test man doc-clean docclean release
|
||||
|
||||
73
deps/npm/README.md
vendored
73
deps/npm/README.md
vendored
@@ -1,6 +1,6 @@
|
||||
npm(1) -- node package manager
|
||||
==============================
|
||||
|
||||
[](https://travis-ci.org/npm/npm)
|
||||
## SYNOPSIS
|
||||
|
||||
This is just enough info to get you up and running.
|
||||
@@ -16,15 +16,15 @@ and prior, clone the git repo and dig through the old tags and branches.
|
||||
|
||||
## Super Easy Install
|
||||
|
||||
npm comes with node now.
|
||||
npm comes with [node](http://nodejs.org/download/) now.
|
||||
|
||||
### Windows Computers
|
||||
|
||||
Get the MSI. npm is in it.
|
||||
[Get the MSI](http://nodejs.org/download/). npm is in it.
|
||||
|
||||
### Apple Macintosh Computers
|
||||
|
||||
Get the pkg. npm is in it.
|
||||
[Get the pkg](http://nodejs.org/download/). npm is in it.
|
||||
|
||||
### Other Sorts of Unices
|
||||
|
||||
@@ -36,7 +36,11 @@ paths, etc.) then read on.
|
||||
## Fancy Install (Unix)
|
||||
|
||||
There's a pretty robust install script at
|
||||
<https://npmjs.org/install.sh>. You can download that and run it.
|
||||
<https://www.npmjs.org/install.sh>. You can download that and run it.
|
||||
|
||||
Here's an example using curl:
|
||||
|
||||
curl -L https://npmjs.org/install.sh | sh
|
||||
|
||||
### Slightly Fancier
|
||||
|
||||
@@ -169,58 +173,61 @@ help config` to learn about all the options you can set there.
|
||||
|
||||
## More Docs
|
||||
|
||||
Check out the [docs](https://npmjs.org/doc/),
|
||||
especially the [faq](https://npmjs.org/doc/faq.html).
|
||||
Check out the [docs](https://www.npmjs.org/doc/),
|
||||
especially the [faq](https://www.npmjs.org/doc/faq.html).
|
||||
|
||||
You can use the `npm help` command to read any of them.
|
||||
|
||||
If you're a developer, and you want to use npm to publish your program,
|
||||
you should [read this](https://npmjs.org/doc/developers.html)
|
||||
you should [read this](https://www.npmjs.org/doc/developers.html)
|
||||
|
||||
## Legal Stuff
|
||||
|
||||
"npm" and "the npm registry" are owned by Isaac Z. Schlueter.
|
||||
"npm" and "The npm Registry" are owned by npm, Inc.
|
||||
All rights reserved. See the included LICENSE file for more details.
|
||||
|
||||
"Node.js" and "node" are trademarks owned by Joyent, Inc. npm is not
|
||||
officially part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.
|
||||
"Node.js" and "node" are trademarks owned by Joyent, Inc.
|
||||
|
||||
The packages in the npm registry are not part of npm itself, and are the
|
||||
sole property of their respective maintainers. While every effort is
|
||||
made to ensure accountability, there is absolutely no guarantee,
|
||||
warrantee, or assertion made as to the quality, fitness for a specific
|
||||
purpose, or lack of malice in any given npm package. Modules
|
||||
published on the npm registry are not affiliated with or endorsed by
|
||||
Joyent, Inc., Isaac Z. Schlueter, Ryan Dahl, or the Node.js project.
|
||||
Modules published on the npm registry are not officially endorsed by
|
||||
npm, Inc. or the Node.js project.
|
||||
|
||||
If you have a complaint about a package in the npm registry, and cannot
|
||||
resolve it with the package owner, please express your concerns to
|
||||
Isaac Z. Schlueter at <i@izs.me>.
|
||||
Data published to the npm registry is not part of npm itself, and is
|
||||
the sole property of the publisher. While every effort is made to
|
||||
ensure accountability, there is absolutely no guarantee, warrantee, or
|
||||
assertion expressed or implied as to the quality, fitness for a
|
||||
specific purpose, or lack of malice in any given npm package.
|
||||
|
||||
### In plain english
|
||||
If you have a complaint about a package in the public npm registry,
|
||||
and cannot [resolve it with the package
|
||||
owner](https://www.npmjs.org/doc/misc/npm-disputes.html), please email
|
||||
<support@npmjs.com> and explain the situation.
|
||||
|
||||
This is mine; not my employer's, not Node's, not Joyent's, not Ryan
|
||||
Dahl's.
|
||||
Any data published to The npm Registry (including user account
|
||||
information) may be removed or modified at the sole discretion of the
|
||||
npm server administrators.
|
||||
|
||||
### In plainer english
|
||||
|
||||
npm is the property of npm, Inc.
|
||||
|
||||
If you publish something, it's yours, and you are solely accountable
|
||||
for it. Not me, not Node, not Joyent, not Ryan Dahl.
|
||||
for it.
|
||||
|
||||
If other people publish something, it's theirs. Not mine, not Node's,
|
||||
not Joyent's, not Ryan Dahl's.
|
||||
If other people publish something, it's theirs.
|
||||
|
||||
Yes, you can publish something evil. It will be removed promptly if
|
||||
reported, and we'll lose respect for you. But there is no vetting
|
||||
process for published modules.
|
||||
Users can publish Bad Stuff. It will be removed promptly if reported.
|
||||
But there is no vetting process for published modules, and you use
|
||||
them at your own risk. Please inspect the source.
|
||||
|
||||
If this concerns you, inspect the source before using packages.
|
||||
If you publish Bad Stuff, we may delete it from the registry, or even
|
||||
ban your account in extreme cases. So don't do that.
|
||||
|
||||
## BUGS
|
||||
|
||||
When you find issues, please report them:
|
||||
|
||||
* web:
|
||||
<https://github.com/isaacs/npm/issues>
|
||||
<https://github.com/npm/npm/issues>
|
||||
* email:
|
||||
<npm-@googlegroups.com>
|
||||
|
||||
|
||||
1
deps/npm/bin/npm
vendored
1
deps/npm/bin/npm
vendored
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
(set -o igncr) 2>/dev/null && set -o igncr; # cygwin encoding fix
|
||||
|
||||
basedir=`dirname "$0"`
|
||||
|
||||
|
||||
13
deps/npm/bin/npm-cli.js
vendored
13
deps/npm/bin/npm-cli.js
vendored
@@ -19,8 +19,7 @@ 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")
|
||||
var path = require("path")
|
||||
, npm = require("../lib/npm.js")
|
||||
, npmconf = require("npmconf")
|
||||
, errorHandler = require("../lib/utils/error-handler.js")
|
||||
@@ -58,16 +57,6 @@ if (conf.versions) {
|
||||
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")
|
||||
, nodeVer = process.version
|
||||
, reqVer = npm.nodeVersionRequired
|
||||
if (reqVer && !semver.satisfies(nodeVer, reqVer)) {
|
||||
return errorHandler(new Error(
|
||||
"npm doesn't work with node " + nodeVer
|
||||
+ "\nRequired: node@" + reqVer), true)
|
||||
}
|
||||
|
||||
process.on("uncaughtException", errorHandler)
|
||||
|
||||
if (conf.usage && npm.command !== "help") {
|
||||
|
||||
30
deps/npm/doc/api/npm-cache.md
vendored
Normal file
30
deps/npm/doc/api/npm-cache.md
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
npm-cache(3) -- manage the npm cache programmatically
|
||||
=====================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.cache([args], callback)
|
||||
|
||||
// helpers
|
||||
npm.commands.cache.clean([args], callback)
|
||||
npm.commands.cache.add([args], callback)
|
||||
npm.commands.cache.read(name, version, forceBypass, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This acts much the same ways as the npm-cache(1) command line
|
||||
functionality.
|
||||
|
||||
The callback is called with the package.json data of the thing that is
|
||||
eventually added to or read from the cache.
|
||||
|
||||
The top level `npm.commands.cache(...)` functionality is a public
|
||||
interface, and like all commands on the `npm.commands` object, it will
|
||||
match the command line behavior exactly.
|
||||
|
||||
However, the cache folder structure and the cache helper functions are
|
||||
considered **internal** API surface, and as such, may change in future
|
||||
releases of npm, potentially without warning or significant version
|
||||
incrementation.
|
||||
|
||||
Use at your own risk.
|
||||
4
deps/npm/doc/api/npm-link.md
vendored
4
deps/npm/doc/api/npm-link.md
vendored
@@ -3,8 +3,8 @@ npm-link(3) -- Symlink a package folder
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.command.link(callback)
|
||||
npm.command.link(packages, callback)
|
||||
npm.commands.link(callback)
|
||||
npm.commands.link(packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
|
||||
2
deps/npm/doc/api/npm.md
vendored
2
deps/npm/doc/api/npm.md
vendored
@@ -4,7 +4,7 @@ npm(3) -- node package manager
|
||||
## SYNOPSIS
|
||||
|
||||
var npm = require("npm")
|
||||
npm.load([configObject], function (er, npm) {
|
||||
npm.load([configObject, ]function (er, npm) {
|
||||
// use the npm object, now that it's loaded.
|
||||
|
||||
npm.config.set(key, val)
|
||||
|
||||
27
deps/npm/doc/cli/npm-adduser.md
vendored
27
deps/npm/doc/cli/npm-adduser.md
vendored
@@ -3,30 +3,47 @@ npm-adduser(1) -- Add a registry user account
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm adduser
|
||||
npm adduser [--registry=url] [--scope=@orgname]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Create or verify a user named `<username>` in the npm registry, and
|
||||
save the credentials to the `.npmrc` file.
|
||||
Create or verify a user named `<username>` in the specified registry, and
|
||||
save the credentials to the `.npmrc` file. If no registry is specified,
|
||||
the default registry will be used (see `npm-config(7)`).
|
||||
|
||||
The username, password, and email are read in from prompts.
|
||||
|
||||
You may use this command to change your email address, but not username
|
||||
or password.
|
||||
|
||||
To reset your password, go to <https://npmjs.org/forgot>
|
||||
To reset your password, go to <https://www.npmjs.org/forgot>
|
||||
|
||||
You may use this command multiple times with the same user account to
|
||||
authorize on a new machine.
|
||||
|
||||
`npm login` is an alias to `adduser` and behaves exactly the same way.
|
||||
|
||||
## CONFIGURATION
|
||||
|
||||
### registry
|
||||
|
||||
Default: http://registry.npmjs.org/
|
||||
|
||||
The base URL of the npm package registry.
|
||||
The base URL of the npm package registry. If `scope` is also specified,
|
||||
this registry will only be used for packages with that scope. See `npm-scope(7)`.
|
||||
|
||||
### scope
|
||||
|
||||
Default: none
|
||||
|
||||
If specified, the user and login credentials given will be associated
|
||||
with the specified scope. See `npm-scope(7)`. You can use both at the same time,
|
||||
e.g.
|
||||
|
||||
npm adduser --registry=http://myregistry.example.com --scope=@myco
|
||||
|
||||
This will set a registry for the given scope and login or create a user for
|
||||
that registry at the same time.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
|
||||
8
deps/npm/doc/cli/npm-cache.md
vendored
8
deps/npm/doc/cli/npm-cache.md
vendored
@@ -37,16 +37,14 @@ npm stores cache data in the directory specified in `npm config get cache`.
|
||||
For each package that is added to the cache, three pieces of information are
|
||||
stored in `{cache}/{name}/{version}`:
|
||||
|
||||
* .../package/:
|
||||
A folder containing the package contents as they appear in the tarball.
|
||||
* .../package.json:
|
||||
The package.json file, as npm sees it, with overlays applied and a _id attribute.
|
||||
* .../package/package.json:
|
||||
The package.json file, as npm sees it.
|
||||
* .../package.tgz:
|
||||
The tarball for that version.
|
||||
|
||||
Additionally, whenever a registry request is made, a `.cache.json` file
|
||||
is placed at the corresponding URI, to store the ETag and the requested
|
||||
data.
|
||||
data. This is stored in `{cache}/{hostname}/{path}/.cache.json`.
|
||||
|
||||
Commands that make non-essential registry requests (such as `search` and
|
||||
`view`, or the completion scripts) generally specify a minimum timeout.
|
||||
|
||||
9
deps/npm/doc/cli/npm-docs.md
vendored
9
deps/npm/doc/cli/npm-docs.md
vendored
@@ -3,17 +3,18 @@ npm-docs(1) -- Docs for a package in a web browser maybe
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm docs <pkgname>
|
||||
npm docs [<pkgname> [<pkgname> ...]]
|
||||
npm docs (with no args in a package dir)
|
||||
npm home <pkgname>
|
||||
npm home [<pkgname> [<pkgname> ...]]
|
||||
npm home (with no args in a package dir)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command tries to guess at the likely location of a package's
|
||||
documentation URL, and then tries to open it using the `--browser`
|
||||
config param. If no package name is provided, it will search for
|
||||
a `package.json` in the current folder and use the `name` property.
|
||||
config param. You can pass multiple package names at once. If no
|
||||
package name is provided, it will search for a `package.json` in
|
||||
the current folder and use the `name` property.
|
||||
|
||||
## CONFIGURATION
|
||||
|
||||
|
||||
2
deps/npm/doc/cli/npm-explore.md
vendored
2
deps/npm/doc/cli/npm-explore.md
vendored
@@ -3,7 +3,7 @@ npm-explore(1) -- Browse an installed package
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm explore <name>[@<version>] [ -- <cmd>]
|
||||
npm explore <name> [ -- <cmd>]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
|
||||
62
deps/npm/doc/cli/npm-install.md
vendored
62
deps/npm/doc/cli/npm-install.md
vendored
@@ -7,10 +7,10 @@ npm-install(1) -- Install a package
|
||||
npm install <tarball file>
|
||||
npm install <tarball url>
|
||||
npm install <folder>
|
||||
npm install <name> [--save|--save-dev|--save-optional]
|
||||
npm install <name>@<tag>
|
||||
npm install <name>@<version>
|
||||
npm install <name>@<version range>
|
||||
npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact]
|
||||
npm install [@<scope>/]<name>@<tag>
|
||||
npm install [@<scope>/]<name>@<version>
|
||||
npm install [@<scope>/]<name>@<version range>
|
||||
npm i (with any of the previous argument usage)
|
||||
|
||||
## DESCRIPTION
|
||||
@@ -24,7 +24,7 @@ A `package` is:
|
||||
* a) a folder containing a program described by a package.json file
|
||||
* b) a gzipped tarball containing (a)
|
||||
* c) a url that resolves to (b)
|
||||
* d) a `<name>@<version>` that is published on the registry with (c)
|
||||
* d) a `<name>@<version>` that is published on the registry (see `npm-registry(7)`) with (c)
|
||||
* e) a `<name>@<tag>` that points to (d)
|
||||
* f) a `<name>` that has a "latest" tag satisfying (e)
|
||||
* g) a `<git remote url>` that resolves to (b)
|
||||
@@ -70,7 +70,7 @@ after packing it up into a tarball (b).
|
||||
|
||||
npm install https://github.com/indexzero/forever/tarball/v0.5.6
|
||||
|
||||
* `npm install <name> [--save|--save-dev|--save-optional]`:
|
||||
* `npm install [@<scope>/]<name> [--save|--save-dev|--save-optional]`:
|
||||
|
||||
Do a `<name>@<tag>` install, where `<tag>` is the "tag" config. (See
|
||||
`npm-config(7)`.)
|
||||
@@ -91,18 +91,36 @@ after packing it up into a tarball (b).
|
||||
|
||||
* `--save-optional`: Package will appear in your `optionalDependencies`.
|
||||
|
||||
When using any of the above options to save dependencies to your
|
||||
package.json, there is an additional, optional flag:
|
||||
|
||||
* `--save-exact`: Saved dependencies will be configured with an
|
||||
exact version rather than using npm's default semver range
|
||||
operator.
|
||||
|
||||
`<scope>` is optional. The package will be downloaded from the registry
|
||||
associated with the specified scope. If no registry is associated with
|
||||
the given scope the default registry is assumed. See `npm-scope(7)`.
|
||||
|
||||
Note: if you do not include the @-symbol on your scope name, npm will
|
||||
interpret this as a GitHub repository instead, see below. Scopes names
|
||||
must also be followed by a slash.
|
||||
|
||||
Examples:
|
||||
|
||||
npm install sax --save
|
||||
npm install githubname/reponame
|
||||
npm install @myorg/privatepackage
|
||||
npm install node-tap --save-dev
|
||||
npm install dtrace-provider --save-optional
|
||||
npm install readable-stream --save --save-exact
|
||||
|
||||
|
||||
**Note**: If there is a file or folder named `<name>` in the current
|
||||
working directory, then it will try to install that, and only try to
|
||||
fetch the package by name if it is not valid.
|
||||
|
||||
* `npm install <name>@<tag>`:
|
||||
* `npm install [@<scope>/]<name>@<tag>`:
|
||||
|
||||
Install the version of the package that is referenced by the specified tag.
|
||||
If the tag does not exist in the registry data for that package, then this
|
||||
@@ -111,17 +129,19 @@ after packing it up into a tarball (b).
|
||||
Example:
|
||||
|
||||
npm install sax@latest
|
||||
npm install @myorg/mypackage@latest
|
||||
|
||||
* `npm install <name>@<version>`:
|
||||
* `npm install [@<scope>/]<name>@<version>`:
|
||||
|
||||
Install the specified version of the package. This will fail if the version
|
||||
has not been published to the registry.
|
||||
Install the specified version of the package. This will fail if the
|
||||
version has not been published to the registry.
|
||||
|
||||
Example:
|
||||
|
||||
npm install sax@0.1.1
|
||||
npm install @myorg/privatepackage@1.5.0
|
||||
|
||||
* `npm install <name>@<version range>`:
|
||||
* `npm install [@<scope>/]<name>@<version range>`:
|
||||
|
||||
Install a version of the package matching the specified version range. This
|
||||
will follow the same rules for resolving dependencies described in `package.json(5)`.
|
||||
@@ -132,6 +152,19 @@ after packing it up into a tarball (b).
|
||||
Example:
|
||||
|
||||
npm install sax@">=0.1.0 <0.2.0"
|
||||
npm install @myorg/privatepackage@">=0.1.0 <0.2.0"
|
||||
|
||||
* `npm install <githubname>/<githubrepo>`:
|
||||
|
||||
Install the package at `https://github.com/githubname/githubrepo" by
|
||||
attempting to clone it using `git`.
|
||||
|
||||
Example:
|
||||
|
||||
npm install mygithubuser/myproject
|
||||
|
||||
To reference a package in a git repo that is not on GitHub, see git
|
||||
remote urls below.
|
||||
|
||||
* `npm install <git remote url>`:
|
||||
|
||||
@@ -146,9 +179,9 @@ after packing it up into a tarball (b).
|
||||
|
||||
Examples:
|
||||
|
||||
git+ssh://git@github.com:isaacs/npm.git#v1.0.27
|
||||
git+https://isaacs@github.com/isaacs/npm.git
|
||||
git://github.com/isaacs/npm.git#v1.0.27
|
||||
git+ssh://git@github.com:npm/npm.git#v1.0.27
|
||||
git+https://isaacs@github.com/npm/npm.git
|
||||
git://github.com/npm/npm.git#v1.0.27
|
||||
|
||||
You may combine multiple arguments, and even multiple types of arguments.
|
||||
For example:
|
||||
@@ -246,7 +279,6 @@ affects a real use-case, it will be investigated.
|
||||
* npm-config(7)
|
||||
* npmrc(5)
|
||||
* npm-registry(7)
|
||||
* npm-folders(5)
|
||||
* npm-tag(1)
|
||||
* npm-rm(1)
|
||||
* npm-shrinkwrap(1)
|
||||
|
||||
18
deps/npm/doc/cli/npm-link.md
vendored
18
deps/npm/doc/cli/npm-link.md
vendored
@@ -4,7 +4,7 @@ npm-link(1) -- Symlink a package folder
|
||||
## SYNOPSIS
|
||||
|
||||
npm link (in package folder)
|
||||
npm link <pkgname>
|
||||
npm link [@<scope>/]<pkgname>
|
||||
npm ln (with any of the previous argument usage)
|
||||
|
||||
## DESCRIPTION
|
||||
@@ -12,7 +12,8 @@ npm-link(1) -- Symlink a package folder
|
||||
Package linking is a two-step process.
|
||||
|
||||
First, `npm link` in a package folder will create a globally-installed
|
||||
symbolic link from `prefix/package-name` to the current folder.
|
||||
symbolic link from `prefix/package-name` to the current folder (see
|
||||
`npm-config(7)` for the value of `prefix`).
|
||||
|
||||
Next, in some other location, `npm link package-name` will create a
|
||||
symlink from the local `node_modules` folder to the global symlink.
|
||||
@@ -20,12 +21,14 @@ symlink from the local `node_modules` folder to the global symlink.
|
||||
Note that `package-name` is taken from `package.json`,
|
||||
not from directory name.
|
||||
|
||||
The package name can be optionally prefixed with a scope. See `npm-scope(7)`.
|
||||
The scope must by preceded by an @-symbol and followed by a slash.
|
||||
|
||||
When creating tarballs for `npm publish`, the linked packages are
|
||||
"snapshotted" to their current state by resolving the symbolic links.
|
||||
|
||||
This is
|
||||
handy for installing your own stuff, so that you can work on it and test it
|
||||
iteratively without having to continually rebuild.
|
||||
This is handy for installing your own stuff, so that you can work on it and
|
||||
test it iteratively without having to continually rebuild.
|
||||
|
||||
For example:
|
||||
|
||||
@@ -51,6 +54,11 @@ The second line is the equivalent of doing:
|
||||
That is, it first creates a global link, and then links the global
|
||||
installation target into your project's `node_modules` folder.
|
||||
|
||||
If your linked package is scoped (see `npm-scope(7)`) your link command must
|
||||
include that scope, e.g.
|
||||
|
||||
npm link @myorg/privatepackage
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-developers(7)
|
||||
|
||||
14
deps/npm/doc/cli/npm-ls.md
vendored
14
deps/npm/doc/cli/npm-ls.md
vendored
@@ -3,10 +3,10 @@ npm-ls(1) -- List installed packages
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm list [<pkg> ...]
|
||||
npm ls [<pkg> ...]
|
||||
npm la [<pkg> ...]
|
||||
npm ll [<pkg> ...]
|
||||
npm list [[@<scope>/]<pkg> ...]
|
||||
npm ls [[@<scope>/]<pkg> ...]
|
||||
npm la [[@<scope>/]<pkg> ...]
|
||||
npm ll [[@<scope>/]<pkg> ...]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
@@ -61,6 +61,12 @@ Show parseable output instead of tree view.
|
||||
List packages in the global install prefix instead of in the current
|
||||
project.
|
||||
|
||||
### depth
|
||||
|
||||
* Type: Int
|
||||
|
||||
Max display depth of the dependency tree.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-config(1)
|
||||
|
||||
37
deps/npm/doc/cli/npm-outdated.md
vendored
37
deps/npm/doc/cli/npm-outdated.md
vendored
@@ -14,6 +14,43 @@ The resulting field 'wanted' shows the latest version according to the
|
||||
version specified in the package.json, the field 'latest' the very latest
|
||||
version of the package.
|
||||
|
||||
## CONFIGURATION
|
||||
|
||||
### json
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Show information in JSON format.
|
||||
|
||||
### long
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Show extended information.
|
||||
|
||||
### parseable
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Show parseable output instead of tree view.
|
||||
|
||||
### global
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Check packages in the global install prefix instead of in the current
|
||||
project.
|
||||
|
||||
### depth
|
||||
|
||||
* Type: Int
|
||||
|
||||
Max depth for checking dependency tree.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-update(1)
|
||||
|
||||
8
deps/npm/doc/cli/npm-prefix.md
vendored
8
deps/npm/doc/cli/npm-prefix.md
vendored
@@ -3,11 +3,15 @@ npm-prefix(1) -- Display prefix
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm prefix
|
||||
npm prefix [-g]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Print the prefix to standard out.
|
||||
Print the local prefix to standard out. This is the closest parent directory
|
||||
to contain a package.json file unless `-g` is also specified.
|
||||
|
||||
If `-g` is specified, this will be the value of the global prefix. See
|
||||
`npm-config(7)` for more detail.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
|
||||
19
deps/npm/doc/cli/npm-publish.md
vendored
19
deps/npm/doc/cli/npm-publish.md
vendored
@@ -4,13 +4,17 @@ npm-publish(1) -- Publish a package
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm publish <tarball>
|
||||
npm publish <folder>
|
||||
npm publish <tarball> [--tag <tag>]
|
||||
npm publish <folder> [--tag <tag>]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Publishes a package to the registry so that it can be installed by name.
|
||||
|
||||
By default npm will publish to the public registry. This can be overridden by
|
||||
specifying a different default registry or using a `npm-scope(7)` in the name
|
||||
(see `package.json(5)`).
|
||||
|
||||
* `<folder>`:
|
||||
A folder containing a package.json file
|
||||
|
||||
@@ -18,8 +22,17 @@ Publishes a package to the registry so that it can be installed by name.
|
||||
A url or file path to a gzipped tar archive containing a single folder
|
||||
with a package.json file inside.
|
||||
|
||||
* `[--tag <tag>]`
|
||||
Registers the published package with the given tag, such that `npm install
|
||||
<name>@<tag>` will install this version. By default, `npm publish` updates
|
||||
and `npm install` installs the `latest` tag.
|
||||
|
||||
Fails if the package name and version combination already exists in
|
||||
the registry. Overwrites when the "--force" flag is set.
|
||||
the specified registry.
|
||||
|
||||
Once a package is published with a given name and version, that
|
||||
specific name and version combination can never be used again, even if
|
||||
it is removed with npm-unpublish(1).
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
|
||||
2
deps/npm/doc/cli/npm-restart.md
vendored
2
deps/npm/doc/cli/npm-restart.md
vendored
@@ -3,7 +3,7 @@ npm-restart(1) -- Start a package
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm restart <name>
|
||||
npm restart [-- <args>]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
|
||||
8
deps/npm/doc/cli/npm-run-script.md
vendored
8
deps/npm/doc/cli/npm-run-script.md
vendored
@@ -3,11 +3,15 @@ npm-run-script(1) -- Run arbitrary package scripts
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm run-script <script> <name>
|
||||
npm run-script [command] [-- <args>]
|
||||
npm run [command] [-- <args>]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This runs an arbitrary command from a package's "scripts" object.
|
||||
This runs an arbitrary command from a package's `"scripts"` object.
|
||||
If no package name is provided, it will search for a `package.json`
|
||||
in the current folder and use its `"scripts"` object. If no `"command"`
|
||||
is provided, it will list the available top level scripts.
|
||||
|
||||
It is used by the test, start, restart, and stop commands, but can be
|
||||
called directly, as well.
|
||||
|
||||
14
deps/npm/doc/cli/npm-search.md
vendored
14
deps/npm/doc/cli/npm-search.md
vendored
@@ -3,7 +3,7 @@ npm-search(1) -- Search for packages
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm search [search terms ...]
|
||||
npm search [--long] [search terms ...]
|
||||
npm s [search terms ...]
|
||||
npm se [search terms ...]
|
||||
|
||||
@@ -15,6 +15,18 @@ If a term starts with `/`, then it's interpreted as a regular expression.
|
||||
A trailing `/` will be ignored in this case. (Note that many regular
|
||||
expression characters must be escaped or quoted in most shells.)
|
||||
|
||||
## CONFIGURATION
|
||||
|
||||
### long
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Display full package descriptions and other long text across multiple
|
||||
lines. When disabled (default) search results are truncated to fit
|
||||
neatly on a single line. Modules with extremely long names will
|
||||
fall on multiple lines.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-registry(7)
|
||||
|
||||
9
deps/npm/doc/cli/npm-shrinkwrap.md
vendored
9
deps/npm/doc/cli/npm-shrinkwrap.md
vendored
@@ -163,15 +163,6 @@ shrinkwrap will implicitly be included in A's shrinkwrap.
|
||||
|
||||
### Caveats
|
||||
|
||||
Shrinkwrap files only lock down package versions, not actual package
|
||||
contents. While discouraged, a package author can republish an
|
||||
existing version of a package, causing shrinkwrapped packages using
|
||||
that version to pick up different code than they were before. If you
|
||||
want to avoid any risk that a byzantine author replaces a package
|
||||
you're using with code that breaks your application, you could modify
|
||||
the shrinkwrap file to use git URL references rather than version
|
||||
numbers so that npm always fetches all packages from git.
|
||||
|
||||
If you wish to lock down the specific bytes included in a package, for
|
||||
example to have 100% confidence in being able to reproduce a
|
||||
deployment or build, then you ought to check your dependencies into
|
||||
|
||||
2
deps/npm/doc/cli/npm-start.md
vendored
2
deps/npm/doc/cli/npm-start.md
vendored
@@ -3,7 +3,7 @@ npm-start(1) -- Start a package
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm start <name>
|
||||
npm start [-- <args>]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
|
||||
2
deps/npm/doc/cli/npm-stop.md
vendored
2
deps/npm/doc/cli/npm-stop.md
vendored
@@ -3,7 +3,7 @@ npm-stop(1) -- Stop a package
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm stop <name>
|
||||
npm stop [-- <args>]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
|
||||
4
deps/npm/doc/cli/npm-test.md
vendored
4
deps/npm/doc/cli/npm-test.md
vendored
@@ -3,8 +3,8 @@ npm-test(1) -- Test a package
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm test <name>
|
||||
npm tst <name>
|
||||
npm test [-- <args>]
|
||||
npm tst [-- <args>]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
|
||||
29
deps/npm/doc/cli/npm-uninstall.md
vendored
29
deps/npm/doc/cli/npm-uninstall.md
vendored
@@ -3,14 +3,39 @@ npm-rm(1) -- Remove a package
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm rm <name>
|
||||
npm uninstall <name>
|
||||
npm uninstall [@<scope>/]<package> [--save|--save-dev|--save-optional]
|
||||
npm rm (with any of the previous argument usage)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This uninstalls a package, completely removing everything npm installed
|
||||
on its behalf.
|
||||
|
||||
Example:
|
||||
|
||||
npm uninstall sax
|
||||
|
||||
In global mode (ie, with `-g` or `--global` appended to the command),
|
||||
it uninstalls the current package context as a global package.
|
||||
|
||||
`npm uninstall` takes 3 exclusive, optional flags which save or update
|
||||
the package version in your main package.json:
|
||||
|
||||
* `--save`: Package will be removed from your `dependencies`.
|
||||
|
||||
* `--save-dev`: Package will be removed from your `devDependencies`.
|
||||
|
||||
* `--save-optional`: Package will be removed from your `optionalDependencies`.
|
||||
|
||||
Scope is optional and follows the usual rules for `npm-scope(7)`.
|
||||
|
||||
Examples:
|
||||
|
||||
npm uninstall sax --save
|
||||
npm uninstall @myorg/privatepackage --save
|
||||
npm uninstall node-tap --save-dev
|
||||
npm uninstall dtrace-provider --save-optional
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-prune(1)
|
||||
|
||||
8
deps/npm/doc/cli/npm-unpublish.md
vendored
8
deps/npm/doc/cli/npm-unpublish.md
vendored
@@ -3,7 +3,7 @@ npm-unpublish(1) -- Remove a package from the registry
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm unpublish <name>[@<version>]
|
||||
npm unpublish [@<scope>/]<name>[@<version>]
|
||||
|
||||
## WARNING
|
||||
|
||||
@@ -23,6 +23,12 @@ entry and removing the tarball.
|
||||
If no version is specified, or if all versions are removed then
|
||||
the root package entry is removed from the registry entirely.
|
||||
|
||||
Even if a package version is unpublished, that specific name and
|
||||
version combination can never be reused. In order to publish the
|
||||
package again, a new version number must be used.
|
||||
|
||||
The scope is optional and follows the usual rules for `npm-scope(7)`.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-deprecate(1)
|
||||
|
||||
7
deps/npm/doc/cli/npm-update.md
vendored
7
deps/npm/doc/cli/npm-update.md
vendored
@@ -12,8 +12,11 @@ This command will update all the packages listed to the latest version
|
||||
|
||||
It will also install missing packages.
|
||||
|
||||
If the `-g` flag is specified, this command will update globally installed packages.
|
||||
If no package name is specified, all packages in the specified location (global or local) will be updated.
|
||||
If the `-g` flag is specified, this command will update globally installed
|
||||
packages.
|
||||
|
||||
If no package name is specified, all packages in the specified location (global
|
||||
or local) will be updated.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
|
||||
10
deps/npm/doc/cli/npm-version.md
vendored
10
deps/npm/doc/cli/npm-version.md
vendored
@@ -3,17 +3,17 @@ npm-version(1) -- Bump a package version
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm version [<newversion> | major | minor | patch]
|
||||
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Run this in a package directory to bump the version and write the new
|
||||
data back to the package.json file.
|
||||
|
||||
The `newversion` argument should be a valid semver string, *or* a valid
|
||||
second argument to semver.inc (one of "patch", "minor", or
|
||||
"major"). In the second case, the existing version will be incremented
|
||||
by 1 in the specified field.
|
||||
The `newversion` argument should be a valid semver string, *or* a
|
||||
valid second argument to semver.inc (one of "patch", "minor", "major",
|
||||
"prepatch", "preminor", "premajor", "prerelease"). In the second case,
|
||||
the existing version will be incremented by 1 in the specified field.
|
||||
|
||||
If run in a git repo, it will also create a version commit and tag, and
|
||||
fail if the repo is not clean.
|
||||
|
||||
4
deps/npm/doc/cli/npm-view.md
vendored
4
deps/npm/doc/cli/npm-view.md
vendored
@@ -3,8 +3,8 @@ npm-view(1) -- View registry info
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm view <name>[@<version>] [<field>[.<subfield>]...]
|
||||
npm v <name>[@<version>] [<field>[.<subfield>]...]
|
||||
npm view [@<scope>/]<name>[@<version>] [<field>[.<subfield>]...]
|
||||
npm v [@<scope>/]<name>[@<version>] [<field>[.<subfield>]...]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
|
||||
20
deps/npm/doc/cli/npm.md
vendored
20
deps/npm/doc/cli/npm.md
vendored
@@ -31,6 +31,22 @@ Use `npm install blerg` to install the latest version of "blerg". Check out
|
||||
Use the `npm search` command to show everything that's available.
|
||||
Use `npm ls` to show everything you've installed.
|
||||
|
||||
## DEPENDENCIES
|
||||
|
||||
If a package references to another package with a git URL, npm depends
|
||||
on a preinstalled git.
|
||||
|
||||
If one of the packages npm tries to install is a native node module and
|
||||
requires compiling of C++ Code, npm will use
|
||||
[node-gyp](https://github.com/TooTallNate/node-gyp) for that task.
|
||||
For a Unix system, [node-gyp](https://github.com/TooTallNate/node-gyp)
|
||||
needs Python, make and a buildchain like GCC. On Windows,
|
||||
Python and Microsoft Visual Studio C++ is needed. Python 3 is
|
||||
not supported by [node-gyp](https://github.com/TooTallNate/node-gyp).
|
||||
For more information visit
|
||||
[the node-gyp repository](https://github.com/TooTallNate/node-gyp) and
|
||||
the [node-gyp Wiki](https://github.com/TooTallNate/node-gyp/wiki).
|
||||
|
||||
## DIRECTORIES
|
||||
|
||||
See `npm-folders(5)` to learn about where npm puts stuff.
|
||||
@@ -114,7 +130,7 @@ easily by doing `npm view npm contributors`.
|
||||
If you would like to contribute, but don't know what to work on, check
|
||||
the issues list or ask on the mailing list.
|
||||
|
||||
* <http://github.com/isaacs/npm/issues>
|
||||
* <http://github.com/npm/npm/issues>
|
||||
* <npm-@googlegroups.com>
|
||||
|
||||
## BUGS
|
||||
@@ -122,7 +138,7 @@ the issues list or ask on the mailing list.
|
||||
When you find issues, please report them:
|
||||
|
||||
* web:
|
||||
<http://github.com/isaacs/npm/issues>
|
||||
<http://github.com/npm/npm/issues>
|
||||
* email:
|
||||
<npm-@googlegroups.com>
|
||||
|
||||
|
||||
6
deps/npm/doc/files/npm-folders.md
vendored
6
deps/npm/doc/files/npm-folders.md
vendored
@@ -42,6 +42,12 @@ Global installs on Unix systems go to `{prefix}/lib/node_modules`.
|
||||
Global installs on Windows go to `{prefix}/node_modules` (that is, no
|
||||
`lib` folder.)
|
||||
|
||||
Scoped packages are installed the same way, except they are grouped together
|
||||
in a sub-folder of the relevant `node_modules` folder with the name of that
|
||||
scope prefix by the @ symbol, e.g. `npm install @myorg/package` would place
|
||||
the package in `{prefix}/node_modules/@myorg/package`. See `scopes(7)` for
|
||||
more details.
|
||||
|
||||
If you wish to `require()` a package, then install it locally.
|
||||
|
||||
### Executables
|
||||
|
||||
14
deps/npm/doc/files/npmrc.md
vendored
14
deps/npm/doc/files/npmrc.md
vendored
@@ -13,8 +13,9 @@ For a list of available configuration options, see npm-config(7).
|
||||
|
||||
## FILES
|
||||
|
||||
The three relevant files are:
|
||||
The four relevant files are:
|
||||
|
||||
* per-project config file (/path/to/my/project/.npmrc)
|
||||
* per-user config file (~/.npmrc)
|
||||
* global config file ($PREFIX/npmrc)
|
||||
* npm builtin config file (/path/to/npm/npmrc)
|
||||
@@ -29,6 +30,17 @@ Each of these files is loaded, and config options are resolved in
|
||||
priority order. For example, a setting in the userconfig file would
|
||||
override the setting in the globalconfig file.
|
||||
|
||||
### Per-project config file
|
||||
|
||||
When working locally in a project, a `.npmrc` file in the root of the
|
||||
project (ie, a sibling of `node_modules` and `package.json`) will set
|
||||
config values specific to this project.
|
||||
|
||||
Note that this only applies to the root of the project that you're
|
||||
running npm in. It has no effect when your module is published. For
|
||||
example, you can't publish a module that forces itself to install
|
||||
globally, or in a different location.
|
||||
|
||||
### Per-user config file
|
||||
|
||||
`$HOME/.npmrc` (or the `userconfig` param, if set in the environment
|
||||
|
||||
99
deps/npm/doc/files/package.json.md
vendored
99
deps/npm/doc/files/package.json.md
vendored
@@ -30,6 +30,9 @@ The name is what your thing is called. Some tips:
|
||||
* You may want to check the npm registry to see if there's something by that name
|
||||
already, before you get too attached to it. http://registry.npmjs.org/
|
||||
|
||||
A name can be optionally prefixed by a scope, e.g. `@myorg/mypackage`. See
|
||||
`npm-scope(7)` for more detail.
|
||||
|
||||
## version
|
||||
|
||||
The *most* important things in your package.json are the name and version fields.
|
||||
@@ -257,7 +260,7 @@ Do it like this:
|
||||
|
||||
"repository" :
|
||||
{ "type" : "git"
|
||||
, "url" : "http://github.com/isaacs/npm.git"
|
||||
, "url" : "http://github.com/npm/npm.git"
|
||||
}
|
||||
|
||||
"repository" :
|
||||
@@ -311,6 +314,7 @@ See semver(7) for more details about specifying version ranges.
|
||||
* `<version`
|
||||
* `<=version`
|
||||
* `~version` "Approximately equivalent to version" See semver(7)
|
||||
* `^version` "Compatible with version" See semver(7)
|
||||
* `1.2.x` 1.2.0, 1.2.1, etc., but not 1.3.0
|
||||
* `http://...` See 'URLs as Dependencies' below
|
||||
* `*` Matches any version
|
||||
@@ -319,6 +323,8 @@ See semver(7) for more details about specifying version ranges.
|
||||
* `range1 || range2` Passes if either range1 or range2 are satisfied.
|
||||
* `git...` See 'Git URLs as Dependencies' below
|
||||
* `user/repo` See 'GitHub URLs' below
|
||||
* `tag` A specific version tagged and published as `tag` See `npm-tag(1)`
|
||||
* `path/path/path` See Local Paths below
|
||||
|
||||
For example, these are all valid:
|
||||
|
||||
@@ -333,6 +339,8 @@ For example, these are all valid:
|
||||
, "elf" : "~1.2.3"
|
||||
, "two" : "2.x"
|
||||
, "thr" : "3.3.x"
|
||||
, "lat" : "latest"
|
||||
, "dyl" : "~/projects/dyl"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -360,15 +368,28 @@ an argument to `git checkout`. The default is `master`.
|
||||
|
||||
As of version 1.1.65, you can refer to GitHub urls as just "foo": "user/foo-project". For example:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "foo",
|
||||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"express": "visionmedia/express"
|
||||
}
|
||||
}
|
||||
```
|
||||
{
|
||||
"name": "foo",
|
||||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"express": "visionmedia/express"
|
||||
}
|
||||
}
|
||||
|
||||
## Local Paths
|
||||
|
||||
As of version 2.0.0 you can provide a path to a local directory that
|
||||
contains a package. Local paths can be in the form:
|
||||
|
||||
../foo/bar
|
||||
~/foo/bar
|
||||
./foo/bar
|
||||
/foo/bar
|
||||
|
||||
This feature is helpful for local offline development and creating
|
||||
tests that require npm installing where you don't want to hit an
|
||||
external server, but should not be used when publishing packages
|
||||
to the public registry.
|
||||
|
||||
## devDependencies
|
||||
|
||||
@@ -389,25 +410,57 @@ script to do this, and make the required package a devDependency.
|
||||
|
||||
For example:
|
||||
|
||||
```json
|
||||
{ "name": "ethopia-waza",
|
||||
"description": "a delightfully fruity coffee varietal",
|
||||
"version": "1.2.3",
|
||||
"devDependencies": {
|
||||
"coffee-script": "~1.6.3"
|
||||
},
|
||||
"scripts": {
|
||||
"prepublish": "coffee -o lib/ -c src/waza.coffee"
|
||||
},
|
||||
"main": "lib/waza.js"
|
||||
}
|
||||
```
|
||||
{ "name": "ethopia-waza",
|
||||
"description": "a delightfully fruity coffee varietal",
|
||||
"version": "1.2.3",
|
||||
"devDependencies": {
|
||||
"coffee-script": "~1.6.3"
|
||||
},
|
||||
"scripts": {
|
||||
"prepublish": "coffee -o lib/ -c src/waza.coffee"
|
||||
},
|
||||
"main": "lib/waza.js"
|
||||
}
|
||||
|
||||
The `prepublish` script will be run before publishing, so that users
|
||||
can consume the functionality without requiring them to compile it
|
||||
themselves. In dev mode (ie, locally running `npm install`), it'll
|
||||
run this script as well, so that you can test it easily.
|
||||
|
||||
## peerDependencies
|
||||
|
||||
In some cases, you want to express the compatibility of your package with an
|
||||
host tool or library, while not necessarily doing a `require` of this host.
|
||||
This is usually refered to as a *plugin*. Notably, your module may be exposing
|
||||
a specific interface, expected and specified by the host documentation.
|
||||
|
||||
For example:
|
||||
|
||||
{
|
||||
"name": "tea-latte",
|
||||
"version": "1.3.5"
|
||||
"peerDependencies": {
|
||||
"tea": "2.x"
|
||||
}
|
||||
}
|
||||
|
||||
This ensures your package `tea-latte` can be installed *along* with the second
|
||||
major version of the host package `tea` only. The host package is automatically
|
||||
installed if needed. `npm install tea-latte` could possibly yield the following
|
||||
dependency graph:
|
||||
|
||||
├── tea-latte@1.3.5
|
||||
└── tea@2.2.0
|
||||
|
||||
Trying to install another plugin with a conflicting requirement will cause an
|
||||
error. For this reason, make sure your plugin requirement is as broad as
|
||||
possible, and not to lock it down to specific patch versions.
|
||||
|
||||
Assuming the host complies with [semver](http://semver.org/), only changes in
|
||||
the host package's major version will break your plugin. Thus, if you've worked
|
||||
with every 1.x version of the host package, use `"^1.0"` or `"1.x"` to express
|
||||
this. If you depend on features introduced in 1.5.2, use `">= 1.5.2 < 2"`.
|
||||
|
||||
## bundledDependencies
|
||||
|
||||
Array of package names that will be bundled when publishing the package.
|
||||
|
||||
2
deps/npm/doc/misc/npm-coding-style.md
vendored
2
deps/npm/doc/misc/npm-coding-style.md
vendored
@@ -133,7 +133,7 @@ string message to the callback. Stack traces are handy.
|
||||
|
||||
## Logging
|
||||
|
||||
Logging is done using the [npmlog](https://github.com/isaacs/npmlog)
|
||||
Logging is done using the [npmlog](https://github.com/npm/npmlog)
|
||||
utility.
|
||||
|
||||
Please clean up logs when they are no longer helpful. In particular,
|
||||
|
||||
98
deps/npm/doc/misc/npm-config.md
vendored
98
deps/npm/doc/misc/npm-config.md
vendored
@@ -24,8 +24,9 @@ same.
|
||||
|
||||
### npmrc Files
|
||||
|
||||
The three relevant files are:
|
||||
The four relevant files are:
|
||||
|
||||
* per-project config file (/path/to/my/project/.npmrc)
|
||||
* per-user config file (~/.npmrc)
|
||||
* global config file ($PREFIX/npmrc)
|
||||
* npm builtin config file (/path/to/npm/npmrc)
|
||||
@@ -49,6 +50,7 @@ The following shorthands are parsed on the command-line:
|
||||
* `-dd`, `--verbose`: `--loglevel verbose`
|
||||
* `-ddd`: `--loglevel silly`
|
||||
* `-g`: `--global`
|
||||
* `-C`: `--prefix`
|
||||
* `-l`: `--long`
|
||||
* `-m`: `--message`
|
||||
* `-p`, `--porcelain`: `--parseable`
|
||||
@@ -60,6 +62,7 @@ The following shorthands are parsed on the command-line:
|
||||
* `-D`: `--save-dev`
|
||||
* `-O`: `--save-optional`
|
||||
* `-B`: `--save-bundle`
|
||||
* `-E`: `--save-exact`
|
||||
* `-y`: `--yes`
|
||||
* `-n`: `--yes false`
|
||||
* `ll` and `la` commands: `ls --long`
|
||||
@@ -144,6 +147,15 @@ to trust only that specific signing authority.
|
||||
|
||||
See also the `strict-ssl` config.
|
||||
|
||||
### cafile
|
||||
|
||||
* Default: `null`
|
||||
* Type: path
|
||||
|
||||
A path to a file containing one or multiple Certificate Authority signing
|
||||
certificates. Similar to the `ca` setting, but allows for multiple CA's, as
|
||||
well as for the CA information to be stored in a file on disk.
|
||||
|
||||
### cache
|
||||
|
||||
* Default: Windows: `%AppData%\npm-cache`, Posix: `~/.npm`
|
||||
@@ -242,12 +254,6 @@ set.
|
||||
|
||||
The command to run for `npm edit` or `npm config edit`.
|
||||
|
||||
### email
|
||||
|
||||
The email of the logged-in user.
|
||||
|
||||
Set by the `npm adduser` command. Should not be set explicitly.
|
||||
|
||||
### engine-strict
|
||||
|
||||
* Default: false
|
||||
@@ -401,11 +407,19 @@ The value `npm init` should use by default for the package author's homepage.
|
||||
|
||||
### init.license
|
||||
|
||||
* Default: "BSD-2-Clause"
|
||||
* Default: "ISC"
|
||||
* Type: String
|
||||
|
||||
The value `npm init` should use by default for the package license.
|
||||
|
||||
### init.version
|
||||
|
||||
* Default: "0.0.0"
|
||||
* Type: semver
|
||||
|
||||
The value that `npm init` should use by default for the package
|
||||
version number, if not already set in package.json.
|
||||
|
||||
### json
|
||||
|
||||
* Default: false
|
||||
@@ -452,7 +466,7 @@ to the npm registry. Must be IPv4 in versions of Node prior to 0.12.
|
||||
|
||||
* Default: "http"
|
||||
* Type: String
|
||||
* Values: "silent", "win", "error", "warn", "http", "info", "verbose", "silly"
|
||||
* Values: "silent", "error", "warn", "http", "info", "verbose", "silly"
|
||||
|
||||
What level of logs to report. On failure, *all* logs are written to
|
||||
`npm-debug.log` in the current working directory.
|
||||
@@ -466,7 +480,7 @@ The default is "http", which shows http, warn, and error output.
|
||||
* Type: Stream
|
||||
|
||||
This is the stream that is passed to the
|
||||
[npmlog](https://github.com/isaacs/npmlog) module at run time.
|
||||
[npmlog](https://github.com/npm/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
|
||||
@@ -480,7 +494,7 @@ colored output if it is a TTY.
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Show extended information in `npm ls`
|
||||
Show extended information in `npm ls` and `npm search`.
|
||||
|
||||
### message
|
||||
|
||||
@@ -620,23 +634,57 @@ bundledDependencies list.
|
||||
|
||||
Save installed packages to a package.json file as devDependencies.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the devDependencies
|
||||
hash.
|
||||
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-exact
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Dependencies saved to package.json using `--save`, `--save-dev` or
|
||||
`--save-optional` will be configured with an exact version rather than
|
||||
using npm's default semver range operator.
|
||||
|
||||
### save-optional
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Save installed packages to a package.json file as optionalDependencies.
|
||||
Save installed packages to a package.json file as
|
||||
optionalDependencies.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the devDependencies
|
||||
hash.
|
||||
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-prefix
|
||||
|
||||
* Default: '^'
|
||||
* Type: String
|
||||
|
||||
Configure how versions of packages installed to a package.json file via
|
||||
`--save` or `--save-dev` get prefixed.
|
||||
|
||||
For example if a package has version `1.2.3`, by default it's version is
|
||||
set to `^1.2.3` which allows minor upgrades for that package, but after
|
||||
`npm config set save-prefix='~'` it would be set to `~1.2.3` which only allows
|
||||
patch upgrades.
|
||||
|
||||
### scope
|
||||
|
||||
* Default: ""
|
||||
* Type: String
|
||||
|
||||
Associate an operation with a scope for a scoped registry. Useful when logging
|
||||
in to a private registry for the first time:
|
||||
`npm login --scope=@organization --registry=registry.organization.com`, which
|
||||
will cause `@organization` to be mapped to the registry for future installation
|
||||
of packages specified according to the pattern `@organization/package`.
|
||||
|
||||
### searchopts
|
||||
|
||||
* Default: ""
|
||||
@@ -688,6 +736,17 @@ using `-s` to add a signature.
|
||||
Note that git requires you to have set up GPG keys in your git configs
|
||||
for this to work properly.
|
||||
|
||||
### spin
|
||||
|
||||
* Default: true
|
||||
* Type: Boolean or `"always"`
|
||||
|
||||
When set to `true`, npm will display an ascii spinner while it is doing
|
||||
things, if `process.stderr` is a TTY.
|
||||
|
||||
Set to `false` to suppress the spinner, or set to `always` to output
|
||||
the spinner even for non-TTY outputs.
|
||||
|
||||
### strict-ssl
|
||||
|
||||
* Default: true
|
||||
@@ -749,13 +808,6 @@ instead of complete help when doing `npm-help(1)`.
|
||||
|
||||
The UID to set to when running package scripts as root.
|
||||
|
||||
### username
|
||||
|
||||
* Default: null
|
||||
* Type: String
|
||||
|
||||
The username on the npm registry. Set with `npm adduser`
|
||||
|
||||
### userconfig
|
||||
|
||||
* Default: ~/.npmrc
|
||||
|
||||
19
deps/npm/doc/misc/npm-disputes.md
vendored
19
deps/npm/doc/misc/npm-disputes.md
vendored
@@ -4,7 +4,7 @@ npm-disputes(7) -- Handling Module Name Disputes
|
||||
## SYNOPSIS
|
||||
|
||||
1. Get the author email with `npm owner ls <pkgname>`
|
||||
2. Email the author, CC <i@izs.me>.
|
||||
2. Email the author, CC <support@npmjs.com>
|
||||
3. After a few weeks, if there's no resolution, we'll sort it out.
|
||||
|
||||
Don't squat on package names. Publish code or move out of the way.
|
||||
@@ -42,15 +42,16 @@ Joe's appropriate course of action in each case is the same.
|
||||
|
||||
1. `npm owner ls foo`. This will tell Joe the email address of the
|
||||
owner (Bob).
|
||||
2. Joe emails Bob, explaining the situation **as respectfully as possible**,
|
||||
and what he would like to do with the module name. He adds
|
||||
isaacs <i@izs.me> to the CC list of the email. Mention in the email
|
||||
that Bob can run `npm owner add joe foo` to add Joe as an owner of
|
||||
the `foo` package.
|
||||
2. Joe emails Bob, explaining the situation **as respectfully as
|
||||
possible**, and what he would like to do with the module name. He
|
||||
adds the npm support staff <support@npmjs.com> to the CC list of
|
||||
the email. Mention in the email that Bob can run `npm owner add
|
||||
joe foo` to add Joe as an owner of the `foo` package.
|
||||
3. After a reasonable amount of time, if Bob has not responded, or if
|
||||
Bob and Joe can't come to any sort of resolution, email isaacs
|
||||
<i@izs.me> and we'll sort it out. ("Reasonable" is usually about 4
|
||||
weeks, but extra time is allowed around common holidays.)
|
||||
Bob and Joe can't come to any sort of resolution, email support
|
||||
<support@npmjs.com> and we'll sort it out. ("Reasonable" is
|
||||
usually at least 4 weeks, but extra time is allowed around common
|
||||
holidays.)
|
||||
|
||||
## REASONING
|
||||
|
||||
|
||||
56
deps/npm/doc/misc/npm-faq.md
vendored
56
deps/npm/doc/misc/npm-faq.md
vendored
@@ -3,7 +3,7 @@ npm-faq(7) -- Frequently Asked Questions
|
||||
|
||||
## Where can I find these docs in HTML?
|
||||
|
||||
<https://npmjs.org/doc/>, or run:
|
||||
<https://www.npmjs.org/doc/>, or run:
|
||||
|
||||
npm config set viewer browser
|
||||
|
||||
@@ -68,24 +68,27 @@ program that uses it.
|
||||
|
||||
## Whatever, I really want the old style 'everything global' style.
|
||||
|
||||
Write your own package manager, then. It's not that hard.
|
||||
Write your own package manager. You could probably even wrap up `npm`
|
||||
in a shell script if you really wanted to.
|
||||
|
||||
npm will not help you do something that is known to be a bad idea.
|
||||
|
||||
## Should I check my `node_modules` folder into git?
|
||||
|
||||
Mikeal Rogers answered this question very well:
|
||||
Usually, no. Allow npm to resolve dependencies for your packages.
|
||||
|
||||
<http://www.mikealrogers.com/posts/nodemodules-in-git.html>
|
||||
For packages you **deploy**, such as websites and apps,
|
||||
you should use npm shrinkwrap to lock down your full dependency tree:
|
||||
|
||||
tl;dr
|
||||
https://www.npmjs.org/doc/cli/npm-shrinkwrap.html
|
||||
|
||||
* Check `node_modules` into git for things you **deploy**, such as
|
||||
websites and apps.
|
||||
* Do not check `node_modules` into git for libraries and modules
|
||||
intended to be reused.
|
||||
* Use npm to manage dependencies in your dev environment, but not in
|
||||
your deployment scripts.
|
||||
If you are paranoid about depending on the npm ecosystem,
|
||||
you should run a private npm mirror or a private cache.
|
||||
|
||||
If you want 100% confidence in being able to reproduce the specific bytes
|
||||
included in a deployment, you should use an additional mechanism that can
|
||||
verify contents rather than versions. For example,
|
||||
Amazon machine images, DigitalOcean snapshots, Heroku slugs, or simple tarballs.
|
||||
|
||||
## Is it 'npm' or 'NPM' or 'Npm'?
|
||||
|
||||
@@ -144,7 +147,7 @@ command.)
|
||||
|
||||
In those cases, you can do this:
|
||||
|
||||
curl https://npmjs.org/install.sh | sh
|
||||
curl https://www.npmjs.org/install.sh | sh
|
||||
|
||||
## What is a `package`?
|
||||
|
||||
@@ -257,7 +260,7 @@ change it again? npm doesn't currently track any state about past
|
||||
configuration settings, so this would be rather difficult to do
|
||||
properly. It would have to track every previous value for this
|
||||
config, and always accept any of them, or else yesterday's install may
|
||||
be broken tomorrow. Complexity hurdle #5.
|
||||
be broken tomorrow. Complexity hurdle #4.
|
||||
|
||||
Never going to happen. The folder is named `node_modules`. It is
|
||||
written indelibly in the Node Way, handed down from the ancient times
|
||||
@@ -310,17 +313,21 @@ Go to <https://npmjs.org/forgot>.
|
||||
|
||||
Either the registry is down, or node's DNS isn't able to reach out.
|
||||
|
||||
To check if the registry is down, open up <http://registry.npmjs.org/>
|
||||
in a web browser. This will also tell you if you are just unable to
|
||||
access the internet for some reason.
|
||||
To check if the registry is down, open up
|
||||
<https://registry.npmjs.org/> in a web browser. This will also tell
|
||||
you if you are just unable to access the internet for some reason.
|
||||
|
||||
If the registry IS down, let me know by emailing <i@izs.me> or posting
|
||||
an issue at <https://github.com/isaacs/npm/issues>. We'll have
|
||||
someone kick it or something.
|
||||
If the registry IS down, let us know by emailing <support@npmjs.com>
|
||||
or posting an issue at <https://github.com/npm/npm/issues>. If it's
|
||||
down for the world (and not just on your local network) then we're
|
||||
probably already being pinged about it.
|
||||
|
||||
You can also often get a faster response by visiting the #npm channel
|
||||
on Freenode IRC.
|
||||
|
||||
## Why no namespaces?
|
||||
|
||||
Please see this discussion: <https://github.com/isaacs/npm/issues/798>
|
||||
Please see this discussion: <https://github.com/npm/npm/issues/798>
|
||||
|
||||
tl;dr - It doesn't actually make things better, and can make them worse.
|
||||
|
||||
@@ -330,15 +337,18 @@ There is not sufficient need to impose namespace rules on everyone.
|
||||
|
||||
## Who does npm?
|
||||
|
||||
`npm view npm author`
|
||||
npm was originally written by Isaac Z. Schlueter, and many others have
|
||||
contributed to it, some of them quite substantially.
|
||||
|
||||
`npm view npm contributors`
|
||||
The npm open source project, The npm Registry, and [the community
|
||||
website](https://www.npmjs.org) are maintained and operated by the
|
||||
good folks at [npm, Inc.](http://www.npmjs.com)
|
||||
|
||||
## I have a question or request not addressed here. Where should I put it?
|
||||
|
||||
Post an issue on the github project:
|
||||
|
||||
* <https://github.com/isaacs/npm/issues>
|
||||
* <https://github.com/npm/npm/issues>
|
||||
|
||||
## Why does npm hate me?
|
||||
|
||||
|
||||
224
deps/npm/doc/misc/npm-index.md
vendored
224
deps/npm/doc/misc/npm-index.md
vendored
@@ -1,411 +1,427 @@
|
||||
npm-index(7) -- Index of all npm documentation
|
||||
==============================================
|
||||
|
||||
## README(1)
|
||||
### README(1)
|
||||
|
||||
node package manager
|
||||
|
||||
# Command Line Documentation
|
||||
## Command Line Documentation
|
||||
|
||||
## npm(1)
|
||||
Using npm on the command line
|
||||
|
||||
### npm(1)
|
||||
|
||||
node package manager
|
||||
|
||||
## npm-adduser(1)
|
||||
### npm-adduser(1)
|
||||
|
||||
Add a registry user account
|
||||
|
||||
## npm-bin(1)
|
||||
### npm-bin(1)
|
||||
|
||||
Display npm bin folder
|
||||
|
||||
## npm-bugs(1)
|
||||
### npm-bugs(1)
|
||||
|
||||
Bugs for a package in a web browser maybe
|
||||
|
||||
## npm-build(1)
|
||||
### npm-build(1)
|
||||
|
||||
Build a package
|
||||
|
||||
## npm-bundle(1)
|
||||
### npm-bundle(1)
|
||||
|
||||
REMOVED
|
||||
|
||||
## npm-cache(1)
|
||||
### npm-cache(1)
|
||||
|
||||
Manipulates packages cache
|
||||
|
||||
## npm-completion(1)
|
||||
### npm-completion(1)
|
||||
|
||||
Tab Completion for npm
|
||||
|
||||
## npm-config(1)
|
||||
### npm-config(1)
|
||||
|
||||
Manage the npm configuration files
|
||||
|
||||
## npm-dedupe(1)
|
||||
### npm-dedupe(1)
|
||||
|
||||
Reduce duplication
|
||||
|
||||
## npm-deprecate(1)
|
||||
### npm-deprecate(1)
|
||||
|
||||
Deprecate a version of a package
|
||||
|
||||
## npm-docs(1)
|
||||
### npm-docs(1)
|
||||
|
||||
Docs for a package in a web browser maybe
|
||||
|
||||
## npm-edit(1)
|
||||
### npm-edit(1)
|
||||
|
||||
Edit an installed package
|
||||
|
||||
## npm-explore(1)
|
||||
### npm-explore(1)
|
||||
|
||||
Browse an installed package
|
||||
|
||||
## npm-help-search(1)
|
||||
### npm-help-search(1)
|
||||
|
||||
Search npm help documentation
|
||||
|
||||
## npm-help(1)
|
||||
### npm-help(1)
|
||||
|
||||
Get help on npm
|
||||
|
||||
## npm-init(1)
|
||||
### npm-init(1)
|
||||
|
||||
Interactively create a package.json file
|
||||
|
||||
## npm-install(1)
|
||||
### npm-install(1)
|
||||
|
||||
Install a package
|
||||
|
||||
## npm-link(1)
|
||||
### npm-link(1)
|
||||
|
||||
Symlink a package folder
|
||||
|
||||
## npm-ls(1)
|
||||
### npm-ls(1)
|
||||
|
||||
List installed packages
|
||||
|
||||
## npm-outdated(1)
|
||||
### npm-outdated(1)
|
||||
|
||||
Check for outdated packages
|
||||
|
||||
## npm-owner(1)
|
||||
### npm-owner(1)
|
||||
|
||||
Manage package owners
|
||||
|
||||
## npm-pack(1)
|
||||
### npm-pack(1)
|
||||
|
||||
Create a tarball from a package
|
||||
|
||||
## npm-prefix(1)
|
||||
### npm-prefix(1)
|
||||
|
||||
Display prefix
|
||||
|
||||
## npm-prune(1)
|
||||
### npm-prune(1)
|
||||
|
||||
Remove extraneous packages
|
||||
|
||||
## npm-publish(1)
|
||||
### npm-publish(1)
|
||||
|
||||
Publish a package
|
||||
|
||||
## npm-rebuild(1)
|
||||
### npm-rebuild(1)
|
||||
|
||||
Rebuild a package
|
||||
|
||||
## npm-repo(1)
|
||||
### npm-repo(1)
|
||||
|
||||
Open package repository page in the browser
|
||||
|
||||
## npm-restart(1)
|
||||
### npm-restart(1)
|
||||
|
||||
Start a package
|
||||
|
||||
## npm-rm(1)
|
||||
### npm-rm(1)
|
||||
|
||||
Remove a package
|
||||
|
||||
## npm-root(1)
|
||||
### npm-root(1)
|
||||
|
||||
Display npm root
|
||||
|
||||
## npm-run-script(1)
|
||||
### npm-run-script(1)
|
||||
|
||||
Run arbitrary package scripts
|
||||
|
||||
## npm-search(1)
|
||||
### npm-search(1)
|
||||
|
||||
Search for packages
|
||||
|
||||
## npm-shrinkwrap(1)
|
||||
### npm-shrinkwrap(1)
|
||||
|
||||
Lock down dependency versions
|
||||
|
||||
## npm-star(1)
|
||||
### npm-star(1)
|
||||
|
||||
Mark your favorite packages
|
||||
|
||||
## npm-stars(1)
|
||||
### npm-stars(1)
|
||||
|
||||
View packages marked as favorites
|
||||
|
||||
## npm-start(1)
|
||||
### npm-start(1)
|
||||
|
||||
Start a package
|
||||
|
||||
## npm-stop(1)
|
||||
### npm-stop(1)
|
||||
|
||||
Stop a package
|
||||
|
||||
## npm-submodule(1)
|
||||
### npm-submodule(1)
|
||||
|
||||
Add a package as a git submodule
|
||||
|
||||
## npm-tag(1)
|
||||
### npm-tag(1)
|
||||
|
||||
Tag a published version
|
||||
|
||||
## npm-test(1)
|
||||
### npm-test(1)
|
||||
|
||||
Test a package
|
||||
|
||||
## npm-uninstall(1)
|
||||
### npm-uninstall(1)
|
||||
|
||||
Remove a package
|
||||
|
||||
## npm-unpublish(1)
|
||||
### npm-unpublish(1)
|
||||
|
||||
Remove a package from the registry
|
||||
|
||||
## npm-update(1)
|
||||
### npm-update(1)
|
||||
|
||||
Update a package
|
||||
|
||||
## npm-version(1)
|
||||
### npm-version(1)
|
||||
|
||||
Bump a package version
|
||||
|
||||
## npm-view(1)
|
||||
### npm-view(1)
|
||||
|
||||
View registry info
|
||||
|
||||
## npm-whoami(1)
|
||||
### npm-whoami(1)
|
||||
|
||||
Display npm username
|
||||
|
||||
# API Documentation
|
||||
## API Documentation
|
||||
|
||||
## npm(3)
|
||||
Using npm in your Node programs
|
||||
|
||||
### npm(3)
|
||||
|
||||
node package manager
|
||||
|
||||
## npm-bin(3)
|
||||
### npm-bin(3)
|
||||
|
||||
Display npm bin folder
|
||||
|
||||
## npm-bugs(3)
|
||||
### npm-bugs(3)
|
||||
|
||||
Bugs for a package in a web browser maybe
|
||||
|
||||
## npm-commands(3)
|
||||
### npm-cache(3)
|
||||
|
||||
manage the npm cache programmatically
|
||||
|
||||
### npm-commands(3)
|
||||
|
||||
npm commands
|
||||
|
||||
## npm-config(3)
|
||||
### npm-config(3)
|
||||
|
||||
Manage the npm configuration files
|
||||
|
||||
## npm-deprecate(3)
|
||||
### npm-deprecate(3)
|
||||
|
||||
Deprecate a version of a package
|
||||
|
||||
## npm-docs(3)
|
||||
### npm-docs(3)
|
||||
|
||||
Docs for a package in a web browser maybe
|
||||
|
||||
## npm-edit(3)
|
||||
### npm-edit(3)
|
||||
|
||||
Edit an installed package
|
||||
|
||||
## npm-explore(3)
|
||||
### npm-explore(3)
|
||||
|
||||
Browse an installed package
|
||||
|
||||
## npm-help-search(3)
|
||||
### npm-help-search(3)
|
||||
|
||||
Search the help pages
|
||||
|
||||
## npm-init(3)
|
||||
### npm-init(3)
|
||||
|
||||
Interactively create a package.json file
|
||||
|
||||
## npm-install(3)
|
||||
### npm-install(3)
|
||||
|
||||
install a package programmatically
|
||||
|
||||
## npm-link(3)
|
||||
### npm-link(3)
|
||||
|
||||
Symlink a package folder
|
||||
|
||||
## npm-load(3)
|
||||
### npm-load(3)
|
||||
|
||||
Load config settings
|
||||
|
||||
## npm-ls(3)
|
||||
### npm-ls(3)
|
||||
|
||||
List installed packages
|
||||
|
||||
## npm-outdated(3)
|
||||
### npm-outdated(3)
|
||||
|
||||
Check for outdated packages
|
||||
|
||||
## npm-owner(3)
|
||||
### npm-owner(3)
|
||||
|
||||
Manage package owners
|
||||
|
||||
## npm-pack(3)
|
||||
### npm-pack(3)
|
||||
|
||||
Create a tarball from a package
|
||||
|
||||
## npm-prefix(3)
|
||||
### npm-prefix(3)
|
||||
|
||||
Display prefix
|
||||
|
||||
## npm-prune(3)
|
||||
### npm-prune(3)
|
||||
|
||||
Remove extraneous packages
|
||||
|
||||
## npm-publish(3)
|
||||
### npm-publish(3)
|
||||
|
||||
Publish a package
|
||||
|
||||
## npm-rebuild(3)
|
||||
### npm-rebuild(3)
|
||||
|
||||
Rebuild a package
|
||||
|
||||
## npm-repo(3)
|
||||
### npm-repo(3)
|
||||
|
||||
Open package repository page in the browser
|
||||
|
||||
## npm-restart(3)
|
||||
### npm-restart(3)
|
||||
|
||||
Start a package
|
||||
|
||||
## npm-root(3)
|
||||
### npm-root(3)
|
||||
|
||||
Display npm root
|
||||
|
||||
## npm-run-script(3)
|
||||
### npm-run-script(3)
|
||||
|
||||
Run arbitrary package scripts
|
||||
|
||||
## npm-search(3)
|
||||
### npm-search(3)
|
||||
|
||||
Search for packages
|
||||
|
||||
## npm-shrinkwrap(3)
|
||||
### npm-shrinkwrap(3)
|
||||
|
||||
programmatically generate package shrinkwrap file
|
||||
|
||||
## npm-start(3)
|
||||
### npm-start(3)
|
||||
|
||||
Start a package
|
||||
|
||||
## npm-stop(3)
|
||||
### npm-stop(3)
|
||||
|
||||
Stop a package
|
||||
|
||||
## npm-submodule(3)
|
||||
### npm-submodule(3)
|
||||
|
||||
Add a package as a git submodule
|
||||
|
||||
## npm-tag(3)
|
||||
### npm-tag(3)
|
||||
|
||||
Tag a published version
|
||||
|
||||
## npm-test(3)
|
||||
### npm-test(3)
|
||||
|
||||
Test a package
|
||||
|
||||
## npm-uninstall(3)
|
||||
### npm-uninstall(3)
|
||||
|
||||
uninstall a package programmatically
|
||||
|
||||
## npm-unpublish(3)
|
||||
### npm-unpublish(3)
|
||||
|
||||
Remove a package from the registry
|
||||
|
||||
## npm-update(3)
|
||||
### npm-update(3)
|
||||
|
||||
Update a package
|
||||
|
||||
## npm-version(3)
|
||||
### npm-version(3)
|
||||
|
||||
Bump a package version
|
||||
|
||||
## npm-view(3)
|
||||
### npm-view(3)
|
||||
|
||||
View registry info
|
||||
|
||||
## npm-whoami(3)
|
||||
### npm-whoami(3)
|
||||
|
||||
Display npm username
|
||||
|
||||
# Files
|
||||
## Files
|
||||
|
||||
## npm-folders(5)
|
||||
File system structures npm uses
|
||||
|
||||
### npm-folders(5)
|
||||
|
||||
Folder Structures Used by npm
|
||||
|
||||
## npmrc(5)
|
||||
### npmrc(5)
|
||||
|
||||
The npm config files
|
||||
|
||||
## package.json(5)
|
||||
### package.json(5)
|
||||
|
||||
Specifics of npm's package.json handling
|
||||
|
||||
# Misc
|
||||
## Misc
|
||||
|
||||
## npm-coding-style(7)
|
||||
Various other bits and bobs
|
||||
|
||||
### npm-coding-style(7)
|
||||
|
||||
npm's "funny" coding style
|
||||
|
||||
## npm-config(7)
|
||||
### npm-config(7)
|
||||
|
||||
More than you probably want to know about npm configuration
|
||||
|
||||
## npm-developers(7)
|
||||
### npm-developers(7)
|
||||
|
||||
Developer Guide
|
||||
|
||||
## npm-disputes(7)
|
||||
### npm-disputes(7)
|
||||
|
||||
Handling Module Name Disputes
|
||||
|
||||
## npm-faq(7)
|
||||
### npm-faq(7)
|
||||
|
||||
Frequently Asked Questions
|
||||
|
||||
## npm-index(7)
|
||||
### npm-index(7)
|
||||
|
||||
Index of all npm documentation
|
||||
|
||||
## npm-registry(7)
|
||||
### npm-registry(7)
|
||||
|
||||
The JavaScript Package Registry
|
||||
|
||||
## npm-scripts(7)
|
||||
### npm-scope(7)
|
||||
|
||||
Scoped packages
|
||||
|
||||
### npm-scripts(7)
|
||||
|
||||
How npm handles the "scripts" field
|
||||
|
||||
## removing-npm(7)
|
||||
### removing-npm(7)
|
||||
|
||||
Cleaning the Slate
|
||||
|
||||
## semver(7)
|
||||
### semver(7)
|
||||
|
||||
The semantic versioner for npm
|
||||
|
||||
|
||||
15
deps/npm/doc/misc/npm-registry.md
vendored
15
deps/npm/doc/misc/npm-registry.md
vendored
@@ -12,15 +12,14 @@ write APIs as well, to allow for publishing packages and managing user
|
||||
account information.
|
||||
|
||||
The official public npm registry is at <http://registry.npmjs.org/>. It
|
||||
is powered by a CouchDB database at
|
||||
<http://isaacs.iriscouch.com/registry>. The code for the couchapp is
|
||||
available at <http://github.com/isaacs/npmjs.org>. npm user accounts
|
||||
are CouchDB users, stored in the <http://isaacs.iriscouch.com/_users>
|
||||
database.
|
||||
is powered by a CouchDB database, of which there is a public mirror at
|
||||
<http://skimdb.npmjs.com/registry>. The code for the couchapp is
|
||||
available at <http://github.com/npm/npm-registry-couchapp>.
|
||||
|
||||
The registry URL is supplied by the `registry` config parameter. See
|
||||
`npm-config(1)`, `npmrc(5)`, and `npm-config(7)` for more on managing
|
||||
npm's configuration.
|
||||
The registry URL used is determined by the scope of the package (see
|
||||
`npm-scope(7)`). If no scope is specified, the default registry is used, which is
|
||||
supplied by the `registry` config parameter. See `npm-config(1)`,
|
||||
`npmrc(5)`, and `npm-config(7)` for more on managing npm's configuration.
|
||||
|
||||
## Can I run my own private registry?
|
||||
|
||||
|
||||
84
deps/npm/doc/misc/npm-scope.md
vendored
Normal file
84
deps/npm/doc/misc/npm-scope.md
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
npm-scope(7) -- Scoped packages
|
||||
===============================
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
All npm packages have a name. Some package names also have a scope. A scope
|
||||
follows the usual rules for package names (url-safe characters, no leading dots
|
||||
or underscores). When used in package names, preceded by an @-symbol and
|
||||
followed by a slash, e.g.
|
||||
|
||||
@somescope/somepackagename
|
||||
|
||||
Scopes are a way of grouping related packages together, and also affect a few
|
||||
things about the way npm treats the package.
|
||||
|
||||
**As of 2014-09-03, scoped packages are not supported by the public npm registry**.
|
||||
However, the npm client is backwards-compatible with un-scoped registries, so
|
||||
it can be used to work with scoped and un-scoped registries at the same time.
|
||||
|
||||
## Installing scoped packages
|
||||
|
||||
Scoped packages are installed to a sub-folder of the regular installation
|
||||
folder, e.g. if your other packages are installed in `node_modules/packagename`,
|
||||
scoped modules will be in `node_modules/@myorg/packagename`. The scope folder
|
||||
(`@myorg`) is simply the name of the scope preceded by an @-symbol, and can
|
||||
contain any number of scoped packages.
|
||||
|
||||
A scoped package is install by referencing it by name, preceded by an @-symbol,
|
||||
in `npm install`:
|
||||
|
||||
npm install @myorg/mypackage
|
||||
|
||||
Or in `package.json`:
|
||||
|
||||
"dependencies": {
|
||||
"@myorg/mypackage": "^1.3.0"
|
||||
}
|
||||
|
||||
Note that if the @-symbol is omitted in either case npm will instead attempt to
|
||||
install from GitHub; see `npm-install(1)`.
|
||||
|
||||
## Requiring scoped packages
|
||||
|
||||
Because scoped packages are installed into a scope folder, you have to
|
||||
include the name of the scope when requiring them in your code, e.g.
|
||||
|
||||
require('@myorg/mypackage')
|
||||
|
||||
There is nothing special about the way Node treats scope folders, this is
|
||||
just specifying to require the module `mypackage` in the folder called `@myorg`.
|
||||
|
||||
## Publishing scoped packages
|
||||
|
||||
Scoped packages can be published to any registry that supports them.
|
||||
*As of 2014-09-03, the public npm registry does not support scoped packages*,
|
||||
so attempting to publish a scoped package to the registry will fail unless
|
||||
you have associated that scope with a different registry, see below.
|
||||
|
||||
## Associating a scope with a registry
|
||||
|
||||
Scopes can be associated with a separate registry. This allows you to
|
||||
seamlessly use a mix of packages from the public npm registry and one or more
|
||||
private registries, such as npm Enterprise.
|
||||
|
||||
You can associate a scope with a registry at login, e.g.
|
||||
|
||||
npm login --registry=http://reg.example.com --scope=@myco
|
||||
|
||||
Scopes have a many-to-one relationship with registries: one registry can
|
||||
host multiple scopes, but a scope only ever points to one registry.
|
||||
|
||||
You can also associate a scope with a registry using `npm config`:
|
||||
|
||||
npm config set @myco:registry http://reg.example.com
|
||||
|
||||
Once a scope is associated with a registry, any `npm install` for a package
|
||||
with that scope will request packages from that registry instead. Any
|
||||
`npm publish` for a package name that contains the scope will be published to
|
||||
that registry instead.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-install(1)
|
||||
* npm-publish(1)
|
||||
5
deps/npm/doc/misc/npm-scripts.md
vendored
5
deps/npm/doc/misc/npm-scripts.md
vendored
@@ -33,8 +33,9 @@ following scripts:
|
||||
Run by the `npm restart` command. Note: `npm restart` will run the
|
||||
stop and start scripts if no `restart` script is provided.
|
||||
|
||||
Additionally, arbitrary scripts can be run by doing
|
||||
`npm run-script <stage> <pkg>`.
|
||||
Additionally, arbitrary scripts can be executed by running `npm run-script
|
||||
<pkg> <stage>`. *Pre* and *post* commands with matching names will be run for
|
||||
those as well (e.g. `premyscript`, `myscript`, `postmyscript`).
|
||||
|
||||
## NOTE: INSTALL SCRIPTS ARE AN ANTIPATTERN
|
||||
|
||||
|
||||
248
deps/npm/doc/misc/semver.md
vendored
248
deps/npm/doc/misc/semver.md
vendored
@@ -34,40 +34,177 @@ As a command-line utility:
|
||||
|
||||
## Versions
|
||||
|
||||
A "version" is described by the v2.0.0 specification found at
|
||||
A "version" is described by the `v2.0.0` specification found at
|
||||
<http://semver.org/>.
|
||||
|
||||
A leading `"="` or `"v"` character is stripped off and ignored.
|
||||
|
||||
## Ranges
|
||||
|
||||
The following range styles are supported:
|
||||
A `version range` is a set of `comparators` which specify versions
|
||||
that satisfy the range.
|
||||
|
||||
A `comparator` is composed of an `operator` and a `version`. The set
|
||||
of primitive `operators` is:
|
||||
|
||||
* `<` Less than
|
||||
* `<=` Less than or equal to
|
||||
* `>` Greater than
|
||||
* `>=` Greater than or equal to
|
||||
* `=` Equal. If no operator is specified, then equality is assumed,
|
||||
so this operator is optional, but MAY be included.
|
||||
|
||||
For example, the comparator `>=1.2.7` would match the versions
|
||||
`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
|
||||
or `1.1.0`.
|
||||
|
||||
Comparators can be joined by whitespace to form a `comparator set`,
|
||||
which is satisfied by the **intersection** of all of the comparators
|
||||
it includes.
|
||||
|
||||
A range is composed of one or more comparator sets, joined by `||`. A
|
||||
version matches a range if and only if every comparator in at least
|
||||
one of the `||`-separated comparator sets is satisfied by the version.
|
||||
|
||||
For example, the range `>=1.2.7 <1.3.0` would match the versions
|
||||
`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
|
||||
or `1.1.0`.
|
||||
|
||||
The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
|
||||
`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
|
||||
|
||||
### Prerelease Tags
|
||||
|
||||
If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
|
||||
it will only be allowed to satisfy comparator sets if at least one
|
||||
comparator with the same `[major, minor, patch]` tuple also has a
|
||||
prerelease tag.
|
||||
|
||||
For example, the range `>1.2.3-alpha.3` would be allowed to match the
|
||||
version `1.2.3-alpha.7`, but it would *not* be satisfied by
|
||||
`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
|
||||
than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
|
||||
range only accepts prerelease tags on the `1.2.3` version. The
|
||||
version `3.4.5` *would* satisfy the range, because it does not have a
|
||||
prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
|
||||
|
||||
The purpose for this behavior is twofold. First, prerelease versions
|
||||
frequently are updated very quickly, and contain many breaking changes
|
||||
that are (by the author's design) not yet fit for public consumption.
|
||||
Therefore, by default, they are excluded from range matching
|
||||
semantics.
|
||||
|
||||
Second, a user who has opted into using a prerelease version has
|
||||
clearly indicated the intent to use *that specific* set of
|
||||
alpha/beta/rc versions. By including a prerelease tag in the range,
|
||||
the user is indicating that they are aware of the risk. However, it
|
||||
is still not appropriate to assume that they have opted into taking a
|
||||
similar risk on the *next* set of prerelease versions.
|
||||
|
||||
### Advanced Range Syntax
|
||||
|
||||
Advanced range syntax desugars to primitive comparators in
|
||||
deterministic ways.
|
||||
|
||||
Advanced ranges may be combined in the same way as primitive
|
||||
comparators using white space or `||`.
|
||||
|
||||
#### Hyphen Ranges `X.Y.Z - A.B.C`
|
||||
|
||||
Specifies an inclusive set.
|
||||
|
||||
* `1.2.3` A specific version. When nothing else will do. Note that
|
||||
build metadata is still ignored, so `1.2.3+build2012` will satisfy
|
||||
this range.
|
||||
* `>1.2.3` Greater than a specific version.
|
||||
* `<1.2.3` Less than a specific version. If there is no prerelease
|
||||
tag on the version range, then no prerelease version will be allowed
|
||||
either, even though these are technically "less than".
|
||||
* `>=1.2.3` Greater than or equal to. Note that prerelease versions
|
||||
are NOT equal to their "normal" equivalents, so `1.2.3-beta` will
|
||||
not satisfy this range, but `2.3.0-beta` will.
|
||||
* `<=1.2.3` Less than or equal to. In this case, prerelease versions
|
||||
ARE allowed, so `1.2.3-beta` would satisfy.
|
||||
* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
|
||||
* `~1.2.3` := `>=1.2.3-0 <1.3.0-0` "Reasonably close to 1.2.3". When
|
||||
using tilde operators, prerelease versions are supported as well,
|
||||
but a prerelease of the next significant digit will NOT be
|
||||
satisfactory, so `1.3.0-beta` will not satisfy `~1.2.3`.
|
||||
* `~1.2` := `>=1.2.0-0 <1.3.0-0` "Any version starting with 1.2"
|
||||
* `1.2.x` := `>=1.2.0-0 <1.3.0-0` "Any version starting with 1.2"
|
||||
* `~1` := `>=1.0.0-0 <2.0.0-0` "Any version starting with 1"
|
||||
* `1.x` := `>=1.0.0-0 <2.0.0-0` "Any version starting with 1"
|
||||
|
||||
If a partial version is provided as the first version in the inclusive
|
||||
range, then the missing pieces are replaced with zeroes.
|
||||
|
||||
Ranges can be joined with either a space (which implies "and") or a
|
||||
`||` (which implies "or").
|
||||
* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
|
||||
|
||||
If a partial version is provided as the second version in the
|
||||
inclusive range, then all versions that start with the supplied parts
|
||||
of the tuple are accepted, but nothing that would be greater than the
|
||||
provided tuple parts.
|
||||
|
||||
* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
|
||||
* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
|
||||
|
||||
#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
|
||||
|
||||
Any of `X`, `x`, or `*` may be used to "stand in" for one of the
|
||||
numeric values in the `[major, minor, patch]` tuple.
|
||||
|
||||
* `*` := `>=0.0.0` (Any version satisfies)
|
||||
* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
|
||||
* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
|
||||
|
||||
A partial version range is treated as an X-Range, so the special
|
||||
character is in fact optional.
|
||||
|
||||
* `` (empty string) := `*` := `>=0.0.0`
|
||||
* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
|
||||
* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
|
||||
|
||||
#### Tilde Ranges `~1.2.3` `~1.2` `~1`
|
||||
|
||||
Allows patch-level changes if a minor version is specified on the
|
||||
comparator. Allows minor-level changes if not.
|
||||
|
||||
* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
|
||||
* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
|
||||
* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
|
||||
* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
|
||||
* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
|
||||
* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
|
||||
* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
|
||||
the `1.2.3` version will be allowed, if they are greater than or
|
||||
equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
|
||||
`1.2.4-beta.2` would not, because it is a prerelease of a
|
||||
different `[major, minor, patch]` tuple.
|
||||
|
||||
Note: this is the same as the `~>` operator in rubygems.
|
||||
|
||||
#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
|
||||
|
||||
Allows changes that do not modify the left-most non-zero digit in the
|
||||
`[major, minor, patch]` tuple. In other words, this allows patch and
|
||||
minor updates for versions `1.0.0` and above, patch updates for
|
||||
versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
|
||||
|
||||
Many authors treat a `0.x` version as if the `x` were the major
|
||||
"breaking-change" indicator.
|
||||
|
||||
Caret ranges are ideal when an author may make breaking changes
|
||||
between `0.2.4` and `0.3.0` releases, which is a common practice.
|
||||
However, it presumes that there will *not* be breaking changes between
|
||||
`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
|
||||
additive (but non-breaking), according to commonly observed practices.
|
||||
|
||||
* `^1.2.3` := `>=1.2.3 <2.0.0`
|
||||
* `^0.2.3` := `>=0.2.3 <0.3.0`
|
||||
* `^0.0.3` := `>=0.0.3 <0.0.4`
|
||||
* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
|
||||
the `1.2.3` version will be allowed, if they are greater than or
|
||||
equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
|
||||
`1.2.4-beta.2` would not, because it is a prerelease of a
|
||||
different `[major, minor, patch]` tuple.
|
||||
* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
|
||||
`0.0.3` version *only* will be allowed, if they are greater than or
|
||||
equal to `beta`. So, `0.0.3-pr.2` would be allowed.
|
||||
|
||||
When parsing caret ranges, a missing `patch` value desugars to the
|
||||
number `0`, but will allow flexibility within that value, even if the
|
||||
major and minor versions are both `0`.
|
||||
|
||||
* `^1.2.x` := `>=1.2.0 <2.0.0`
|
||||
* `^0.0.x` := `>=0.0.0 <0.1.0`
|
||||
* `^0.0` := `>=0.0.0 <0.1.0`
|
||||
|
||||
A missing `minor` and `patch` values will desugar to zero, but also
|
||||
allow flexibility within those values, even if the major version is
|
||||
zero.
|
||||
|
||||
* `^1.x` := `>=1.0.0 <2.0.0`
|
||||
* `^0.x` := `>=0.0.0 <1.0.0`
|
||||
|
||||
## Functions
|
||||
|
||||
@@ -78,34 +215,61 @@ The resulting output will always be 100% strict, of course.
|
||||
Strict-mode Comparators and Ranges will be strict about the SemVer
|
||||
strings that they parse.
|
||||
|
||||
* valid(v): Return the parsed version, or null if it's not valid.
|
||||
* inc(v, release): Return the version incremented by the release type
|
||||
(major, minor, patch, or prerelease), or null if it's not valid.
|
||||
* `valid(v)`: Return the parsed version, or null if it's not valid.
|
||||
* `inc(v, release)`: Return the version incremented by the release
|
||||
type (`major`, `premajor`, `minor`, `preminor`, `patch`,
|
||||
`prepatch`, or `prerelease`), or null if it's not valid
|
||||
* `premajor` in one call will bump the version up to the next major
|
||||
version and down to a prerelease of that major version.
|
||||
`preminor`, and `prepatch` work the same way.
|
||||
* If called from a non-prerelease version, the `prerelease` will work the
|
||||
same as `prepatch`. It increments the patch version, then makes a
|
||||
prerelease. If the input version is already a prerelease it simply
|
||||
increments it.
|
||||
|
||||
### Comparison
|
||||
|
||||
* gt(v1, v2): `v1 > v2`
|
||||
* gte(v1, v2): `v1 >= v2`
|
||||
* lt(v1, v2): `v1 < v2`
|
||||
* lte(v1, v2): `v1 <= v2`
|
||||
* eq(v1, v2): `v1 == v2` This is true if they're logically equivalent,
|
||||
* `gt(v1, v2)`: `v1 > v2`
|
||||
* `gte(v1, v2)`: `v1 >= v2`
|
||||
* `lt(v1, v2)`: `v1 < v2`
|
||||
* `lte(v1, v2)`: `v1 <= v2`
|
||||
* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
|
||||
even if they're not the exact same string. You already know how to
|
||||
compare strings.
|
||||
* neq(v1, v2): `v1 != v2` The opposite of eq.
|
||||
* cmp(v1, comparator, v2): Pass in a comparison string, and it'll call
|
||||
* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
|
||||
* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
|
||||
the corresponding function above. `"==="` and `"!=="` do simple
|
||||
string comparison, but are included for completeness. Throws if an
|
||||
invalid comparison string is provided.
|
||||
* compare(v1, v2): Return 0 if v1 == v2, or 1 if v1 is greater, or -1 if
|
||||
v2 is greater. Sorts in ascending order if passed to Array.sort().
|
||||
* rcompare(v1, v2): The reverse of compare. Sorts an array of versions
|
||||
in descending order when passed to Array.sort().
|
||||
* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
|
||||
`v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
|
||||
* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
|
||||
in descending order when passed to `Array.sort()`.
|
||||
|
||||
|
||||
### Ranges
|
||||
|
||||
* validRange(range): Return the valid range or null if it's not valid
|
||||
* satisfies(version, range): Return true if the version satisfies the
|
||||
* `validRange(range)`: Return the valid range or null if it's not valid
|
||||
* `satisfies(version, range)`: Return true if the version satisfies the
|
||||
range.
|
||||
* maxSatisfying(versions, range): Return the highest version in the list
|
||||
that satisfies the range, or null if none of them do.
|
||||
* `maxSatisfying(versions, range)`: Return the highest version in the list
|
||||
that satisfies the range, or `null` if none of them do.
|
||||
* `gtr(version, range)`: Return `true` if version is greater than all the
|
||||
versions possible in the range.
|
||||
* `ltr(version, range)`: Return `true` if version is less than all the
|
||||
versions possible in the range.
|
||||
* `outside(version, range, hilo)`: Return true if the version is outside
|
||||
the bounds of the range in either the high or low direction. The
|
||||
`hilo` argument must be either the string `'>'` or `'<'`. (This is
|
||||
the function called by `gtr` and `ltr`.)
|
||||
|
||||
Note that, since ranges may be non-contiguous, a version might not be
|
||||
greater than a range, less than a range, *or* satisfy a range! For
|
||||
example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
|
||||
until `2.0.0`, so the version `1.2.10` would not be greater than the
|
||||
range (because `2.0.1` satisfies, which is higher), nor less than the
|
||||
range (since `1.2.8` satisfies, which is lower), and it also does not
|
||||
satisfy the range.
|
||||
|
||||
If you want to know if a version satisfies or does not satisfy a
|
||||
range, use the `satisfies(version, range)` function.
|
||||
|
||||
285
deps/npm/html/doc/README.html
vendored
285
deps/npm/html/doc/README.html
vendored
@@ -3,152 +3,104 @@
|
||||
<title>README</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/README.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="cli/npm.html">npm</a></h1> <p>node package manager</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<p><a href="https://travis-ci.org/npm/npm"><img src="https://img.shields.io/travis/npm/npm/master.svg" alt="Build Status"></a></p>
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<p>This is just enough info to get you up and running.</p>
|
||||
|
||||
<p>Much more info available via <code>npm help</code> once it's installed.</p>
|
||||
|
||||
<h2 id="IMPORTANT">IMPORTANT</h2>
|
||||
|
||||
<h2 id="important">IMPORTANT</h2>
|
||||
<p><strong>You need node v0.8 or higher to run this program.</strong></p>
|
||||
|
||||
<p>To install an old <strong>and unsupported</strong> version of npm that works on node 0.3
|
||||
and prior, clone the git repo and dig through the old tags and branches.</p>
|
||||
|
||||
<h2 id="Super-Easy-Install">Super Easy Install</h2>
|
||||
|
||||
<p>npm comes with node now.</p>
|
||||
|
||||
<h3 id="Windows-Computers">Windows Computers</h3>
|
||||
|
||||
<p>Get the MSI. npm is in it.</p>
|
||||
|
||||
<h3 id="Apple-Macintosh-Computers">Apple Macintosh Computers</h3>
|
||||
|
||||
<p>Get the pkg. npm is in it.</p>
|
||||
|
||||
<h3 id="Other-Sorts-of-Unices">Other Sorts of Unices</h3>
|
||||
|
||||
<h2 id="super-easy-install">Super Easy Install</h2>
|
||||
<p>npm comes with <a href="http://nodejs.org/download/">node</a> now.</p>
|
||||
<h3 id="windows-computers">Windows Computers</h3>
|
||||
<p><a href="http://nodejs.org/download/">Get the MSI</a>. npm is in it.</p>
|
||||
<h3 id="apple-macintosh-computers">Apple Macintosh Computers</h3>
|
||||
<p><a href="http://nodejs.org/download/">Get the pkg</a>. npm is in it.</p>
|
||||
<h3 id="other-sorts-of-unices">Other Sorts of Unices</h3>
|
||||
<p>Run <code>make install</code>. npm will be installed with node.</p>
|
||||
|
||||
<p>If you want a more fancy pants install (a different version, customized
|
||||
paths, etc.) then read on.</p>
|
||||
|
||||
<h2 id="Fancy-Install-Unix">Fancy Install (Unix)</h2>
|
||||
|
||||
<h2 id="fancy-install-unix-">Fancy Install (Unix)</h2>
|
||||
<p>There's a pretty robust install script at
|
||||
<a href="https://npmjs.org/install.sh">https://npmjs.org/install.sh</a>. You can download that and run it.</p>
|
||||
|
||||
<h3 id="Slightly-Fancier">Slightly Fancier</h3>
|
||||
|
||||
<a href="https://www.npmjs.org/install.sh">https://www.npmjs.org/install.sh</a>. You can download that and run it.</p>
|
||||
<p>Here's an example using curl:</p>
|
||||
<pre><code>curl -L https://npmjs.org/install.sh | sh
|
||||
</code></pre><h3 id="slightly-fancier">Slightly Fancier</h3>
|
||||
<p>You can set any npm configuration params with that script:</p>
|
||||
|
||||
<pre><code>npm_config_prefix=/some/path sh install.sh</code></pre>
|
||||
|
||||
<p>Or, you can run it in uber-debuggery mode:</p>
|
||||
|
||||
<pre><code>npm_debug=1 sh install.sh</code></pre>
|
||||
|
||||
<h3 id="Even-Fancier">Even Fancier</h3>
|
||||
|
||||
<pre><code>npm_config_prefix=/some/path sh install.sh
|
||||
</code></pre><p>Or, you can run it in uber-debuggery mode:</p>
|
||||
<pre><code>npm_debug=1 sh install.sh
|
||||
</code></pre><h3 id="even-fancier">Even Fancier</h3>
|
||||
<p>Get the code with git. Use <code>make</code> to build the docs and do other stuff.
|
||||
If you plan on hacking on npm, <code>make link</code> is your friend.</p>
|
||||
|
||||
<p>If you've got the npm source code, you can also semi-permanently set
|
||||
arbitrary config keys using the <code>./configure --key=val ...</code>, and then
|
||||
run npm commands by doing <code>node cli.js <cmd> <args></code>. (This is helpful
|
||||
for testing, or running stuff without actually installing npm itself.)</p>
|
||||
|
||||
<h2 id="Fancy-Windows-Install">Fancy Windows Install</h2>
|
||||
|
||||
<h2 id="fancy-windows-install">Fancy Windows Install</h2>
|
||||
<p>You can download a zip file from <a href="https://npmjs.org/dist/">https://npmjs.org/dist/</a>, and unpack it
|
||||
in the same folder where node.exe lives.</p>
|
||||
|
||||
<p>If that's not fancy enough for you, then you can fetch the code with
|
||||
git, and mess with it directly.</p>
|
||||
|
||||
<h2 id="Installing-on-Cygwin">Installing on Cygwin</h2>
|
||||
|
||||
<h2 id="installing-on-cygwin">Installing on Cygwin</h2>
|
||||
<p>No.</p>
|
||||
|
||||
<h2 id="Permissions-when-Using-npm-to-Install-Other-Stuff">Permissions when Using npm to Install Other Stuff</h2>
|
||||
|
||||
<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>
|
||||
|
||||
<ul><li>Use <code>sudo</code> for greater safety. Or don't, if you prefer not to.</li><li>npm will downgrade permissions if it's root before running any build
|
||||
scripts that package authors specified.</li></ul>
|
||||
|
||||
<h3 id="More-details">More details...</h3>
|
||||
|
||||
<ul>
|
||||
<li>Use <code>sudo</code> for greater safety. Or don't, if you prefer not to.</li>
|
||||
<li>npm will downgrade permissions if it's root before running any build
|
||||
scripts that package authors specified.</li>
|
||||
</ul>
|
||||
<h3 id="more-details-">More details...</h3>
|
||||
<p>As of version 0.3, it is recommended to run npm as root.
|
||||
This allows npm to change the user identifier to the <code>nobody</code> user prior
|
||||
to running any package build or test commands.</p>
|
||||
|
||||
<p>If you are not the root user, or if you are on a platform that does not
|
||||
support uid switching, then npm will not attempt to change the userid.</p>
|
||||
|
||||
<p>If you would like to ensure that npm <strong>always</strong> runs scripts as the
|
||||
"nobody" user, and have it fail if it cannot downgrade permissions, then
|
||||
set the following configuration param:</p>
|
||||
|
||||
<pre><code>npm config set unsafe-perm false</code></pre>
|
||||
|
||||
<p>This will prevent running in unsafe mode, even as non-root users.</p>
|
||||
|
||||
<h2 id="Uninstalling">Uninstalling</h2>
|
||||
|
||||
<pre><code>npm config set unsafe-perm false
|
||||
</code></pre><p>This will prevent running in unsafe mode, even as non-root users.</p>
|
||||
<h2 id="uninstalling">Uninstalling</h2>
|
||||
<p>So sad to see you go.</p>
|
||||
|
||||
<pre><code>sudo npm uninstall npm -g</code></pre>
|
||||
|
||||
<p>Or, if that fails,</p>
|
||||
|
||||
<pre><code>sudo make uninstall</code></pre>
|
||||
|
||||
<h2 id="More-Severe-Uninstalling">More Severe Uninstalling</h2>
|
||||
|
||||
<pre><code>sudo npm uninstall npm -g
|
||||
</code></pre><p>Or, if that fails,</p>
|
||||
<pre><code>sudo make uninstall
|
||||
</code></pre><h2 id="more-severe-uninstalling">More Severe Uninstalling</h2>
|
||||
<p>Usually, the above instructions are sufficient. That will remove
|
||||
npm, but leave behind anything you've installed.</p>
|
||||
|
||||
<p>If you would like to remove all the packages that you have installed,
|
||||
then you can use the <code>npm ls</code> command to find them, and then <code>npm rm</code> to
|
||||
remove them.</p>
|
||||
|
||||
<p>To remove cruft left behind by npm 0.x, you can use the included
|
||||
<code>clean-old.sh</code> script file. You can run it conveniently like this:</p>
|
||||
|
||||
<pre><code>npm explore npm -g -- sh scripts/clean-old.sh</code></pre>
|
||||
|
||||
<p>npm uses two configuration files, one for per-user configs, and another
|
||||
<pre><code>npm explore npm -g -- sh scripts/clean-old.sh
|
||||
</code></pre><p>npm uses two configuration files, one for per-user configs, and another
|
||||
for global (every-user) configs. You can view them by doing:</p>
|
||||
|
||||
<pre><code>npm config get userconfig # defaults to ~/.npmrc
|
||||
npm config get globalconfig # defaults to /usr/local/etc/npmrc</code></pre>
|
||||
|
||||
<p>Uninstalling npm does not remove configuration files by default. You
|
||||
npm config get globalconfig # defaults to /usr/local/etc/npmrc
|
||||
</code></pre><p>Uninstalling npm does not remove configuration files by default. You
|
||||
must remove them yourself manually if you want them gone. Note that
|
||||
this means that future npm installs will not remember the settings that
|
||||
you have chosen.</p>
|
||||
|
||||
<h2 id="Using-npm-Programmatically">Using npm Programmatically</h2>
|
||||
|
||||
<h2 id="using-npm-programmatically">Using npm Programmatically</h2>
|
||||
<p>If you would like to use npm programmatically, you can do that.
|
||||
It's not very well documented, but it <em>is</em> rather simple.</p>
|
||||
|
||||
<p>Most of the time, unless you actually want to do all the things that
|
||||
npm does, you should try using one of npm's dependencies rather than
|
||||
using npm itself, if possible.</p>
|
||||
|
||||
<p>Eventually, npm will be just a thin cli wrapper around the modules
|
||||
that it depends on, but for now, there are some things that you must
|
||||
use npm itself to do.</p>
|
||||
|
||||
<pre><code>var npm = require("npm")
|
||||
npm.load(myConfigObject, function (er) {
|
||||
if (er) return handlError(er)
|
||||
@@ -157,117 +109,82 @@ npm.load(myConfigObject, function (er) {
|
||||
// command succeeded, and data might have some info
|
||||
})
|
||||
npm.on("log", function (message) { .... })
|
||||
})</code></pre>
|
||||
|
||||
<p>The <code>load</code> function takes an object hash of the command-line configs.
|
||||
})
|
||||
</code></pre><p>The <code>load</code> function takes an object hash of the command-line configs.
|
||||
The various <code>npm.commands.<cmd></code> functions take an <strong>array</strong> of
|
||||
positional argument <strong>strings</strong>. The last argument to any
|
||||
<code>npm.commands.<cmd></code> function is a callback. Some commands take other
|
||||
optional arguments. Read the source.</p>
|
||||
|
||||
<p>You cannot set configs individually for any single npm function at this
|
||||
time. Since <code>npm</code> is a singleton, any call to <code>npm.config.set</code> will
|
||||
change the value for <em>all</em> npm commands in that process.</p>
|
||||
|
||||
<p>See <code>./bin/npm-cli.js</code> for an example of pulling config values off of the
|
||||
command line arguments using nopt. You may also want to check out <code>npm
|
||||
help config</code> to learn about all the options you can set there.</p>
|
||||
|
||||
<h2 id="More-Docs">More Docs</h2>
|
||||
|
||||
<p>Check out the <a href="https://npmjs.org/doc/">docs</a>,
|
||||
especially the <a href="https://npmjs.org/doc/faq.html">faq</a>.</p>
|
||||
|
||||
<h2 id="more-docs">More Docs</h2>
|
||||
<p>Check out the <a href="https://www.npmjs.org/doc/">docs</a>,
|
||||
especially the <a href="https://www.npmjs.org/doc/faq.html">faq</a>.</p>
|
||||
<p>You can use the <code>npm help</code> command to read any of them.</p>
|
||||
|
||||
<p>If you're a developer, and you want to use npm to publish your program,
|
||||
you should <a href="https://npmjs.org/doc/developers.html">read this</a></p>
|
||||
|
||||
<h2 id="Legal-Stuff">Legal Stuff</h2>
|
||||
|
||||
<p>"npm" and "the npm registry" are owned by Isaac Z. Schlueter.
|
||||
you should <a href="https://www.npmjs.org/doc/developers.html">read this</a></p>
|
||||
<h2 id="legal-stuff">Legal Stuff</h2>
|
||||
<p>"npm" and "The npm Registry" are owned by npm, Inc.
|
||||
All rights reserved. See the included LICENSE file for more details.</p>
|
||||
|
||||
<p>"Node.js" and "node" are trademarks owned by Joyent, Inc. npm is not
|
||||
officially part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.</p>
|
||||
|
||||
<p>The packages in the npm registry are not part of npm itself, and are the
|
||||
sole property of their respective maintainers. While every effort is
|
||||
made to ensure accountability, there is absolutely no guarantee,
|
||||
warrantee, or assertion made as to the quality, fitness for a specific
|
||||
purpose, or lack of malice in any given npm package. Modules
|
||||
published on the npm registry are not affiliated with or endorsed by
|
||||
Joyent, Inc., Isaac Z. Schlueter, Ryan Dahl, or the Node.js project.</p>
|
||||
|
||||
<p>If you have a complaint about a package in the npm registry, and cannot
|
||||
resolve it with the package owner, please express your concerns to
|
||||
Isaac Z. Schlueter at <a href="mailto:i@izs.me">i@izs.me</a>.</p>
|
||||
|
||||
<h3 id="In-plain-english">In plain english</h3>
|
||||
|
||||
<p>This is mine; not my employer's, not Node's, not Joyent's, not Ryan
|
||||
Dahl's.</p>
|
||||
|
||||
<p>"Node.js" and "node" are trademarks owned by Joyent, Inc.</p>
|
||||
<p>Modules published on the npm registry are not officially endorsed by
|
||||
npm, Inc. or the Node.js project.</p>
|
||||
<p>Data published to the npm registry is not part of npm itself, and is
|
||||
the sole property of the publisher. While every effort is made to
|
||||
ensure accountability, there is absolutely no guarantee, warrantee, or
|
||||
assertion expressed or implied as to the quality, fitness for a
|
||||
specific purpose, or lack of malice in any given npm package.</p>
|
||||
<p>If you have a complaint about a package in the public npm registry,
|
||||
and cannot <a href="https://www.npmjs.org/doc/misc/npm-disputes.html">resolve it with the package
|
||||
owner</a>, please email
|
||||
<a href="mailto:support@npmjs.com">support@npmjs.com</a> and explain the situation.</p>
|
||||
<p>Any data published to The npm Registry (including user account
|
||||
information) may be removed or modified at the sole discretion of the
|
||||
npm server administrators.</p>
|
||||
<h3 id="in-plainer-english">In plainer english</h3>
|
||||
<p>npm is the property of npm, Inc.</p>
|
||||
<p>If you publish something, it's yours, and you are solely accountable
|
||||
for it. Not me, not Node, not Joyent, not Ryan Dahl.</p>
|
||||
|
||||
<p>If other people publish something, it's theirs. Not mine, not Node's,
|
||||
not Joyent's, not Ryan Dahl's.</p>
|
||||
|
||||
<p>Yes, you can publish something evil. It will be removed promptly if
|
||||
reported, and we'll lose respect for you. But there is no vetting
|
||||
process for published modules.</p>
|
||||
|
||||
<p>If this concerns you, inspect the source before using packages.</p>
|
||||
|
||||
<h2 id="BUGS">BUGS</h2>
|
||||
|
||||
for it.</p>
|
||||
<p>If other people publish something, it's theirs.</p>
|
||||
<p>Users can publish Bad Stuff. It will be removed promptly if reported.
|
||||
But there is no vetting process for published modules, and you use
|
||||
them at your own risk. Please inspect the source.</p>
|
||||
<p>If you publish Bad Stuff, we may delete it from the registry, or even
|
||||
ban your account in extreme cases. So don't do that.</p>
|
||||
<h2 id="bugs">BUGS</h2>
|
||||
<p>When you find issues, please report them:</p>
|
||||
|
||||
<ul><li>web:
|
||||
<a href="https://github.com/isaacs/npm/issues">https://github.com/isaacs/npm/issues</a></li><li>email:
|
||||
<a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li></ul>
|
||||
|
||||
<ul>
|
||||
<li>web:
|
||||
<a href="https://github.com/npm/npm/issues">https://github.com/npm/npm/issues</a></li>
|
||||
<li>email:
|
||||
<a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li>
|
||||
</ul>
|
||||
<p>Be sure to include <em>all</em> of the output from the npm command that didn't work
|
||||
as expected. The <code>npm-debug.log</code> file is also helpful to provide.</p>
|
||||
|
||||
<p>You can also look for isaacs in #node.js on irc://irc.freenode.net. He
|
||||
will no doubt tell you to put the output in a gist or email.</p>
|
||||
<h2 id="see-also">SEE ALSO</h2>
|
||||
<ul>
|
||||
<li><a href="cli/npm.html">npm(1)</a></li>
|
||||
<li><a href="misc/npm-faq.html">npm-faq(7)</a></li>
|
||||
<li><a href="cli/npm-help.html">npm-help(1)</a></li>
|
||||
<li><a href="misc/npm-index.html">npm-index(7)</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="cli/npm.html">npm(1)</a></li><li><a href="misc/npm-faq.html">npm-faq(7)</a></li><li><a href="cli/npm-help.html">npm-help(1)</a></li><li><a href="misc/npm-index.html">npm-index(7)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer"><a href="../doc/README.html">README</a> — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer"><a href="../doc/README.html">README</a> — npm@2.0.0</p>
|
||||
|
||||
|
||||
59
deps/npm/html/doc/api/npm-bin.html
vendored
59
deps/npm/html/doc/api/npm-bin.html
vendored
@@ -3,51 +3,30 @@
|
||||
<title>npm-bin</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-bin.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-bin.html">npm-bin</a></h1> <p>Display npm bin folder</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.bin(args, cb)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.bin(args, cb)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>Print the folder where npm will install executables.</p>
|
||||
|
||||
<p>This function should not be used programmatically. Instead, just refer
|
||||
to the <code>npm.bin</code> member.</p>
|
||||
|
||||
</div>
|
||||
<p id="footer">npm-bin — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-bin — npm@2.0.0</p>
|
||||
|
||||
|
||||
60
deps/npm/html/doc/api/npm-bugs.html
vendored
60
deps/npm/html/doc/api/npm-bugs.html
vendored
@@ -3,57 +3,35 @@
|
||||
<title>npm-bugs</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-bugs.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-bugs.html">npm-bugs</a></h1> <p>Bugs for a package in a web browser maybe</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.bugs(package, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.bugs(package, callback)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
bug tracker 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">npm-bugs — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-bugs — npm@2.0.0</p>
|
||||
|
||||
|
||||
46
deps/npm/html/doc/api/npm-cache.html
vendored
Normal file
46
deps/npm/html/doc/api/npm-cache.html
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<title>npm-cache</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-cache.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-cache.html">npm-cache</a></h1> <p>manage the npm cache programmatically</p>
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.cache([args], callback)
|
||||
|
||||
// helpers
|
||||
npm.commands.cache.clean([args], callback)
|
||||
npm.commands.cache.add([args], callback)
|
||||
npm.commands.cache.read(name, version, forceBypass, callback)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>This acts much the same ways as the <a href="../cli/npm-cache.html">npm-cache(1)</a> command line
|
||||
functionality.</p>
|
||||
<p>The callback is called with the package.json data of the thing that is
|
||||
eventually added to or read from the cache.</p>
|
||||
<p>The top level <code>npm.commands.cache(...)</code> functionality is a public
|
||||
interface, and like all commands on the <code>npm.commands</code> object, it will
|
||||
match the command line behavior exactly.</p>
|
||||
<p>However, the cache folder structure and the cache helper functions are
|
||||
considered <strong>internal</strong> API surface, and as such, may change in future
|
||||
releases of npm, potentially without warning or significant version
|
||||
incrementation.</p>
|
||||
<p>Use at your own risk.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-cache — npm@2.0.0</p>
|
||||
|
||||
66
deps/npm/html/doc/api/npm-commands.html
vendored
66
deps/npm/html/doc/api/npm-commands.html
vendored
@@ -3,60 +3,38 @@
|
||||
<title>npm-commands</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-commands.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-commands.html">npm-commands</a></h1> <p>npm commands</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands[<command>](args, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands[<command>](args, callback)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>npm comes with a full set of commands, and each of the commands takes a
|
||||
similar set of arguments.</p>
|
||||
|
||||
<p>In general, all commands on the command object take an <strong>array</strong> of positional
|
||||
argument <strong>strings</strong>. The last argument to any function is a callback. Some
|
||||
commands are special and take other optional arguments.</p>
|
||||
|
||||
<p>All commands have their own man page. See <code>man npm-<command></code> for command-line
|
||||
usage, or <code>man 3 npm-<command></code> for programmatic usage.</p>
|
||||
<h2 id="see-also">SEE ALSO</h2>
|
||||
<ul>
|
||||
<li><a href="../misc/npm-index.html">npm-index(7)</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../misc/npm-index.html">npm-index(7)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">npm-commands — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-commands — npm@2.0.0</p>
|
||||
|
||||
|
||||
92
deps/npm/html/doc/api/npm-config.html
vendored
92
deps/npm/html/doc/api/npm-config.html
vendored
@@ -3,65 +3,59 @@
|
||||
<title>npm-config</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-config.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-config.html">npm-config</a></h1> <p>Manage the npm configuration files</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<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>
|
||||
|
||||
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>
|
||||
|
||||
<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>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">npm-config — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-config — npm@2.0.0</p>
|
||||
|
||||
|
||||
83
deps/npm/html/doc/api/npm-deprecate.html
vendored
83
deps/npm/html/doc/api/npm-deprecate.html
vendored
@@ -3,64 +3,49 @@
|
||||
<title>npm-deprecate</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-deprecate.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-deprecate.html">npm-deprecate</a></h1> <p>Deprecate a version of a package</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.deprecate(args, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.deprecate(args, callback)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>This command will update the npm registry entry for a package, providing
|
||||
a deprecation warning to all who attempt to install it.</p>
|
||||
|
||||
<p>The 'args' parameter must have exactly two elements:</p>
|
||||
|
||||
<ul><li><p><code>package[@version]</code></p><p>The <code>version</code> portion is optional, and may be either a range, or a
|
||||
specific version, or a tag.</p></li><li><p><code>message</code></p><p>The warning message that will be printed whenever a user attempts to
|
||||
install the package.</p></li></ul>
|
||||
|
||||
<ul>
|
||||
<li><p><code>package[@version]</code></p>
|
||||
<p> The <code>version</code> portion is optional, and may be either a range, or a
|
||||
specific version, or a tag.</p>
|
||||
</li>
|
||||
<li><p><code>message</code></p>
|
||||
<p> The warning message that will be printed whenever a user attempts to
|
||||
install the package.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Note that you must be the package owner to deprecate something. See the
|
||||
<code>owner</code> and <code>adduser</code> help topics.</p>
|
||||
|
||||
<p>To un-deprecate a package, specify an empty string (<code>""</code>) for the <code>message</code> argument.</p>
|
||||
<h2 id="see-also">SEE ALSO</h2>
|
||||
<ul>
|
||||
<li><a href="../api/npm-publish.html">npm-publish(3)</a></li>
|
||||
<li><a href="../api/npm-unpublish.html">npm-unpublish(3)</a></li>
|
||||
<li><a href="../misc/npm-registry.html">npm-registry(7)</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../api/npm-publish.html">npm-publish(3)</a></li><li><a href="../api/npm-unpublish.html">npm-unpublish(3)</a></li><li><a href="../misc/npm-registry.html">npm-registry(7)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">npm-deprecate — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-deprecate — npm@2.0.0</p>
|
||||
|
||||
|
||||
60
deps/npm/html/doc/api/npm-docs.html
vendored
60
deps/npm/html/doc/api/npm-docs.html
vendored
@@ -3,57 +3,35 @@
|
||||
<title>npm-docs</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-docs.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-docs.html">npm-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>
|
||||
|
||||
<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">npm-docs — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-docs — npm@2.0.0</p>
|
||||
|
||||
|
||||
62
deps/npm/html/doc/api/npm-edit.html
vendored
62
deps/npm/html/doc/api/npm-edit.html
vendored
@@ -3,62 +3,38 @@
|
||||
<title>npm-edit</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-edit.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-edit.html">npm-edit</a></h1> <p>Edit an installed package</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.edit(package, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.edit(package, callback)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>Opens the package folder in the default editor (or whatever you've
|
||||
configured as the npm <code>editor</code> config -- see <code>npm help config</code>.)</p>
|
||||
|
||||
<p>After it has been edited, the package is rebuilt so as to pick up any
|
||||
changes in compiled packages.</p>
|
||||
|
||||
<p>For instance, you can do <code>npm install connect</code> to install connect
|
||||
into your package, and then <code>npm.commands.edit(["connect"], callback)</code>
|
||||
to make a few changes to your locally installed copy.</p>
|
||||
|
||||
<p>The first parameter is a string array with a single element, the package
|
||||
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">npm-edit — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-edit — npm@2.0.0</p>
|
||||
|
||||
|
||||
61
deps/npm/html/doc/api/npm-explore.html
vendored
61
deps/npm/html/doc/api/npm-explore.html
vendored
@@ -3,56 +3,33 @@
|
||||
<title>npm-explore</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-explore.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-explore.html">npm-explore</a></h1> <p>Browse an installed package</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.explore(args, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.explore(args, callback)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>Spawn a subshell in the directory of the installed package specified.</p>
|
||||
|
||||
<p>If a command is specified, then it is run in the subshell, which then
|
||||
immediately terminates.</p>
|
||||
|
||||
<p>Note that the package is <em>not</em> automatically rebuilt afterwards, so be
|
||||
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">npm-explore — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-explore — npm@2.0.0</p>
|
||||
|
||||
|
||||
80
deps/npm/html/doc/api/npm-help-search.html
vendored
80
deps/npm/html/doc/api/npm-help-search.html
vendored
@@ -3,64 +3,46 @@
|
||||
<title>npm-help-search</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-help-search.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-help-search.html">npm-help-search</a></h1> <p>Search the help pages</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.helpSearch(args, [silent,] callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.helpSearch(args, [silent,] callback)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>This command is rarely useful, but it exists in the rare case that it is.</p>
|
||||
|
||||
<p>This command takes an array of search terms and returns the help pages that
|
||||
match in order of best match.</p>
|
||||
|
||||
<p>If there is only one match, then npm displays that help section. If there
|
||||
are multiple results, the results are printed to the screen formatted and the
|
||||
array of results is returned. Each result is an object with these properties:</p>
|
||||
|
||||
<ul><li>hits:
|
||||
A map of args to number of hits on that arg. For example, {"npm": 3}</li><li>found:
|
||||
Total number of unique args that matched.</li><li>totalHits:
|
||||
Total number of hits.</li><li>lines:
|
||||
An array of all matching lines (and some adjacent lines).</li><li>file:
|
||||
Name of the file that matched</li></ul>
|
||||
|
||||
<ul>
|
||||
<li>hits:
|
||||
A map of args to number of hits on that arg. For example, {"npm": 3}</li>
|
||||
<li>found:
|
||||
Total number of unique args that matched.</li>
|
||||
<li>totalHits:
|
||||
Total number of hits.</li>
|
||||
<li>lines:
|
||||
An array of all matching lines (and some adjacent lines).</li>
|
||||
<li>file:
|
||||
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">npm-help-search — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-help-search — npm@2.0.0</p>
|
||||
|
||||
|
||||
66
deps/npm/html/doc/api/npm-init.html
vendored
66
deps/npm/html/doc/api/npm-init.html
vendored
@@ -3,67 +3,41 @@
|
||||
<title>npm-init</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-init.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1>npm <a href="../api/init.html">init</a></h1> <p>Interactively create a package.json file</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.init(args, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.init(args, callback)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>This will ask you a bunch of questions, and then write a package.json for you.</p>
|
||||
|
||||
<p>It attempts to make reasonable guesses about what you want things to be set to,
|
||||
and then writes a package.json file with the options you've selected.</p>
|
||||
|
||||
<p>If you already have a package.json file, it'll read that first, and default to
|
||||
the options in there.</p>
|
||||
|
||||
<p>It is strictly additive, so it does not delete options from your package.json
|
||||
without a really good reason to do so.</p>
|
||||
|
||||
<p>Since this function expects to be run on the command-line, it doesn't work very
|
||||
well as a programmatically. The best option is to roll your own, and since
|
||||
JavaScript makes it stupid simple to output formatted JSON, that is the
|
||||
preferred method. If you're sure you want to handle command-line prompting,
|
||||
then go ahead and use this programmatically.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<h2 id="see-also">SEE ALSO</h2>
|
||||
<p><a href="../files/package.json.html">package.json(5)</a></p>
|
||||
|
||||
</div>
|
||||
<p id="footer">npm-init — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-init — npm@2.0.0</p>
|
||||
|
||||
|
||||
61
deps/npm/html/doc/api/npm-install.html
vendored
61
deps/npm/html/doc/api/npm-install.html
vendored
@@ -3,57 +3,34 @@
|
||||
<title>npm-install</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-install.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-install.html">npm-install</a></h1> <p>install a package programmatically</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.commands.install([where,] packages, callback)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.install([where,] packages, callback)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>This acts much the same ways as installing on the command-line.</p>
|
||||
|
||||
<p>The 'where' parameter is optional and only used internally, and it specifies
|
||||
where the packages should be installed to.</p>
|
||||
|
||||
<p>The 'packages' parameter is an array of strings. Each element in the array is
|
||||
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">npm-install — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-install — npm@2.0.0</p>
|
||||
|
||||
|
||||
71
deps/npm/html/doc/api/npm-link.html
vendored
71
deps/npm/html/doc/api/npm-link.html
vendored
@@ -3,71 +3,44 @@
|
||||
<title>npm-link</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-link.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-link.html">npm-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>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.commands.link(callback)
|
||||
npm.commands.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
|
||||
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">npm-link — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-link — npm@2.0.0</p>
|
||||
|
||||
|
||||
65
deps/npm/html/doc/api/npm-load.html
vendored
65
deps/npm/html/doc/api/npm-load.html
vendored
@@ -3,64 +3,39 @@
|
||||
<title>npm-load</title>
|
||||
<meta http-equiv="content-type" value="text/html;utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../static/style.css">
|
||||
<link rel="canonical" href="https://www.npmjs.org/doc/api/npm-load.html">
|
||||
<script async=true src="../../static/toc.js"></script>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<h1><a href="../api/npm-load.html">npm-load</a></h1> <p>Load config settings</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>npm.load(conf, cb)</code></pre>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<h2 id="synopsis">SYNOPSIS</h2>
|
||||
<pre><code>npm.load(conf, cb)
|
||||
</code></pre><h2 id="description">DESCRIPTION</h2>
|
||||
<p>npm.load() must be called before any other function call. Both parameters are
|
||||
optional, but the second is recommended.</p>
|
||||
|
||||
<p>The first parameter is an object hash of command-line config params, and the
|
||||
second parameter is a callback that will be called when npm is loaded and
|
||||
ready to serve.</p>
|
||||
|
||||
<p>The first parameter should follow a similar structure as the package.json
|
||||
config object.</p>
|
||||
|
||||
<p>For example, to emulate the --dev flag, pass an object that looks like this:</p>
|
||||
|
||||
<pre><code>{
|
||||
"dev": true
|
||||
}</code></pre>
|
||||
}
|
||||
</code></pre><p>For a list of all the available command-line configs, see <code>npm help config</code></p>
|
||||
|
||||
<p>For a list of all the available command-line configs, see <code>npm help config</code></p>
|
||||
</div>
|
||||
<p id="footer">npm-load — npm@1.3.23</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>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo>
|
||||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr>
|
||||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr>
|
||||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr>
|
||||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr>
|
||||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
|
||||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
|
||||
</table>
|
||||
<p id="footer">npm-load — npm@2.0.0</p>
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user