From ffa0100aa2bf8927594228b66af0a62a24838f7c Mon Sep 17 00:00:00 2001 From: erniu <25457788@qq.com> Date: Mon, 9 May 2016 12:17:07 +0800 Subject: [PATCH 001/994] =?UTF-8?q?const=20=E5=85=B3=E9=94=AE=E5=AD=97?= =?UTF-8?q?=E5=8F=AA=E8=83=BD=E5=A3=B0=E6=98=8E=E5=B8=B8=E9=87=8F=EF=BC=8C?= =?UTF-8?q?=E8=BF=99=E4=B8=AA=E5=9C=A8=E5=85=B6=E4=BB=96=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E4=B8=AD=E4=B9=9F=E7=B1=BB=E4=BC=BC=EF=BC=8C=E5=9C=A8MDN?= =?UTF-8?q?=E4=B8=8A=E7=9A=84=E5=AE=9A=E4=B9=89=E4=B8=AD=E4=B9=9F=E6=98=AF?= =?UTF-8?q?=E8=BF=99=E6=A0=B7=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/let.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/let.md b/docs/let.md index e1d4e7cb5..6ceb940f0 100644 --- a/docs/let.md +++ b/docs/let.md @@ -349,7 +349,7 @@ f() // ReferenceError: f is not defined ## const命令 -const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变。 +const 声明一个只读的常量。一旦声明,常量的值就不能改变。 ```javascript 'use strict'; From aee670cb9b47373ea96371dbc4344b4e2227ba81 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 12 May 2016 07:44:57 +0800 Subject: [PATCH 002/994] =?UTF-8?q?doc(array):=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=95=B0=E7=BB=84=E6=8E=A8=E5=AF=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/array.md | 104 -------------------------------------------------- 1 file changed, 104 deletions(-) diff --git a/docs/array.md b/docs/array.md index 73f4621fc..ddcc7cfce 100644 --- a/docs/array.md +++ b/docs/array.md @@ -497,107 +497,3 @@ for (let i of arr) { 由于空位的处理规则非常不统一,所以建议避免出现空位。 -## 数组推导 - -数组推导(array comprehension)提供简洁写法,允许直接通过现有数组生成新数组。这项功能本来是要放入ES6的,但是TC39委员会想继续完善这项功能,让其支持所有数据结构(内部调用iterator对象),不像现在只支持数组,所以就把它推迟到了ES7。Babel转码器已经支持这个功能。 - -```javascript -var a1 = [1, 2, 3, 4]; -var a2 = [for (i of a1) i * 2]; - -a2 // [2, 4, 6, 8] -``` - -上面代码表示,通过`for...of`结构,数组`a2`直接在`a1`的基础上生成。 - -注意,数组推导中,`for...of`结构总是写在最前面,返回的表达式写在最后面。 - -`for...of`后面还可以附加`if`语句,用来设定循环的限制条件。 - -```javascript -var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ]; - -[for (year of years) if (year > 2000) year]; -// [ 2006, 2010, 2014 ] - -[for (year of years) if (year > 2000) if(year < 2010) year]; -// [ 2006] - -[for (year of years) if (year > 2000 && year < 2010) year]; -// [ 2006] -``` - -上面代码表明,`if`语句要写在`for...of`与返回的表达式之间,而且可以多个`if`语句连用。 - -下面是另一个例子。 - -```javascript -var customers = [ - { - name: 'Jack', - age: 25, - city: 'New York' - }, - { - name: 'Peter', - age: 30, - city: 'Seattle' - } -]; - -var results = [ - for (c of customers) - if (c.city == "Seattle") - { name: c.name, age: c.age } -]; -results // { name: "Peter", age: 30 } -``` - -数组推导可以替代`map`和`filter`方法。 - -```javascript -[for (i of [1, 2, 3]) i * i]; -// 等价于 -[1, 2, 3].map(function (i) { return i * i }); - -[for (i of [1,4,2,3,-8]) if (i < 3) i]; -// 等价于 -[1,4,2,3,-8].filter(function(i) { return i < 3 }); -``` - -上面代码说明,模拟`map`功能只要单纯的`for...of`循环就行了,模拟`filter`功能除了`for...of`循环,还必须加上`if`语句。 - -在一个数组推导中,还可以使用多个`for...of`结构,构成多重循环。 - -```javascript -var a1 = ['x1', 'y1']; -var a2 = ['x2', 'y2']; -var a3 = ['x3', 'y3']; - -[for (s of a1) for (w of a2) for (r of a3) console.log(s + w + r)]; -// x1x2x3 -// x1x2y3 -// x1y2x3 -// x1y2y3 -// y1x2x3 -// y1x2y3 -// y1y2x3 -// y1y2y3 -``` - -上面代码在一个数组推导之中,使用了三个`for...of`结构。 - -需要注意的是,数组推导的方括号构成了一个单独的作用域,在这个方括号中声明的变量类似于使用`let`语句声明的变量。 - -由于字符串可以视为数组,因此字符串也可以直接用于数组推导。 - -```javascript -[for (c of 'abcde') if (/[aeiou]/.test(c)) c].join('') // 'ae' - -[for (c of 'abcde') c+'0'].join('') // 'a0b0c0d0e0' -``` - -上面代码使用了数组推导,对字符串进行处理。 - -数组推导需要注意的地方是,新数组会立即在内存中生成。这时,如果原数组是一个很大的数组,将会非常耗费内存。 - From 8bf0e77b0000034533bc68444c28eadadcf51309 Mon Sep 17 00:00:00 2001 From: erniu <25457788@qq.com> Date: Thu, 12 May 2016 18:02:05 +0800 Subject: [PATCH 003/994] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E7=AC=94=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/number.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/number.md b/docs/number.md index 1080ee5f2..7a34dc8fb 100644 --- a/docs/number.md +++ b/docs/number.md @@ -24,7 +24,7 @@ ES6提供了二进制和八进制数值的新的写法,分别用前缀`0b`( })() // Uncaught SyntaxError: Octal literals are not allowed in strict mode. ``` -如果要将`0b`和`0x`前缀的字符串数值转为十进制,要使用`Number`方法。 +如果要将`0b`和`0o`前缀的字符串数值转为十进制,要使用`Number`方法。 ```javascript Number('0b111') // 7 From e448091da7f44709d22d2177a70dd7af344b86c2 Mon Sep 17 00:00:00 2001 From: Xcat Liu Date: Fri, 13 May 2016 15:57:54 +0800 Subject: [PATCH 004/994] Adding code padding Adding padding-left to code --- css/app.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/css/app.css b/css/app.css index cb9528ab0..a582ecce4 100644 --- a/css/app.css +++ b/css/app.css @@ -166,7 +166,8 @@ input.searchButton { } #content code { - padding-right: 5px; + padding-left: 3px; + padding-right: 3px; color: #a6e22e; font-size: 0.7rem; From 78112e85b0f0d11e066c6c2a171f935c119ab23a Mon Sep 17 00:00:00 2001 From: Xcat Liu Date: Fri, 13 May 2016 16:17:59 +0800 Subject: [PATCH 005/994] Fix some code syntax problem in docs/let.md Followed the previous coding style, added some `;` and space to the code. --- docs/let.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/let.md b/docs/let.md index 6ceb940f0..1abe0597a 100644 --- a/docs/let.md +++ b/docs/let.md @@ -21,9 +21,9 @@ b // 1 `for`循环的计数器,就很合适使用let命令。 ```javascript -for(let i = 0; i < arr.length; i++){} +for (let i = 0; i < arr.length; i++) {} -console.log(i) +console.log(i); //ReferenceError: i is not defined ``` @@ -189,14 +189,14 @@ ES5只有全局作用域和函数作用域,没有块级作用域,这带来 ```javascript var tmp = new Date(); -function f(){ +function f() { console.log(tmp); - if (false){ + if (false) { var tmp = "hello world"; } } -f() // undefined +f(); // undefined ``` 上面代码中,函数f执行后,输出结果为`undefined`,原因在于变量提升,导致内层的tmp变量覆盖了外层的tmp变量。 @@ -206,7 +206,7 @@ f() // undefined ```javascript var s = 'hello'; -for (var i = 0; i < s.length; i++){ +for (var i = 0; i < s.length; i++) { console.log(s[i]); } @@ -251,7 +251,7 @@ ES6允许块级作用域的任意嵌套。 ```javascript {{{{ let insane = 'Hello World'; - {let insane = 'Hello World';} + {let insane = 'Hello World'} }}}}; ``` @@ -294,7 +294,7 @@ function f() { console.log('I am outside!'); } return a; } } -f() // 报错 +f(); // 报错 ``` 上面代码中,块级作用域外部,无法调用块级作用域内部定义的函数。如果确实需要调用,就要像下面这样处理。 @@ -305,9 +305,9 @@ let f; let a = 'secret'; f = function () { return a; - } + }; } -f() // "secret" +f(); // "secret" ``` ES5的严格模式规定,函数只能在顶层作用域和函数内声明,其他情况(比如`if`代码块、循环代码块)的声明都会报错。 @@ -342,7 +342,7 @@ if (true) if (true) { function f() {} } -f() // ReferenceError: f is not defined +f(); // ReferenceError: f is not defined ``` 上面代码中,函数`f`是在块级作用域内部声明的,外部是不可用的。 @@ -425,7 +425,7 @@ foo.prop = 123; foo.prop // 123 -foo = {} // TypeError: "foo" is read-only +foo = {}; // TypeError: "foo" is read-only ``` 上面代码中,常量`foo`储存的是一个地址,这个地址指向一个对象。不可变的只是这个地址,即不能把`foo`指向另一个地址,但对象本身是可变的,所以依然可以为其添加新属性。 From fd714a39bf51a72486e52e6d968c51f081451ac7 Mon Sep 17 00:00:00 2001 From: Xcat Liu Date: Fri, 13 May 2016 16:35:06 +0800 Subject: [PATCH 006/994] Fix coding style in docs/destructuring.md --- docs/destructuring.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index 3ca26486f..5dc836cd6 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -96,7 +96,7 @@ const [v1, v2, ..., vN ] = array; 对于Set结构,也可以使用数组的解构赋值。 ```javascript -let [x, y, z] = new Set(["a", "b", "c"]) +let [x, y, z] = new Set(["a", "b", "c"]); x // "a" ``` @@ -126,8 +126,8 @@ sixth // 5 var [foo = true] = []; foo // true -[x, y = 'b'] = ['a'] // x='a', y='b' -[x, y = 'b'] = ['a', undefined] // x='a', y='b' +[x, y = 'b'] = ['a']; // x='a', y='b' +[x, y = 'b'] = ['a', undefined]; // x='a', y='b' ``` 注意,ES6内部使用严格相等运算符(`===`),判断一个位置是否有值。所以,如果一个数组成员不严格等于`undefined`,默认值是不会生效的。 @@ -145,7 +145,7 @@ x // null 如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值。 ```javascript -function f(){ +function f() { console.log('aaa'); } @@ -321,7 +321,7 @@ x // null 如果解构失败,变量的值等于`undefined`。 ```javascript -var {foo} = {bar: 'baz'} +var {foo} = {bar: 'baz'}; foo // undefined ``` @@ -329,7 +329,7 @@ foo // undefined ```javascript // 报错 -var {foo: {bar}} = {baz: 'baz'} +var {foo: {bar}} = {baz: 'baz'}; ``` 上面代码中,等号左边对象的`foo`属性,对应一个子对象。该子对象的`bar`属性,解构时会报错。原因很简单,因为`foo`这时等于`undefined`,再取子属性就会报错,请看下面的代码。 @@ -426,7 +426,7 @@ function add([x, y]){ return x + y; } -add([1, 2]) // 3 +add([1, 2]); // 3 ``` 上面代码中,函数`add`的参数表面上是一个数组,但在传入参数的那一刻,数组参数就被解构成变量`x`和`y`。对于函数内部的代码来说,它们能感受到的参数就是`x`和`y`。 @@ -434,7 +434,7 @@ add([1, 2]) // 3 下面是另一个例子。 ```javascript -[[1, 2], [3, 4]].map(([a, b]) => a + b) +[[1, 2], [3, 4]].map(([a, b]) => a + b); // [ 3, 7 ] ``` @@ -471,7 +471,7 @@ move(); // [0, 0] `undefined`就会触发函数参数的默认值。 ```javascript -[1, undefined, 3].map((x = 'yes') => x) +[1, undefined, 3].map((x = 'yes') => x); // [ 1, 'yes', 3 ] ``` @@ -583,11 +583,11 @@ var { foo, bar } = example(); ```javascript // 参数是一组有次序的值 function f([x, y, z]) { ... } -f([1, 2, 3]) +f([1, 2, 3]); // 参数是一组无次序的值 function f({x, y, z}) { ... } -f({z: 3, y: 2, x: 1}) +f({z: 3, y: 2, x: 1}); ``` **(4)提取JSON数据** @@ -599,11 +599,11 @@ var jsonData = { id: 42, status: "OK", data: [867, 5309] -} +}; let { id, status, data: number } = jsonData; -console.log(id, status, number) +console.log(id, status, number); // 42, "OK", [867, 5309] ``` From 732701ac355d1d6742646acb91949bb5f4a4259f Mon Sep 17 00:00:00 2001 From: Xcat Liu Date: Fri, 13 May 2016 17:22:12 +0800 Subject: [PATCH 007/994] Fix code wrapper in docs/regex.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这一篇的代码标签有点乱,我整理了一下 --- docs/regex.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/regex.md b/docs/regex.md index 14ef14de4..5a66f1b36 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -58,13 +58,13 @@ ES6对正则表达式添加了`u`修饰符,含义为“Unicode模式”,用 // true ``` -上面代码中,“\uD83D\uDC2A”是一个四个字节的UTF-16编码,代表一个字符。但是,ES5不支持四个字节的UTF-16编码,会将其识别为两个字符,导致第二行代码结果为true。加了u修饰符以后,ES6就会识别其为一个字符,所以第一行代码结果为`false`。 +上面代码中,`\uD83D\uDC2A`是一个四个字节的UTF-16编码,代表一个字符。但是,ES5不支持四个字节的UTF-16编码,会将其识别为两个字符,导致第二行代码结果为`true`。加了`u`修饰符以后,ES6就会识别其为一个字符,所以第一行代码结果为`false`。 -一旦加上u修饰符号,就会修改下面这些正则表达式的行为。 +一旦加上`u`修饰符号,就会修改下面这些正则表达式的行为。 **(1)点字符** -点(.)字符在正则表达式中,含义是除了换行符以外的任意单个字符。对于码点大于`0xFFFF`的Unicode字符,点字符不能识别,必须加上u修饰符。 +点(`.`)字符在正则表达式中,含义是除了换行符以外的任意单个字符。对于码点大于`0xFFFF`的Unicode字符,点字符不能识别,必须加上`u`修饰符。 ```javascript var s = '𠮷'; @@ -73,11 +73,11 @@ var s = '𠮷'; /^.$/u.test(s) // true ``` -上面代码表示,如果不添加u修饰符,正则表达式就会认为字符串为两个字符,从而匹配失败。 +上面代码表示,如果不添加`u`修饰符,正则表达式就会认为字符串为两个字符,从而匹配失败。 **(2)Unicode字符表示法** -ES6新增了使用大括号表示Unicode字符,这种表示法在正则表达式中必须加上u修饰符,才能识别。 +ES6新增了使用大括号表示Unicode字符,这种表示法在正则表达式中必须加上`u`修饰符,才能识别。 ```javascript /\u{61}/.test('a') // false @@ -85,11 +85,11 @@ ES6新增了使用大括号表示Unicode字符,这种表示法在正则表达 /\u{20BB7}/u.test('𠮷') // true ``` -上面代码表示,如果不加u修饰符,正则表达式无法识别`\u{61}`这种表示法,只会认为这匹配61个连续的u。 +上面代码表示,如果不加`u`修饰符,正则表达式无法识别`\u{61}`这种表示法,只会认为这匹配61个连续的`u`。 **(3)量词** -使用u修饰符后,所有量词都会正确识别大于码点大于`0xFFFF`的Unicode字符。 +使用`u`修饰符后,所有量词都会正确识别大于码点大于`0xFFFF`的Unicode字符。 ```javascript /a{2}/.test('aa') // true @@ -98,24 +98,24 @@ ES6新增了使用大括号表示Unicode字符,这种表示法在正则表达 /𠮷{2}/u.test('𠮷𠮷') // true ``` -另外,只有在使用u修饰符的情况下,Unicode表达式当中的大括号才会被正确解读,否则会被解读为量词。 +另外,只有在使用`u`修饰符的情况下,Unicode表达式当中的大括号才会被正确解读,否则会被解读为量词。 ```javascript /^\u{3}$/.test('uuu') // true ``` -上面代码中,由于正则表达式没有u修饰符,所以大括号被解读为量词。加上u修饰符,就会被解读为Unicode表达式。 +上面代码中,由于正则表达式没有`u`修饰符,所以大括号被解读为量词。加上`u`修饰符,就会被解读为Unicode表达式。 **(4)预定义模式** -u修饰符也影响到预定义模式,能否正确识别码点大于`0xFFFF`的Unicode字符。 +`u`修饰符也影响到预定义模式,能否正确识别码点大于`0xFFFF`的Unicode字符。 ```javascript /^\S$/.test('𠮷') // false /^\S$/u.test('𠮷') // true ``` -上面代码的`\S`是预定义模式,匹配所有不是空格的字符。只有加了u修饰符,它才能正确匹配码点大于0xFFFF的Unicode字符。 +上面代码的`\S`是预定义模式,匹配所有不是空格的字符。只有加了`u`修饰符,它才能正确匹配码点大于`0xFFFF`的Unicode字符。 利用这一点,可以写出一个正确返回字符串长度的函数。 @@ -133,7 +133,7 @@ codePointLength(s) // 2 **(5)i修饰符** -有些Unicode字符的编码不同,但是字型很相近,比如,\u004B与\u212A都是大写的K。 +有些Unicode字符的编码不同,但是字型很相近,比如,`\u004B`与`\u212A`都是大写的K。 ```javascript /[a-z]/i.test('\u212A') // false @@ -160,7 +160,7 @@ r1.exec(s) // ["aa"] r2.exec(s) // null ``` -上面代码有两个正则表达式,一个使用`g`修饰符,另一个使用`y`修饰符。这两个正则表达式各执行了两次,第一次执行的时候,两者行为相同,剩余字符串都是`_aa_a`。由于g修饰没有位置要求,所以第二次执行会返回结果,而y修饰符要求匹配必须从头部开始,所以返回`null`。 +上面代码有两个正则表达式,一个使用`g`修饰符,另一个使用`y`修饰符。这两个正则表达式各执行了两次,第一次执行的时候,两者行为相同,剩余字符串都是`_aa_a`。由于`g`修饰没有位置要求,所以第二次执行会返回结果,而`y`修饰符要求匹配必须从头部开始,所以返回`null`。 如果改一下正则表达式,保证每次都能头部匹配,`y`修饰符就会返回结果了。 @@ -197,7 +197,7 @@ REGEX.exec('xaxa') // null 上面代码中,`lastIndex`属性指定每次搜索的开始位置,`g`修饰符从这个位置开始向后搜索,直到发现匹配为止。 -y修饰符同样遵守`lastIndex`属性,但是要求必须在`lastIndex`指定的位置发现匹配。 +`y`修饰符同样遵守`lastIndex`属性,但是要求必须在`lastIndex`指定的位置发现匹配。 ```javascript const REGEX = /a/y; @@ -217,16 +217,16 @@ match.index // 3 REGEX.lastIndex // 4 ``` -进一步说,`y`修饰符号隐含了头部匹配的标志ˆ。 +进一步说,`y`修饰符号隐含了头部匹配的标志`^`。 ```javascript /b/y.exec('aba') // null ``` -上面代码由于不能保证头部匹配,所以返回`null`。`y`修饰符的设计本意,就是让头部匹配的标志ˆ在全局匹配中都有效。 +上面代码由于不能保证头部匹配,所以返回`null`。`y`修饰符的设计本意,就是让头部匹配的标志`^`在全局匹配中都有效。 -在`split`方法中使用y修饰符,原字符串必须以分隔符开头。这也意味着,只要匹配成功,数组的第一个成员肯定是空字符串。 +在`split`方法中使用`y`修饰符,原字符串必须以分隔符开头。这也意味着,只要匹配成功,数组的第一个成员肯定是空字符串。 ```javascript // 没有找到匹配 @@ -298,7 +298,7 @@ tokenize(TOKEN_G, '3x + 4') ## sticky属性 -与y修饰符相匹配,ES6的正则对象多了sticky属性,表示是否设置了y修饰符。 +与`y`修饰符相匹配,ES6的正则对象多了`sticky`属性,表示是否设置了`y`修饰符。 ```javascript var r = /hello\d/y; @@ -307,7 +307,7 @@ r.sticky // true ## flags属性 -ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符。 +ES6为正则表达式新增了`flags`属性,会返回正则表达式的修饰符。 ```javascript // ES5的source属性 @@ -335,7 +335,7 @@ escapeRegExp(str) // "\/path\/to\/resource\.html\?search=query" ``` -上面代码中,str是一个正常字符串,必须使用反斜杠对其中的特殊字符转义,才能用来作为一个正则匹配的模式。 +上面代码中,`str`是一个正常字符串,必须使用反斜杠对其中的特殊字符转义,才能用来作为一个正则匹配的模式。 已经有[提议](https://esdiscuss.org/topic/regexp-escape)将这个需求标准化,作为RegExp对象的静态方法[RegExp.escape()](https://github.com/benjamingr/RexExp.escape),放入ES7。2015年7月31日,TC39认为,这个方法有安全风险,又不愿这个方法变得过于复杂,没有同意将其列入ES7,但这不失为一个真实的需求。 @@ -358,7 +358,7 @@ var regex = new RegExp(RegExp.escape(str), 'g'); assert.equal(String(regex), '/hello\. how are you\?/g'); ``` -目前,该方法可以用上文的escapeRegExp函数或者垫片模块[regexp.escape](https://github.com/ljharb/regexp.escape)实现。 +目前,该方法可以用上文的`escapeRegExp`函数或者垫片模块[regexp.escape](https://github.com/ljharb/regexp.escape)实现。 ```javascript var escape = require('regexp.escape'); From aecabb2e2b3a22c61ee6252615d11e2f328b73c1 Mon Sep 17 00:00:00 2001 From: Xcat Liu Date: Fri, 13 May 2016 19:23:53 +0800 Subject: [PATCH 008/994] Fix coding style in docs/number.md --- docs/number.md | 82 +++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/number.md b/docs/number.md index 1080ee5f2..ed75f69a2 100644 --- a/docs/number.md +++ b/docs/number.md @@ -141,7 +141,7 @@ Number.isInteger("15") // false Number.isInteger(true) // false ``` -ES5可以通过下面的代码,部署Number.isInteger()。 +ES5可以通过下面的代码,部署`Number.isInteger()`。 ```javascript (function (global) { @@ -196,7 +196,7 @@ Number.EPSILON.toFixed(20) ```javascript function withinErrorMargin (left, right) { - return Math.abs(left - right) < Number.EPSILON + return Math.abs(left - right) < Number.EPSILON; } withinErrorMargin(0.1 + 0.2, 0.3) // true @@ -286,9 +286,9 @@ function trusty (left, right, result) { Number.isSafeInteger(right) && Number.isSafeInteger(result) ) { - return result + return result; } - throw new RangeError('Operation cannot be trusted!') + throw new RangeError('Operation cannot be trusted!'); } trusty(9007199254740993, 990, 9007199254740993 - 990) @@ -334,7 +334,7 @@ Math.trunc(); // NaN ```javascript Math.trunc = Math.trunc || function(x) { return x < 0 ? Math.ceil(x) : Math.floor(x); -} +}; ``` ### Math.sign() @@ -368,7 +368,7 @@ Math.sign = Math.sign || function(x) { return x; } return x > 0 ? 1 : -1; -} +}; ``` ### Math.cbrt() @@ -449,9 +449,9 @@ Math.clz32(true) // 31 `Math.imul`方法返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数。 ```javascript -Math.imul(2, 4); // 8 -Math.imul(-1, 8); // -8 -Math.imul(-2, -2); // 4 +Math.imul(2, 4) // 8 +Math.imul(-1, 8) // -8 +Math.imul(-2, -2) // 4 ``` 如果只考虑最后32位,大多数情况下,`Math.imul(a, b)`与`a * b`的结果是相同的,即该方法等同于`(a * b)|0`的效果(超过32位的部分溢出)。之所以需要部署这个方法,是因为JavaScript有精度限制,超过2的53次方的值无法精确表示。这就是说,对于那些很大的数的乘法,低位数值往往都是不精确的,`Math.imul`方法可以返回正确的低位数值。 @@ -471,11 +471,11 @@ Math.imul(0x7fffffff, 0x7fffffff) // 1 Math.fround方法返回一个数的单精度浮点数形式。 ```javascript -Math.fround(0); // 0 -Math.fround(1); // 1 -Math.fround(1.337); // 1.3370000123977661 -Math.fround(1.5); // 1.5 -Math.fround(NaN); // NaN +Math.fround(0) // 0 +Math.fround(1) // 1 +Math.fround(1.337) // 1.3370000123977661 +Math.fround(1.5) // 1.5 +Math.fround(NaN) // NaN ``` 对于整数来说,`Math.fround`方法返回结果不会有任何不同,区别主要是那些无法用64个二进制位精确表示的小数。这时,`Math.fround`方法会返回最接近这个小数的单精度浮点数。 @@ -504,7 +504,7 @@ Math.hypot(-3); // 3 上面代码中,3的平方加上4的平方,等于5的平方。 -如果参数不是数值,Math.hypot方法会将其转为数值。只要有一个参数无法转为数值,就会返回NaN。 +如果参数不是数值,`Math.hypot`方法会将其转为数值。只要有一个参数无法转为数值,就会返回NaN。 ### 对数方法 @@ -515,9 +515,9 @@ ES6新增了4个对数相关方法。 `Math.expm1(x)`返回ex - 1,即`Math.exp(x) - 1`。 ```javascript -Math.expm1(-1); // -0.6321205588285577 -Math.expm1(0); // 0 -Math.expm1(1); // 1.718281828459045 +Math.expm1(-1) // -0.6321205588285577 +Math.expm1(0) // 0 +Math.expm1(1) // 1.718281828459045 ``` 对于没有部署这个方法的环境,可以用下面的代码模拟。 @@ -533,10 +533,10 @@ Math.expm1 = Math.expm1 || function(x) { `Math.log1p(x)`方法返回`1 + x`的自然对数,即`Math.log(1 + x)`。如果`x`小于-1,返回`NaN`。 ```javascript -Math.log1p(1); // 0.6931471805599453 -Math.log1p(0); // 0 -Math.log1p(-1); // -Infinity -Math.log1p(-2); // NaN +Math.log1p(1) // 0.6931471805599453 +Math.log1p(0) // 0 +Math.log1p(-1) // -Infinity +Math.log1p(-2) // NaN ``` 对于没有部署这个方法的环境,可以用下面的代码模拟。 @@ -549,14 +549,14 @@ Math.log1p = Math.log1p || function(x) { **(3)Math.log10()** -`Math.log10(x)`返回以10为底的x的对数。如果x小于0,则返回NaN。 +`Math.log10(x)`返回以10为底的`x`的对数。如果`x`小于0,则返回NaN。 ```javascript -Math.log10(2); // 0.3010299956639812 -Math.log10(1); // 0 -Math.log10(0); // -Infinity -Math.log10(-2); // NaN -Math.log10(100000); // 5 +Math.log10(2) // 0.3010299956639812 +Math.log10(1) // 0 +Math.log10(0) // -Infinity +Math.log10(-2) // NaN +Math.log10(100000) // 5 ``` 对于没有部署这个方法的环境,可以用下面的代码模拟。 @@ -569,15 +569,15 @@ Math.log10 = Math.log10 || function(x) { **(4)Math.log2()** -`Math.log2(x)`返回以2为底的x的对数。如果x小于0,则返回NaN。 +`Math.log2(x)`返回以2为底的`x`的对数。如果`x`小于0,则返回NaN。 ```javascript -Math.log2(3) // 1.584962500721156 -Math.log2(2) // 1 -Math.log2(1) // 0 -Math.log2(0) // -Infinity -Math.log2(-2) // NaN -Math.log2(1024) // 10 +Math.log2(3) // 1.584962500721156 +Math.log2(2) // 1 +Math.log2(1) // 0 +Math.log2(0) // -Infinity +Math.log2(-2) // NaN +Math.log2(1024) // 10 Math.log2(1 << 29) // 29 ``` @@ -593,12 +593,12 @@ Math.log2 = Math.log2 || function(x) { ES6新增了6个三角函数方法。 -- Math.sinh(x) 返回x的双曲正弦(hyperbolic sine) -- Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine) -- Math.tanh(x) 返回x的双曲正切(hyperbolic tangent) -- Math.asinh(x) 返回x的反双曲正弦(inverse hyperbolic sine) -- Math.acosh(x) 返回x的反双曲余弦(inverse hyperbolic cosine) -- Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent) +- `Math.sinh(x)` 返回`x`的双曲正弦(hyperbolic sine) +- `Math.cosh(x)` 返回`x`的双曲余弦(hyperbolic cosine) +- `Math.tanh(x)` 返回`x`的双曲正切(hyperbolic tangent) +- `Math.asinh(x)` 返回`x`的反双曲正弦(inverse hyperbolic sine) +- `Math.acosh(x)` 返回`x`的反双曲余弦(inverse hyperbolic cosine) +- `Math.atanh(x)` 返回`x`的反双曲正切(inverse hyperbolic tangent) ## 指数运算符 From 17ae0fa973804394b3f086226730139781973896 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 15 May 2016 12:06:22 +0800 Subject: [PATCH 009/994] =?UTF-8?q?doc(let):=20=E5=85=A8=E5=B1=80=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E7=9A=84=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/let.md | 27 +++----------------- docs/module.md | 21 ++++++++++++++++ docs/set-map.md | 66 ++++++++++++++++++++++++++++++------------------- 3 files changed, 65 insertions(+), 49 deletions(-) diff --git a/docs/let.md b/docs/let.md index 6ceb940f0..5f75742fc 100644 --- a/docs/let.md +++ b/docs/let.md @@ -466,28 +466,7 @@ var constantize = (obj) => { }; ``` -ES5只有两种声明变量的方法:var命令和function命令。ES6除了添加let和const命令,后面章节还会提到,另外两种声明变量的方法:import命令和class命令。所以,ES6一共有6种声明变量的方法。 - -## 跨模块常量 - -上面说过,const声明的常量只在当前代码块有效。如果想设置跨模块的常量,可以采用下面的写法。 - -```javascript -// constants.js 模块 -export const A = 1; -export const B = 3; -export const C = 4; - -// test1.js 模块 -import * as constants from './constants'; -console.log(constants.A); // 1 -console.log(constants.B); // 3 - -// test2.js 模块 -import {A, B} from './constants'; -console.log(A); // 1 -console.log(B); // 3 -``` +ES5只有两种声明变量的方法:`var`命令和`function`命令。ES6除了添加`let`和`const`命令,后面章节还会提到,另外两种声明变量的方法:`import`命令和`class`命令。所以,ES6一共有6种声明变量的方法。 ## 全局对象的属性 @@ -503,7 +482,9 @@ window.a // 2 上面代码中,全局对象的属性赋值与全局变量的赋值,是同一件事。(对于Node来说,这一条只对REPL环境适用,模块环境之中,全局变量必须显式声明成`global`对象的属性。) -这种规定被视为JavaScript语言的一大问题,因为很容易不知不觉就创建了全局变量。ES6为了改变这一点,一方面规定,var命令和function命令声明的全局变量,依旧是全局对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于全局对象的属性。 +未声明的全局变量,自动成为全局对象`window`的属性,这被认为是JavaScript语言最大的设计败笔之一。这样的设计带来了两个很大的问题,首先是没法在编译时就报出变量未声明的错误,只有运行时才能知道,其次程序员很容易不知不觉地就创建了全局变量(比如打字出错)。另一方面,从语义上讲,语言的顶层对象是一个有实体含义的对象,也是不合适的。 + +ES6为了改变这一点,一方面规定,为了保持兼容性,`var`命令和`function`命令声明的全局变量,依旧是全局对象的属性;另一方面规定,`let`命令、`const`命令、`class`命令声明的全局变量,不属于全局对象的属性。也就是说,从ES6开始,全局变量将逐步与全局对象的属性脱钩。 ```javascript var a = 1; diff --git a/docs/module.md b/docs/module.md index e0f332b28..8fd57e9ae 100644 --- a/docs/module.md +++ b/docs/module.md @@ -821,6 +821,27 @@ $ node TypeError: even is not a function ``` +## 跨模块常量 + +上面说过,`const`声明的常量只在当前代码块有效。如果想设置跨模块的常量(即跨多个文件),可以采用下面的写法。 + +```javascript +// constants.js 模块 +export const A = 1; +export const B = 3; +export const C = 4; + +// test1.js 模块 +import * as constants from './constants'; +console.log(constants.A); // 1 +console.log(constants.B); // 3 + +// test2.js 模块 +import {A, B} from './constants'; +console.log(A); // 1 +console.log(B); // 3 +``` + ## ES6模块的转码 浏览器目前还不支持ES6模块,为了现在就能使用,可以将转为ES5的写法。除了Babel可以用来转码之外,还有以下两个方法,也可以用来转码。 diff --git a/docs/set-map.md b/docs/set-map.md index ba9a63491..524f024e9 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -11,9 +11,11 @@ Set本身是一个构造函数,用来生成Set数据结构。 ```javascript var s = new Set(); -[2,3,5,4,5,2,2].map(x => s.add(x)) +[2, 3, 5, 4, 5, 2, 2].map(x => s.add(x)) -for (let i of s) {console.log(i)} +for (let i of s) { + console.log(i); +} // 2 3 5 4 ``` @@ -22,13 +24,16 @@ for (let i of s) {console.log(i)} Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化。 ```javascript +// 例一 var set = new Set([1, 2, 3, 4, 4]) [...set] // [1, 2, 3, 4] +// 例二 var items = new Set([1, 2, 3, 4, 5, 5, 5, 5]); items.size // 5 +// 例三 function divs () { return [...document.querySelectorAll('div')] } @@ -41,6 +46,15 @@ divs().forEach(div => set.add(div)) set.size // 56 ``` +上面代码中,例一和例二都是`Set`函数接受数组作为参数,例三是接受类似数组的对象作为参数。 + +上面代码中,也展示了一种去除数组重复成员的方法。 + +```javascript +// 去除数组的重复成员 +[...new Set(array)] +``` + 向Set加入值的时候,不会发生类型转换,所以`5`和`"5"`是两个不同的值。Set内部判断两个值是否不同,使用的算法叫做“Same-value equality”,它类似于精确相等运算符(`===`),主要的区别是`NaN`等于自身,而精确相等运算符认为`NaN`不等于自身。 ```javascript @@ -72,15 +86,15 @@ set.size // 2 Set结构的实例有以下属性。 -- Set.prototype.constructor:构造函数,默认就是Set函数。 -- Set.prototype.size:返回Set实例的成员总数。 +- `Set.prototype.constructor`:构造函数,默认就是`Set`函数。 +- `Set.prototype.size`:返回`Set`实例的成员总数。 Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。 -- add(value):添加某个值,返回Set结构本身。 -- delete(value):删除某个值,返回一个布尔值,表示删除是否成功。 -- has(value):返回一个布尔值,表示该值是否为Set的成员。 -- clear():清除所有成员,没有返回值。 +- `add(value)`:添加某个值,返回Set结构本身。 +- `delete(value)`:删除某个值,返回一个布尔值,表示删除是否成功。 +- `has(value)`:返回一个布尔值,表示该值是否为`Set`的成员。 +- `clear()`:清除所有成员,没有返回值。 上面这些属性和方法的实例如下。 @@ -98,13 +112,13 @@ s.delete(2); s.has(2) // false ``` -下面是一个对比,看看在判断是否包括一个键上面,Object结构和Set结构的写法不同。 +下面是一个对比,看看在判断是否包括一个键上面,`Object`结构和`Set`结构的写法不同。 ```javascript // 对象的写法 var properties = { - "width": 1, - "height": 1 + 'width': 1, + 'height': 1 }; if (properties[someName]) { @@ -114,60 +128,60 @@ if (properties[someName]) { // Set的写法 var properties = new Set(); -properties.add("width"); -properties.add("height"); +properties.add('width'); +properties.add('height'); if (properties.has(someName)) { // do something } ``` -Array.from方法可以将Set结构转为数组。 +`Array.from`方法可以将Set结构转为数组。 ```javascript var items = new Set([1, 2, 3, 4, 5]); var array = Array.from(items); ``` -这就提供了一种去除数组的重复元素的方法。 +这就提供了去除数组重复成员的另一种方法。 ```javascript function dedupe(array) { return Array.from(new Set(array)); } -dedupe([1,1,2,3]) // [1, 2, 3] +dedupe([1, 1, 2, 3]) // [1, 2, 3] ``` ### 遍历操作 Set结构的实例有四个遍历方法,可以用于遍历成员。 -- keys():返回一个键名的遍历器 -- values():返回一个键值的遍历器 -- entries():返回一个键值对的遍历器 -- forEach():使用回调函数遍历每个成员 +- `keys()`:返回一个键名的遍历器 +- `values()`:返回一个键值的遍历器 +- `entries()`:返回一个键值对的遍历器 +- `forEach()`:使用回调函数遍历每个成员 `key`方法、`value`方法、`entries`方法返回的都是遍历器对象(详见《Iterator对象》一章)。由于Set结构没有键名,只有键值(或者说键名和键值是同一个值),所以`key`方法和`value`方法的行为完全一致。 ```javascript let set = new Set(['red', 'green', 'blue']); -for ( let item of set.keys() ){ +for (let item of set.keys()) { console.log(item); } // red // green // blue -for ( let item of set.values() ){ +for (let item of set.values()) { console.log(item); } // red // green // blue -for ( let item of set.entries() ){ +for (let item of set.entries()) { console.log(item); } // ["red", "red"] @@ -197,7 +211,7 @@ for (let x of set) { // blue ``` -由于扩展运算符(...)内部使用`for...of`循环,所以也可以用于Set结构。 +由于扩展运算符(`...`)内部使用`for...of`循环,所以也可以用于Set结构。 ```javascript let set = new Set(['red', 'green', 'blue']); @@ -205,7 +219,7 @@ let arr = [...set]; // ['red', 'green', 'blue'] ``` -这就提供了另一种便捷的去除数组重复元素的方法。 +扩展运算符和Set结构相结合,就可以去除数组的重复成员。 ```javascript let arr = [3, 5, 2, 2, 5, 5]; @@ -244,7 +258,7 @@ let difference = new Set([...a].filter(x => !b.has(x))); // [1] ``` -Set结构的实例的forEach方法,用于对每个成员执行某种操作,没有返回值。 +Set结构的实例的`forEach`方法,用于对每个成员执行某种操作,没有返回值。 ```javascript let set = new Set([1, 2, 3]); From 341e3c19072831d74304523c45a589a689371faf Mon Sep 17 00:00:00 2001 From: Owen <469564715@qq.com> Date: Tue, 17 May 2016 14:24:09 +0800 Subject: [PATCH 010/994] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 阮老师你好,在251行这个例子中,我在chrome (版本号Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36) 下 测试的时候出现了问题, 报了错误 我研究完代码,发现在263行您return pipeObject , pipeObject 指向应该是被代理的对象而不是,Proxy对象本身 当我做出如上修改后,代码即可正确运行,返回63 我也是初学者,我不知道是否是因为编译环境的原因导致如上问题的产生,但对于使用新chrome学习es6的同学可能会产生一些误导 也许是我理解有误,耽误您宝贵的时间,为此感到抱歉。 --- docs/proxy.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/proxy.md b/docs/proxy.md index 31d03df32..54d6280b9 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -272,6 +272,31 @@ var reverseInt = n => n.toString().split('').reverse().join('') | 0; pipe(3).double.pow.reverseInt.get // 63 + +var pipe = (function () { + return function (value) { + var funcStack = []; // 认为和上面pipe同名不利于理解,换了一个名 + var oproxy = new Proxy({} , { // 使用了一个oproxy 存储Proxy的指向 + get : function (pipeObject , fnName) { + if (fnName === "get") { + return funcStack.reduce(function (val , fn) { + return fn(val); + },value); + } + funcStack.push(window[fnName]); + return oproxy; + } + }); + + return oproxy; + } +}()); + +var double = n => n * 2; +var pow = n => n * n; +var reverseInt = n => n.toString().split("").reverse().join("") | 0; + +pipe(3).double.pow.reverseInt.get; // 63 ``` 上面代码设置Proxy以后,达到了将函数名链式使用的效果。 From b3d9aa82bf29b7f5b1c18f3d7c913923111608d1 Mon Sep 17 00:00:00 2001 From: Xcat Liu Date: Wed, 18 May 2016 11:13:05 +0800 Subject: [PATCH 011/994] Fix coding style in docs/function.md --- docs/function.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/function.md b/docs/function.md index 82dea9530..c6f9c32f7 100644 --- a/docs/function.md +++ b/docs/function.md @@ -84,7 +84,7 @@ foo() // TypeError: Cannot read property 'x' of undefined 下面是另一个对象的解构赋值默认值的例子。 ```javascript -function fetch(url, { body = '', method = 'GET', headers = {} }){ +function fetch(url, { body = '', method = 'GET', headers = {} }) { console.log(method); } @@ -100,7 +100,7 @@ fetch('http://example.com') 上面的写法不能省略第二个参数,如果结合函数参数的默认值,就可以省略第二个参数。这时,就出现了双重默认值。 ```javascript -function fetch(url, { method = 'GET' } = {}){ +function fetch(url, { method = 'GET' } = {}) { console.log(method); } @@ -178,7 +178,7 @@ f(1, undefined, 2) // [1, 5, 2] 如果传入`undefined`,将触发该参数等于默认值,`null`则没有这个效果。 ```javascript -function foo(x = 5, y = 6){ +function foo(x = 5, y = 6) { console.log(x, y); } @@ -764,7 +764,7 @@ var getTempItem = id => ({ id: id, name: "Temp" }); const full = ({ first, last }) => first + ' ' + last; // 等同于 -function full( person ) { +function full(person) { return person.first + ' ' + person.last; } ``` @@ -832,14 +832,14 @@ headAndTail(1, 2, 3, 4, 5) ```javascript function foo() { - setTimeout( () => { + setTimeout(() => { console.log('id:', this.id); }, 100); } var id = 21; -foo.call( { id: 42 } ); +foo.call({ id: 42 }); // id: 42 ``` @@ -848,7 +848,7 @@ foo.call( { id: 42 } ); 箭头函数可以让`setTimeout`里面的`this`,绑定定义时所在的作用域,而不是指向运行时所在的作用域。下面是另一个例子。 ```javascript -function Timer () { +function Timer() { this.s1 = 0; this.s2 = 0; // 箭头函数 @@ -895,9 +895,9 @@ var handler = { ```javascript // ES6 function foo() { - setTimeout( () => { + setTimeout(() => { console.log('id:', this.id); - },100); + }, 100); } // ES5 @@ -955,7 +955,7 @@ foo(2, 4, 6, 8) (function() { return [ (() => this.x).bind({ x: 'inner' })() - ] + ]; }).call({ x: 'outer' }); // ['outer'] ``` @@ -1363,7 +1363,7 @@ function tco(f) { active = false; return value; } - } + }; } var sum = tco(function(x, y) { From b28145ef26495009e0677054c8f3c467383ec067 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 18 May 2016 11:50:08 +0800 Subject: [PATCH 012/994] =?UTF-8?q?doc(string):=20edit=20=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/async.md | 14 +++++++++++++- docs/string.md | 43 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/docs/async.md b/docs/async.md index 713698665..afca50de7 100644 --- a/docs/async.md +++ b/docs/async.md @@ -750,10 +750,22 @@ var result = asyncReadFile(); (4)返回值是Promise。`async`函数的返回值是Promise对象,这比Generator函数的返回值是Iterator对象方便多了。你可以用`then`方法指定下一步的操作。 -进一步说,async函数完全可以看作多个异步操作,包装成的一个Promise对象,而`await`命令就是内部`then`命令的语法糖。 +进一步说,`async`函数完全可以看作多个异步操作,包装成的一个Promise对象,而`await`命令就是内部`then`命令的语法糖。 正常情况下,`await`命令后面是一个Promise对象,否则会被转成Promise。 +下面是一个完整的例子。 + +```javascript +async function getTitle(url) { + let response = await fetch(url); + let html = await response.text(); + return html.match(/([\s\S]+)<\/title>/i)[1]; +} +getTitle('https://tc39.github.io/ecma262/').then(console.log) +// "ECMAScript 2017 Language Specification" +``` + ### async函数的实现 async 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里。 diff --git a/docs/string.md b/docs/string.md index 48a29a083..0bd9067a6 100644 --- a/docs/string.md +++ b/docs/string.md @@ -468,7 +468,40 @@ var msg = `Hello, ${place}`; // "Hello World" ``` -如果需要引用模板字符串本身,可以像下面这样写。 +模板字符串甚至还能嵌套。 + +```javascript +const tmpl = addrs => ` + <table> + ${addrs.map(addr => ` + <tr><td>${addr.first}</td></tr> + <tr><td>${addr.last}</td></tr> + `).join('')} + </table> +`; +``` + +上面代码中,模板字符串的变量之中,又嵌入了另一个模板字符串,使用方法如下。 + +```javascript +const data = [ + { first: '<Jane>', last: 'Bond' }, + { first: 'Lars', last: '<Croft>' }, +]; + +console.log(tmpl(data)); +// <table> +// +// <tr><td><Jane></td></tr> +// <tr><td>Bond</td></tr> +// +// <tr><td>Lars</td></tr> +// <tr><td><Croft></td></tr> +// +// </table> +``` + +如果需要引用模板字符串本身,在需要时执行,可以像下面这样写。 ```javascript // 写法一 @@ -590,6 +623,12 @@ div.innerHTML = parse({ supplies: [ "broom", "mop", "cleaner" ] }); 模板字符串的功能,不仅仅是上面这些。它可以紧跟在一个函数名后面,该函数将被调用来处理这个模板字符串。这被称为“标签模板”功能(tagged template)。 +```javascript +alert`123` +// 等同于 +alert(123) +``` + 标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。 ```javascript @@ -663,7 +702,7 @@ var total = 30; var msg = passthru`The total is ${total} (${total*1.05} with tax)`; function passthru(literals) { - var result = ""; + var result = ''; var i = 0; while (i < literals.length) { From 4ba798a77476cf76b27a02854b846d3e5b9e51d9 Mon Sep 17 00:00:00 2001 From: ruanyf <yifeng.ruan@gmail.com> Date: Wed, 18 May 2016 11:54:20 +0800 Subject: [PATCH 013/994] =?UTF-8?q?doc(proxy):=20=E4=BF=AE=E6=94=B9proxy?= =?UTF-8?q?=E9=93=BE=E5=BC=8F=E4=BD=BF=E7=94=A8=E7=9A=84=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/proxy.md | 45 ++++++++++----------------------------------- 1 file changed, 10 insertions(+), 35 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 54d6280b9..71ae78819 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -249,47 +249,22 @@ arr[-1] // c ```javascript var pipe = (function () { - var pipe; return function (value) { - pipe = []; - return new Proxy({}, { - get: function (pipeObject, fnName) { - if (fnName == "get") { - return pipe.reduce(function (val, fn) { + var funcStack = []; + var oproxy = new Proxy({} , { + get : function (pipeObject, fnName) { + if (fnName === 'get') { + return funcStack.reduce(function (val, fn) { return fn(val); - }, value); + },value); } - pipe.push(window[fnName]); - return pipeObject; + funcStack.push(window[fnName]); + return oproxy; } }); - } -}()); - -var double = n => n * 2; -var pow = n => n * n; -var reverseInt = n => n.toString().split('').reverse().join('') | 0; -pipe(3).double.pow.reverseInt.get -// 63 - -var pipe = (function () { - return function (value) { - var funcStack = []; // 认为和上面pipe同名不利于理解,换了一个名 - var oproxy = new Proxy({} , { // 使用了一个oproxy 存储Proxy的指向 - get : function (pipeObject , fnName) { - if (fnName === "get") { - return funcStack.reduce(function (val , fn) { - return fn(val); - },value); - } - funcStack.push(window[fnName]); - return oproxy; - } - }); - - return oproxy; - } + return oproxy; + } }()); var double = n => n * 2; From 247ac78230ff10e6f1895ba1605a914fdea7b797 Mon Sep 17 00:00:00 2001 From: Xcat Liu <xcatliu@gmail.com> Date: Wed, 18 May 2016 12:33:27 +0800 Subject: [PATCH 014/994] Fix coding style in docs/object.md --- docs/object.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/object.md b/docs/object.md index b92901113..4678d356e 100644 --- a/docs/object.md +++ b/docs/object.md @@ -146,7 +146,7 @@ var obj = { * m(){ yield 'hello world'; } -} +}; ``` ## 属性名表达式 @@ -233,9 +233,9 @@ var person = { console.log(this.name); }, get firstName() { - return "Nicholas" + return "Nicholas"; } -} +}; person.sayName.name // "sayName" person.firstName.name // "get firstName" @@ -633,12 +633,12 @@ Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 }) // es6的写法 var obj = { method: function() { ... } -} +}; obj.__proto__ = someOtherObj; // es5的写法 var obj = Object.create(someOtherObj); -obj.method = function() { ... } +obj.method = function() { ... }; ``` 该属性没有写入ES6的正文,而是写入了附录,原因是`__proto__`前后的双下划线,说明它本质上是一个内部属性,而不是一个正式的对外的API,只是由于浏览器广泛支持,才被加入了ES6。标准明确规定,只有浏览器必须部署这个属性,其他运行环境不一定需要部署,而且新的代码最好认为这个属性是不存在的。因此,无论从语义的角度,还是从兼容性的角度,都不要使用这个属性,而是使用下面的`Object.setPrototypeOf()`(写操作)、`Object.getPrototypeOf()`(读操作)、`Object.create()`(生成操作)代替。 @@ -662,7 +662,7 @@ Object.defineProperty(Object.prototype, '__proto__', { return undefined; } let status = Reflect.setPrototypeOf(this, proto); - if (! status) { + if (!status) { throw new TypeError(); } }, @@ -756,7 +756,7 @@ Object.keys(obj) 目前,ES7有一个[提案](https://github.com/tc39/proposal-object-values-entries),引入了跟`Object.keys`配套的`Object.values`和`Object.entries`。 ```javascript - let {keys, values, entries} = Object; +let {keys, values, entries} = Object; let obj = { a: 1, b: 2, c: 3 }; for (let key of keys(obj)) { @@ -943,9 +943,9 @@ var o = Object.create({ x: 1, y: 2 }); o.z = 3; let { x, ...{ y, z } } = o; -x; // 1 -y; // undefined -z; // 3 +x // 1 +y // undefined +z // 3 ``` 上面代码中,变量`x`是单纯的解构赋值,所以可以读取继承的属性;Rest解构赋值产生的变量`y`和`z`,只能读取对象自身的属性,所以只有变量`z`可以赋值成功。 @@ -1010,7 +1010,7 @@ let aWithOverrides = Object.assign({}, a, { x: 1, y: 2 }); ```javascript let newVersion = { ...previousVersion, - name: 'New Name', // Override the name property + name: 'New Name' // Override the name property }; ``` @@ -1074,7 +1074,7 @@ ES7有一个提案,提出了`Object.getOwnPropertyDescriptors`方法,返回 ```javascript const obj = { foo: 123, - get bar() { return 'abc' }, + get bar() { return 'abc' } }; Object.getOwnPropertyDescriptors(obj) From 60c1576ccfd7995a43ef5778f21539f41862bada Mon Sep 17 00:00:00 2001 From: Xcat Liu <xcatliu@gmail.com> Date: Wed, 18 May 2016 13:01:15 +0800 Subject: [PATCH 015/994] Fix coding style in docs/symbol.md --- docs/symbol.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/symbol.md b/docs/symbol.md index 938e23995..98a0def11 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -154,7 +154,7 @@ Symbol类型还可以用于定义一组常量,保证这组常量的值都是 log.levels = { DEBUG: Symbol('debug'), INFO: Symbol('info'), - WARN: Symbol('warn'), + WARN: Symbol('warn') }; log(log.levels.DEBUG, 'debug message'); log(log.levels.INFO, 'info message'); From 24bcfb52ed9e05e281b6d6f4796f9d066f850f4c Mon Sep 17 00:00:00 2001 From: Xcat Liu <xcatliu@gmail.com> Date: Wed, 18 May 2016 13:43:26 +0800 Subject: [PATCH 016/994] Fix coding style in docs/proxy.md --- docs/proxy.md | 56 +++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 71ae78819..4eaa5a643 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -35,7 +35,7 @@ obj.count = 1 ES6原生提供Proxy构造函数,用来生成Proxy实例。 ```javascript -var proxy = new Proxy(target, handler) +var proxy = new Proxy(target, handler); ``` Proxy对象的所有用法,都是上面这种形式,不同的只是`handler`参数的写法。其中,`new Proxy()`表示生成一个Proxy实例,target参数表示所要拦截的目标对象,`handler`参数也是一个对象,用来定制拦截行为。 @@ -73,7 +73,7 @@ target.a // "b" 一个技巧是将Proxy对象,设置到`object.proxy`属性,从而可以在`object`对象上调用。 ```javascript -var object = { proxy: new Proxy(target, handler) } +var object = { proxy: new Proxy(target, handler) }; ``` Proxy实例也可以作为其他对象的原型对象。 @@ -97,15 +97,15 @@ obj.time // 35 var handler = { get: function(target, name) { if (name === 'prototype') return Object.prototype; - return 'Hello, '+ name; + return 'Hello, ' + name; }, apply: function(target, thisBinding, args) { return args[0]; }, construct: function(target, args) { return args[1]; } }; -var fproxy = new Proxy(function(x,y) { - return x+y; -}, handler); +var fproxy = new Proxy(function(x, y) { + return x + y; +}, handler); fproxy(1,2); // 1 new fproxy(1,2); // 2 @@ -357,7 +357,7 @@ var handler = { invariant(key, 'set'); return true; } -} +}; function invariant (key, action) { if (key[0] === '_') { throw new Error(`Invalid attempt to ${action} private "${key}" property`); @@ -382,7 +382,7 @@ var handler = { apply (target, ctx, args) { return Reflect.apply(...arguments); } -} +}; ``` `apply`方法可以接受三个参数,分别是目标对象、目标对象的上下文对象(`this`)和目标对象的参数数组。 @@ -461,7 +461,7 @@ var p = new Proxy(obj, { } }); -"a" in p; // TypeError is thrown +"a" in p // TypeError is thrown ``` 上面代码中,`obj`对象禁止扩展,结果使用`has`拦截就会报错。 @@ -475,7 +475,7 @@ var handler = { construct (target, args) { return new target(...args); } -} +}; ``` 下面是一个例子。 @@ -515,15 +515,15 @@ var handler = { invariant(key, 'delete'); return true; } -} +}; function invariant (key, action) { if (key[0] === '_') { throw new Error(`Invalid attempt to ${action} private "${key}" property`); } } -var target = { _prop: 'foo' } -var proxy = new Proxy(target, handler) +var target = { _prop: 'foo' }; +var proxy = new Proxy(target, handler); delete proxy._prop // Error: Invalid attempt to delete private "_prop" property ``` @@ -537,11 +537,11 @@ delete proxy._prop ```javascript var handler = { defineProperty (target, key, descriptor) { - return false + return false; } -} -var target = {} -var proxy = new Proxy(target, handler) +}; +var target = {}; +var proxy = new Proxy(target, handler); proxy.foo = 'bar' // TypeError: proxy defineProperty handler returned false for property '"foo"' ``` @@ -557,9 +557,9 @@ var handler = { enumerate (target) { return Object.keys(target).filter(key => key[0] !== '_')[Symbol.iterator](); } -} -var target = { prop: 'foo', _bar: 'baz', _prop: 'foo' } -var proxy = new Proxy(target, handler) +}; +var target = { prop: 'foo', _bar: 'baz', _prop: 'foo' }; +var proxy = new Proxy(target, handler); for (let key in proxy) { console.log(key); // "prop" @@ -607,11 +607,11 @@ for (var x in p) {} // 报错 var handler = { getOwnPropertyDescriptor (target, key) { if (key[0] === '_') { - return + return; } - return Object.getOwnPropertyDescriptor(target, key) + return Object.getOwnPropertyDescriptor(target, key); } -} +}; var target = { _foo: 'bar', baz: 'tar' }; var proxy = new Proxy(target, handler); Object.getOwnPropertyDescriptor(proxy, 'wat') @@ -682,7 +682,7 @@ var p = new Proxy({}, { } }); -Object.isExtensible(p); // 报错 +Object.isExtensible(p) // 报错 ``` ### ownKeys() @@ -732,7 +732,7 @@ for (let key of Object.keys(proxy)) { `preventExtensions`方法拦截`Object.preventExtensions()`。该方法必须返回一个布尔值。 -这个方法有一个限制,只有当`Object.isExtensible(proxy)`为`false`(即不可扩展)时,`proxy.preventExtensions`才能返回true,否则会报错。 +这个方法有一个限制,只有当`Object.isExtensible(proxy)`为`false`(即不可扩展)时,`proxy.preventExtensions`才能返回`true`,否则会报错。 ```javascript var p = new Proxy({}, { @@ -741,7 +741,7 @@ var p = new Proxy({}, { } }); -Object.preventExtensions(p); // 报错 +Object.preventExtensions(p) // 报错 ``` 上面代码中,`proxy.preventExtensions`方法返回`true`,但这时`Object.isExtensible(proxy)`会返回`true`,因此报错。 @@ -773,7 +773,7 @@ var handler = { setPrototypeOf (target, proto) { throw new Error('Changing the prototype is forbidden'); } -} +}; var proto = {}; var target = function () {}; var proxy = new Proxy(target, handler); @@ -915,7 +915,7 @@ Reflect.apply(Math.floor, undefined, [1.75]) // 1 var obj = { get foo() { return this.bar(); }, bar: function() { ... } -} +}; // 下面语句会让 this.bar() // 变成调用 wrapper.bar() From 37db7edecf8dbf0ec33072dabe376531ae43d7e8 Mon Sep 17 00:00:00 2001 From: Owen <469564715@qq.com> Date: Wed, 18 May 2016 14:22:59 +0800 Subject: [PATCH 017/994] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 你好,阮老师,在282行的例子中,我使用新版本chrome 测试了例子,出现了错误 发现const dom 产生了暂时性死区 如理解有误,浪费了老师时间,望见谅 --- docs/proxy.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 71ae78819..570f27c39 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -279,19 +279,6 @@ pipe(3).double.pow.reverseInt.get; // 63 下面的例子则是利用`get`拦截,实现一个生成各种DOM节点的通用函数`dom`。 ```javascript -const el = dom.div({}, - 'Hello, my name is ', - dom.a({href: '//example.com'}, 'Mark'), - '. I like:', - dom.ul({}, - dom.li({}, 'The web'), - dom.li({}, 'Food'), - dom.li({}, '…actually that\'s it') - ) -); - -document.body.appendChild(el); - const dom = new Proxy({}, { get(target, property) { return function(attrs = {}, ...children) { @@ -309,6 +296,19 @@ const dom = new Proxy({}, { } } }); + +const el = dom.div({}, + 'Hello, my name is ', + dom.a({href: '//example.com'}, 'Mark'), + '. I like:', + dom.ul({}, + dom.li({}, 'The web'), + dom.li({}, 'Food'), + dom.li({}, '…actually that\'s it') + ) +); + +document.body.appendChild(el); ``` ### set() From 82c1ab1d407fee42111904ee1e8ebe3e7f791b97 Mon Sep 17 00:00:00 2001 From: Xcat Liu <xcatliu@gmail.com> Date: Wed, 18 May 2016 14:23:01 +0800 Subject: [PATCH 018/994] Fix coding style in docs/set-map.md --- docs/set-map.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/set-map.md b/docs/set-map.md index 524f024e9..c128345d3 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -11,7 +11,7 @@ Set本身是一个构造函数,用来生成Set数据结构。 ```javascript var s = new Set(); -[2, 3, 5, 4, 5, 2, 2].map(x => s.add(x)) +[2, 3, 5, 4, 5, 2, 2].map(x => s.add(x)); for (let i of s) { console.log(i); @@ -25,7 +25,7 @@ Set函数可以接受一个数组(或类似数组的对象)作为参数, ```javascript // 例一 -var set = new Set([1, 2, 3, 4, 4]) +var set = new Set([1, 2, 3, 4, 4]); [...set] // [1, 2, 3, 4] @@ -35,14 +35,14 @@ items.size // 5 // 例三 function divs () { - return [...document.querySelectorAll('div')] + return [...document.querySelectorAll('div')]; } -var set = new Set(divs()) +var set = new Set(divs()); set.size // 56 // 类似于 -divs().forEach(div => set.add(div)) +divs().forEach(div => set.add(div)); set.size // 56 ``` @@ -73,10 +73,10 @@ set // Set {NaN} ```javascript let set = new Set(); -set.add({}) +set.add({}); set.size // 1 -set.add({}) +set.add({}); set.size // 2 ``` @@ -376,7 +376,7 @@ class Foo { } method () { if (!foos.has(this)) { - throw new TypeError('Foo.prototype.method 只能在Foo的实例上调用!') + throw new TypeError('Foo.prototype.method 只能在Foo的实例上调用!'); } } } From 3c845549570da82c2de7b6f4e587c9c51a653ca0 Mon Sep 17 00:00:00 2001 From: Xcat Liu <xcatliu@gmail.com> Date: Wed, 18 May 2016 14:49:05 +0800 Subject: [PATCH 019/994] Fix coding style in docs/iterator.md --- docs/iterator.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/iterator.md b/docs/iterator.md index 3b47b8388..9f4bcd655 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -29,15 +29,15 @@ it.next() // { value: "a", done: false } it.next() // { value: "b", done: false } it.next() // { value: undefined, done: true } -function makeIterator(array){ +function makeIterator(array) { var nextIndex = 0; return { - next: function(){ + next: function() { return nextIndex < array.length ? {value: array[nextIndex++], done: false} : {value: undefined, done: true}; } - } + }; } ``` @@ -52,15 +52,15 @@ function makeIterator(array){ 对于遍历器对象来说,`done: false`和`value: undefined`属性都是可以省略的,因此上面的`makeIterator`函数可以简写成下面的形式。 ```javascript -function makeIterator(array){ +function makeIterator(array) { var nextIndex = 0; return { - next: function(){ + next: function() { return nextIndex < array.length ? {value: array[nextIndex++]} : {done: true}; } - } + }; } ``` @@ -74,14 +74,14 @@ it.next().value // '1' it.next().value // '2' // ... -function idMaker(){ +function idMaker() { var index = 0; return { - next: function(){ + next: function() { return {value: index++, done: false}; } - } + }; } ``` @@ -166,31 +166,31 @@ for (var value of range(0, 3)) { 下面是通过遍历器实现指针结构的例子。 ```javascript -function Obj(value){ +function Obj(value) { this.value = value; this.next = null; } -Obj.prototype[Symbol.iterator] = function(){ +Obj.prototype[Symbol.iterator] = function() { var iterator = { next: next }; var current = this; - function next(){ - if (current){ + function next() { + if (current) { var value = current.value; var done = current.next === null; current = current.next; return { done: done, value: value - } + }; } else { return { done: true - } + }; } } return iterator; @@ -204,7 +204,7 @@ one.next = two; two.next = three; for (var i of one){ - console.log(i) + console.log(i); } // 1 // 2 From 96b4a4a33d3721d0098bd9a16dfa7bd2af345771 Mon Sep 17 00:00:00 2001 From: Xcat Liu <xcatliu@gmail.com> Date: Wed, 18 May 2016 16:19:26 +0800 Subject: [PATCH 020/994] Fix coding style in docs/class.md --- docs/class.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/class.md b/docs/class.md index 46a0f8122..066e72798 100644 --- a/docs/class.md +++ b/docs/class.md @@ -14,7 +14,7 @@ function Point(x,y){ Point.prototype.toString = function () { return '(' + this.x + ', ' + this.y + ')'; -} +}; ``` 上面这种写法跟传统的面向对象语言(比如C++和Java)差异很大,很容易让新学习这门语言的程序员感到困惑。 @@ -74,7 +74,7 @@ class Point { Point.prototype = { toString(){}, toValue(){} -} +}; ``` 在类的实例上面调用方法,其实就是调用原型上的方法。 @@ -100,7 +100,7 @@ class Point { Object.assign(Point.prototype, { toString(){}, toValue(){} -}) +}); ``` `prototype`对象的`constructor`属性,直接指向“类”的本身,这与ES5的行为是一致的。 @@ -133,11 +133,11 @@ Object.getOwnPropertyNames(Point.prototype) ```javascript var Point = function (x, y){ // ... -} +}; Point.prototype.toString = function() { // ... -} +}; Object.keys(Point.prototype) // ["toString"] @@ -585,7 +585,7 @@ var obj = { toString() { return "MyObject: " + super.toString(); } -} +}; obj.toString(); // MyObject: [object Object] ``` From c4b46e3621ad33ede5ec0b567c802be6ed35cafa Mon Sep 17 00:00:00 2001 From: Xcat Liu <xcatliu@gmail.com> Date: Wed, 18 May 2016 16:40:23 +0800 Subject: [PATCH 021/994] Fix coding style in docs/decorator.md --- docs/decorator.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/decorator.md b/docs/decorator.md index 3b772299b..c55f383bc 100644 --- a/docs/decorator.md +++ b/docs/decorator.md @@ -94,12 +94,12 @@ import { mixins } from './mixins' const Foo = { foo() { console.log('foo') } -} +}; @mixins(Foo) class MyClass {} -let obj = new MyClass() +let obj = new MyClass(); obj.foo() // 'foo' ``` @@ -108,7 +108,7 @@ obj.foo() // 'foo' ```javascript const Foo = { foo() { console.log('foo') } -} +}; class MyClass {} @@ -169,7 +169,7 @@ function nonenumerable(target, name, descriptor) { 下面的`@log`修饰器,可以起到输出日志的作用。 -```bash +```javascript class Math { @log add(a, b) { @@ -498,7 +498,7 @@ export function mixins(...list) { 然后,就可以使用上面这个修饰器,为类“混入”各种方法。 ```javascript -import { mixins } from './mixins' +import { mixins } from './mixins'; const Foo = { foo() { console.log('foo') } @@ -600,7 +600,7 @@ Trait也是一种修饰器,效果与Mixin类似,但是提供更多功能, 下面采用[traits-decorator](https://github.com/CocktailJS/traits-decorator)这个第三方模块作为例子。这个模块提供的traits修饰器,不仅可以接受对象,还可以接受ES6类作为参数。 ```javascript -import { traits } from 'traits-decorator' +import { traits } from 'traits-decorator'; class TFoo { foo() { console.log('foo') } @@ -608,12 +608,12 @@ class TFoo { const TBar = { bar() { console.log('bar') } -} +}; @traits(TFoo, TBar) class MyClass { } -let obj = new MyClass() +let obj = new MyClass(); obj.foo() // foo obj.bar() // bar ``` @@ -623,7 +623,7 @@ obj.bar() // bar Trait不允许“混入”同名方法。 ```javascript -import {traits } from 'traits-decorator' +import { traits } from 'traits-decorator'; class TFoo { foo() { console.log('foo') } @@ -632,7 +632,7 @@ class TFoo { const TBar = { bar() { console.log('bar') }, foo() { console.log('foo') } -} +}; @traits(TFoo, TBar) class MyClass { } @@ -647,7 +647,7 @@ class MyClass { } 一种解决方法是排除TBar的foo方法。 ```javascript -import { traits, excludes } from 'traits-decorator' +import { traits, excludes } from 'traits-decorator'; class TFoo { foo() { console.log('foo') } @@ -656,12 +656,12 @@ class TFoo { const TBar = { bar() { console.log('bar') }, foo() { console.log('foo') } -} +}; @traits(TFoo, TBar::excludes('foo')) class MyClass { } -let obj = new MyClass() +let obj = new MyClass(); obj.foo() // foo obj.bar() // bar ``` @@ -671,7 +671,7 @@ obj.bar() // bar 另一种方法是为TBar的foo方法起一个别名。 ```javascript -import { traits, alias } from 'traits-decorator' +import { traits, alias } from 'traits-decorator'; class TFoo { foo() { console.log('foo') } @@ -680,12 +680,12 @@ class TFoo { const TBar = { bar() { console.log('bar') }, foo() { console.log('foo') } -} +}; @traits(TFoo, TBar::alias({foo: 'aliasFoo'})) class MyClass { } -let obj = new MyClass() +let obj = new MyClass(); obj.foo() // foo obj.aliasFoo() // foo obj.bar() // bar From 0dd87edc44bae0632bc001848abd9627f1bc8956 Mon Sep 17 00:00:00 2001 From: Xcat Liu <xcatliu@gmail.com> Date: Wed, 18 May 2016 17:07:03 +0800 Subject: [PATCH 022/994] Fix coding style in docs/module.md --- docs/module.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/module.md b/docs/module.md index 8fd57e9ae..3ff7e23c1 100644 --- a/docs/module.md +++ b/docs/module.md @@ -91,7 +91,7 @@ export {firstName, lastName, year}; export命令除了输出变量,还可以输出函数或类(class)。 ```javascript -export function multiply (x, y) { +export function multiply(x, y) { return x * y; }; ``` @@ -350,7 +350,7 @@ import {crc32} from 'crc32'; // modules.js function add(x, y) { return x * y; -}; +} export {add as default}; // 等同于 // export default add; @@ -402,7 +402,7 @@ export default 42; export default class { ... } // main.js -import MyClass from 'MyClass' +import MyClass from 'MyClass'; let o = new MyClass(); ``` @@ -499,7 +499,7 @@ $ node main.js 4 ``` -ES6模块的运行机制与CommonJS不一样,它遇到模块加载命令`import`时,不会去执行模块,而是只生成一个动态的只读引用。等到真的需要用到时,再到模块里面去取值,换句话说,ES6的输入有点像Unix系统的”符号连接“,原始值变了,`import`输入的值也会跟着变。因此,ES6模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 +ES6模块的运行机制与CommonJS不一样,它遇到模块加载命令`import`时,不会去执行模块,而是只生成一个动态的只读引用。等到真的需要用到时,再到模块里面去取值,换句话说,ES6的输入有点像Unix系统的“符号连接”,原始值变了,`import`输入的值也会跟着变。因此,ES6模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 还是举上面的例子。 @@ -545,7 +545,7 @@ baz 上面代码表明,ES6模块不会缓存运行结果,而是动态地去被加载的模块取值,并且变量总是绑定其所在的模块。 -由于ES6输入的模块变量,只是一个”符号连接“,所以这个变量是只读的,对它进行重新赋值会报错。 +由于ES6输入的模块变量,只是一个“符号连接”,所以这个变量是只读的,对它进行重新赋值会报错。 ```javascript // lib.js @@ -571,7 +571,7 @@ function C() { }; this.show = function () { console.log(this.sum); - } + }; } export let c = new C(); @@ -616,7 +616,7 @@ var a = require('a'); 通常,“循环加载”表示存在强耦合,如果处理不好,还可能导致递归加载,使得程序无法执行,因此应该避免出现。 -但是实际上,这是很难避免的,尤其是依赖关系复杂的大项目,很容易出现`a`依赖b,`b`依赖`c`,`c`又依赖`a`这样的情况。这意味着,模块加载机制必须考虑“循环加载”的情况。 +但是实际上,这是很难避免的,尤其是依赖关系复杂的大项目,很容易出现`a`依赖`b`,`b`依赖`c`,`c`又依赖`a`这样的情况。这意味着,模块加载机制必须考虑“循环加载”的情况。 对于JavaScript语言来说,目前最常见的两种模块格式CommonJS和ES6,处理“循环加载”的方法是不一样的,返回的结果也不一样。 From e8748dfbcdce70b6bfd8494c0cebc30c2689a24f Mon Sep 17 00:00:00 2001 From: Xcat Liu <xcatliu@gmail.com> Date: Wed, 18 May 2016 17:43:04 +0800 Subject: [PATCH 023/994] Fix coding style in docs/async.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这一篇由于引入了其他源码,所以我改动比较保守,只改了明显可以改进的地方 --- docs/async.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/async.md b/docs/async.md index afca50de7..080a5d3cf 100644 --- a/docs/async.md +++ b/docs/async.md @@ -498,7 +498,7 @@ co函数返回一个Promise对象,因此可以用then方法添加回调函数 ```javascript co(gen).then(function (){ console.log('Generator 函数执行完成'); -}) +}); ``` 上面代码中,等到Generator函数执行结束,就会输出一行提示。 @@ -552,7 +552,7 @@ g.next().value.then(function(data){ g.next(data).value.then(function(data){ g.next(data); }); -}) +}); ``` 手动执行其实就是用then方法,层层添加回调函数。理解了这一点,就可以写出一个自动执行器。 @@ -863,7 +863,7 @@ async function foo() {} const foo = async function () {}; // 对象的方法 -let obj = { async foo() {} } +let obj = { async foo() {} }; // 箭头函数 const foo = async () => {}; @@ -1000,7 +1000,7 @@ function chainAnimationsPromise(elem, animations) { p = p.then(function(val) { ret = val; return anim(elem); - }) + }); } // 返回一个部署了错误捕捉机制的Promise @@ -1029,7 +1029,7 @@ function chainAnimationsGenerator(elem, animations) { } catch(e) { /* 忽略错误,继续执行 */ } - return ret; + return ret; }); } From bdff954876511c33929fb1789c1800cef0da2ddd Mon Sep 17 00:00:00 2001 From: xcatliu <xcatliu@gmail.com> Date: Wed, 18 May 2016 18:59:08 +0900 Subject: [PATCH 024/994] Fix code css --- css/app.css | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/css/app.css b/css/app.css index a582ecce4..fe21dc7b4 100644 --- a/css/app.css +++ b/css/app.css @@ -2,14 +2,14 @@ /* Small screens (default) */ html { font-size: 100%; } - + /* Medium screens (640px) */ -@media (min-width: 40rem) { +@media (min-width: 40rem) { html { font-size: 112%; } } - + /* Large screens (1024px) */ -@media (min-width: 64rem) { +@media (min-width: 64rem) { html { font-size: 120%; } } @@ -139,7 +139,7 @@ input.searchButton { /* border: 1px solid black; */ - counter-reset: section; + counter-reset: section; } @media (min-width: 40rem) { @@ -166,9 +166,6 @@ input.searchButton { } #content code { - padding-left: 3px; - padding-right: 3px; - color: #a6e22e; font-size: 0.7rem; font-weight: normal; @@ -178,10 +175,12 @@ input.searchButton { border-radius: 2px; } -#content p>code, +#content p code, #content li>code, #content h2>code, #content h3>code{ + padding-left: 3px; + padding-right: 3px; color: #c7254e; background: #f9f2f4; } @@ -361,7 +360,7 @@ input.searchButton { margin-left: 560px; font-size: 14px; - } + } } #flip{ From 002862d50c6fc635aa458357aedea543b8b7163b Mon Sep 17 00:00:00 2001 From: ruanyf <yifeng.ruan@gmail.com> Date: Thu, 19 May 2016 08:53:57 +0800 Subject: [PATCH 025/994] feat: add 404.html --- 404.html | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 404.html diff --git a/404.html b/404.html new file mode 100644 index 000000000..66b119741 --- /dev/null +++ b/404.html @@ -0,0 +1,18 @@ +<html> + <head> + <title>ES6标准参考教程 + + + +

redirecting...

+ + From b02a848b45a278a1be69204095aa9782a2ae49da Mon Sep 17 00:00:00 2001 From: molunerfinn <542618634@qq.com> Date: Thu, 19 May 2016 14:57:24 +0800 Subject: [PATCH 026/994] Fix coding style in docs/string.md --- docs/string.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/string.md b/docs/string.md index 0bd9067a6..6c2c4fd68 100644 --- a/docs/string.md +++ b/docs/string.md @@ -522,7 +522,7 @@ func('Jack') // "Hello Jack!" ```javascript var template = `
    - <% for(var i=0; i < data.supplies.length; i++) {%> + <% for(var i=0; i < data.supplies.length; i++) { %>
  • <%= data.supplies[i] %>
  • <% } %>
From f8eaa770919f4a5dd9972677d2ea3c747d041b19 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 19 May 2016 23:25:29 +0800 Subject: [PATCH 027/994] =?UTF-8?q?doc(module):=20ES6=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=9A=84=E5=BE=AA=E7=8E=AF=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/module.md | 83 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 79 insertions(+), 4 deletions(-) diff --git a/docs/module.md b/docs/module.md index 8fd57e9ae..f108dbd3d 100644 --- a/docs/module.md +++ b/docs/module.md @@ -635,7 +635,7 @@ CommonJS的一个模块,就是一个脚本文件。`require`命令第一次加 } ``` -上面代码中,该对象的`id`属性是模块名,`exports`属性是模块输出的各个接口,`loaded`属性是一个布尔值,表示该模块的脚本是否执行完毕。其他还有很多属性,这里都省略了。 +上面代码就是Node内部加载模块后生成的一个对象。该对象的`id`属性是模块名,`exports`属性是模块输出的各个接口,`loaded`属性是一个布尔值,表示该模块的脚本是否执行完毕。其他还有很多属性,这里都省略了。 以后需要用到这个模块的时候,就会到`exports`属性上面取值。即使再次执行`require`命令,也不会再次执行该模块,而是到缓存之中取值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。 @@ -722,14 +722,45 @@ exports.bad = function (arg) { ### ES6模块的循环加载 -ES6处理“循环加载”与CommonJS有本质的不同。ES6模块是动态引用,遇到模块加载命令`import`时,不会去执行模块,只是生成一个指向被加载模块的引用,需要开发者自己保证,真正取值的时候能够取到值。 +ES6处理“循环加载”与CommonJS有本质的不同。ES6模块是动态引用,如果使用`import`从一个模块加载变量(即`import foo from 'foo'`),那些变量不会被缓存,而是成为一个指向被加载模块的引用,需要开发者自己保证,真正取值的时候能够取到值。 -请看下面的例子(摘自 Dr. Axel Rauschmayer 的[《Exploring ES6》](http://exploringjs.com/es6/ch_modules.html))。 +请看下面这个例子。 + +```javascript +// a.js如下 +import {bar} from './b.js'; +console.log('a.js'); +console.log(bar); +export let foo = 'foo'; + +// b.js +import {foo} from './a.js'; +console.log('b.js'); +console.log(foo); +export let bar = 'bar'; +``` + +上面代码中,`a.js`加载`b.js`,`b.js`又加载`a.js`,构成循环加载。执行`a.js`,结果如下。 + +```bash +$ babel-node a.js +b.js +undefined +a.js +bar +``` + +上面代码中,由于`a.js`的第一行是加载`b.js`,所以先执行的是`b.js`。而`b.js`的第一行又是加载`a.js`,这时由于`a.js`已经开始执行了,所以不会重复执行,而是继续往下执行`b.js`,所以第一行输出的是`b.js`。 + +接着,`b.js`要打印变量`foo`,这时`a.js`还没执行完,取不到`foo`的值,导致打印出来是`undefined`。`b.js`执行完,开始执行`a.js`,这时就一切正常了。 + +再看一个稍微复杂的例子(摘自 Dr. Axel Rauschmayer 的[《Exploring ES6》](http://exploringjs.com/es6/ch_modules.html))。 ```javascript // a.js import {bar} from './b.js'; export function foo() { + console.log('foo'); bar(); console.log('执行完毕'); } @@ -738,6 +769,7 @@ foo(); // b.js import {foo} from './a.js'; export function bar() { + console.log('bar'); if (Math.random() > 0.5) { foo(); } @@ -750,11 +782,54 @@ export function bar() { ```bash $ babel-node a.js +foo +bar +执行完毕 +// 执行结果也有可能是 +foo +bar +foo +bar +执行完毕 执行完毕 ``` -`a.js`之所以能够执行,原因就在于ES6加载的变量,都是动态引用其所在的模块。只要引用是存在的,代码就能执行。 +上面代码中,`a.js`之所以能够执行,原因就在于ES6加载的变量,都是动态引用其所在的模块。只要引用存在,代码就能执行。 + +下面,我们详细分析这段代码的运行过程。 + +```javascript +// a.js + +// 这一行建立一个引用, +// 从`b.js`引用`bar` +import {bar} from './b.js'; + +export function foo() { + // 执行时第一行输出 foo + console.log('foo'); + // 到 b.js 执行 bar + bar(); + console.log('执行完毕'); +} +foo(); + +// b.js + +// 建立`a.js`的`foo`引用 +import {foo} from './a.js'; + +export function bar() { + // 执行时,第二行输出 bar + console.log('bar'); + // 递归执行 foo,一旦随机数 + // 小于等于0.5,就停止执行 + if (Math.random() > 0.5) { + foo(); + } +} +``` 我们再来看ES6模块加载器[SystemJS](https://github.com/ModuleLoader/es6-module-loader/blob/master/docs/circular-references-bindings.md)给出的一个例子。 From 40b5f23e0bb3f40d45edd0b7bd6b229ac594f140 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 20 May 2016 07:58:21 +0800 Subject: [PATCH 028/994] =?UTF-8?q?doc(async):=20Thunk=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E7=9A=84ES6=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/async.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/async.md b/docs/async.md index afca50de7..16092c928 100644 --- a/docs/async.md +++ b/docs/async.md @@ -273,6 +273,7 @@ function f(thunk){ ``` 上面代码中,函数f的参数`x + 5`被一个函数替换了。凡是用到原参数的地方,对`Thunk`函数求值即可。 + 这就是Thunk函数的定义,它是"传名调用"的一种实现策略,用来替换某个表达式。 ### JavaScript语言的Thunk函数 @@ -299,6 +300,7 @@ var Thunk = function (fileName){ 任何函数,只要参数有回调函数,就能写成Thunk函数的形式。下面是一个简单的Thunk函数转换器。 ```javascript +// ES5版本 var Thunk = function(fn){ return function (){ var args = Array.prototype.slice.call(arguments); @@ -308,6 +310,15 @@ var Thunk = function(fn){ } }; }; + +// ES6版本 +var Thunk = function(fn) { + return function (...args) { + return function (callback) { + return fn.call(this, ...args, callback); + } + }; +}; ``` 使用上面的转换器,生成`fs.readFile`的Thunk函数。 @@ -317,6 +328,18 @@ var readFileThunk = Thunk(fs.readFile); readFileThunk(fileA)(callback); ``` +下面是另一个完整的例子。 + +```javascript +function f(a, cb) { + cb(a); +} +let ft = Thunk(f); + +let log = console.log.bind(console); +ft(1)(log) // 1 +``` + ### Thunkify模块 生产环境的转换器,建议使用Thunkify模块。 From 32b7bd2c881afa62a852753f4d9847d799e3c125 Mon Sep 17 00:00:00 2001 From: Owen <469564715@qq.com> Date: Fri, 20 May 2016 17:34:05 +0800 Subject: [PATCH 029/994] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 阮老师你好,我在阅读您Proxy书稿第553行,“注意与Proxy对象的`has`方法区分,后者用来拦截`in`操作符,对`for...in`循环无效。" 时,认为有所不妥 因为根据我在新chrome浏览器上的测试 , 使用has 控制器是可以对for...in起作用的 我在介绍has 控制器的段落里添加了一个小例子来说明这个问题 可能我的理解并不到位出了差错,浪费了老师宝贵时间,望见谅 --- docs/proxy.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/docs/proxy.md b/docs/proxy.md index 31d03df32..160358d8b 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -466,6 +466,42 @@ var p = new Proxy(obj, { 上面代码中,`obj`对象禁止扩展,结果使用`has`拦截就会报错。 +has 也可以用于拦截for...in操作 + +```javascript +let stu1 = { + name: "Owen", + score: 59 +} + +let stu2 = { + name: "Mark", + score: 99 +} + +let handler = { + has(target , prop) { + if(prop === "score" && target[prop] < 60) { + console.log(`${target["name"]}偷偷地把考砸的分数藏起来了`); + return false; + } + + return prop in target; + } +} + +let oproxy1 = new Proxy(stu1 , handler); +let oproxy2 = new Proxy(stu2 , handler); + +for(let a in oproxy1) { + console.log(oproxy1[a]); +} + +for(let b in oproxy2) { + console.log(oproxy2[b]); +} +``` + ### construct() `construct`方法用于拦截`new`命令。 From c48648a178db27f4cb4d82fe2da7ea57792699f2 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 21 May 2016 08:32:28 +0800 Subject: [PATCH 030/994] =?UTF-8?q?docs(proxy):=20enumerate=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/proxy.md | 13 +- npm-debug.log | 18695 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 18702 insertions(+), 6 deletions(-) create mode 100644 npm-debug.log diff --git a/docs/proxy.md b/docs/proxy.md index 5ba5c9170..2837b2d42 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -127,7 +127,7 @@ fproxy.foo; // 'Hello, foo' **(3)has(target, propKey)** -拦截`propKey in proxy`的操作,返回一个布尔值。 +拦截`propKey in proxy`的操作,以及对象的`hasOwnProperty`方法,返回一个布尔值。 **(4)deleteProperty(target, propKey)** @@ -135,7 +135,7 @@ fproxy.foo; // 'Hello, foo' **(5)enumerate(target)** -拦截`for (var x in proxy)`,返回一个遍历器。 +拦截`for...in`循环、`Object.getOwnPropertySymbols`方法、`Object.keys`方法和`JSON.stringify`方法,返回一个遍历器。 **(6)ownKeys(target)** @@ -550,12 +550,13 @@ proxy.foo = 'bar' ### enumerate() -`enumerate`方法用来拦截`for...in`循环。注意与Proxy对象的`has`方法区分,后者用来拦截`in`操作符,对`for...in`循环无效。 +`enumerate`方法用来拦截遍历对象属性的行为,任何调用对象的Iterator接口的操作都会被拦截,最典型的就是`for...in`循环,以及`Object.getOwnPropertySymbols`方法、`Object.keys`方法和`JSON.stringify`方法等。 ```javascript var handler = { enumerate (target) { - return Object.keys(target).filter(key => key[0] !== '_')[Symbol.iterator](); + let keys = Object.keys(target).filter(key => key[0] !== '_'); + return keys[Symbol.iterator](); } }; var target = { prop: 'foo', _bar: 'baz', _prop: 'foo' }; @@ -573,8 +574,8 @@ for (let key in proxy) { ```javascript var p = new Proxy({}, { enumerate(target) { - console.log("called"); - return ["a", "b", "c"][Symbol.iterator](); + console.log('called'); + return ['a', 'b', 'c'][Symbol.iterator](); } }); diff --git a/npm-debug.log b/npm-debug.log new file mode 100644 index 000000000..f0c6b5515 --- /dev/null +++ b/npm-debug.log @@ -0,0 +1,18695 @@ +2001 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter +2002 verbose tar unpack /home/ruanyf/.tnpm/lazystream/1.0.0/package.tgz +2003 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream +2004 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream is being purged +2005 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream +2006 verbose tar unpack /home/ruanyf/.tnpm/is-valid-glob/0.3.0/package.tgz +2007 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob +2008 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob is being purged +2009 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob +2010 verbose tar unpack /home/ruanyf/.tnpm/strip-bom-stream/1.0.0/package.tgz +2011 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream +2012 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream is being purged +2013 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream +2014 verbose tar unpack /home/ruanyf/.tnpm/vali-date/1.0.0/package.tgz +2015 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date +2016 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date is being purged +2017 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date +2018 verbose tar unpack /home/ruanyf/.tnpm/duplexify/3.4.3/package.tgz +2019 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify +2020 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify is being purged +2021 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify +2022 verbose tar unpack /home/ruanyf/.tnpm/strip-bom/2.0.0/package.tgz +2023 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom +2024 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom is being purged +2025 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom +2026 verbose tar unpack /home/ruanyf/.tnpm/glob-stream/5.3.2/package.tgz +2027 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +2028 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream is being purged +2029 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +2030 verbose tar unpack /home/ruanyf/.tnpm/object-assign/4.1.0/package.tgz +2031 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign +2032 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign is being purged +2033 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign +2034 verbose tar unpack /home/ruanyf/.tnpm/graceful-fs/4.1.4/package.tgz +2035 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs +2036 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs is being purged +2037 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs +2038 verbose tar unpack /home/ruanyf/.tnpm/vinyl/1.1.1/package.tgz +2039 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl +2040 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl is being purged +2041 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl +2042 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp is being purged from base /home/ruanyf/npm-global +2043 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp +2044 verbose tar unpack /home/ruanyf/.tnpm/merge-stream/1.0.0/package.tgz +2045 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream +2046 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream is being purged +2047 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream +2048 verbose tar unpack /home/ruanyf/.tnpm/lodash.isequal/4.2.0/package.tgz +2049 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal +2050 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal is being purged +2051 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal +2052 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream is being purged from base /home/ruanyf/npm-global +2053 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +2054 silly gunzTarPerm modes [ '755', '644' ] +2055 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps is being purged from base /home/ruanyf/npm-global +2056 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps +2057 silly gunzTarPerm modes [ '755', '644' ] +2058 silly gunzTarPerm modes [ '755', '644' ] +2059 silly gunzTarPerm modes [ '755', '644' ] +2060 silly gunzTarPerm modes [ '755', '644' ] +2061 silly gunzTarPerm modes [ '755', '644' ] +2062 silly gunzTarPerm modes [ '755', '644' ] +2063 silly gunzTarPerm modes [ '755', '644' ] +2064 silly gunzTarPerm modes [ '755', '644' ] +2065 silly gunzTarPerm modes [ '755', '644' ] +2066 silly gunzTarPerm modes [ '755', '644' ] +2067 verbose tar unpack /home/ruanyf/.tnpm/mkdirp/0.5.1/package.tgz +2068 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp +2069 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp is being purged +2070 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp +2071 silly gunzTarPerm modes [ '755', '644' ] +2072 silly gunzTarPerm modes [ '755', '644' ] +2073 verbose tar unpack /home/ruanyf/.tnpm/readable-stream/2.1.4/package.tgz +2074 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +2075 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream is being purged +2076 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +2077 verbose tar unpack /home/ruanyf/.tnpm/gulp-sourcemaps/1.6.0/package.tgz +2078 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps +2079 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps is being purged +2080 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps +2081 silly gunzTarPerm modes [ '755', '644' ] +2082 silly gunzTarPerm modes [ '755', '644' ] +2083 silly gunzTarPerm modes [ '755', '644' ] +2084 http 304 http://registry.npm.alibaba-inc.com/rx +2085 verbose headers { server: 'Tengine', +2085 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2085 verbose headers connection: 'keep-alive', +2085 verbose headers etag: '"2e175-WOOVUqCwxwLEoq2lIWlqUQ"', +2085 verbose headers 'x-readtime': '223' } +2086 silly get cb [ 304, +2086 silly get { server: 'Tengine', +2086 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2086 silly get connection: 'keep-alive', +2086 silly get etag: '"2e175-WOOVUqCwxwLEoq2lIWlqUQ"', +2086 silly get 'x-readtime': '223' } ] +2087 verbose etag http://registry.npm.alibaba-inc.com/rx from cache +2088 verbose get saving rx to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/rx/.cache.json +2089 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2090 silly gunzTarPerm extractEntry package.json +2091 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] +2092 silly gunzTarPerm extractEntry package.json +2093 silly gunzTarPerm extractEntry package.json +2094 silly gunzTarPerm extractEntry package.json +2095 silly gunzTarPerm extractEntry package.json +2096 silly gunzTarPerm extractEntry package.json +2097 silly gunzTarPerm extractEntry package.json +2098 silly gunzTarPerm extractEntry package.json +2099 silly gunzTarPerm extractEntry package.json +2100 silly gunzTarPerm extractEntry package.json +2101 silly gunzTarPerm extractEntry package.json +2102 silly gunzTarPerm extractEntry package.json +2103 silly gunzTarPerm extractEntry package.json +2104 silly gunzTarPerm extractEntry package.json +2105 silly gunzTarPerm extractEntry package.json +2106 silly gunzTarPerm extractEntry package.json +2107 silly gunzTarPerm extractEntry README.md +2108 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] +2109 silly gunzTarPerm extractEntry index.js +2110 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ] +2111 silly gunzTarPerm extractEntry .npmignore +2112 silly gunzTarPerm extractEntry README.md +2113 silly gunzTarPerm extractEntry README.md +2114 silly gunzTarPerm extractEntry LICENSE +2115 silly gunzTarPerm extractEntry index.js +2116 silly gunzTarPerm extractEntry license +2117 silly gunzTarPerm extractEntry .npmignore +2118 silly gunzTarPerm extractEntry README.md +2119 silly gunzTarPerm extractEntry index.js +2120 silly gunzTarPerm extractEntry license +2121 silly gunzTarPerm extractEntry index.js +2122 silly gunzTarPerm extractEntry license +2123 silly gunzTarPerm extractEntry README.md +2124 silly gunzTarPerm extractEntry LICENSE +2125 silly gunzTarPerm extractEntry README.md +2126 silly gunzTarPerm extractEntry LICENSE +2127 silly gunzTarPerm extractEntry index.js +2128 silly gunzTarPerm extractEntry license +2129 silly gunzTarPerm extractEntry README.md +2130 silly gunzTarPerm extractEntry LICENSE +2131 silly gunzTarPerm extractEntry README.md +2132 silly gunzTarPerm extractEntry index.js +2133 silly gunzTarPerm extractEntry README.md +2134 silly gunzTarPerm extractEntry LICENSE +2135 silly gunzTarPerm extractEntry LICENSE +2136 silly gunzTarPerm extractEntry index.js +2137 silly gunzTarPerm extractEntry .npmignore +2138 silly gunzTarPerm extractEntry README.md +2139 silly addNameRange number 2 { name: 'rx', range: '>=4.1.0 <5.0.0', hasData: true } +2140 silly addNameRange versions [ 'rx', +2140 silly addNameRange [ '4.1.0', +2140 silly addNameRange '4.0.8', +2140 silly addNameRange '4.0.7', +2140 silly addNameRange '4.0.6', +2140 silly addNameRange '4.0.5', +2140 silly addNameRange '4.0.4', +2140 silly addNameRange '4.0.3', +2140 silly addNameRange '4.0.2', +2140 silly addNameRange '4.0.1', +2140 silly addNameRange '4.0.0', +2140 silly addNameRange '3.1.2', +2140 silly addNameRange '3.1.1', +2140 silly addNameRange '3.1.0', +2140 silly addNameRange '3.0.1', +2140 silly addNameRange '3.0.0', +2140 silly addNameRange '2.5.3', +2140 silly addNameRange '2.5.2', +2140 silly addNameRange '2.5.1', +2140 silly addNameRange '2.5.0', +2140 silly addNameRange '2.4.10', +2140 silly addNameRange '2.4.9', +2140 silly addNameRange '2.4.8', +2140 silly addNameRange '2.4.7', +2140 silly addNameRange '2.4.6', +2140 silly addNameRange '2.4.5', +2140 silly addNameRange '2.4.3', +2140 silly addNameRange '2.4.1', +2140 silly addNameRange '2.4.0', +2140 silly addNameRange '2.3.25', +2140 silly addNameRange '2.3.24', +2140 silly addNameRange '2.3.23', +2140 silly addNameRange '2.3.22', +2140 silly addNameRange '2.3.20', +2140 silly addNameRange '2.3.19', +2140 silly addNameRange '2.3.18', +2140 silly addNameRange '2.3.17', +2140 silly addNameRange '2.3.16', +2140 silly addNameRange '2.3.14', +2140 silly addNameRange '2.3.13', +2140 silly addNameRange '2.3.12', +2140 silly addNameRange '2.3.11', +2140 silly addNameRange '2.3.10', +2140 silly addNameRange '2.3.9', +2140 silly addNameRange '2.3.8', +2140 silly addNameRange '2.3.7', +2140 silly addNameRange '2.3.6', +2140 silly addNameRange '2.3.5', +2140 silly addNameRange '2.3.4', +2140 silly addNameRange '2.3.3', +2140 silly addNameRange '2.3.2', +2140 silly addNameRange '2.3.1', +2140 silly addNameRange '2.3.0', +2140 silly addNameRange '2.2.28', +2140 silly addNameRange '2.2.27', +2140 silly addNameRange '2.2.26', +2140 silly addNameRange '2.2.25', +2140 silly addNameRange '2.2.24', +2140 silly addNameRange '2.2.22', +2140 silly addNameRange '2.2.21', +2140 silly addNameRange '2.2.20', +2140 silly addNameRange '2.2.19', +2140 silly addNameRange '2.2.18', +2140 silly addNameRange '2.2.17', +2140 silly addNameRange '2.2.16', +2140 silly addNameRange '2.2.15', +2140 silly addNameRange '2.2.14', +2140 silly addNameRange '2.2.13', +2140 silly addNameRange '2.2.12', +2140 silly addNameRange '2.2.10', +2140 silly addNameRange '2.2.9', +2140 silly addNameRange '2.2.8', +2140 silly addNameRange '2.2.7', +2140 silly addNameRange '2.2.5', +2140 silly addNameRange '2.2.4', +2140 silly addNameRange '2.2.3', +2140 silly addNameRange '2.2.2', +2140 silly addNameRange '2.2.0', +2140 silly addNameRange '2.1.21', +2140 silly addNameRange '2.1.20', +2140 silly addNameRange '2.1.18', +2140 silly addNameRange '2.1.17', +2140 silly addNameRange '2.1.16', +2140 silly addNameRange '2.1.15', +2140 silly addNameRange '2.1.14', +2140 silly addNameRange '2.1.13', +2140 silly addNameRange '2.1.12', +2140 silly addNameRange '2.1.11', +2140 silly addNameRange '2.1.10', +2140 silly addNameRange '2.1.9', +2140 silly addNameRange '2.1.8', +2140 silly addNameRange '2.1.7', +2140 silly addNameRange '2.1.6', +2140 silly addNameRange '2.1.5', +2140 silly addNameRange '2.1.4', +2140 silly addNameRange '2.1.3', +2140 silly addNameRange '2.1.2', +2140 silly addNameRange '2.1.1', +2140 silly addNameRange '2.1.0', +2140 silly addNameRange '2.0.2', +2140 silly addNameRange '2.0.1', +2140 silly addNameRange '2.0.0', +2140 silly addNameRange '0.0.2', +2140 silly addNameRange '0.0.1' ] ] +2141 silly addNamed rx@4.1.0 +2142 verbose addNamed "4.1.0" is a plain semver version for rx +2143 silly gunzTarPerm extractEntry README.md +2144 silly gunzTarPerm extractEntry index.js +2145 silly cache afterAdd rx@4.1.0 +2146 verbose afterAdd /home/ruanyf/.tnpm/rx/4.1.0/package/package.json not in flight; writing +2147 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2148 silly gunzTarPerm extractEntry .travis.yml +2149 silly gunzTarPerm extractEntry LICENSE-MIT +2150 silly gunzTarPerm extractEntry index.js +2151 silly gunzTarPerm extractEntry readme.md +2152 silly gunzTarPerm extractEntry LICENSE +2153 silly gunzTarPerm extractEntry example.js +2154 silly gunzTarPerm extractEntry readme.md +2155 silly gunzTarPerm extractEntry readme.md +2156 silly gunzTarPerm extractEntry index.js +2157 silly gunzTarPerm extractEntry index.js +2158 silly gunzTarPerm extractEntry readme.md +2159 silly gunzTarPerm extractEntry polyfills.js +2160 silly gunzTarPerm extractEntry legacy-streams.js +2161 silly gunzTarPerm extractEntry index.js +2162 silly gunzTarPerm extractEntry CHANGELOG.md +2163 silly gunzTarPerm extractEntry lib/cloneBuffer.js +2164 silly gunzTarPerm extractEntry lib/inspectStream.js +2165 silly gunzTarPerm extractEntry lib/isBuffer.js +2166 silly gunzTarPerm extractEntry lib/isNull.js +2167 silly gunzTarPerm extractEntry lib/isStream.js +2168 silly gunzTarPerm extractEntry .travis.yml +2169 silly gunzTarPerm extractEntry bin/cmd.js +2170 silly gunzTarPerm extractEntry LICENSE +2171 silly gunzTarPerm extractEntry writable.js +2172 silly gunzTarPerm extractEntry LICENSE.md +2173 verbose afterAdd /home/ruanyf/.tnpm/rx/4.1.0/package/package.json written +2174 silly gunzTarPerm extractEntry lib/lazystream.js +2175 silly gunzTarPerm extractEntry secret +2176 silly gunzTarPerm extractEntry index.js +2177 silly gunzTarPerm extractEntry test.js +2178 silly gunzTarPerm extractEntry transform.js +2179 silly gunzTarPerm extractEntry readable.js +2180 silly gunzTarPerm extractEntry graceful-fs.js +2181 silly gunzTarPerm extractEntry bin/usage.txt +2182 silly gunzTarPerm extractEntry examples/pow.js +2183 silly gunzTarPerm extractEntry test/fs_test.js +2184 silly gunzTarPerm extractEntry .travis.yml +2185 silly gunzTarPerm extractEntry passthrough.js +2186 silly gunzTarPerm extractEntry duplex.js +2187 silly gunzTarPerm extractEntry fs.js +2188 silly gunzTarPerm extractEntry readme.markdown +2189 silly gunzTarPerm extractEntry test/chmod.js +2190 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/package.json +2191 info preinstall readable-stream@2.0.6 +2192 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/package.json +2193 silly gunzTarPerm extractEntry test/helper.js +2194 silly gunzTarPerm extractEntry test/pipe_test.js +2195 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream/package.json +2196 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/package.json +2197 silly gunzTarPerm extractEntry test/opts_fs_sync.js +2198 silly gunzTarPerm extractEntry doc/stream.md +2199 silly gunzTarPerm extractEntry doc/wg-meetings/2015-01-30.md +2200 silly gunzTarPerm extractEntry lib/_stream_duplex.js +2201 silly gunzTarPerm extractEntry lib/_stream_passthrough.js +2202 silly gunzTarPerm extractEntry lib/_stream_readable.js +2203 silly gunzTarPerm extractEntry lib/_stream_transform.js +2204 silly gunzTarPerm extractEntry lib/_stream_writable.js +2205 silly gunzTarPerm extractEntry .travis.yml +2206 info preinstall through2-filter@2.0.0 +2207 info preinstall merge-stream@1.0.0 +2208 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/package.json +2209 silly prepareForInstallMany adding core-util-is@~1.0.0 from readable-stream dependencies +2210 silly prepareForInstallMany adding inherits@~2.0.1 from readable-stream dependencies +2211 silly prepareForInstallMany adding isarray@~1.0.0 from readable-stream dependencies +2212 silly prepareForInstallMany adding process-nextick-args@~1.0.6 from readable-stream dependencies +2213 silly prepareForInstallMany adding string_decoder@~0.10.x from readable-stream dependencies +2214 silly prepareForInstallMany adding util-deprecate@~1.0.1 from readable-stream dependencies +2215 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/package.json +2216 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream/package.json +2217 http 200 http://registry.npm.alibaba-inc.com/lodash +2218 verbose headers { server: 'Tengine', +2218 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2218 verbose headers 'content-type': 'application/json; charset=utf-8', +2218 verbose headers 'transfer-encoding': 'chunked', +2218 verbose headers connection: 'keep-alive', +2218 verbose headers vary: 'Accept-Encoding', +2218 verbose headers 'x-readtime': '262', +2218 verbose headers 'content-encoding': 'gzip' } +2219 silly get cb [ 200, +2219 silly get { server: 'Tengine', +2219 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2219 silly get 'content-type': 'application/json; charset=utf-8', +2219 silly get 'transfer-encoding': 'chunked', +2219 silly get connection: 'keep-alive', +2219 silly get vary: 'Accept-Encoding', +2219 silly get 'x-readtime': '262', +2219 silly get 'content-encoding': 'gzip' } ] +2220 verbose get saving lodash to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/lodash/.cache.json +2221 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2222 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date/package.json +2223 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob/package.json +2224 silly gunzTarPerm extractEntry test/readable_test.js +2225 silly gunzTarPerm extractEntry test/writable_test.js +2226 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/package.json +2227 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/package.json +2228 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/package.json +2229 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign/package.json +2230 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/package.json +2231 silly prepareForInstallMany adding xtend@~4.0.0 from through2-filter dependencies +2232 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/package.json +2233 info preinstall is-valid-glob@0.3.0 +2234 info preinstall vali-date@1.0.0 +2235 info preinstall strip-bom@2.0.0 +2236 info preinstall strip-bom-stream@1.0.0 +2237 silly gunzTarPerm extractEntry test/perm.js +2238 silly gunzTarPerm extractEntry test/perm_sync.js +2239 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/package.json +2240 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream/package.json +2241 info preinstall glob-stream@5.3.2 +2242 info preinstall object-assign@4.1.0 +2243 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob/package.json +2244 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date/package.json +2245 silly cache add args [ 'process-nextick-args@~1.0.6', null ] +2246 verbose cache add spec process-nextick-args@~1.0.6 +2247 silly cache add parsed spec Result { +2247 silly cache add raw: 'process-nextick-args@~1.0.6', +2247 silly cache add scope: null, +2247 silly cache add name: 'process-nextick-args', +2247 silly cache add rawSpec: '~1.0.6', +2247 silly cache add spec: '>=1.0.6 <1.1.0', +2247 silly cache add type: 'range' } +2248 silly addNamed process-nextick-args@>=1.0.6 <1.1.0 +2249 verbose addNamed ">=1.0.6 <1.1.0" is a valid semver range for process-nextick-args +2250 silly addNameRange { name: 'process-nextick-args', +2250 silly addNameRange range: '>=1.0.6 <1.1.0', +2250 silly addNameRange hasData: false } +2251 silly mapToRegistry name process-nextick-args +2252 silly mapToRegistry using default registry +2253 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2254 silly mapToRegistry data Result { +2254 silly mapToRegistry raw: 'process-nextick-args', +2254 silly mapToRegistry scope: null, +2254 silly mapToRegistry name: 'process-nextick-args', +2254 silly mapToRegistry rawSpec: '', +2254 silly mapToRegistry spec: 'latest', +2254 silly mapToRegistry type: 'tag' } +2255 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/process-nextick-args +2256 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/process-nextick-args not in flight; fetching +2257 silly cache add args [ 'string_decoder@~0.10.x', null ] +2258 verbose cache add spec string_decoder@~0.10.x +2259 silly cache add parsed spec Result { +2259 silly cache add raw: 'string_decoder@~0.10.x', +2259 silly cache add scope: null, +2259 silly cache add name: 'string_decoder', +2259 silly cache add rawSpec: '~0.10.x', +2259 silly cache add spec: '>=0.10.0 <0.11.0', +2259 silly cache add type: 'range' } +2260 silly addNamed string_decoder@>=0.10.0 <0.11.0 +2261 verbose addNamed ">=0.10.0 <0.11.0" is a valid semver range for string_decoder +2262 silly addNameRange { name: 'string_decoder', +2262 silly addNameRange range: '>=0.10.0 <0.11.0', +2262 silly addNameRange hasData: false } +2263 silly mapToRegistry name string_decoder +2264 silly mapToRegistry using default registry +2265 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2266 silly mapToRegistry data Result { +2266 silly mapToRegistry raw: 'string_decoder', +2266 silly mapToRegistry scope: null, +2266 silly mapToRegistry name: 'string_decoder', +2266 silly mapToRegistry rawSpec: '', +2266 silly mapToRegistry spec: 'latest', +2266 silly mapToRegistry type: 'tag' } +2267 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/string_decoder +2268 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/string_decoder not in flight; fetching +2269 silly cache add args [ 'util-deprecate@~1.0.1', null ] +2270 verbose cache add spec util-deprecate@~1.0.1 +2271 silly cache add parsed spec Result { +2271 silly cache add raw: 'util-deprecate@~1.0.1', +2271 silly cache add scope: null, +2271 silly cache add name: 'util-deprecate', +2271 silly cache add rawSpec: '~1.0.1', +2271 silly cache add spec: '>=1.0.1 <1.1.0', +2271 silly cache add type: 'range' } +2272 silly addNamed util-deprecate@>=1.0.1 <1.1.0 +2273 verbose addNamed ">=1.0.1 <1.1.0" is a valid semver range for util-deprecate +2274 silly addNameRange { name: 'util-deprecate', +2274 silly addNameRange range: '>=1.0.1 <1.1.0', +2274 silly addNameRange hasData: false } +2275 silly mapToRegistry name util-deprecate +2276 silly mapToRegistry using default registry +2277 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2278 silly mapToRegistry data Result { +2278 silly mapToRegistry raw: 'util-deprecate', +2278 silly mapToRegistry scope: null, +2278 silly mapToRegistry name: 'util-deprecate', +2278 silly mapToRegistry rawSpec: '', +2278 silly mapToRegistry spec: 'latest', +2278 silly mapToRegistry type: 'tag' } +2279 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/util-deprecate +2280 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/util-deprecate not in flight; fetching +2281 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/package.json +2282 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/package.json +2283 info preinstall gulp-sourcemaps@1.6.0 +2284 silly cache add args [ 'core-util-is@~1.0.0', null ] +2285 verbose cache add spec core-util-is@~1.0.0 +2286 silly cache add parsed spec Result { +2286 silly cache add raw: 'core-util-is@~1.0.0', +2286 silly cache add scope: null, +2286 silly cache add name: 'core-util-is', +2286 silly cache add rawSpec: '~1.0.0', +2286 silly cache add spec: '>=1.0.0 <1.1.0', +2286 silly cache add type: 'range' } +2287 silly addNamed core-util-is@>=1.0.0 <1.1.0 +2288 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for core-util-is +2289 silly addNameRange { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: false } +2290 silly mapToRegistry name core-util-is +2291 silly mapToRegistry using default registry +2292 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2293 silly mapToRegistry data Result { +2293 silly mapToRegistry raw: 'core-util-is', +2293 silly mapToRegistry scope: null, +2293 silly mapToRegistry name: 'core-util-is', +2293 silly mapToRegistry rawSpec: '', +2293 silly mapToRegistry spec: 'latest', +2293 silly mapToRegistry type: 'tag' } +2294 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/core-util-is +2295 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/core-util-is not in flight; fetching +2296 silly cache add args [ 'inherits@~2.0.1', null ] +2297 verbose cache add spec inherits@~2.0.1 +2298 silly cache add parsed spec Result { +2298 silly cache add raw: 'inherits@~2.0.1', +2298 silly cache add scope: null, +2298 silly cache add name: 'inherits', +2298 silly cache add rawSpec: '~2.0.1', +2298 silly cache add spec: '>=2.0.1 <2.1.0', +2298 silly cache add type: 'range' } +2299 silly addNamed inherits@>=2.0.1 <2.1.0 +2300 verbose addNamed ">=2.0.1 <2.1.0" is a valid semver range for inherits +2301 silly addNameRange { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: false } +2302 silly mapToRegistry name inherits +2303 silly mapToRegistry using default registry +2304 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2305 silly mapToRegistry data Result { +2305 silly mapToRegistry raw: 'inherits', +2305 silly mapToRegistry scope: null, +2305 silly mapToRegistry name: 'inherits', +2305 silly mapToRegistry rawSpec: '', +2305 silly mapToRegistry spec: 'latest', +2305 silly mapToRegistry type: 'tag' } +2306 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits +2307 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching +2308 silly cache add args [ 'isarray@~1.0.0', null ] +2309 verbose cache add spec isarray@~1.0.0 +2310 silly cache add parsed spec Result { +2310 silly cache add raw: 'isarray@~1.0.0', +2310 silly cache add scope: null, +2310 silly cache add name: 'isarray', +2310 silly cache add rawSpec: '~1.0.0', +2310 silly cache add spec: '>=1.0.0 <1.1.0', +2310 silly cache add type: 'range' } +2311 silly addNamed isarray@>=1.0.0 <1.1.0 +2312 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for isarray +2313 silly addNameRange { name: 'isarray', range: '>=1.0.0 <1.1.0', hasData: false } +2314 silly mapToRegistry name isarray +2315 silly mapToRegistry using default registry +2316 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2317 silly mapToRegistry data Result { +2317 silly mapToRegistry raw: 'isarray', +2317 silly mapToRegistry scope: null, +2317 silly mapToRegistry name: 'isarray', +2317 silly mapToRegistry rawSpec: '', +2317 silly mapToRegistry spec: 'latest', +2317 silly mapToRegistry type: 'tag' } +2318 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isarray +2319 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/isarray not in flight; fetching +2320 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/package.json +2321 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign/package.json +2322 silly addNameRange number 2 { name: 'lodash', range: '>=4.3.0 <5.0.0', hasData: true } +2323 silly addNameRange versions [ 'lodash', +2323 silly addNameRange [ '4.12.0', +2323 silly addNameRange '4.11.2', +2323 silly addNameRange '4.11.1', +2323 silly addNameRange '4.11.0', +2323 silly addNameRange '4.10.0', +2323 silly addNameRange '4.9.0', +2323 silly addNameRange '4.8.2', +2323 silly addNameRange '4.8.1', +2323 silly addNameRange '4.8.0', +2323 silly addNameRange '4.7.0', +2323 silly addNameRange '4.6.1', +2323 silly addNameRange '4.6.0', +2323 silly addNameRange '4.5.1', +2323 silly addNameRange '4.5.0', +2323 silly addNameRange '4.4.0', +2323 silly addNameRange '4.3.0', +2323 silly addNameRange '4.2.1', +2323 silly addNameRange '4.2.0', +2323 silly addNameRange '4.1.0', +2323 silly addNameRange '4.0.1', +2323 silly addNameRange '4.0.0', +2323 silly addNameRange '3.10.1', +2323 silly addNameRange '3.10.0', +2323 silly addNameRange '3.9.3', +2323 silly addNameRange '3.9.2', +2323 silly addNameRange '3.9.1', +2323 silly addNameRange '3.9.0', +2323 silly addNameRange '3.8.0', +2323 silly addNameRange '2.4.2', +2323 silly addNameRange '3.7.0', +2323 silly addNameRange '1.0.2', +2323 silly addNameRange '3.6.0', +2323 silly addNameRange '3.5.0', +2323 silly addNameRange '3.4.0', +2323 silly addNameRange '3.3.1', +2323 silly addNameRange '3.3.0', +2323 silly addNameRange '3.2.0', +2323 silly addNameRange '3.1.0', +2323 silly addNameRange '3.0.1', +2323 silly addNameRange '3.0.0', +2323 silly addNameRange '2.4.1', +2323 silly addNameRange '2.4.0', +2323 silly addNameRange '2.3.0', +2323 silly addNameRange '2.2.1', +2323 silly addNameRange '2.2.0', +2323 silly addNameRange '2.1.0', +2323 silly addNameRange '2.0.0', +2323 silly addNameRange '1.3.1', +2323 silly addNameRange '1.3.0', +2323 silly addNameRange '1.2.1', +2323 silly addNameRange '1.2.0', +2323 silly addNameRange '1.1.1', +2323 silly addNameRange '1.1.0', +2323 silly addNameRange '1.0.1', +2323 silly addNameRange '1.0.0', +2323 silly addNameRange '1.0.0-rc.3', +2323 silly addNameRange '1.0.0-rc.2', +2323 silly addNameRange '1.0.0-rc.1', +2323 silly addNameRange '0.10.0', +2323 silly addNameRange '0.9.2', +2323 silly addNameRange '0.9.1', +2323 silly addNameRange '0.9.0', +2323 silly addNameRange '0.8.2', +2323 silly addNameRange '0.8.1', +2323 silly addNameRange '0.8.0', +2323 silly addNameRange '0.7.0', +2323 silly addNameRange '0.6.1', +2323 silly addNameRange '0.6.0', +2323 silly addNameRange '0.5.2', +2323 silly addNameRange '0.5.1', +2323 silly addNameRange '0.5.0', +2323 silly addNameRange '0.5.0-rc.1', +2323 silly addNameRange '0.4.2', +2323 silly addNameRange '0.4.1', +2323 silly addNameRange '0.4.0', +2323 silly addNameRange '0.3.2', +2323 silly addNameRange '0.3.1', +2323 silly addNameRange '0.3.0', +2323 silly addNameRange '0.2.2', +2323 silly addNameRange '0.2.1', +2323 silly addNameRange '0.2.0', +2323 silly addNameRange '0.1.0' ] ] +2324 silly addNamed lodash@4.12.0 +2325 verbose addNamed "4.12.0" is a plain semver version for lodash +2326 info preinstall lodash.isequal@4.2.0 +2327 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/package.json +2328 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/package.json +2329 silly install resolved [] +2330 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream +2331 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream +2332 silly gunzTarPerm extractEntry test/data.md +2333 silly cache add args [ 'xtend@~4.0.0', null ] +2334 verbose cache add spec xtend@~4.0.0 +2335 silly cache add parsed spec Result { +2335 silly cache add raw: 'xtend@~4.0.0', +2335 silly cache add scope: null, +2335 silly cache add name: 'xtend', +2335 silly cache add rawSpec: '~4.0.0', +2335 silly cache add spec: '>=4.0.0 <4.1.0', +2335 silly cache add type: 'range' } +2336 silly addNamed xtend@>=4.0.0 <4.1.0 +2337 verbose addNamed ">=4.0.0 <4.1.0" is a valid semver range for xtend +2338 silly addNameRange { name: 'xtend', range: '>=4.0.0 <4.1.0', hasData: false } +2339 silly mapToRegistry name xtend +2340 silly mapToRegistry using default registry +2341 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2342 silly mapToRegistry data Result { +2342 silly mapToRegistry raw: 'xtend', +2342 silly mapToRegistry scope: null, +2342 silly mapToRegistry name: 'xtend', +2342 silly mapToRegistry rawSpec: '', +2342 silly mapToRegistry spec: 'latest', +2342 silly mapToRegistry type: 'tag' } +2343 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/xtend +2344 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/xtend not in flight; fetching +2345 silly gunzTarPerm extractEntry test/opts_fs.js +2346 silly gunzTarPerm extractEntry test/rel.js +2347 verbose request uri http://registry.npm.alibaba-inc.com/process-nextick-args +2348 verbose request no auth needed +2349 info attempt registry request try #1 at 上午9:12:29 +2350 verbose etag "29b6-+c9xMCSHhzraGfcJXw/LOw" +2351 http request GET http://registry.npm.alibaba-inc.com/process-nextick-args +2352 verbose request uri http://registry.npm.alibaba-inc.com/string_decoder +2353 verbose request no auth needed +2354 info attempt registry request try #1 at 上午9:12:29 +2355 verbose etag "2781-r+r6Q+yEIMxgrJFc2TidrQ" +2356 http request GET http://registry.npm.alibaba-inc.com/string_decoder +2357 verbose request uri http://registry.npm.alibaba-inc.com/util-deprecate +2358 verbose request no auth needed +2359 info attempt registry request try #1 at 上午9:12:29 +2360 verbose etag "1828-s5Mws6s7lWlAGY5y9YlXaQ" +2361 http request GET http://registry.npm.alibaba-inc.com/util-deprecate +2362 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob/package.json +2363 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date/package.json +2364 verbose request uri http://registry.npm.alibaba-inc.com/core-util-is +2365 verbose request no auth needed +2366 info attempt registry request try #1 at 上午9:12:29 +2367 verbose etag "1012-J1qBYwWSaRuhI7IrLgNy1w" +2368 http request GET http://registry.npm.alibaba-inc.com/core-util-is +2369 silly prepareForInstallMany adding is-utf8@^0.2.0 from strip-bom dependencies +2370 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/package.json +2371 silly prepareForInstallMany adding first-chunk-stream@^1.0.0 from strip-bom-stream dependencies +2372 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/package.json +2373 verbose request uri http://registry.npm.alibaba-inc.com/inherits +2374 verbose request no auth needed +2375 info attempt registry request try #1 at 上午9:12:29 +2376 verbose etag "1f1e-Mk9UHFC0IpS7TBhwmfSvmg" +2377 http request GET http://registry.npm.alibaba-inc.com/inherits +2378 verbose request uri http://registry.npm.alibaba-inc.com/isarray +2379 verbose request no auth needed +2380 info attempt registry request try #1 at 上午9:12:29 +2381 verbose etag "1874-/oRHxQaeyMwf9womjIj2iQ" +2382 http request GET http://registry.npm.alibaba-inc.com/isarray +2383 silly prepareForInstallMany adding extend@^3.0.0 from glob-stream dependencies +2384 silly prepareForInstallMany adding glob@^5.0.3 from glob-stream dependencies +2385 silly prepareForInstallMany adding glob-parent@^2.0.0 from glob-stream dependencies +2386 silly prepareForInstallMany adding micromatch@^2.3.7 from glob-stream dependencies +2387 silly prepareForInstallMany adding ordered-read-streams@^0.3.0 from glob-stream dependencies +2388 silly prepareForInstallMany adding through2@^0.6.0 from glob-stream dependencies +2389 silly prepareForInstallMany adding to-absolute-glob@^0.1.1 from glob-stream dependencies +2390 silly prepareForInstallMany adding unique-stream@^2.0.2 from glob-stream dependencies +2391 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/package.json +2392 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign/package.json +2393 silly cache afterAdd lodash@4.12.0 +2394 verbose afterAdd /home/ruanyf/.tnpm/lodash/4.12.0/package/package.json not in flight; writing +2395 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2396 silly prepareForInstallMany adding convert-source-map@^1.1.1 from gulp-sourcemaps dependencies +2397 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/package.json +2398 info linkStuff merge-stream@1.0.0 +2399 silly linkStuff merge-stream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +2400 silly linkStuff merge-stream@1.0.0 is part of a global install +2401 silly linkStuff merge-stream@1.0.0 is installed into a global node_modules +2402 verbose get http://registry.npm.alibaba-inc.com/xtend not expired, no request +2403 silly addNameRange number 2 { name: 'xtend', range: '>=4.0.0 <4.1.0', hasData: true } +2404 silly addNameRange versions [ 'xtend', +2404 silly addNameRange [ '4.0.1', +2404 silly addNameRange '4.0.0', +2404 silly addNameRange '3.0.0', +2404 silly addNameRange '2.2.0', +2404 silly addNameRange '2.1.2', +2404 silly addNameRange '2.1.1', +2404 silly addNameRange '2.0.6', +2404 silly addNameRange '2.0.5', +2404 silly addNameRange '2.0.4', +2404 silly addNameRange '2.0.3', +2404 silly addNameRange '2.0.2', +2404 silly addNameRange '2.0.1', +2404 silly addNameRange '1.0.3', +2404 silly addNameRange '1.0.2', +2404 silly addNameRange '1.0.1', +2404 silly addNameRange '1.0.0' ] ] +2405 silly addNamed xtend@4.0.1 +2406 verbose addNamed "4.0.1" is a plain semver version for xtend +2407 silly install resolved [] +2408 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob +2409 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob +2410 silly install resolved [] +2411 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date +2412 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date +2413 verbose linkBins merge-stream@1.0.0 +2414 verbose linkMans merge-stream@1.0.0 +2415 verbose rebuildBundles merge-stream@1.0.0 +2416 verbose afterAdd /home/ruanyf/.tnpm/lodash/4.12.0/package/package.json written +2417 silly install resolved [ { name: 'cli-cursor', +2417 silly install resolved version: '1.0.2', +2417 silly install resolved description: 'Toggle the CLI cursor', +2417 silly install resolved license: 'MIT', +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+https://github.com/sindresorhus/cli-cursor.git' }, +2417 silly install resolved author: +2417 silly install resolved { name: 'Sindre Sorhus', +2417 silly install resolved email: 'sindresorhus@gmail.com', +2417 silly install resolved url: 'sindresorhus.com' }, +2417 silly install resolved engines: { node: '>=0.10.0' }, +2417 silly install resolved scripts: { test: 'xo && ava' }, +2417 silly install resolved files: [ 'index.js' ], +2417 silly install resolved keywords: +2417 silly install resolved [ 'cli', +2417 silly install resolved 'cursor', +2417 silly install resolved 'ansi', +2417 silly install resolved 'toggle', +2417 silly install resolved 'display', +2417 silly install resolved 'show', +2417 silly install resolved 'hide', +2417 silly install resolved 'term', +2417 silly install resolved 'terminal', +2417 silly install resolved 'console', +2417 silly install resolved 'tty', +2417 silly install resolved 'shell', +2417 silly install resolved 'command-line' ], +2417 silly install resolved dependencies: { 'restore-cursor': '^1.0.1' }, +2417 silly install resolved devDependencies: { ava: '*', xo: '*' }, +2417 silly install resolved gitHead: '6be5a384d90278c66aa30db5ecdec8dc68f17d4f', +2417 silly install resolved bugs: { url: 'https://github.com/sindresorhus/cli-cursor/issues' }, +2417 silly install resolved homepage: 'https://github.com/sindresorhus/cli-cursor#readme', +2417 silly install resolved _id: 'cli-cursor@1.0.2', +2417 silly install resolved _shasum: '64da3f7d56a54412e59794bd62dc35295e8f2987', +2417 silly install resolved _from: 'cli-cursor@>=1.0.1 <2.0.0', +2417 silly install resolved _npmVersion: '2.14.3', +2417 silly install resolved _nodeVersion: '4.1.0', +2417 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: '64da3f7d56a54412e59794bd62dc35295e8f2987', +2417 silly install resolved size: 1636, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'cli-cursor/-/cli-cursor-1.0.2.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/cli-cursor/download/cli-cursor-1.0.2.tgz' }, +2417 silly install resolved maintainers: [ [Object] ], +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1442584046541, +2417 silly install resolved _cnpm_publish_time: 1442584046541, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/cli-cursor/download/cli-cursor-1.0.2.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'cli-width', +2417 silly install resolved version: '2.1.0', +2417 silly install resolved description: 'Get stdout window width, with two fallbacks, tty and then a default.', +2417 silly install resolved main: 'index.js', +2417 silly install resolved scripts: +2417 silly install resolved { test: 'node test | tspec', +2417 silly install resolved coverage: 'isparta cover test/*.js | tspec', +2417 silly install resolved coveralls: 'npm run coverage -s && coveralls < coverage/lcov.info', +2417 silly install resolved postcoveralls: 'rimraf ./coverage' }, +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+ssh://git@github.com/knownasilya/cli-width.git' }, +2417 silly install resolved author: { name: 'Ilya Radchenko', email: 'ilya@burstcreations.com' }, +2417 silly install resolved license: 'ISC', +2417 silly install resolved bugs: { url: 'https://github.com/knownasilya/cli-width/issues' }, +2417 silly install resolved homepage: 'https://github.com/knownasilya/cli-width', +2417 silly install resolved devDependencies: +2417 silly install resolved { 'tap-spec': '^4.1.0', +2417 silly install resolved tape: '^3.4.0', +2417 silly install resolved coveralls: '^2.11.4', +2417 silly install resolved isparta: '^3.0.4', +2417 silly install resolved rimraf: '^2.4.3' }, +2417 silly install resolved gitHead: 'c9506fd74bd3863ff327f8f8892601fa4ac2dbb3', +2417 silly install resolved _id: 'cli-width@2.1.0', +2417 silly install resolved _shasum: 'b234ca209b29ef66fc518d9b98d5847b00edf00a', +2417 silly install resolved _from: 'cli-width@>=2.0.0 <3.0.0', +2417 silly install resolved _npmVersion: '2.14.12', +2417 silly install resolved _nodeVersion: '4.2.6', +2417 silly install resolved _npmUser: { name: 'knownasilya', email: 'ilya@burstcreations.com' }, +2417 silly install resolved maintainers: [ [Object] ], +2417 silly install resolved dist: +2417 silly install resolved { shasum: 'b234ca209b29ef66fc518d9b98d5847b00edf00a', +2417 silly install resolved size: 15911, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'cli-width/-/cli-width-2.1.0.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/cli-width/download/cli-width-2.1.0.tgz' }, +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-9-west.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/cli-width-2.1.0.tgz_1455570612101_0.2879865295253694' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1455570615968, +2417 silly install resolved _cnpm_publish_time: 1455570615968, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/cli-width/download/cli-width-2.1.0.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'pinkie-promise', +2417 silly install resolved version: '2.0.1', +2417 silly install resolved description: 'ES2015 Promise ponyfill', +2417 silly install resolved license: 'MIT', +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+https://github.com/floatdrop/pinkie-promise.git' }, +2417 silly install resolved author: +2417 silly install resolved { name: 'Vsevolod Strukchinsky', +2417 silly install resolved email: 'floatdrop@gmail.com', +2417 silly install resolved url: 'github.com/floatdrop' }, +2417 silly install resolved engines: { node: '>=0.10.0' }, +2417 silly install resolved scripts: { test: 'mocha' }, +2417 silly install resolved files: [ 'index.js' ], +2417 silly install resolved keywords: [ 'promise', 'promises', 'es2015', 'es6', 'polyfill', 'ponyfill' ], +2417 silly install resolved dependencies: { pinkie: '^2.0.0' }, +2417 silly install resolved devDependencies: { mocha: '*' }, +2417 silly install resolved gitHead: '4a936c09c34ad591a25db93f1216d242de0d6184', +2417 silly install resolved bugs: { url: 'https://github.com/floatdrop/pinkie-promise/issues' }, +2417 silly install resolved homepage: 'https://github.com/floatdrop/pinkie-promise', +2417 silly install resolved _id: 'pinkie-promise@2.0.1', +2417 silly install resolved _shasum: '2135d6dfa7a358c069ac9b178776288228450ffa', +2417 silly install resolved _from: 'pinkie-promise@>=2.0.0 <3.0.0', +2417 silly install resolved _npmVersion: '2.14.20', +2417 silly install resolved _nodeVersion: '4.4.1', +2417 silly install resolved _npmUser: { name: 'floatdrop', email: 'floatdrop@gmail.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: '2135d6dfa7a358c069ac9b178776288228450ffa', +2417 silly install resolved size: 1532, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'pinkie-promise/-/pinkie-promise-2.0.1.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/pinkie-promise/download/pinkie-promise-2.0.1.tgz' }, +2417 silly install resolved maintainers: [ [Object] ], +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/pinkie-promise-2.0.1.tgz_1460309839126_0.3422858319245279' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1460309840299, +2417 silly install resolved _cnpm_publish_time: 1460309840299, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/pinkie-promise/download/pinkie-promise-2.0.1.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'mute-stream', +2417 silly install resolved version: '0.0.6', +2417 silly install resolved main: 'mute.js', +2417 silly install resolved directories: { test: 'test' }, +2417 silly install resolved devDependencies: { tap: '^1.2.0' }, +2417 silly install resolved scripts: { test: 'tap test/*.js' }, +2417 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/mute-stream.git' }, +2417 silly install resolved keywords: [ 'mute', 'stream', 'pipe' ], +2417 silly install resolved author: +2417 silly install resolved { name: 'Isaac Z. Schlueter', +2417 silly install resolved email: 'i@izs.me', +2417 silly install resolved url: 'http://blog.izs.me/' }, +2417 silly install resolved license: 'ISC', +2417 silly install resolved description: 'Bytes go in, but they don\'t come out (when muted).', +2417 silly install resolved gitHead: '3c0b793839b923b8d8a86a3d07f70fa451e30348', +2417 silly install resolved bugs: { url: 'https://github.com/isaacs/mute-stream/issues' }, +2417 silly install resolved homepage: 'https://github.com/isaacs/mute-stream#readme', +2417 silly install resolved _id: 'mute-stream@0.0.6', +2417 silly install resolved _shasum: '48962b19e169fd1dfc240b3f1e7317627bbc47db', +2417 silly install resolved _from: 'mute-stream@0.0.6', +2417 silly install resolved _npmVersion: '3.7.0', +2417 silly install resolved _nodeVersion: '5.6.0', +2417 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: '48962b19e169fd1dfc240b3f1e7317627bbc47db', +2417 silly install resolved size: 3561, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'mute-stream/-/mute-stream-0.0.6.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/mute-stream/download/mute-stream-0.0.6.tgz' }, +2417 silly install resolved maintainers: [ [Object], [Object], [Object], [Object] ], +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-9-west.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/mute-stream-0.0.6.tgz_1455343284080_0.04852168820798397' }, +2417 silly install resolved publish_time: 1455343285846, +2417 silly install resolved _cnpm_publish_time: 1455343285846, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/mute-stream/download/mute-stream-0.0.6.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'string-width', +2417 silly install resolved version: '1.0.1', +2417 silly install resolved description: 'Get the visual width of a string - the number of columns required to display it', +2417 silly install resolved license: 'MIT', +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+https://github.com/sindresorhus/string-width.git' }, +2417 silly install resolved author: +2417 silly install resolved { name: 'Sindre Sorhus', +2417 silly install resolved email: 'sindresorhus@gmail.com', +2417 silly install resolved url: 'sindresorhus.com' }, +2417 silly install resolved engines: { node: '>=0.10.0' }, +2417 silly install resolved scripts: { test: 'node test.js' }, +2417 silly install resolved files: [ 'index.js' ], +2417 silly install resolved keywords: +2417 silly install resolved [ 'string', +2417 silly install resolved 'str', +2417 silly install resolved 'character', +2417 silly install resolved 'char', +2417 silly install resolved 'unicode', +2417 silly install resolved 'width', +2417 silly install resolved 'visual', +2417 silly install resolved 'column', +2417 silly install resolved 'columns', +2417 silly install resolved 'fullwidth', +2417 silly install resolved 'full-width', +2417 silly install resolved 'full', +2417 silly install resolved 'ansi', +2417 silly install resolved 'escape', +2417 silly install resolved 'codes', +2417 silly install resolved 'cli', +2417 silly install resolved 'command-line', +2417 silly install resolved 'terminal', +2417 silly install resolved 'console', +2417 silly install resolved 'cjk', +2417 silly install resolved 'chinese', +2417 silly install resolved 'japanese', +2417 silly install resolved 'korean', +2417 silly install resolved 'fixed-width' ], +2417 silly install resolved dependencies: +2417 silly install resolved { 'code-point-at': '^1.0.0', +2417 silly install resolved 'is-fullwidth-code-point': '^1.0.0', +2417 silly install resolved 'strip-ansi': '^3.0.0' }, +2417 silly install resolved devDependencies: { ava: '0.0.4' }, +2417 silly install resolved gitHead: 'f279cfd14835f0a3c8df69ba18e9a3960156e135', +2417 silly install resolved bugs: { url: 'https://github.com/sindresorhus/string-width/issues' }, +2417 silly install resolved homepage: 'https://github.com/sindresorhus/string-width', +2417 silly install resolved _id: 'string-width@1.0.1', +2417 silly install resolved _shasum: 'c92129b6f1d7f52acf9af424a26e3864a05ceb0a', +2417 silly install resolved _from: 'string-width@>=1.0.1 <2.0.0', +2417 silly install resolved _npmVersion: '2.11.2', +2417 silly install resolved _nodeVersion: '0.12.5', +2417 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: 'c92129b6f1d7f52acf9af424a26e3864a05ceb0a', +2417 silly install resolved size: 1954, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'string-width/-/string-width-1.0.1.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/string-width/download/string-width-1.0.1.tgz' }, +2417 silly install resolved maintainers: [ [Object] ], +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1437355869758, +2417 silly install resolved _cnpm_publish_time: 1437355869758, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/string-width/download/string-width-1.0.1.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'run-async', +2417 silly install resolved version: '2.2.0', +2417 silly install resolved description: 'Utility method to run function either synchronously or asynchronously using the common `this.async()` style.', +2417 silly install resolved main: 'index.js', +2417 silly install resolved scripts: { test: 'mocha -R spec' }, +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+https://github.com/sboudrias/run-async.git' }, +2417 silly install resolved keywords: [ 'flow', 'flow-control', 'async' ], +2417 silly install resolved author: { name: 'Simon Boudrias', email: 'admin@simonboudrias.com' }, +2417 silly install resolved license: 'MIT', +2417 silly install resolved dependencies: { 'is-promise': '^2.1.0', 'pinkie-promise': '^2.0.0' }, +2417 silly install resolved devDependencies: { mocha: '^2.3.3' }, +2417 silly install resolved gitHead: '5c6dc70500fd5c0b6ab1ba93f5f1a3338bfeaa84', +2417 silly install resolved bugs: { url: 'https://github.com/sboudrias/run-async/issues' }, +2417 silly install resolved homepage: 'https://github.com/sboudrias/run-async#readme', +2417 silly install resolved _id: 'run-async@2.2.0', +2417 silly install resolved _shasum: '8783abd83c7bb86f41ee0602fc82404b3bd6e8b9', +2417 silly install resolved _from: 'run-async@>=2.2.0 <3.0.0', +2417 silly install resolved _npmVersion: '3.5.3', +2417 silly install resolved _nodeVersion: '5.2.0', +2417 silly install resolved _npmUser: { name: 'sboudrias', email: 'admin@simonboudrias.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: '8783abd83c7bb86f41ee0602fc82404b3bd6e8b9', +2417 silly install resolved size: 3623, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'run-async/-/run-async-2.2.0.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/run-async/download/run-async-2.2.0.tgz' }, +2417 silly install resolved maintainers: [ [Object] ], +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-13-west.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/run-async-2.2.0.tgz_1458198577245_0.4591540393885225' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1458198577775, +2417 silly install resolved _cnpm_publish_time: 1458198577775, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/run-async/download/run-async-2.2.0.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'ansi-escapes', +2417 silly install resolved version: '1.4.0', +2417 silly install resolved description: 'ANSI escape codes for manipulating the terminal', +2417 silly install resolved license: 'MIT', +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+https://github.com/sindresorhus/ansi-escapes.git' }, +2417 silly install resolved author: +2417 silly install resolved { name: 'Sindre Sorhus', +2417 silly install resolved email: 'sindresorhus@gmail.com', +2417 silly install resolved url: 'sindresorhus.com' }, +2417 silly install resolved engines: { node: '>=0.10.0' }, +2417 silly install resolved scripts: { test: 'xo && ava' }, +2417 silly install resolved files: [ 'index.js' ], +2417 silly install resolved keywords: +2417 silly install resolved [ 'ansi', +2417 silly install resolved 'terminal', +2417 silly install resolved 'console', +2417 silly install resolved 'cli', +2417 silly install resolved 'string', +2417 silly install resolved 'tty', +2417 silly install resolved 'escape', +2417 silly install resolved 'escapes', +2417 silly install resolved 'formatting', +2417 silly install resolved 'shell', +2417 silly install resolved 'xterm', +2417 silly install resolved 'log', +2417 silly install resolved 'logging', +2417 silly install resolved 'command-line', +2417 silly install resolved 'text', +2417 silly install resolved 'vt100', +2417 silly install resolved 'sequence', +2417 silly install resolved 'control', +2417 silly install resolved 'code', +2417 silly install resolved 'codes', +2417 silly install resolved 'cursor', +2417 silly install resolved 'iterm', +2417 silly install resolved 'iterm2' ], +2417 silly install resolved devDependencies: { ava: '*', xo: '*' }, +2417 silly install resolved gitHead: '763a11847148479dd315c2b9f81b001c94740415', +2417 silly install resolved bugs: { url: 'https://github.com/sindresorhus/ansi-escapes/issues' }, +2417 silly install resolved homepage: 'https://github.com/sindresorhus/ansi-escapes#readme', +2417 silly install resolved _id: 'ansi-escapes@1.4.0', +2417 silly install resolved _shasum: 'd3a8a83b319aa67793662b13e761c7911422306e', +2417 silly install resolved _from: 'ansi-escapes@>=1.1.0 <2.0.0', +2417 silly install resolved _npmVersion: '2.15.0', +2417 silly install resolved _nodeVersion: '4.4.2', +2417 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: 'd3a8a83b319aa67793662b13e761c7911422306e', +2417 silly install resolved size: 3151, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'ansi-escapes/-/ansi-escapes-1.4.0.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ansi-escapes/download/ansi-escapes-1.4.0.tgz' }, +2417 silly install resolved maintainers: [ [Object] ], +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/ansi-escapes-1.4.0.tgz_1460925437568_0.228597579523921' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1460925439676, +2417 silly install resolved _cnpm_publish_time: 1460925439676, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ansi-escapes/download/ansi-escapes-1.4.0.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'strip-ansi', +2417 silly install resolved version: '3.0.1', +2417 silly install resolved description: 'Strip ANSI escape codes', +2417 silly install resolved license: 'MIT', +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+https://github.com/chalk/strip-ansi.git' }, +2417 silly install resolved author: +2417 silly install resolved { name: 'Sindre Sorhus', +2417 silly install resolved email: 'sindresorhus@gmail.com', +2417 silly install resolved url: 'sindresorhus.com' }, +2417 silly install resolved maintainers: [ [Object], [Object] ], +2417 silly install resolved engines: { node: '>=0.10.0' }, +2417 silly install resolved scripts: { test: 'xo && ava' }, +2417 silly install resolved files: [ 'index.js' ], +2417 silly install resolved keywords: +2417 silly install resolved [ 'strip', +2417 silly install resolved 'trim', +2417 silly install resolved 'remove', +2417 silly install resolved 'ansi', +2417 silly install resolved 'styles', +2417 silly install resolved 'color', +2417 silly install resolved 'colour', +2417 silly install resolved 'colors', +2417 silly install resolved 'terminal', +2417 silly install resolved 'console', +2417 silly install resolved 'string', +2417 silly install resolved 'tty', +2417 silly install resolved 'escape', +2417 silly install resolved 'formatting', +2417 silly install resolved 'rgb', +2417 silly install resolved '256', +2417 silly install resolved 'shell', +2417 silly install resolved 'xterm', +2417 silly install resolved 'log', +2417 silly install resolved 'logging', +2417 silly install resolved 'command-line', +2417 silly install resolved 'text' ], +2417 silly install resolved dependencies: { 'ansi-regex': '^2.0.0' }, +2417 silly install resolved devDependencies: { ava: '*', xo: '*' }, +2417 silly install resolved gitHead: '8270705c704956da865623e564eba4875c3ea17f', +2417 silly install resolved bugs: { url: 'https://github.com/chalk/strip-ansi/issues' }, +2417 silly install resolved homepage: 'https://github.com/chalk/strip-ansi', +2417 silly install resolved _id: 'strip-ansi@3.0.1', +2417 silly install resolved _shasum: '6a385fb8853d952d5ff05d0e8aaf94278dc63dcf', +2417 silly install resolved _from: 'strip-ansi@>=3.0.0 <4.0.0', +2417 silly install resolved _npmVersion: '2.11.3', +2417 silly install resolved _nodeVersion: '0.12.7', +2417 silly install resolved _npmUser: { name: 'jbnicolai', email: 'jappelman@xebia.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: '6a385fb8853d952d5ff05d0e8aaf94278dc63dcf', +2417 silly install resolved size: 1734, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'strip-ansi/-/strip-ansi-3.0.1.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/strip-ansi/download/strip-ansi-3.0.1.tgz' }, +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-9-west.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/strip-ansi-3.0.1.tgz_1456057278183_0.28958667791448534' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1456057282998, +2417 silly install resolved _cnpm_publish_time: 1456057282998, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/strip-ansi/download/strip-ansi-3.0.1.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'through', +2417 silly install resolved version: '2.3.8', +2417 silly install resolved description: 'simplified stream construction', +2417 silly install resolved main: 'index.js', +2417 silly install resolved scripts: { test: 'set -e; for t in test/*.js; do node $t; done' }, +2417 silly install resolved devDependencies: { 'stream-spec': '~0.3.5', tape: '~2.3.2', from: '~0.1.3' }, +2417 silly install resolved keywords: [ 'stream', 'streams', 'user-streams', 'pipe' ], +2417 silly install resolved author: +2417 silly install resolved { name: 'Dominic Tarr', +2417 silly install resolved email: 'dominic.tarr@gmail.com', +2417 silly install resolved url: 'dominictarr.com' }, +2417 silly install resolved license: 'MIT', +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+https://github.com/dominictarr/through.git' }, +2417 silly install resolved homepage: 'https://github.com/dominictarr/through', +2417 silly install resolved testling: { browsers: [Object], files: 'test/*.js' }, +2417 silly install resolved gitHead: '2c5a6f9a0cc54da759b6e10964f2081c358e49dc', +2417 silly install resolved bugs: { url: 'https://github.com/dominictarr/through/issues' }, +2417 silly install resolved _id: 'through@2.3.8', +2417 silly install resolved _shasum: '0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5', +2417 silly install resolved _from: 'through@>=2.3.6 <3.0.0', +2417 silly install resolved _npmVersion: '2.12.0', +2417 silly install resolved _nodeVersion: '2.3.1', +2417 silly install resolved _npmUser: { name: 'dominictarr', email: 'dominic.tarr@gmail.com' }, +2417 silly install resolved maintainers: [ [Object] ], +2417 silly install resolved dist: +2417 silly install resolved { shasum: '0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5', +2417 silly install resolved size: 4468, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'through/-/through-2.3.8.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/through/download/through-2.3.8.tgz' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1435930719650, +2417 silly install resolved _cnpm_publish_time: 1435930719650, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/through/download/through-2.3.8.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'figures', +2417 silly install resolved version: '1.7.0', +2417 silly install resolved description: 'Unicode symbols with Windows CMD fallbacks', +2417 silly install resolved license: 'MIT', +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+https://github.com/sindresorhus/figures.git' }, +2417 silly install resolved author: +2417 silly install resolved { name: 'Sindre Sorhus', +2417 silly install resolved email: 'sindresorhus@gmail.com', +2417 silly install resolved url: 'sindresorhus.com' }, +2417 silly install resolved engines: { node: '>=0.10.0' }, +2417 silly install resolved scripts: { test: 'xo && ava', make: './makefile.js' }, +2417 silly install resolved files: [ 'index.js' ], +2417 silly install resolved keywords: +2417 silly install resolved [ 'unicode', +2417 silly install resolved 'cli', +2417 silly install resolved 'cmd', +2417 silly install resolved 'command-line', +2417 silly install resolved 'characters', +2417 silly install resolved 'char', +2417 silly install resolved 'symbol', +2417 silly install resolved 'symbols', +2417 silly install resolved 'figure', +2417 silly install resolved 'figures', +2417 silly install resolved 'fallback' ], +2417 silly install resolved dependencies: { 'escape-string-regexp': '^1.0.5', 'object-assign': '^4.1.0' }, +2417 silly install resolved devDependencies: +2417 silly install resolved { ava: '*', +2417 silly install resolved 'markdown-table': '^0.4.0', +2417 silly install resolved 'require-uncached': '^1.0.2', +2417 silly install resolved xo: '*' }, +2417 silly install resolved gitHead: 'f5f4e3d6cccf84f2ca13d9e6b235def59afc15f7', +2417 silly install resolved bugs: { url: 'https://github.com/sindresorhus/figures/issues' }, +2417 silly install resolved homepage: 'https://github.com/sindresorhus/figures#readme', +2417 silly install resolved _id: 'figures@1.7.0', +2417 silly install resolved _shasum: 'cbe1e3affcf1cd44b80cadfed28dc793a9701d2e', +2417 silly install resolved _from: 'figures@>=1.3.5 <2.0.0', +2417 silly install resolved _npmVersion: '2.15.0', +2417 silly install resolved _nodeVersion: '4.4.2', +2417 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: 'cbe1e3affcf1cd44b80cadfed28dc793a9701d2e', +2417 silly install resolved size: 3563, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'figures/-/figures-1.7.0.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/figures/download/figures-1.7.0.tgz' }, +2417 silly install resolved maintainers: [ [Object] ], +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/figures-1.7.0.tgz_1463504380148_0.06917169434018433' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1463504380776, +2417 silly install resolved _cnpm_publish_time: 1463504380776, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/figures/download/figures-1.7.0.tgz' }, +2417 silly install resolved { name: 'chalk', +2417 silly install resolved version: '1.1.3', +2417 silly install resolved description: 'Terminal string styling done right. Much color.', +2417 silly install resolved license: 'MIT', +2417 silly install resolved repository: { type: 'git', url: 'git+https://github.com/chalk/chalk.git' }, +2417 silly install resolved maintainers: [ [Object], [Object], [Object] ], +2417 silly install resolved engines: { node: '>=0.10.0' }, +2417 silly install resolved scripts: +2417 silly install resolved { test: 'xo && mocha', +2417 silly install resolved bench: 'matcha benchmark.js', +2417 silly install resolved coverage: 'nyc npm test && nyc report', +2417 silly install resolved coveralls: 'nyc npm test && nyc report --reporter=text-lcov | coveralls' }, +2417 silly install resolved files: [ 'index.js' ], +2417 silly install resolved keywords: +2417 silly install resolved [ 'color', +2417 silly install resolved 'colour', +2417 silly install resolved 'colors', +2417 silly install resolved 'terminal', +2417 silly install resolved 'console', +2417 silly install resolved 'cli', +2417 silly install resolved 'string', +2417 silly install resolved 'str', +2417 silly install resolved 'ansi', +2417 silly install resolved 'style', +2417 silly install resolved 'styles', +2417 silly install resolved 'tty', +2417 silly install resolved 'formatting', +2417 silly install resolved 'rgb', +2417 silly install resolved '256', +2417 silly install resolved 'shell', +2417 silly install resolved 'xterm', +2417 silly install resolved 'log', +2417 silly install resolved 'logging', +2417 silly install resolved 'command-line', +2417 silly install resolved 'text' ], +2417 silly install resolved dependencies: +2417 silly install resolved { 'ansi-styles': '^2.2.1', +2417 silly install resolved 'escape-string-regexp': '^1.0.2', +2417 silly install resolved 'has-ansi': '^2.0.0', +2417 silly install resolved 'strip-ansi': '^3.0.0', +2417 silly install resolved 'supports-color': '^2.0.0' }, +2417 silly install resolved devDependencies: +2417 silly install resolved { coveralls: '^2.11.2', +2417 silly install resolved matcha: '^0.6.0', +2417 silly install resolved mocha: '*', +2417 silly install resolved nyc: '^3.0.0', +2417 silly install resolved 'require-uncached': '^1.0.2', +2417 silly install resolved 'resolve-from': '^1.0.0', +2417 silly install resolved semver: '^4.3.3', +2417 silly install resolved xo: '*' }, +2417 silly install resolved xo: { envs: [Object] }, +2417 silly install resolved gitHead: '0d8d8c204eb87a4038219131ad4d8369c9f59d24', +2417 silly install resolved bugs: { url: 'https://github.com/chalk/chalk/issues' }, +2417 silly install resolved homepage: 'https://github.com/chalk/chalk#readme', +2417 silly install resolved _id: 'chalk@1.1.3', +2417 silly install resolved _shasum: 'a8115c55e4a702fe4d150abd3872822a7e09fc98', +2417 silly install resolved _from: 'chalk@>=1.0.0 <2.0.0', +2417 silly install resolved _npmVersion: '2.14.2', +2417 silly install resolved _nodeVersion: '0.10.32', +2417 silly install resolved _npmUser: { name: 'qix', email: 'i.am.qix@gmail.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: 'a8115c55e4a702fe4d150abd3872822a7e09fc98', +2417 silly install resolved size: 5236, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'chalk/-/chalk-1.1.3.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/chalk/download/chalk-1.1.3.tgz' }, +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/chalk-1.1.3.tgz_1459210604109_0.3892582862172276' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1459210604512, +2417 silly install resolved _cnpm_publish_time: 1459210604512, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/chalk/download/chalk-1.1.3.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'rx', +2417 silly install resolved title: 'Reactive Extensions for JavaScript (RxJS)', +2417 silly install resolved description: 'Library for composing asynchronous and event-based operations in JavaScript', +2417 silly install resolved version: '4.1.0', +2417 silly install resolved homepage: 'https://github.com/Reactive-Extensions/RxJS', +2417 silly install resolved author: +2417 silly install resolved { name: 'Cloud Programmability Team', +2417 silly install resolved url: 'https://github.com/Reactive-Extensions/RxJS/blob/master/authors.txt' }, +2417 silly install resolved repository: +2417 silly install resolved { type: 'git', +2417 silly install resolved url: 'git+https://github.com/Reactive-Extensions/RxJS.git' }, +2417 silly install resolved license: 'Apache-2.0', +2417 silly install resolved bugs: { url: 'https://github.com/Reactive-Extensions/RxJS/issues' }, +2417 silly install resolved jam: { main: 'dist/rx.all.js' }, +2417 silly install resolved browser: { 'index.js': './dist/rx.all.js' }, +2417 silly install resolved dependencies: {}, +2417 silly install resolved devDependencies: +2417 silly install resolved { benchmark: '*', +2417 silly install resolved 'grunt-cli': '*', +2417 silly install resolved grunt: '*', +2417 silly install resolved 'grunt-contrib-copy': '*', +2417 silly install resolved 'grunt-contrib-jshint': '*', +2417 silly install resolved 'grunt-contrib-connect': '*', +2417 silly install resolved 'grunt-contrib-uglify': '*', +2417 silly install resolved 'grunt-contrib-concat': '*', +2417 silly install resolved 'grunt-contrib-qunit': '*', +2417 silly install resolved 'grunt-contrib-watch': '*', +2417 silly install resolved 'grunt-saucelabs': '*', +2417 silly install resolved 'grunt-jscs': '*', +2417 silly install resolved 'load-grunt-tasks': '*' }, +2417 silly install resolved keywords: [ 'LINQ', 'FRP', 'Reactive', 'Events', 'Rx', 'RxJS' ], +2417 silly install resolved main: 'index.js', +2417 silly install resolved scripts: { test: 'grunt' }, +2417 silly install resolved gitHead: '11cd57f5d66dd2a4bc3ed8140bfac48093e59197', +2417 silly install resolved _id: 'rx@4.1.0', +2417 silly install resolved _shasum: 'a5f13ff79ef3b740fe30aa803fb09f98805d4782', +2417 silly install resolved _from: 'rx@>=4.1.0 <5.0.0', +2417 silly install resolved _npmVersion: '3.8.0', +2417 silly install resolved _nodeVersion: '5.5.0', +2417 silly install resolved _npmUser: +2417 silly install resolved { name: 'mattpodwysocki', +2417 silly install resolved email: 'matthew.podwysocki@gmail.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: 'a5f13ff79ef3b740fe30aa803fb09f98805d4782', +2417 silly install resolved size: 1160834, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'rx/-/rx-4.1.0.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/rx/download/rx-4.1.0.tgz' }, +2417 silly install resolved maintainers: [ [Object], [Object] ], +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/rx-4.1.0.tgz_1457382319406_0.62292555347085' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1457382321443, +2417 silly install resolved _cnpm_publish_time: 1457382321443, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/rx/download/rx-4.1.0.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' }, +2417 silly install resolved { name: 'lodash', +2417 silly install resolved version: '4.12.0', +2417 silly install resolved description: 'Lodash modular utilities.', +2417 silly install resolved keywords: [ 'modules', 'stdlib', 'util' ], +2417 silly install resolved homepage: 'https://lodash.com/', +2417 silly install resolved repository: { type: 'git', url: 'git+https://github.com/lodash/lodash.git' }, +2417 silly install resolved icon: 'https://lodash.com/icon.svg', +2417 silly install resolved license: 'MIT', +2417 silly install resolved main: 'lodash.js', +2417 silly install resolved author: +2417 silly install resolved { name: 'John-David Dalton', +2417 silly install resolved email: 'john.david.dalton@gmail.com', +2417 silly install resolved url: 'http://allyoucanleet.com/' }, +2417 silly install resolved contributors: [ [Object], [Object], [Object] ], +2417 silly install resolved scripts: { test: 'echo "See https://travis-ci.org/lodash/lodash-cli for testing details."' }, +2417 silly install resolved bugs: { url: 'https://github.com/lodash/lodash/issues' }, +2417 silly install resolved _id: 'lodash@4.12.0', +2417 silly install resolved _shasum: '2bd6dc46a040f59e686c972ed21d93dc59053258', +2417 silly install resolved _from: 'lodash@>=4.3.0 <5.0.0', +2417 silly install resolved _npmVersion: '2.15.5', +2417 silly install resolved _nodeVersion: '6.0.0', +2417 silly install resolved _npmUser: { name: 'jdalton', email: 'john.david.dalton@gmail.com' }, +2417 silly install resolved dist: +2417 silly install resolved { shasum: '2bd6dc46a040f59e686c972ed21d93dc59053258', +2417 silly install resolved size: 294010, +2417 silly install resolved noattachment: false, +2417 silly install resolved key: 'lodash/-/lodash-4.12.0.tgz', +2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/lodash/download/lodash-4.12.0.tgz' }, +2417 silly install resolved maintainers: [ [Object], [Object], [Object] ], +2417 silly install resolved _npmOperationalInternal: +2417 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +2417 silly install resolved tmp: 'tmp/lodash-4.12.0.tgz_1462735540938_0.36508488352410495' }, +2417 silly install resolved directories: {}, +2417 silly install resolved publish_time: 1462735543826, +2417 silly install resolved _cnpm_publish_time: 1462735543826, +2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/lodash/download/lodash-4.12.0.tgz', +2417 silly install resolved readme: 'ERROR: No README data found!' } ] +2418 info install cli-cursor@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2419 info install cli-width@2.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2420 info install pinkie-promise@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2421 info install mute-stream@0.0.6 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2422 info install string-width@1.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2423 info install run-async@2.2.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2424 info install ansi-escapes@1.4.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2425 info install strip-ansi@3.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2426 info install through@2.3.8 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2427 info install figures@1.7.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2428 info install chalk@1.1.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2429 info install rx@4.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2430 info install lodash@4.12.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +2431 info installOne cli-cursor@1.0.2 +2432 verbose installOne of cli-cursor to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2433 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2434 info installOne cli-width@2.1.0 +2435 verbose installOne of cli-width to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2436 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2437 info installOne pinkie-promise@2.0.1 +2438 verbose installOne of pinkie-promise to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2439 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2440 info installOne mute-stream@0.0.6 +2441 verbose installOne of mute-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2442 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2443 info installOne string-width@1.0.1 +2444 verbose installOne of string-width to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2445 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2446 info installOne run-async@2.2.0 +2447 verbose installOne of run-async to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2448 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2449 info installOne ansi-escapes@1.4.0 +2450 verbose installOne of ansi-escapes to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2451 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2452 info installOne strip-ansi@3.0.1 +2453 verbose installOne of strip-ansi to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2454 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2455 info installOne through@2.3.8 +2456 verbose installOne of through to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2457 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2458 info installOne figures@1.7.0 +2459 verbose installOne of figures to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2460 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2461 info installOne chalk@1.1.3 +2462 verbose installOne of chalk to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2463 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2464 info installOne rx@4.1.0 +2465 verbose installOne of rx to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2466 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2467 info installOne lodash@4.12.0 +2468 verbose installOne of lodash to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing +2469 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2470 silly install resolved [] +2471 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign +2472 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign +2473 info install merge-stream@1.0.0 +2474 http 304 http://registry.npm.alibaba-inc.com/util-deprecate +2475 verbose headers { server: 'Tengine', +2475 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2475 verbose headers connection: 'keep-alive', +2475 verbose headers etag: '"1828-s5Mws6s7lWlAGY5y9YlXaQ"', +2475 verbose headers 'x-readtime': '20' } +2476 silly get cb [ 304, +2476 silly get { server: 'Tengine', +2476 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2476 silly get connection: 'keep-alive', +2476 silly get etag: '"1828-s5Mws6s7lWlAGY5y9YlXaQ"', +2476 silly get 'x-readtime': '20' } ] +2477 verbose etag http://registry.npm.alibaba-inc.com/util-deprecate from cache +2478 verbose get saving util-deprecate to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/util-deprecate/.cache.json +2479 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2480 silly cache add args [ 'first-chunk-stream@^1.0.0', null ] +2481 verbose cache add spec first-chunk-stream@^1.0.0 +2482 silly cache add args [ 'is-utf8@^0.2.0', null ] +2483 verbose cache add spec is-utf8@^0.2.0 +2484 silly cache add parsed spec Result { +2484 silly cache add raw: 'first-chunk-stream@^1.0.0', +2484 silly cache add scope: null, +2484 silly cache add name: 'first-chunk-stream', +2484 silly cache add rawSpec: '^1.0.0', +2484 silly cache add spec: '>=1.0.0 <2.0.0', +2484 silly cache add type: 'range' } +2485 silly addNamed first-chunk-stream@>=1.0.0 <2.0.0 +2486 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for first-chunk-stream +2487 silly addNameRange { name: 'first-chunk-stream', +2487 silly addNameRange range: '>=1.0.0 <2.0.0', +2487 silly addNameRange hasData: false } +2488 silly mapToRegistry name first-chunk-stream +2489 silly mapToRegistry using default registry +2490 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2491 silly mapToRegistry data Result { +2491 silly mapToRegistry raw: 'first-chunk-stream', +2491 silly mapToRegistry scope: null, +2491 silly mapToRegistry name: 'first-chunk-stream', +2491 silly mapToRegistry rawSpec: '', +2491 silly mapToRegistry spec: 'latest', +2491 silly mapToRegistry type: 'tag' } +2492 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/first-chunk-stream +2493 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/first-chunk-stream not in flight; fetching +2494 silly cache add parsed spec Result { +2494 silly cache add raw: 'is-utf8@^0.2.0', +2494 silly cache add scope: null, +2494 silly cache add name: 'is-utf8', +2494 silly cache add rawSpec: '^0.2.0', +2494 silly cache add spec: '>=0.2.0 <0.3.0', +2494 silly cache add type: 'range' } +2495 silly addNamed is-utf8@>=0.2.0 <0.3.0 +2496 verbose addNamed ">=0.2.0 <0.3.0" is a valid semver range for is-utf8 +2497 silly addNameRange { name: 'is-utf8', range: '>=0.2.0 <0.3.0', hasData: false } +2498 silly mapToRegistry name is-utf8 +2499 silly mapToRegistry using default registry +2500 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2501 silly mapToRegistry data Result { +2501 silly mapToRegistry raw: 'is-utf8', +2501 silly mapToRegistry scope: null, +2501 silly mapToRegistry name: 'is-utf8', +2501 silly mapToRegistry rawSpec: '', +2501 silly mapToRegistry spec: 'latest', +2501 silly mapToRegistry type: 'tag' } +2502 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-utf8 +2503 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-utf8 not in flight; fetching +2504 verbose lock using /home/ruanyf/.tnpm/_locks/cli-cursor-6c4949ad4093ce24.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +2505 verbose lock using /home/ruanyf/.tnpm/_locks/string-width-569431eadb6883c4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +2506 verbose lock using /home/ruanyf/.tnpm/_locks/run-async-d947f04ab284015f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +2507 verbose lock using /home/ruanyf/.tnpm/_locks/cli-width-56eac2007d3e9b43.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width +2508 verbose lock using /home/ruanyf/.tnpm/_locks/ansi-escapes-e3b00eb232f4df7f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes +2509 verbose lock using /home/ruanyf/.tnpm/_locks/pinkie-promise-800bae8d19425ab2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +2510 verbose lock using /home/ruanyf/.tnpm/_locks/mute-stream-2084b951161707d7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream +2511 verbose lock using /home/ruanyf/.tnpm/_locks/strip-ansi-8225ce477c1ac85b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +2512 verbose lock using /home/ruanyf/.tnpm/_locks/through-a3c6e237a9a7f49c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through +2513 verbose lock using /home/ruanyf/.tnpm/_locks/figures-3c89e277294fa2ae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +2514 verbose lock using /home/ruanyf/.tnpm/_locks/chalk-c288fdd6e70f8cf3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +2515 verbose lock using /home/ruanyf/.tnpm/_locks/rx-a88d72d456f97785.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx +2516 verbose lock using /home/ruanyf/.tnpm/_locks/lodash-18cb345c53418e4c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash +2517 http 304 http://registry.npm.alibaba-inc.com/process-nextick-args +2518 verbose headers { server: 'Tengine', +2518 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2518 verbose headers connection: 'keep-alive', +2518 verbose headers etag: '"29b6-+c9xMCSHhzraGfcJXw/LOw"', +2518 verbose headers 'x-readtime': '19' } +2519 silly get cb [ 304, +2519 silly get { server: 'Tengine', +2519 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2519 silly get connection: 'keep-alive', +2519 silly get etag: '"29b6-+c9xMCSHhzraGfcJXw/LOw"', +2519 silly get 'x-readtime': '19' } ] +2520 verbose etag http://registry.npm.alibaba-inc.com/process-nextick-args from cache +2521 verbose get saving process-nextick-args to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/process-nextick-args/.cache.json +2522 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2523 silly cache add args [ 'unique-stream@^2.0.2', null ] +2524 verbose cache add spec unique-stream@^2.0.2 +2525 silly cache add parsed spec Result { +2525 silly cache add raw: 'unique-stream@^2.0.2', +2525 silly cache add scope: null, +2525 silly cache add name: 'unique-stream', +2525 silly cache add rawSpec: '^2.0.2', +2525 silly cache add spec: '>=2.0.2 <3.0.0', +2525 silly cache add type: 'range' } +2526 silly addNamed unique-stream@>=2.0.2 <3.0.0 +2527 verbose addNamed ">=2.0.2 <3.0.0" is a valid semver range for unique-stream +2528 silly addNameRange { name: 'unique-stream', +2528 silly addNameRange range: '>=2.0.2 <3.0.0', +2528 silly addNameRange hasData: false } +2529 silly mapToRegistry name unique-stream +2530 silly mapToRegistry using default registry +2531 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2532 silly mapToRegistry data Result { +2532 silly mapToRegistry raw: 'unique-stream', +2532 silly mapToRegistry scope: null, +2532 silly mapToRegistry name: 'unique-stream', +2532 silly mapToRegistry rawSpec: '', +2532 silly mapToRegistry spec: 'latest', +2532 silly mapToRegistry type: 'tag' } +2533 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/unique-stream +2534 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/unique-stream not in flight; fetching +2535 silly prepareForInstallMany adding lodash._root@~3.0.0 from lodash.isequal dependencies +2536 silly prepareForInstallMany adding lodash.keys@^4.0.0 from lodash.isequal dependencies +2537 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/package.json +2538 silly gunzTarPerm extractEntry test/return.js +2539 silly gunzTarPerm extractEntry test/return_sync.js +2540 info postinstall merge-stream@1.0.0 +2541 silly install write writing cli-cursor 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +2542 silly install write writing string-width 1.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +2543 silly install write writing run-async 2.2.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +2544 silly install write writing cli-width 2.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width +2545 silly install write writing ansi-escapes 1.4.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes +2546 silly install write writing pinkie-promise 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +2547 silly install write writing mute-stream 0.0.6 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream +2548 silly install write writing strip-ansi 3.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +2549 silly install write writing through 2.3.8 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through +2550 silly install write writing figures 1.7.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +2551 silly install write writing chalk 1.1.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +2552 silly install write writing rx 4.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx +2553 silly install write writing lodash 4.12.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash +2554 http 304 http://registry.npm.alibaba-inc.com/string_decoder +2555 verbose headers { server: 'Tengine', +2555 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2555 verbose headers connection: 'keep-alive', +2555 verbose headers etag: '"2781-r+r6Q+yEIMxgrJFc2TidrQ"', +2555 verbose headers 'x-readtime': '28' } +2556 silly get cb [ 304, +2556 silly get { server: 'Tengine', +2556 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2556 silly get connection: 'keep-alive', +2556 silly get etag: '"2781-r+r6Q+yEIMxgrJFc2TidrQ"', +2556 silly get 'x-readtime': '28' } ] +2557 verbose etag http://registry.npm.alibaba-inc.com/string_decoder from cache +2558 verbose get saving string_decoder to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/string_decoder/.cache.json +2559 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2560 http 304 http://registry.npm.alibaba-inc.com/isarray +2561 verbose headers { server: 'Tengine', +2561 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2561 verbose headers connection: 'keep-alive', +2561 verbose headers etag: '"1874-/oRHxQaeyMwf9womjIj2iQ"', +2561 verbose headers 'x-readtime': '23' } +2562 silly get cb [ 304, +2562 silly get { server: 'Tengine', +2562 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2562 silly get connection: 'keep-alive', +2562 silly get etag: '"1874-/oRHxQaeyMwf9womjIj2iQ"', +2562 silly get 'x-readtime': '23' } ] +2563 verbose etag http://registry.npm.alibaba-inc.com/isarray from cache +2564 verbose get saving isarray to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/isarray/.cache.json +2565 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2566 http 304 http://registry.npm.alibaba-inc.com/core-util-is +2567 verbose headers { server: 'Tengine', +2567 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2567 verbose headers connection: 'keep-alive', +2567 verbose headers etag: '"1012-J1qBYwWSaRuhI7IrLgNy1w"', +2567 verbose headers 'x-readtime': '22' } +2568 silly get cb [ 304, +2568 silly get { server: 'Tengine', +2568 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2568 silly get connection: 'keep-alive', +2568 silly get etag: '"1012-J1qBYwWSaRuhI7IrLgNy1w"', +2568 silly get 'x-readtime': '22' } ] +2569 verbose etag http://registry.npm.alibaba-inc.com/core-util-is from cache +2570 verbose get saving core-util-is to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/core-util-is/.cache.json +2571 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2572 silly cache add args [ 'extend@^3.0.0', null ] +2573 verbose cache add spec extend@^3.0.0 +2574 silly cache add parsed spec Result { +2574 silly cache add raw: 'extend@^3.0.0', +2574 silly cache add scope: null, +2574 silly cache add name: 'extend', +2574 silly cache add rawSpec: '^3.0.0', +2574 silly cache add spec: '>=3.0.0 <4.0.0', +2574 silly cache add type: 'range' } +2575 silly addNamed extend@>=3.0.0 <4.0.0 +2576 verbose addNamed ">=3.0.0 <4.0.0" is a valid semver range for extend +2577 silly addNameRange { name: 'extend', range: '>=3.0.0 <4.0.0', hasData: false } +2578 silly mapToRegistry name extend +2579 silly mapToRegistry using default registry +2580 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2581 silly mapToRegistry data Result { +2581 silly mapToRegistry raw: 'extend', +2581 silly mapToRegistry scope: null, +2581 silly mapToRegistry name: 'extend', +2581 silly mapToRegistry rawSpec: '', +2581 silly mapToRegistry spec: 'latest', +2581 silly mapToRegistry type: 'tag' } +2582 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/extend +2583 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/extend not in flight; fetching +2584 silly cache add args [ 'convert-source-map@^1.1.1', null ] +2585 verbose cache add spec convert-source-map@^1.1.1 +2586 silly cache add parsed spec Result { +2586 silly cache add raw: 'convert-source-map@^1.1.1', +2586 silly cache add scope: null, +2586 silly cache add name: 'convert-source-map', +2586 silly cache add rawSpec: '^1.1.1', +2586 silly cache add spec: '>=1.1.1 <2.0.0', +2586 silly cache add type: 'range' } +2587 silly addNamed convert-source-map@>=1.1.1 <2.0.0 +2588 verbose addNamed ">=1.1.1 <2.0.0" is a valid semver range for convert-source-map +2589 silly addNameRange { name: 'convert-source-map', +2589 silly addNameRange range: '>=1.1.1 <2.0.0', +2589 silly addNameRange hasData: false } +2590 silly mapToRegistry name convert-source-map +2591 silly mapToRegistry using default registry +2592 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2593 silly mapToRegistry data Result { +2593 silly mapToRegistry raw: 'convert-source-map', +2593 silly mapToRegistry scope: null, +2593 silly mapToRegistry name: 'convert-source-map', +2593 silly mapToRegistry rawSpec: '', +2593 silly mapToRegistry spec: 'latest', +2593 silly mapToRegistry type: 'tag' } +2594 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/convert-source-map +2595 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/convert-source-map not in flight; fetching +2596 silly cache add args [ 'glob@^5.0.3', null ] +2597 verbose cache add spec glob@^5.0.3 +2598 silly cache add parsed spec Result { +2598 silly cache add raw: 'glob@^5.0.3', +2598 silly cache add scope: null, +2598 silly cache add name: 'glob', +2598 silly cache add rawSpec: '^5.0.3', +2598 silly cache add spec: '>=5.0.3 <6.0.0', +2598 silly cache add type: 'range' } +2599 silly addNamed glob@>=5.0.3 <6.0.0 +2600 verbose addNamed ">=5.0.3 <6.0.0" is a valid semver range for glob +2601 silly addNameRange { name: 'glob', range: '>=5.0.3 <6.0.0', hasData: false } +2602 silly mapToRegistry name glob +2603 silly mapToRegistry using default registry +2604 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2605 silly mapToRegistry data Result { +2605 silly mapToRegistry raw: 'glob', +2605 silly mapToRegistry scope: null, +2605 silly mapToRegistry name: 'glob', +2605 silly mapToRegistry rawSpec: '', +2605 silly mapToRegistry spec: 'latest', +2605 silly mapToRegistry type: 'tag' } +2606 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/glob +2607 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/glob not in flight; fetching +2608 silly cache add args [ 'glob-parent@^2.0.0', null ] +2609 verbose cache add spec glob-parent@^2.0.0 +2610 silly cache add parsed spec Result { +2610 silly cache add raw: 'glob-parent@^2.0.0', +2610 silly cache add scope: null, +2610 silly cache add name: 'glob-parent', +2610 silly cache add rawSpec: '^2.0.0', +2610 silly cache add spec: '>=2.0.0 <3.0.0', +2610 silly cache add type: 'range' } +2611 silly addNamed glob-parent@>=2.0.0 <3.0.0 +2612 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for glob-parent +2613 silly addNameRange { name: 'glob-parent', range: '>=2.0.0 <3.0.0', hasData: false } +2614 silly mapToRegistry name glob-parent +2615 silly mapToRegistry using default registry +2616 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2617 silly mapToRegistry data Result { +2617 silly mapToRegistry raw: 'glob-parent', +2617 silly mapToRegistry scope: null, +2617 silly mapToRegistry name: 'glob-parent', +2617 silly mapToRegistry rawSpec: '', +2617 silly mapToRegistry spec: 'latest', +2617 silly mapToRegistry type: 'tag' } +2618 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/glob-parent +2619 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/glob-parent not in flight; fetching +2620 silly cache add args [ 'micromatch@^2.3.7', null ] +2621 verbose cache add spec micromatch@^2.3.7 +2622 silly cache add parsed spec Result { +2622 silly cache add raw: 'micromatch@^2.3.7', +2622 silly cache add scope: null, +2622 silly cache add name: 'micromatch', +2622 silly cache add rawSpec: '^2.3.7', +2622 silly cache add spec: '>=2.3.7 <3.0.0', +2622 silly cache add type: 'range' } +2623 silly addNamed micromatch@>=2.3.7 <3.0.0 +2624 verbose addNamed ">=2.3.7 <3.0.0" is a valid semver range for micromatch +2625 silly addNameRange { name: 'micromatch', range: '>=2.3.7 <3.0.0', hasData: false } +2626 silly mapToRegistry name micromatch +2627 silly mapToRegistry using default registry +2628 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2629 silly mapToRegistry data Result { +2629 silly mapToRegistry raw: 'micromatch', +2629 silly mapToRegistry scope: null, +2629 silly mapToRegistry name: 'micromatch', +2629 silly mapToRegistry rawSpec: '', +2629 silly mapToRegistry spec: 'latest', +2629 silly mapToRegistry type: 'tag' } +2630 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/micromatch +2631 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/micromatch not in flight; fetching +2632 silly cache add args [ 'ordered-read-streams@^0.3.0', null ] +2633 verbose cache add spec ordered-read-streams@^0.3.0 +2634 silly cache add parsed spec Result { +2634 silly cache add raw: 'ordered-read-streams@^0.3.0', +2634 silly cache add scope: null, +2634 silly cache add name: 'ordered-read-streams', +2634 silly cache add rawSpec: '^0.3.0', +2634 silly cache add spec: '>=0.3.0 <0.4.0', +2634 silly cache add type: 'range' } +2635 silly addNamed ordered-read-streams@>=0.3.0 <0.4.0 +2636 verbose addNamed ">=0.3.0 <0.4.0" is a valid semver range for ordered-read-streams +2637 silly addNameRange { name: 'ordered-read-streams', +2637 silly addNameRange range: '>=0.3.0 <0.4.0', +2637 silly addNameRange hasData: false } +2638 silly mapToRegistry name ordered-read-streams +2639 silly mapToRegistry using default registry +2640 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2641 silly mapToRegistry data Result { +2641 silly mapToRegistry raw: 'ordered-read-streams', +2641 silly mapToRegistry scope: null, +2641 silly mapToRegistry name: 'ordered-read-streams', +2641 silly mapToRegistry rawSpec: '', +2641 silly mapToRegistry spec: 'latest', +2641 silly mapToRegistry type: 'tag' } +2642 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/ordered-read-streams +2643 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/ordered-read-streams not in flight; fetching +2644 silly cache add args [ 'through2@^0.6.0', null ] +2645 verbose cache add spec through2@^0.6.0 +2646 silly cache add parsed spec Result { +2646 silly cache add raw: 'through2@^0.6.0', +2646 silly cache add scope: null, +2646 silly cache add name: 'through2', +2646 silly cache add rawSpec: '^0.6.0', +2646 silly cache add spec: '>=0.6.0 <0.7.0', +2646 silly cache add type: 'range' } +2647 silly addNamed through2@>=0.6.0 <0.7.0 +2648 verbose addNamed ">=0.6.0 <0.7.0" is a valid semver range for through2 +2649 silly addNameRange { name: 'through2', range: '>=0.6.0 <0.7.0', hasData: false } +2650 silly mapToRegistry name through2 +2651 silly mapToRegistry using default registry +2652 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2653 silly mapToRegistry data Result { +2653 silly mapToRegistry raw: 'through2', +2653 silly mapToRegistry scope: null, +2653 silly mapToRegistry name: 'through2', +2653 silly mapToRegistry rawSpec: '', +2653 silly mapToRegistry spec: 'latest', +2653 silly mapToRegistry type: 'tag' } +2654 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/through2 +2655 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/through2 not in flight; fetching +2656 silly cache add args [ 'to-absolute-glob@^0.1.1', null ] +2657 verbose cache add spec to-absolute-glob@^0.1.1 +2658 silly cache add parsed spec Result { +2658 silly cache add raw: 'to-absolute-glob@^0.1.1', +2658 silly cache add scope: null, +2658 silly cache add name: 'to-absolute-glob', +2658 silly cache add rawSpec: '^0.1.1', +2658 silly cache add spec: '>=0.1.1 <0.2.0', +2658 silly cache add type: 'range' } +2659 silly addNamed to-absolute-glob@>=0.1.1 <0.2.0 +2660 verbose addNamed ">=0.1.1 <0.2.0" is a valid semver range for to-absolute-glob +2661 silly addNameRange { name: 'to-absolute-glob', +2661 silly addNameRange range: '>=0.1.1 <0.2.0', +2661 silly addNameRange hasData: false } +2662 silly mapToRegistry name to-absolute-glob +2663 silly mapToRegistry using default registry +2664 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2665 silly mapToRegistry data Result { +2665 silly mapToRegistry raw: 'to-absolute-glob', +2665 silly mapToRegistry scope: null, +2665 silly mapToRegistry name: 'to-absolute-glob', +2665 silly mapToRegistry rawSpec: '', +2665 silly mapToRegistry spec: 'latest', +2665 silly mapToRegistry type: 'tag' } +2666 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/to-absolute-glob +2667 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/to-absolute-glob not in flight; fetching +2668 silly cache afterAdd xtend@4.0.1 +2669 verbose afterAdd /home/ruanyf/.tnpm/xtend/4.0.1/package/package.json not in flight; writing +2670 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2671 info linkStuff is-valid-glob@0.3.0 +2672 silly linkStuff is-valid-glob@0.3.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +2673 silly linkStuff is-valid-glob@0.3.0 is part of a global install +2674 silly linkStuff is-valid-glob@0.3.0 is installed into a global node_modules +2675 info linkStuff vali-date@1.0.0 +2676 silly linkStuff vali-date@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +2677 silly linkStuff vali-date@1.0.0 is part of a global install +2678 silly linkStuff vali-date@1.0.0 is installed into a global node_modules +2679 http 304 http://registry.npm.alibaba-inc.com/inherits +2680 verbose headers { server: 'Tengine', +2680 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2680 verbose headers connection: 'keep-alive', +2680 verbose headers etag: '"1f1e-Mk9UHFC0IpS7TBhwmfSvmg"', +2680 verbose headers 'x-readtime': '26' } +2681 silly get cb [ 304, +2681 silly get { server: 'Tengine', +2681 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2681 silly get connection: 'keep-alive', +2681 silly get etag: '"1f1e-Mk9UHFC0IpS7TBhwmfSvmg"', +2681 silly get 'x-readtime': '26' } ] +2682 verbose etag http://registry.npm.alibaba-inc.com/inherits from cache +2683 verbose get saving inherits to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/inherits/.cache.json +2684 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2685 info linkStuff object-assign@4.1.0 +2686 silly linkStuff object-assign@4.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +2687 silly linkStuff object-assign@4.1.0 is part of a global install +2688 silly linkStuff object-assign@4.1.0 is installed into a global node_modules +2689 verbose unlock done using /home/ruanyf/.tnpm/_locks/merge-stream-5b8b682289fbfd1f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream +2690 verbose request uri http://registry.npm.alibaba-inc.com/first-chunk-stream +2691 verbose request no auth needed +2692 info attempt registry request try #1 at 上午9:12:29 +2693 verbose etag "1a8e-hJfQcz5wSU8k2u+/smzM0g" +2694 http request GET http://registry.npm.alibaba-inc.com/first-chunk-stream +2695 verbose request uri http://registry.npm.alibaba-inc.com/is-utf8 +2696 verbose request no auth needed +2697 info attempt registry request try #1 at 上午9:12:29 +2698 verbose etag "e7c-RDU3TErngl+p7xTFHAuDKA" +2699 http request GET http://registry.npm.alibaba-inc.com/is-utf8 +2700 verbose linkBins is-valid-glob@0.3.0 +2701 verbose linkMans is-valid-glob@0.3.0 +2702 verbose rebuildBundles is-valid-glob@0.3.0 +2703 verbose linkBins vali-date@1.0.0 +2704 verbose linkMans vali-date@1.0.0 +2705 verbose rebuildBundles vali-date@1.0.0 +2706 verbose request uri http://registry.npm.alibaba-inc.com/unique-stream +2707 verbose request no auth needed +2708 info attempt registry request try #1 at 上午9:12:29 +2709 verbose etag "54bd-4WIIMf65nm60xrDs/Jydtg" +2710 http request GET http://registry.npm.alibaba-inc.com/unique-stream +2711 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +2712 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +2713 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width +2714 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +2715 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes +2716 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +2717 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream +2718 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/through +2719 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +2720 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +2721 info install is-valid-glob@0.3.0 +2722 info install vali-date@1.0.0 +2723 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +2724 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx +2725 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash +2726 verbose request uri http://registry.npm.alibaba-inc.com/convert-source-map +2727 verbose request no auth needed +2728 info attempt registry request try #1 at 上午9:12:29 +2729 verbose etag "a073-HdYxcrXL3gR8xhvzyCOtNQ" +2730 http request GET http://registry.npm.alibaba-inc.com/convert-source-map +2731 verbose request uri http://registry.npm.alibaba-inc.com/glob-parent +2732 verbose request no auth needed +2733 info attempt registry request try #1 at 上午9:12:29 +2734 verbose etag "21d5-Z6sRptdOnEa4+jW3so9OtQ" +2735 http request GET http://registry.npm.alibaba-inc.com/glob-parent +2736 verbose request uri http://registry.npm.alibaba-inc.com/glob +2737 verbose request no auth needed +2738 info attempt registry request try #1 at 上午9:12:29 +2739 http request GET http://registry.npm.alibaba-inc.com/glob +2740 verbose get http://registry.npm.alibaba-inc.com/through2 not expired, no request +2741 silly addNameRange number 2 { name: 'through2', range: '>=0.6.0 <0.7.0', hasData: true } +2742 silly addNameRange versions [ 'through2', +2742 silly addNameRange [ '2.0.1', +2742 silly addNameRange '2.0.0', +2742 silly addNameRange '0.6.5', +2742 silly addNameRange '0.6.4', +2742 silly addNameRange '0.6.3', +2742 silly addNameRange '0.6.2', +2742 silly addNameRange '1.1.1', +2742 silly addNameRange '0.6.1', +2742 silly addNameRange '1.1.0', +2742 silly addNameRange '0.6.0', +2742 silly addNameRange '0.5.1', +2742 silly addNameRange '0.5.0', +2742 silly addNameRange '0.4.2', +2742 silly addNameRange '1.0.0', +2742 silly addNameRange '0.4.1', +2742 silly addNameRange '0.4.0', +2742 silly addNameRange '0.3.0', +2742 silly addNameRange '0.2.3', +2742 silly addNameRange '0.2.2', +2742 silly addNameRange '0.2.1', +2742 silly addNameRange '0.2.0', +2742 silly addNameRange '0.1.0', +2742 silly addNameRange '0.0.5', +2742 silly addNameRange '0.0.4', +2742 silly addNameRange '0.0.3', +2742 silly addNameRange '0.0.2', +2742 silly addNameRange '0.0.1', +2742 silly addNameRange '0.0.0' ] ] +2743 silly addNamed through2@0.6.5 +2744 verbose addNamed "0.6.5" is a plain semver version for through2 +2745 verbose request uri http://registry.npm.alibaba-inc.com/extend +2746 verbose request no auth needed +2747 info attempt registry request try #1 at 上午9:12:29 +2748 verbose etag "3e39-RcQ391ZJSIFujxd4rb4zLQ" +2749 http request GET http://registry.npm.alibaba-inc.com/extend +2750 verbose afterAdd /home/ruanyf/.tnpm/xtend/4.0.1/package/package.json written +2751 silly install resolved [ { name: 'xtend', +2751 silly install resolved version: '4.0.1', +2751 silly install resolved description: 'extend like a boss', +2751 silly install resolved keywords: [ 'extend', 'merge', 'options', 'opts', 'object', 'array' ], +2751 silly install resolved author: { name: 'Raynos', email: 'raynos2@gmail.com' }, +2751 silly install resolved repository: { type: 'git', url: 'git://github.com/Raynos/xtend.git' }, +2751 silly install resolved main: 'immutable', +2751 silly install resolved scripts: { test: 'node test' }, +2751 silly install resolved dependencies: {}, +2751 silly install resolved devDependencies: { tape: '~1.1.0' }, +2751 silly install resolved homepage: 'https://github.com/Raynos/xtend', +2751 silly install resolved contributors: [ [Object], [Object] ], +2751 silly install resolved bugs: +2751 silly install resolved { url: 'https://github.com/Raynos/xtend/issues', +2751 silly install resolved email: 'raynos2@gmail.com' }, +2751 silly install resolved license: 'MIT', +2751 silly install resolved testling: { files: 'test.js', browsers: [Object] }, +2751 silly install resolved engines: { node: '>=0.4' }, +2751 silly install resolved gitHead: '23dc302a89756da89c1897bc732a752317e35390', +2751 silly install resolved _id: 'xtend@4.0.1', +2751 silly install resolved _shasum: 'a5c6d532be656e23db820efb943a1f04998d63af', +2751 silly install resolved _from: 'xtend@>=4.0.0 <4.1.0', +2751 silly install resolved _npmVersion: '2.14.1', +2751 silly install resolved _nodeVersion: '0.10.32', +2751 silly install resolved _npmUser: { name: 'raynos', email: 'raynos2@gmail.com' }, +2751 silly install resolved dist: +2751 silly install resolved { shasum: 'a5c6d532be656e23db820efb943a1f04998d63af', +2751 silly install resolved size: 2542, +2751 silly install resolved noattachment: false, +2751 silly install resolved key: 'xtend/-/xtend-4.0.1.tgz', +2751 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.1.tgz' }, +2751 silly install resolved maintainers: [ [Object] ], +2751 silly install resolved directories: {}, +2751 silly install resolved publish_time: 1446502761923, +2751 silly install resolved _cnpm_publish_time: 1446502761923, +2751 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.1.tgz', +2751 silly install resolved readme: 'ERROR: No README data found!' } ] +2752 info install xtend@4.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter +2753 info installOne xtend@4.0.1 +2754 verbose installOne of xtend to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter not in flight; installing +2755 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +2756 verbose linkBins object-assign@4.1.0 +2757 verbose linkMans object-assign@4.1.0 +2758 verbose rebuildBundles object-assign@4.1.0 +2759 verbose request uri http://registry.npm.alibaba-inc.com/to-absolute-glob +2760 verbose request no auth needed +2761 info attempt registry request try #1 at 上午9:12:29 +2762 verbose etag "19da-FWTgFQ+ay4JKX0o3NhmBDg" +2763 http request GET http://registry.npm.alibaba-inc.com/to-absolute-glob +2764 verbose request uri http://registry.npm.alibaba-inc.com/ordered-read-streams +2765 verbose request no auth needed +2766 info attempt registry request try #1 at 上午9:12:29 +2767 verbose etag "3f15-Du58wvwbsKH5cTnGg/pXMg" +2768 http request GET http://registry.npm.alibaba-inc.com/ordered-read-streams +2769 verbose request uri http://registry.npm.alibaba-inc.com/micromatch +2770 verbose request no auth needed +2771 info attempt registry request try #1 at 上午9:12:29 +2772 verbose etag "1ada2-nMnnuVjpmwNfr0jJonuQmw" +2773 http request GET http://registry.npm.alibaba-inc.com/micromatch +2774 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs/package.json +2775 silly addNameRange number 2 { name: 'util-deprecate', +2775 silly addNameRange range: '>=1.0.1 <1.1.0', +2775 silly addNameRange hasData: true } +2776 silly addNameRange versions [ 'util-deprecate', [ '1.0.2', '1.0.1', '1.0.0' ] ] +2777 silly addNamed util-deprecate@1.0.2 +2778 verbose addNamed "1.0.2" is a plain semver version for util-deprecate +2779 info install object-assign@4.1.0 +2780 info postinstall is-valid-glob@0.3.0 +2781 info postinstall vali-date@1.0.0 +2782 silly addNameRange number 2 { name: 'process-nextick-args', +2782 silly addNameRange range: '>=1.0.6 <1.1.0', +2782 silly addNameRange hasData: true } +2783 silly addNameRange versions [ 'process-nextick-args', +2783 silly addNameRange [ '1.0.7', +2783 silly addNameRange '1.0.6', +2783 silly addNameRange '1.0.5', +2783 silly addNameRange '1.0.4', +2783 silly addNameRange '1.0.3', +2783 silly addNameRange '1.0.2', +2783 silly addNameRange '1.0.1', +2783 silly addNameRange '1.0.0' ] ] +2784 silly addNamed process-nextick-args@1.0.7 +2785 verbose addNamed "1.0.7" is a plain semver version for process-nextick-args +2786 http 304 http://registry.npm.alibaba-inc.com/first-chunk-stream +2787 verbose headers { server: 'Tengine', +2787 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2787 verbose headers connection: 'keep-alive', +2787 verbose headers etag: '"1a8e-hJfQcz5wSU8k2u+/smzM0g"', +2787 verbose headers 'x-readtime': '17' } +2788 silly get cb [ 304, +2788 silly get { server: 'Tengine', +2788 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2788 silly get connection: 'keep-alive', +2788 silly get etag: '"1a8e-hJfQcz5wSU8k2u+/smzM0g"', +2788 silly get 'x-readtime': '17' } ] +2789 verbose etag http://registry.npm.alibaba-inc.com/first-chunk-stream from cache +2790 verbose get saving first-chunk-stream to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/first-chunk-stream/.cache.json +2791 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2792 http 304 http://registry.npm.alibaba-inc.com/is-utf8 +2793 verbose headers { server: 'Tengine', +2793 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2793 verbose headers connection: 'keep-alive', +2793 verbose headers etag: '"e7c-RDU3TErngl+p7xTFHAuDKA"', +2793 verbose headers 'x-readtime': '16' } +2794 silly get cb [ 304, +2794 silly get { server: 'Tengine', +2794 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2794 silly get connection: 'keep-alive', +2794 silly get etag: '"e7c-RDU3TErngl+p7xTFHAuDKA"', +2794 silly get 'x-readtime': '16' } ] +2795 verbose etag http://registry.npm.alibaba-inc.com/is-utf8 from cache +2796 verbose get saving is-utf8 to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-utf8/.cache.json +2797 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2798 verbose lock using /home/ruanyf/.tnpm/_locks/xtend-b1f074d35a78cd4c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend +2799 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width is being purged from base /home/ruanyf/npm-global +2800 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +2801 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor is being purged from base /home/ruanyf/npm-global +2802 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +2803 silly gunzTarPerm extractEntry test/root.js +2804 silly gunzTarPerm extractEntry test/sync.js +2805 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width is being purged from base /home/ruanyf/npm-global +2806 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width +2807 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async is being purged from base /home/ruanyf/npm-global +2808 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +2809 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes is being purged from base /home/ruanyf/npm-global +2810 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes +2811 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise is being purged from base /home/ruanyf/npm-global +2812 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +2813 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream is being purged from base /home/ruanyf/npm-global +2814 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream +2815 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through is being purged from base /home/ruanyf/npm-global +2816 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through +2817 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures is being purged from base /home/ruanyf/npm-global +2818 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +2819 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi is being purged from base /home/ruanyf/npm-global +2820 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +2821 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk is being purged from base /home/ruanyf/npm-global +2822 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +2823 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx is being purged from base /home/ruanyf/npm-global +2824 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx +2825 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash is being purged from base /home/ruanyf/npm-global +2826 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash +2827 silly addNameRange number 2 { name: 'isarray', range: '>=1.0.0 <1.1.0', hasData: true } +2828 silly addNameRange versions [ 'isarray', [ '1.0.0', '0.0.1', '0.0.0' ] ] +2829 silly addNamed isarray@1.0.0 +2830 verbose addNamed "1.0.0" is a plain semver version for isarray +2831 silly addNameRange number 2 { name: 'string_decoder', +2831 silly addNameRange range: '>=0.10.0 <0.11.0', +2831 silly addNameRange hasData: true } +2832 silly addNameRange versions [ 'string_decoder', +2832 silly addNameRange [ '0.10.31', +2832 silly addNameRange '0.10.25-1', +2832 silly addNameRange '0.11.10-1', +2832 silly addNameRange '0.10.25', +2832 silly addNameRange '0.11.10', +2832 silly addNameRange '0.10.24', +2832 silly addNameRange '0.0.1', +2832 silly addNameRange '0.0.0' ] ] +2833 silly addNamed string_decoder@0.10.31 +2834 verbose addNamed "0.10.31" is a plain semver version for string_decoder +2835 silly addNameRange number 2 { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: true } +2836 silly addNameRange versions [ 'core-util-is', [ '1.0.2', '1.0.1', '1.0.0' ] ] +2837 silly addNamed core-util-is@1.0.2 +2838 verbose addNamed "1.0.2" is a plain semver version for core-util-is +2839 info postinstall object-assign@4.1.0 +2840 silly install write writing xtend 4.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend +2841 verbose tar unpack /home/ruanyf/.tnpm/string-width/1.0.1/package.tgz +2842 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +2843 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width is being purged +2844 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +2845 verbose tar unpack /home/ruanyf/.tnpm/cli-cursor/1.0.2/package.tgz +2846 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +2847 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor is being purged +2848 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +2849 verbose tar unpack /home/ruanyf/.tnpm/cli-width/2.1.0/package.tgz +2850 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width +2851 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width is being purged +2852 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width +2853 verbose tar unpack /home/ruanyf/.tnpm/run-async/2.2.0/package.tgz +2854 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +2855 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async is being purged +2856 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +2857 verbose tar unpack /home/ruanyf/.tnpm/ansi-escapes/1.4.0/package.tgz +2858 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes +2859 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes is being purged +2860 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes +2861 verbose tar unpack /home/ruanyf/.tnpm/pinkie-promise/2.0.1/package.tgz +2862 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +2863 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise is being purged +2864 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +2865 verbose tar unpack /home/ruanyf/.tnpm/mute-stream/0.0.6/package.tgz +2866 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream +2867 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream is being purged +2868 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream +2869 verbose tar unpack /home/ruanyf/.tnpm/through/2.3.8/package.tgz +2870 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through +2871 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through is being purged +2872 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through +2873 verbose tar unpack /home/ruanyf/.tnpm/figures/1.7.0/package.tgz +2874 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +2875 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures is being purged +2876 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +2877 verbose tar unpack /home/ruanyf/.tnpm/strip-ansi/3.0.1/package.tgz +2878 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +2879 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi is being purged +2880 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +2881 verbose tar unpack /home/ruanyf/.tnpm/chalk/1.1.3/package.tgz +2882 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +2883 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk is being purged +2884 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +2885 verbose tar unpack /home/ruanyf/.tnpm/rx/4.1.0/package.tgz +2886 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx +2887 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx is being purged +2888 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx +2889 verbose tar unpack /home/ruanyf/.tnpm/lodash/4.12.0/package.tgz +2890 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash +2891 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash is being purged +2892 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash +2893 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: true } +2894 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] +2895 silly addNamed inherits@2.0.1 +2896 verbose addNamed "2.0.1" is a plain semver version for inherits +2897 silly gunzTarPerm modes [ '755', '644' ] +2898 silly gunzTarPerm modes [ '755', '644' ] +2899 silly gunzTarPerm modes [ '755', '644' ] +2900 silly gunzTarPerm modes [ '755', '644' ] +2901 silly gunzTarPerm modes [ '755', '644' ] +2902 silly gunzTarPerm modes [ '755', '644' ] +2903 silly gunzTarPerm modes [ '755', '644' ] +2904 silly gunzTarPerm modes [ '755', '644' ] +2905 silly gunzTarPerm modes [ '755', '644' ] +2906 silly gunzTarPerm modes [ '755', '644' ] +2907 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-valid-glob-9f79f0427d8ae514.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob +2908 info preinstall graceful-fs@4.1.4 +2909 verbose unlock done using /home/ruanyf/.tnpm/_locks/vali-date-3a589ee89230ab82.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date +2910 silly gunzTarPerm modes [ '755', '644' ] +2911 silly gunzTarPerm modes [ '755', '644' ] +2912 silly gunzTarPerm modes [ '755', '644' ] +2913 verbose unlock done using /home/ruanyf/.tnpm/_locks/object-assign-6a58d648390be4f2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign +2914 silly cache afterAdd through2@0.6.5 +2915 verbose afterAdd /home/ruanyf/.tnpm/through2/0.6.5/package/package.json not in flight; writing +2916 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2917 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs/package.json +2918 silly cache add args [ 'lodash._root@~3.0.0', null ] +2919 verbose cache add spec lodash._root@~3.0.0 +2920 silly cache add parsed spec Result { +2920 silly cache add raw: 'lodash._root@~3.0.0', +2920 silly cache add scope: null, +2920 silly cache add name: 'lodash._root', +2920 silly cache add rawSpec: '~3.0.0', +2920 silly cache add spec: '>=3.0.0 <3.1.0', +2920 silly cache add type: 'range' } +2921 silly addNamed lodash._root@>=3.0.0 <3.1.0 +2922 verbose addNamed ">=3.0.0 <3.1.0" is a valid semver range for lodash._root +2923 silly addNameRange { name: 'lodash._root', range: '>=3.0.0 <3.1.0', hasData: false } +2924 silly mapToRegistry name lodash._root +2925 silly mapToRegistry using default registry +2926 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2927 silly mapToRegistry data Result { +2927 silly mapToRegistry raw: 'lodash._root', +2927 silly mapToRegistry scope: null, +2927 silly mapToRegistry name: 'lodash._root', +2927 silly mapToRegistry rawSpec: '', +2927 silly mapToRegistry spec: 'latest', +2927 silly mapToRegistry type: 'tag' } +2928 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/lodash._root +2929 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/lodash._root not in flight; fetching +2930 silly cache add args [ 'lodash.keys@^4.0.0', null ] +2931 verbose cache add spec lodash.keys@^4.0.0 +2932 silly cache add parsed spec Result { +2932 silly cache add raw: 'lodash.keys@^4.0.0', +2932 silly cache add scope: null, +2932 silly cache add name: 'lodash.keys', +2932 silly cache add rawSpec: '^4.0.0', +2932 silly cache add spec: '>=4.0.0 <5.0.0', +2932 silly cache add type: 'range' } +2933 silly addNamed lodash.keys@>=4.0.0 <5.0.0 +2934 verbose addNamed ">=4.0.0 <5.0.0" is a valid semver range for lodash.keys +2935 silly addNameRange { name: 'lodash.keys', range: '>=4.0.0 <5.0.0', hasData: false } +2936 silly mapToRegistry name lodash.keys +2937 silly mapToRegistry using default registry +2938 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +2939 silly mapToRegistry data Result { +2939 silly mapToRegistry raw: 'lodash.keys', +2939 silly mapToRegistry scope: null, +2939 silly mapToRegistry name: 'lodash.keys', +2939 silly mapToRegistry rawSpec: '', +2939 silly mapToRegistry spec: 'latest', +2939 silly mapToRegistry type: 'tag' } +2940 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/lodash.keys +2941 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/lodash.keys not in flight; fetching +2942 silly cache afterAdd util-deprecate@1.0.2 +2943 verbose afterAdd /home/ruanyf/.tnpm/util-deprecate/1.0.2/package/package.json not in flight; writing +2944 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2945 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/package.json +2946 http 304 http://registry.npm.alibaba-inc.com/glob-parent +2947 verbose headers { server: 'Tengine', +2947 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2947 verbose headers connection: 'keep-alive', +2947 verbose headers etag: '"21d5-Z6sRptdOnEa4+jW3so9OtQ"', +2947 verbose headers 'x-readtime': '21' } +2948 silly get cb [ 304, +2948 silly get { server: 'Tengine', +2948 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2948 silly get connection: 'keep-alive', +2948 silly get etag: '"21d5-Z6sRptdOnEa4+jW3so9OtQ"', +2948 silly get 'x-readtime': '21' } ] +2949 verbose etag http://registry.npm.alibaba-inc.com/glob-parent from cache +2950 verbose get saving glob-parent to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/glob-parent/.cache.json +2951 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2952 http 304 http://registry.npm.alibaba-inc.com/unique-stream +2953 verbose headers { server: 'Tengine', +2953 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2953 verbose headers connection: 'keep-alive', +2953 verbose headers etag: '"54bd-4WIIMf65nm60xrDs/Jydtg"', +2953 verbose headers 'x-readtime': '25' } +2954 silly get cb [ 304, +2954 silly get { server: 'Tengine', +2954 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2954 silly get connection: 'keep-alive', +2954 silly get etag: '"54bd-4WIIMf65nm60xrDs/Jydtg"', +2954 silly get 'x-readtime': '25' } ] +2955 verbose etag http://registry.npm.alibaba-inc.com/unique-stream from cache +2956 verbose get saving unique-stream to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/unique-stream/.cache.json +2957 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2958 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend +2959 silly cache afterAdd process-nextick-args@1.0.7 +2960 verbose afterAdd /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package/package.json not in flight; writing +2961 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2962 silly cache afterAdd isarray@1.0.0 +2963 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json not in flight; writing +2964 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2965 silly cache afterAdd string_decoder@0.10.31 +2966 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json not in flight; writing +2967 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2968 silly cache afterAdd core-util-is@1.0.2 +2969 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json not in flight; writing +2970 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2971 silly gunzTarPerm extractEntry package.json +2972 http 304 http://registry.npm.alibaba-inc.com/to-absolute-glob +2973 verbose headers { server: 'Tengine', +2973 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +2973 verbose headers connection: 'keep-alive', +2973 verbose headers etag: '"19da-FWTgFQ+ay4JKX0o3NhmBDg"', +2973 verbose headers 'x-readtime': '16' } +2974 silly get cb [ 304, +2974 silly get { server: 'Tengine', +2974 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +2974 silly get connection: 'keep-alive', +2974 silly get etag: '"19da-FWTgFQ+ay4JKX0o3NhmBDg"', +2974 silly get 'x-readtime': '16' } ] +2975 verbose etag http://registry.npm.alibaba-inc.com/to-absolute-glob from cache +2976 verbose get saving to-absolute-glob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/to-absolute-glob/.cache.json +2977 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2978 silly addNameRange number 2 { name: 'is-utf8', range: '>=0.2.0 <0.3.0', hasData: true } +2979 silly addNameRange versions [ 'is-utf8', [ '0.2.1', '0.2.0', '0.1.0' ] ] +2980 silly addNamed is-utf8@0.2.1 +2981 verbose addNamed "0.2.1" is a plain semver version for is-utf8 +2982 silly addNameRange number 2 { name: 'first-chunk-stream', +2982 silly addNameRange range: '>=1.0.0 <2.0.0', +2982 silly addNameRange hasData: true } +2983 silly addNameRange versions [ 'first-chunk-stream', [ '2.0.0', '1.0.0', '0.1.0' ] ] +2984 silly addNamed first-chunk-stream@1.0.0 +2985 verbose addNamed "1.0.0" is a plain semver version for first-chunk-stream +2986 silly cache afterAdd inherits@2.0.1 +2987 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing +2988 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +2989 silly gunzTarPerm extractEntry package.json +2990 silly gunzTarPerm extractEntry package.json +2991 silly gunzTarPerm extractEntry package.json +2992 silly gunzTarPerm extractEntry package.json +2993 silly gunzTarPerm extractEntry package.json +2994 silly gunzTarPerm extractEntry package.json +2995 silly gunzTarPerm extractEntry package.json +2996 silly gunzTarPerm extractEntry package.json +2997 silly gunzTarPerm extractEntry package.json +2998 silly gunzTarPerm extractEntry package.json +2999 silly gunzTarPerm extractEntry package.json +3000 info preinstall duplexify@3.4.3 +3001 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend is being purged from base /home/ruanyf/npm-global +3002 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend +3003 silly gunzTarPerm extractEntry package.json +3004 verbose afterAdd /home/ruanyf/.tnpm/through2/0.6.5/package/package.json written +3005 verbose request uri http://registry.npm.alibaba-inc.com/lodash._root +3006 verbose request no auth needed +3007 info attempt registry request try #1 at 上午9:12:29 +3008 verbose etag "11ee-PoQ6ahk1bx7NZjJwBalZ+A" +3009 http request GET http://registry.npm.alibaba-inc.com/lodash._root +3010 http 304 http://registry.npm.alibaba-inc.com/ordered-read-streams +3011 verbose headers { server: 'Tengine', +3011 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3011 verbose headers connection: 'keep-alive', +3011 verbose headers etag: '"3f15-Du58wvwbsKH5cTnGg/pXMg"', +3011 verbose headers 'x-readtime': '25' } +3012 silly get cb [ 304, +3012 silly get { server: 'Tengine', +3012 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3012 silly get connection: 'keep-alive', +3012 silly get etag: '"3f15-Du58wvwbsKH5cTnGg/pXMg"', +3012 silly get 'x-readtime': '25' } ] +3013 verbose etag http://registry.npm.alibaba-inc.com/ordered-read-streams from cache +3014 verbose get saving ordered-read-streams to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/ordered-read-streams/.cache.json +3015 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3016 http 304 http://registry.npm.alibaba-inc.com/extend +3017 verbose headers { server: 'Tengine', +3017 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3017 verbose headers connection: 'keep-alive', +3017 verbose headers etag: '"3e39-RcQ391ZJSIFujxd4rb4zLQ"', +3017 verbose headers 'x-readtime': '23' } +3018 silly get cb [ 304, +3018 silly get { server: 'Tengine', +3018 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3018 silly get connection: 'keep-alive', +3018 silly get etag: '"3e39-RcQ391ZJSIFujxd4rb4zLQ"', +3018 silly get 'x-readtime': '23' } ] +3019 verbose etag http://registry.npm.alibaba-inc.com/extend from cache +3020 verbose get saving extend to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/extend/.cache.json +3021 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3022 verbose request uri http://registry.npm.alibaba-inc.com/lodash.keys +3023 verbose request no auth needed +3024 info attempt registry request try #1 at 上午9:12:29 +3025 verbose etag "b195-SbVMEYnecjs0LL38MRKJ6g" +3026 http request GET http://registry.npm.alibaba-inc.com/lodash.keys +3027 verbose afterAdd /home/ruanyf/.tnpm/util-deprecate/1.0.2/package/package.json written +3028 verbose tar unpack /home/ruanyf/.tnpm/xtend/4.0.1/package.tgz +3029 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend +3030 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend is being purged +3031 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend +3032 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs/package.json +3033 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/package.json +3034 silly gunzTarPerm modes [ '755', '644' ] +3035 verbose afterAdd /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package/package.json written +3036 silly gunzTarPerm extractEntry test/mkdirp.js +3037 silly gunzTarPerm extractEntry test/umask.js +3038 silly gunzTarPerm extractEntry index.js +3039 silly gunzTarPerm extractEntry license +3040 http 304 http://registry.npm.alibaba-inc.com/convert-source-map +3041 verbose headers { server: 'Tengine', +3041 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3041 verbose headers connection: 'keep-alive', +3041 verbose headers etag: '"a073-HdYxcrXL3gR8xhvzyCOtNQ"', +3041 verbose headers 'x-readtime': '54' } +3042 silly get cb [ 304, +3042 silly get { server: 'Tengine', +3042 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3042 silly get connection: 'keep-alive', +3042 silly get etag: '"a073-HdYxcrXL3gR8xhvzyCOtNQ"', +3042 silly get 'x-readtime': '54' } ] +3043 verbose etag http://registry.npm.alibaba-inc.com/convert-source-map from cache +3044 verbose get saving convert-source-map to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/convert-source-map/.cache.json +3045 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3046 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json written +3047 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json written +3048 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json written +3049 silly gunzTarPerm extractEntry index.js +3050 silly gunzTarPerm extractEntry license +3051 silly gunzTarPerm extractEntry .npmignore +3052 silly gunzTarPerm extractEntry README.md +3053 silly gunzTarPerm extractEntry .npmignore +3054 silly gunzTarPerm extractEntry README.md +3055 silly gunzTarPerm extractEntry README.md +3056 silly gunzTarPerm extractEntry LICENSE +3057 silly gunzTarPerm extractEntry index.js +3058 silly gunzTarPerm extractEntry license +3059 silly gunzTarPerm extractEntry index.js +3060 silly gunzTarPerm extractEntry license +3061 silly gunzTarPerm extractEntry index.js +3062 silly gunzTarPerm extractEntry .travis.yml +3063 silly gunzTarPerm extractEntry index.js +3064 silly gunzTarPerm extractEntry license +3065 silly gunzTarPerm extractEntry index.js +3066 silly gunzTarPerm extractEntry license +3067 silly gunzTarPerm extractEntry index.js +3068 silly gunzTarPerm extractEntry license +3069 silly gunzTarPerm extractEntry index.js +3070 silly gunzTarPerm extractEntry component.json +3071 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written +3072 silly install resolved [ { name: 'util-deprecate', +3072 silly install resolved version: '1.0.2', +3072 silly install resolved description: 'The Node.js `util.deprecate()` function with browser support', +3072 silly install resolved main: 'node.js', +3072 silly install resolved browser: 'browser.js', +3072 silly install resolved scripts: { test: 'echo "Error: no test specified" && exit 1' }, +3072 silly install resolved repository: +3072 silly install resolved { type: 'git', +3072 silly install resolved url: 'git://github.com/TooTallNate/util-deprecate.git' }, +3072 silly install resolved keywords: [ 'util', 'deprecate', 'browserify', 'browser', 'node' ], +3072 silly install resolved author: +3072 silly install resolved { name: 'Nathan Rajlich', +3072 silly install resolved email: 'nathan@tootallnate.net', +3072 silly install resolved url: 'http://n8.io/' }, +3072 silly install resolved license: 'MIT', +3072 silly install resolved bugs: { url: 'https://github.com/TooTallNate/util-deprecate/issues' }, +3072 silly install resolved homepage: 'https://github.com/TooTallNate/util-deprecate', +3072 silly install resolved gitHead: '475fb6857cd23fafff20c1be846c1350abf8e6d4', +3072 silly install resolved _id: 'util-deprecate@1.0.2', +3072 silly install resolved _shasum: '450d4dc9fa70de732762fbd2d4a28981419a0ccf', +3072 silly install resolved _from: 'util-deprecate@>=1.0.1 <1.1.0', +3072 silly install resolved _npmVersion: '2.14.4', +3072 silly install resolved _nodeVersion: '4.1.2', +3072 silly install resolved _npmUser: { name: 'tootallnate', email: 'nathan@tootallnate.net' }, +3072 silly install resolved maintainers: [ [Object] ], +3072 silly install resolved dist: +3072 silly install resolved { shasum: '450d4dc9fa70de732762fbd2d4a28981419a0ccf', +3072 silly install resolved size: 2246, +3072 silly install resolved noattachment: false, +3072 silly install resolved key: 'util-deprecate/-/util-deprecate-1.0.2.tgz', +3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz' }, +3072 silly install resolved directories: {}, +3072 silly install resolved publish_time: 1444243060665, +3072 silly install resolved _cnpm_publish_time: 1444243060665, +3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz', +3072 silly install resolved readme: 'ERROR: No README data found!' }, +3072 silly install resolved { name: 'process-nextick-args', +3072 silly install resolved version: '1.0.7', +3072 silly install resolved description: 'process.nextTick but always with args', +3072 silly install resolved main: 'index.js', +3072 silly install resolved scripts: { test: 'node test.js' }, +3072 silly install resolved repository: +3072 silly install resolved { type: 'git', +3072 silly install resolved url: 'git+https://github.com/calvinmetcalf/process-nextick-args.git' }, +3072 silly install resolved author: '', +3072 silly install resolved license: 'MIT', +3072 silly install resolved bugs: { url: 'https://github.com/calvinmetcalf/process-nextick-args/issues' }, +3072 silly install resolved homepage: 'https://github.com/calvinmetcalf/process-nextick-args', +3072 silly install resolved devDependencies: { tap: '~0.2.6' }, +3072 silly install resolved gitHead: '5c00899ab01dd32f93ad4b5743da33da91404f39', +3072 silly install resolved _id: 'process-nextick-args@1.0.7', +3072 silly install resolved _shasum: '150e20b756590ad3f91093f25a4f2ad8bff30ba3', +3072 silly install resolved _from: 'process-nextick-args@>=1.0.6 <1.1.0', +3072 silly install resolved _npmVersion: '3.8.6', +3072 silly install resolved _nodeVersion: '5.11.0', +3072 silly install resolved _npmUser: { name: 'cwmma', email: 'calvin.metcalf@gmail.com' }, +3072 silly install resolved dist: +3072 silly install resolved { shasum: '150e20b756590ad3f91093f25a4f2ad8bff30ba3', +3072 silly install resolved size: 1923, +3072 silly install resolved noattachment: false, +3072 silly install resolved key: 'process-nextick-args/-/process-nextick-args-1.0.7.tgz', +3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/process-nextick-args/download/process-nextick-args-1.0.7.tgz' }, +3072 silly install resolved maintainers: [ [Object] ], +3072 silly install resolved _npmOperationalInternal: +3072 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +3072 silly install resolved tmp: 'tmp/process-nextick-args-1.0.7.tgz_1462394251778_0.36989671061746776' }, +3072 silly install resolved directories: {}, +3072 silly install resolved publish_time: 1462394254467, +3072 silly install resolved _cnpm_publish_time: 1462394254467, +3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/process-nextick-args/download/process-nextick-args-1.0.7.tgz', +3072 silly install resolved readme: 'ERROR: No README data found!' }, +3072 silly install resolved { name: 'isarray', +3072 silly install resolved description: 'Array#isArray for older browsers', +3072 silly install resolved version: '1.0.0', +3072 silly install resolved repository: +3072 silly install resolved { type: 'git', +3072 silly install resolved url: 'git://github.com/juliangruber/isarray.git' }, +3072 silly install resolved homepage: 'https://github.com/juliangruber/isarray', +3072 silly install resolved main: 'index.js', +3072 silly install resolved dependencies: {}, +3072 silly install resolved devDependencies: { tape: '~2.13.4' }, +3072 silly install resolved keywords: [ 'browser', 'isarray', 'array' ], +3072 silly install resolved author: +3072 silly install resolved { name: 'Julian Gruber', +3072 silly install resolved email: 'mail@juliangruber.com', +3072 silly install resolved url: 'http://juliangruber.com' }, +3072 silly install resolved license: 'MIT', +3072 silly install resolved testling: { files: 'test.js', browsers: [Object] }, +3072 silly install resolved scripts: { test: 'tape test.js' }, +3072 silly install resolved gitHead: '2a23a281f369e9ae06394c0fb4d2381355a6ba33', +3072 silly install resolved bugs: { url: 'https://github.com/juliangruber/isarray/issues' }, +3072 silly install resolved _id: 'isarray@1.0.0', +3072 silly install resolved _shasum: 'bb935d48582cba168c06834957a54a3e07124f11', +3072 silly install resolved _from: 'isarray@>=1.0.0 <1.1.0', +3072 silly install resolved _npmVersion: '3.3.12', +3072 silly install resolved _nodeVersion: '5.1.0', +3072 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, +3072 silly install resolved dist: +3072 silly install resolved { shasum: 'bb935d48582cba168c06834957a54a3e07124f11', +3072 silly install resolved size: 2021, +3072 silly install resolved noattachment: false, +3072 silly install resolved key: 'isarray/-/isarray-1.0.0.tgz', +3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz' }, +3072 silly install resolved maintainers: [ [Object] ], +3072 silly install resolved directories: {}, +3072 silly install resolved publish_time: 1449741907067, +3072 silly install resolved _cnpm_publish_time: 1449741907067, +3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz', +3072 silly install resolved readme: 'ERROR: No README data found!' }, +3072 silly install resolved { name: 'string_decoder', +3072 silly install resolved version: '0.10.31', +3072 silly install resolved description: 'The string_decoder module from Node core', +3072 silly install resolved main: 'index.js', +3072 silly install resolved dependencies: {}, +3072 silly install resolved devDependencies: { tap: '~0.4.8' }, +3072 silly install resolved scripts: { test: 'tap test/simple/*.js' }, +3072 silly install resolved repository: +3072 silly install resolved { type: 'git', +3072 silly install resolved url: 'git://github.com/rvagg/string_decoder.git' }, +3072 silly install resolved homepage: 'https://github.com/rvagg/string_decoder', +3072 silly install resolved keywords: [ 'string', 'decoder', 'browser', 'browserify' ], +3072 silly install resolved license: 'MIT', +3072 silly install resolved gitHead: 'd46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0', +3072 silly install resolved bugs: { url: 'https://github.com/rvagg/string_decoder/issues' }, +3072 silly install resolved _id: 'string_decoder@0.10.31', +3072 silly install resolved _shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', +3072 silly install resolved _from: 'string_decoder@>=0.10.0 <0.11.0', +3072 silly install resolved _npmVersion: '1.4.23', +3072 silly install resolved _npmUser: { name: 'rvagg', email: 'rod@vagg.org' }, +3072 silly install resolved maintainers: [ [Object], [Object] ], +3072 silly install resolved dist: +3072 silly install resolved { shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', +3072 silly install resolved size: 3608, +3072 silly install resolved noattachment: false, +3072 silly install resolved key: 'string_decoder/-/string_decoder-0.10.31.tgz', +3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz' }, +3072 silly install resolved directories: {}, +3072 silly install resolved publish_time: 1408767919329, +3072 silly install resolved _cnpm_publish_time: 1408767919329, +3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz', +3072 silly install resolved readme: 'ERROR: No README data found!' }, +3072 silly install resolved { name: 'core-util-is', +3072 silly install resolved version: '1.0.2', +3072 silly install resolved description: 'The `util.is*` functions introduced in Node v0.12.', +3072 silly install resolved main: 'lib/util.js', +3072 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/core-util-is.git' }, +3072 silly install resolved keywords: +3072 silly install resolved [ 'util', +3072 silly install resolved 'isBuffer', +3072 silly install resolved 'isArray', +3072 silly install resolved 'isNumber', +3072 silly install resolved 'isString', +3072 silly install resolved 'isRegExp', +3072 silly install resolved 'isThis', +3072 silly install resolved 'isThat', +3072 silly install resolved 'polyfill' ], +3072 silly install resolved author: +3072 silly install resolved { name: 'Isaac Z. Schlueter', +3072 silly install resolved email: 'i@izs.me', +3072 silly install resolved url: 'http://blog.izs.me/' }, +3072 silly install resolved license: 'MIT', +3072 silly install resolved bugs: { url: 'https://github.com/isaacs/core-util-is/issues' }, +3072 silly install resolved scripts: { test: 'tap test.js' }, +3072 silly install resolved devDependencies: { tap: '^2.3.0' }, +3072 silly install resolved gitHead: 'a177da234df5638b363ddc15fa324619a38577c8', +3072 silly install resolved homepage: 'https://github.com/isaacs/core-util-is#readme', +3072 silly install resolved _id: 'core-util-is@1.0.2', +3072 silly install resolved _shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', +3072 silly install resolved _from: 'core-util-is@>=1.0.0 <1.1.0', +3072 silly install resolved _npmVersion: '3.3.2', +3072 silly install resolved _nodeVersion: '4.0.0', +3072 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +3072 silly install resolved dist: +3072 silly install resolved { shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', +3072 silly install resolved size: 7016, +3072 silly install resolved noattachment: false, +3072 silly install resolved key: 'core-util-is/-/core-util-is-1.0.2.tgz', +3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz' }, +3072 silly install resolved maintainers: [ [Object] ], +3072 silly install resolved directories: {}, +3072 silly install resolved publish_time: 1447979853081, +3072 silly install resolved _cnpm_publish_time: 1447979853081, +3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz', +3072 silly install resolved readme: 'ERROR: No README data found!' }, +3072 silly install resolved { name: 'inherits', +3072 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', +3072 silly install resolved version: '2.0.1', +3072 silly install resolved keywords: +3072 silly install resolved [ 'inheritance', +3072 silly install resolved 'class', +3072 silly install resolved 'klass', +3072 silly install resolved 'oop', +3072 silly install resolved 'object-oriented', +3072 silly install resolved 'inherits', +3072 silly install resolved 'browser', +3072 silly install resolved 'browserify' ], +3072 silly install resolved main: './inherits.js', +3072 silly install resolved browser: './inherits_browser.js', +3072 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, +3072 silly install resolved license: 'ISC', +3072 silly install resolved scripts: { test: 'node test' }, +3072 silly install resolved readmeFilename: 'README.md', +3072 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, +3072 silly install resolved _id: 'inherits@2.0.1', +3072 silly install resolved dist: +3072 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +3072 silly install resolved size: 2122, +3072 silly install resolved noattachment: false, +3072 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', +3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, +3072 silly install resolved _from: 'inherits@>=2.0.1 <2.1.0', +3072 silly install resolved _npmVersion: '1.3.8', +3072 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +3072 silly install resolved maintainers: [ [Object] ], +3072 silly install resolved directories: {}, +3072 silly install resolved publish_time: 1376950220463, +3072 silly install resolved _cnpm_publish_time: 1376950220463, +3072 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', +3072 silly install resolved readme: 'ERROR: No README data found!', +3072 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' } ] +3073 info install util-deprecate@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream +3074 info install process-nextick-args@1.0.7 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream +3075 info install isarray@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream +3076 info install string_decoder@0.10.31 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream +3077 info install core-util-is@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream +3078 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream +3079 info installOne util-deprecate@1.0.2 +3080 verbose installOne of util-deprecate to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing +3081 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3082 info installOne process-nextick-args@1.0.7 +3083 verbose installOne of process-nextick-args to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing +3084 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3085 info installOne isarray@1.0.0 +3086 verbose installOne of isarray to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing +3087 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3088 info installOne string_decoder@0.10.31 +3089 verbose installOne of string_decoder to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing +3090 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3091 info installOne core-util-is@1.0.2 +3092 verbose installOne of core-util-is to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing +3093 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3094 info installOne inherits@2.0.1 +3095 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing +3096 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3097 silly gunzTarPerm extractEntry README.md +3098 silly gunzTarPerm extractEntry LICENSE +3099 silly addNameRange number 2 { name: 'glob-parent', range: '>=2.0.0 <3.0.0', hasData: true } +3100 silly addNameRange versions [ 'glob-parent', +3100 silly addNameRange [ '2.0.0', '1.3.0', '1.2.0', '1.1.0', '1.0.0' ] ] +3101 silly addNamed glob-parent@2.0.0 +3102 verbose addNamed "2.0.0" is a plain semver version for glob-parent +3103 silly addNameRange number 2 { name: 'unique-stream', range: '>=2.0.2 <3.0.0', hasData: true } +3104 silly addNameRange versions [ 'unique-stream', +3104 silly addNameRange [ '2.2.1', +3104 silly addNameRange '2.2.0', +3104 silly addNameRange '2.1.1', +3104 silly addNameRange '2.1.0', +3104 silly addNameRange '2.0.2', +3104 silly addNameRange '2.0.1', +3104 silly addNameRange '2.0.0', +3104 silly addNameRange '1.0.0', +3104 silly addNameRange '0.0.5', +3104 silly addNameRange '0.0.4', +3104 silly addNameRange '0.0.3', +3104 silly addNameRange '0.0.2', +3104 silly addNameRange '0.0.1' ] ] +3105 silly addNamed unique-stream@2.2.1 +3106 verbose addNamed "2.2.1" is a plain semver version for unique-stream +3107 silly cache afterAdd first-chunk-stream@1.0.0 +3108 verbose afterAdd /home/ruanyf/.tnpm/first-chunk-stream/1.0.0/package/package.json not in flight; writing +3109 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3110 silly cache afterAdd is-utf8@0.2.1 +3111 verbose afterAdd /home/ruanyf/.tnpm/is-utf8/0.2.1/package/package.json not in flight; writing +3112 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3113 verbose lock using /home/ruanyf/.tnpm/_locks/util-deprecate-da6ff6e24a0a44c8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate +3114 verbose lock using /home/ruanyf/.tnpm/_locks/process-nextick-args-640681cf1f951d3d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args +3115 verbose lock using /home/ruanyf/.tnpm/_locks/core-util-is-43b8c89985671e22.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +3116 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-5a31eb8d44663059.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits +3117 verbose lock using /home/ruanyf/.tnpm/_locks/isarray-62ce9f5052cd7d81.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray +3118 verbose lock using /home/ruanyf/.tnpm/_locks/string-decoder-e42dd0bbb825ea12.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +3119 silly addNameRange number 2 { name: 'to-absolute-glob', +3119 silly addNameRange range: '>=0.1.1 <0.2.0', +3119 silly addNameRange hasData: true } +3120 silly addNameRange versions [ 'to-absolute-glob', [ '0.1.1', '0.1.0' ] ] +3121 silly addNamed to-absolute-glob@0.1.1 +3122 verbose addNamed "0.1.1" is a plain semver version for to-absolute-glob +3123 silly gunzTarPerm extractEntry package.json +3124 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] +3125 silly install write writing util-deprecate 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate +3126 silly install write writing process-nextick-args 1.0.7 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args +3127 silly install write writing core-util-is 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +3128 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits +3129 silly install write writing isarray 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray +3130 silly install write writing string_decoder 0.10.31 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +3131 silly install resolved [] +3132 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs +3133 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs +3134 silly prepareForInstallMany adding end-of-stream@1.0.0 from duplexify dependencies +3135 silly prepareForInstallMany adding inherits@^2.0.1 from duplexify dependencies +3136 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/package.json +3137 silly addNameRange number 2 { name: 'ordered-read-streams', +3137 silly addNameRange range: '>=0.3.0 <0.4.0', +3137 silly addNameRange hasData: true } +3138 silly addNameRange versions [ 'ordered-read-streams', +3138 silly addNameRange [ '0.3.0', +3138 silly addNameRange '0.2.0', +3138 silly addNameRange '0.1.0', +3138 silly addNameRange '0.0.8', +3138 silly addNameRange '0.0.7', +3138 silly addNameRange '0.0.6', +3138 silly addNameRange '0.0.5', +3138 silly addNameRange '0.0.4', +3138 silly addNameRange '0.0.3', +3138 silly addNameRange '0.0.2', +3138 silly addNameRange '0.0.1' ] ] +3139 silly addNamed ordered-read-streams@0.3.0 +3140 verbose addNamed "0.3.0" is a plain semver version for ordered-read-streams +3141 silly addNameRange number 2 { name: 'extend', range: '>=3.0.0 <4.0.0', hasData: true } +3142 silly addNameRange versions [ 'extend', +3142 silly addNameRange [ '3.0.0', +3142 silly addNameRange '2.0.1', +3142 silly addNameRange '2.0.0', +3142 silly addNameRange '1.3.0', +3142 silly addNameRange '1.2.1', +3142 silly addNameRange '1.2.0', +3142 silly addNameRange '1.1.3', +3142 silly addNameRange '1.1.1', +3142 silly addNameRange '1.1.0', +3142 silly addNameRange '1.0.0' ] ] +3143 silly addNamed extend@3.0.0 +3144 verbose addNamed "3.0.0" is a plain semver version for extend +3145 verbose afterAdd /home/ruanyf/.tnpm/first-chunk-stream/1.0.0/package/package.json written +3146 silly install resolved [ { name: 'first-chunk-stream', +3146 silly install resolved version: '1.0.0', +3146 silly install resolved description: 'Transform the first chunk in a stream', +3146 silly install resolved license: 'MIT', +3146 silly install resolved repository: +3146 silly install resolved { type: 'git', +3146 silly install resolved url: 'git+https://github.com/sindresorhus/first-chunk-stream.git' }, +3146 silly install resolved author: +3146 silly install resolved { name: 'Sindre Sorhus', +3146 silly install resolved email: 'sindresorhus@gmail.com', +3146 silly install resolved url: 'http://sindresorhus.com' }, +3146 silly install resolved engines: { node: '>=0.10.0' }, +3146 silly install resolved scripts: { test: 'mocha' }, +3146 silly install resolved files: [ 'index.js' ], +3146 silly install resolved keywords: +3146 silly install resolved [ 'buffer', +3146 silly install resolved 'stream', +3146 silly install resolved 'streams', +3146 silly install resolved 'transform', +3146 silly install resolved 'first', +3146 silly install resolved 'chunk', +3146 silly install resolved 'size', +3146 silly install resolved 'min', +3146 silly install resolved 'minimum' ], +3146 silly install resolved devDependencies: { 'concat-stream': '^1.4.5', mocha: '*' }, +3146 silly install resolved gitHead: '8b0b1750edcc30fa2b2071245198181e925be619', +3146 silly install resolved bugs: { url: 'https://github.com/sindresorhus/first-chunk-stream/issues' }, +3146 silly install resolved homepage: 'https://github.com/sindresorhus/first-chunk-stream', +3146 silly install resolved _id: 'first-chunk-stream@1.0.0', +3146 silly install resolved _shasum: '59bfb50cd905f60d7c394cd3d9acaab4e6ad934e', +3146 silly install resolved _from: 'first-chunk-stream@>=1.0.0 <2.0.0', +3146 silly install resolved _npmVersion: '1.4.21', +3146 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +3146 silly install resolved maintainers: [ [Object] ], +3146 silly install resolved dist: +3146 silly install resolved { shasum: '59bfb50cd905f60d7c394cd3d9acaab4e6ad934e', +3146 silly install resolved size: 1636, +3146 silly install resolved noattachment: false, +3146 silly install resolved key: 'first-chunk-stream/-/first-chunk-stream-1.0.0.tgz', +3146 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/first-chunk-stream/download/first-chunk-stream-1.0.0.tgz' }, +3146 silly install resolved directories: {}, +3146 silly install resolved publish_time: 1408007190958, +3146 silly install resolved _cnpm_publish_time: 1408007190958, +3146 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/first-chunk-stream/download/first-chunk-stream-1.0.0.tgz', +3146 silly install resolved readme: 'ERROR: No README data found!' } ] +3147 info install first-chunk-stream@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream +3148 info installOne first-chunk-stream@1.0.0 +3149 verbose installOne of first-chunk-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream not in flight; installing +3150 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3151 verbose afterAdd /home/ruanyf/.tnpm/is-utf8/0.2.1/package/package.json written +3152 silly install resolved [ { name: 'is-utf8', +3152 silly install resolved version: '0.2.1', +3152 silly install resolved description: 'Detect if a buffer is utf8 encoded.', +3152 silly install resolved main: 'is-utf8.js', +3152 silly install resolved scripts: { test: 'node test.js' }, +3152 silly install resolved repository: +3152 silly install resolved { type: 'git', +3152 silly install resolved url: 'git+https://github.com/wayfind/is-utf8.git' }, +3152 silly install resolved keywords: [ 'utf8', 'charset' ], +3152 silly install resolved files: [ 'is-utf8.js' ], +3152 silly install resolved author: { name: 'wayfind' }, +3152 silly install resolved license: 'MIT', +3152 silly install resolved gitHead: '709df7202f9c3f93cdc2463b352dd80d8de9ce0b', +3152 silly install resolved bugs: { url: 'https://github.com/wayfind/is-utf8/issues' }, +3152 silly install resolved homepage: 'https://github.com/wayfind/is-utf8#readme', +3152 silly install resolved _id: 'is-utf8@0.2.1', +3152 silly install resolved _shasum: '4b0da1442104d1b336340e80797e865cf39f7d72', +3152 silly install resolved _from: 'is-utf8@>=0.2.0 <0.3.0', +3152 silly install resolved _npmVersion: '2.12.1', +3152 silly install resolved _nodeVersion: '2.3.4', +3152 silly install resolved _npmUser: { name: 'wayfind', email: 'whyer1@gmail.com' }, +3152 silly install resolved maintainers: [ [Object] ], +3152 silly install resolved dist: +3152 silly install resolved { shasum: '4b0da1442104d1b336340e80797e865cf39f7d72', +3152 silly install resolved size: 1628, +3152 silly install resolved noattachment: false, +3152 silly install resolved key: 'is-utf8/-/is-utf8-0.2.1.tgz', +3152 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-utf8/download/is-utf8-0.2.1.tgz' }, +3152 silly install resolved directories: {}, +3152 silly install resolved publish_time: 1450497862462, +3152 silly install resolved _cnpm_publish_time: 1450497862462, +3152 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-utf8/download/is-utf8-0.2.1.tgz', +3152 silly install resolved readme: 'ERROR: No README data found!' } ] +3153 info install is-utf8@0.2.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom +3154 info installOne is-utf8@0.2.1 +3155 verbose installOne of is-utf8 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom not in flight; installing +3156 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3157 silly cache afterAdd glob-parent@2.0.0 +3158 verbose afterAdd /home/ruanyf/.tnpm/glob-parent/2.0.0/package/package.json not in flight; writing +3159 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3160 silly cache afterAdd unique-stream@2.2.1 +3161 verbose afterAdd /home/ruanyf/.tnpm/unique-stream/2.2.1/package/package.json not in flight; writing +3162 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3163 silly addNameRange number 2 { name: 'convert-source-map', +3163 silly addNameRange range: '>=1.1.1 <2.0.0', +3163 silly addNameRange hasData: true } +3164 silly addNameRange versions [ 'convert-source-map', +3164 silly addNameRange [ '1.2.0', +3164 silly addNameRange '1.1.3', +3164 silly addNameRange '1.1.2', +3164 silly addNameRange '1.1.1', +3164 silly addNameRange '1.1.0', +3164 silly addNameRange '1.0.0', +3164 silly addNameRange '0.7.1', +3164 silly addNameRange '0.7.0', +3164 silly addNameRange '0.6.0', +3164 silly addNameRange '0.5.1', +3164 silly addNameRange '0.5.0', +3164 silly addNameRange '0.4.1', +3164 silly addNameRange '0.4.0', +3164 silly addNameRange '0.3.5', +3164 silly addNameRange '0.3.4', +3164 silly addNameRange '0.3.3', +3164 silly addNameRange '0.3.2', +3164 silly addNameRange '0.3.1', +3164 silly addNameRange '0.3.0', +3164 silly addNameRange '0.2.6', +3164 silly addNameRange '0.2.5', +3164 silly addNameRange '0.2.4', +3164 silly addNameRange '0.2.3', +3164 silly addNameRange '0.2.2', +3164 silly addNameRange '0.2.1', +3164 silly addNameRange '0.2.0', +3164 silly addNameRange '0.1.0' ] ] +3165 silly addNamed convert-source-map@1.2.0 +3166 verbose addNamed "1.2.0" is a plain semver version for convert-source-map +3167 silly gunzTarPerm extractEntry .npmignore +3168 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] +3169 silly gunzTarPerm extractEntry README.md +3170 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] +3171 silly gunzTarPerm extractEntry test/clobber.js +3172 silly gunzTarPerm extractEntry test/umask_sync.js +3173 silly gunzTarPerm extractEntry readme.md +3174 http 304 http://registry.npm.alibaba-inc.com/lodash._root +3175 verbose headers { server: 'Tengine', +3175 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3175 verbose headers connection: 'keep-alive', +3175 verbose headers etag: '"11ee-PoQ6ahk1bx7NZjJwBalZ+A"', +3175 verbose headers 'x-readtime': '20' } +3176 silly get cb [ 304, +3176 silly get { server: 'Tengine', +3176 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3176 silly get connection: 'keep-alive', +3176 silly get etag: '"11ee-PoQ6ahk1bx7NZjJwBalZ+A"', +3176 silly get 'x-readtime': '20' } ] +3177 verbose etag http://registry.npm.alibaba-inc.com/lodash._root from cache +3178 verbose get saving lodash._root to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/lodash._root/.cache.json +3179 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3180 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate +3181 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args +3182 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +3183 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits +3184 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +3185 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray +3186 verbose lock using /home/ruanyf/.tnpm/_locks/first-chunk-stream-8f8e638611f67384.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream +3187 verbose lock using /home/ruanyf/.tnpm/_locks/is-utf8-3fff051c3e4a800b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 +3188 silly gunzTarPerm extractEntry readme.md +3189 silly gunzTarPerm extractEntry LICENSE +3190 silly gunzTarPerm extractEntry index.js +3191 silly gunzTarPerm extractEntry .travis.yml +3192 silly gunzTarPerm extractEntry coverage/coverage.json +3193 silly gunzTarPerm extractEntry coverage/lcov-report/prettify.js +3194 silly gunzTarPerm extractEntry coverage/lcov-report/sorter.js +3195 silly gunzTarPerm extractEntry coverage/lcov-report/base.css +3196 silly gunzTarPerm extractEntry coverage/lcov-report/cli-width/index.html +3197 silly gunzTarPerm extractEntry coverage/lcov-report/cli-width/index.js.html +3198 silly gunzTarPerm extractEntry coverage/lcov-report/index.html +3199 silly gunzTarPerm extractEntry coverage/lcov-report/prettify.css +3200 silly gunzTarPerm extractEntry coverage/lcov-report/sort-arrow-sprite.png +3201 silly gunzTarPerm extractEntry coverage/lcov.info +3202 silly gunzTarPerm extractEntry LICENSE +3203 silly gunzTarPerm extractEntry index.js +3204 silly gunzTarPerm extractEntry mute.js +3205 silly gunzTarPerm extractEntry .travis.yml +3206 silly gunzTarPerm extractEntry readme.md +3207 silly gunzTarPerm extractEntry readme.md +3208 silly gunzTarPerm extractEntry LICENSE.APACHE2 +3209 silly gunzTarPerm extractEntry LICENSE.MIT +3210 info linkStuff graceful-fs@4.1.4 +3211 silly linkStuff graceful-fs@4.1.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +3212 silly linkStuff graceful-fs@4.1.4 is part of a global install +3213 silly linkStuff graceful-fs@4.1.4 is installed into a global node_modules +3214 silly gunzTarPerm extractEntry readme.md +3215 silly gunzTarPerm extractEntry readme.md +3216 silly gunzTarPerm extractEntry readme.md +3217 silly gunzTarPerm extractEntry .jamignore +3218 silly gunzTarPerm extractEntry .jscsrc +3219 silly cache afterAdd to-absolute-glob@0.1.1 +3220 verbose afterAdd /home/ruanyf/.tnpm/to-absolute-glob/0.1.1/package/package.json not in flight; writing +3221 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3222 silly install write writing first-chunk-stream 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream +3223 silly gunzTarPerm extractEntry _cloneBuffer.js +3224 silly gunzTarPerm extractEntry create.js +3225 silly install write writing is-utf8 0.2.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 +3226 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/package.json +3227 silly cache afterAdd ordered-read-streams@0.3.0 +3228 verbose afterAdd /home/ruanyf/.tnpm/ordered-read-streams/0.3.0/package/package.json not in flight; writing +3229 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3230 silly cache afterAdd extend@3.0.0 +3231 verbose afterAdd /home/ruanyf/.tnpm/extend/3.0.0/package/package.json not in flight; writing +3232 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3233 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate is being purged from base /home/ruanyf/npm-global +3234 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate +3235 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args is being purged from base /home/ruanyf/npm-global +3236 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args +3237 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is is being purged from base /home/ruanyf/npm-global +3238 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +3239 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits is being purged from base /home/ruanyf/npm-global +3240 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits +3241 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder is being purged from base /home/ruanyf/npm-global +3242 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +3243 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray is being purged from base /home/ruanyf/npm-global +3244 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray +3245 verbose linkBins graceful-fs@4.1.4 +3246 verbose linkMans graceful-fs@4.1.4 +3247 verbose rebuildBundles graceful-fs@4.1.4 +3248 silly cache add args [ 'end-of-stream@1.0.0', null ] +3249 verbose cache add spec end-of-stream@1.0.0 +3250 silly cache add parsed spec Result { +3250 silly cache add raw: 'end-of-stream@1.0.0', +3250 silly cache add scope: null, +3250 silly cache add name: 'end-of-stream', +3250 silly cache add rawSpec: '1.0.0', +3250 silly cache add spec: '1.0.0', +3250 silly cache add type: 'version' } +3251 silly addNamed end-of-stream@1.0.0 +3252 verbose addNamed "1.0.0" is a plain semver version for end-of-stream +3253 silly mapToRegistry name end-of-stream +3254 silly mapToRegistry using default registry +3255 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3256 silly mapToRegistry data Result { +3256 silly mapToRegistry raw: 'end-of-stream', +3256 silly mapToRegistry scope: null, +3256 silly mapToRegistry name: 'end-of-stream', +3256 silly mapToRegistry rawSpec: '', +3256 silly mapToRegistry spec: 'latest', +3256 silly mapToRegistry type: 'tag' } +3257 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/end-of-stream +3258 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/end-of-stream not in flight; fetching +3259 silly cache add args [ 'inherits@^2.0.1', null ] +3260 verbose cache add spec inherits@^2.0.1 +3261 silly cache add parsed spec Result { +3261 silly cache add raw: 'inherits@^2.0.1', +3261 silly cache add scope: null, +3261 silly cache add name: 'inherits', +3261 silly cache add rawSpec: '^2.0.1', +3261 silly cache add spec: '>=2.0.1 <3.0.0', +3261 silly cache add type: 'range' } +3262 silly addNamed inherits@>=2.0.1 <3.0.0 +3263 verbose addNamed ">=2.0.1 <3.0.0" is a valid semver range for inherits +3264 silly addNameRange { name: 'inherits', range: '>=2.0.1 <3.0.0', hasData: false } +3265 silly mapToRegistry name inherits +3266 silly mapToRegistry using default registry +3267 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3268 silly mapToRegistry data Result { +3268 silly mapToRegistry raw: 'inherits', +3268 silly mapToRegistry scope: null, +3268 silly mapToRegistry name: 'inherits', +3268 silly mapToRegistry rawSpec: '', +3268 silly mapToRegistry spec: 'latest', +3268 silly mapToRegistry type: 'tag' } +3269 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits +3270 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching +3271 verbose afterAdd /home/ruanyf/.tnpm/glob-parent/2.0.0/package/package.json written +3272 verbose afterAdd /home/ruanyf/.tnpm/unique-stream/2.2.1/package/package.json written +3273 verbose tar unpack /home/ruanyf/.tnpm/util-deprecate/1.0.2/package.tgz +3274 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate +3275 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate is being purged +3276 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate +3277 verbose tar unpack /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package.tgz +3278 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args +3279 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args is being purged +3280 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args +3281 verbose tar unpack /home/ruanyf/.tnpm/core-util-is/1.0.2/package.tgz +3282 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +3283 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is is being purged +3284 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +3285 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz +3286 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits +3287 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits is being purged +3288 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits +3289 verbose tar unpack /home/ruanyf/.tnpm/string_decoder/0.10.31/package.tgz +3290 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +3291 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder is being purged +3292 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +3293 verbose tar unpack /home/ruanyf/.tnpm/isarray/1.0.0/package.tgz +3294 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray +3295 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray is being purged +3296 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray +3297 info install graceful-fs@4.1.4 +3298 silly cache afterAdd convert-source-map@1.2.0 +3299 verbose afterAdd /home/ruanyf/.tnpm/convert-source-map/1.2.0/package/package.json not in flight; writing +3300 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3301 silly gunzTarPerm modes [ '755', '644' ] +3302 silly gunzTarPerm modes [ '755', '644' ] +3303 silly gunzTarPerm modes [ '755', '644' ] +3304 silly gunzTarPerm modes [ '755', '644' ] +3305 silly gunzTarPerm modes [ '755', '644' ] +3306 silly gunzTarPerm modes [ '755', '644' ] +3307 http 200 http://registry.npm.alibaba-inc.com/lodash.keys +3308 verbose headers { server: 'Tengine', +3308 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3308 verbose headers 'content-type': 'application/json; charset=utf-8', +3308 verbose headers 'transfer-encoding': 'chunked', +3308 verbose headers connection: 'keep-alive', +3308 verbose headers vary: 'Accept-Encoding', +3308 verbose headers 'x-readtime': '40', +3308 verbose headers 'content-encoding': 'gzip' } +3309 silly get cb [ 200, +3309 silly get { server: 'Tengine', +3309 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3309 silly get 'content-type': 'application/json; charset=utf-8', +3309 silly get 'transfer-encoding': 'chunked', +3309 silly get connection: 'keep-alive', +3309 silly get vary: 'Accept-Encoding', +3309 silly get 'x-readtime': '40', +3309 silly get 'content-encoding': 'gzip' } ] +3310 verbose get saving lodash.keys to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/lodash.keys/.cache.json +3311 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3312 info preinstall vinyl@1.1.1 +3313 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream +3314 verbose afterAdd /home/ruanyf/.tnpm/to-absolute-glob/0.1.1/package/package.json written +3315 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 +3316 info postinstall graceful-fs@4.1.4 +3317 http 304 http://registry.npm.alibaba-inc.com/micromatch +3318 verbose headers { server: 'Tengine', +3318 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3318 verbose headers connection: 'keep-alive', +3318 verbose headers etag: '"1ada2-nMnnuVjpmwNfr0jJonuQmw"', +3318 verbose headers 'x-readtime': '110' } +3319 silly get cb [ 304, +3319 silly get { server: 'Tengine', +3319 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3319 silly get connection: 'keep-alive', +3319 silly get etag: '"1ada2-nMnnuVjpmwNfr0jJonuQmw"', +3319 silly get 'x-readtime': '110' } ] +3320 verbose etag http://registry.npm.alibaba-inc.com/micromatch from cache +3321 verbose get saving micromatch to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/micromatch/.cache.json +3322 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3323 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/package.json +3324 silly addNameRange number 2 { name: 'lodash._root', range: '>=3.0.0 <3.1.0', hasData: true } +3325 silly addNameRange versions [ 'lodash._root', [ '3.0.1', '3.0.0' ] ] +3326 silly addNamed lodash._root@3.0.1 +3327 verbose addNamed "3.0.1" is a plain semver version for lodash._root +3328 verbose afterAdd /home/ruanyf/.tnpm/ordered-read-streams/0.3.0/package/package.json written +3329 verbose afterAdd /home/ruanyf/.tnpm/extend/3.0.0/package/package.json written +3330 silly gunzTarPerm extractEntry LICENCE +3331 silly gunzTarPerm modified mode [ 'LICENCE', 436, 420 ] +3332 silly gunzTarPerm extractEntry immutable.js +3333 silly gunzTarPerm modified mode [ 'immutable.js', 436, 420 ] +3334 silly gunzTarPerm extractEntry test/race.js +3335 silly gunzTarPerm extractEntry test.js +3336 silly gunzTarPerm extractEntry .travis.yml +3337 verbose request uri http://registry.npm.alibaba-inc.com/end-of-stream +3338 verbose request no auth needed +3339 info attempt registry request try #1 at 上午9:12:29 +3340 verbose etag "2b37-lC4Q3xDLsfexs8mFXY5tgw" +3341 http request GET http://registry.npm.alibaba-inc.com/end-of-stream +3342 verbose get http://registry.npm.alibaba-inc.com/inherits not expired, no request +3343 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.1 <3.0.0', hasData: true } +3344 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] +3345 silly addNamed inherits@2.0.1 +3346 verbose addNamed "2.0.1" is a plain semver version for inherits +3347 silly gunzTarPerm extractEntry .jscsrc.todo +3348 silly gunzTarPerm extractEntry .editorconfig +3349 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream is being purged from base /home/ruanyf/npm-global +3350 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream +3351 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 is being purged from base /home/ruanyf/npm-global +3352 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 +3353 silly gunzTarPerm extractEntry test/basic.js +3354 silly gunzTarPerm extractEntry readme.markdown +3355 silly gunzTarPerm extractEntry test/async.js +3356 verbose unlock done using /home/ruanyf/.tnpm/_locks/graceful-fs-8c6e88eb9b5c7f99.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs +3357 verbose afterAdd /home/ruanyf/.tnpm/convert-source-map/1.2.0/package/package.json written +3358 silly install resolved [ { name: 'convert-source-map', +3358 silly install resolved version: '1.2.0', +3358 silly install resolved description: 'Converts a source-map from/to different formats and allows adding/changing properties.', +3358 silly install resolved main: 'index.js', +3358 silly install resolved scripts: { test: 'tap test/*.js' }, +3358 silly install resolved repository: +3358 silly install resolved { type: 'git', +3358 silly install resolved url: 'git://github.com/thlorenz/convert-source-map.git' }, +3358 silly install resolved homepage: 'https://github.com/thlorenz/convert-source-map', +3358 silly install resolved dependencies: {}, +3358 silly install resolved devDependencies: { 'inline-source-map': '~0.3.1', tap: '~0.4.13' }, +3358 silly install resolved keywords: [ 'convert', 'sourcemap', 'source', 'map', 'browser', 'debug' ], +3358 silly install resolved author: +3358 silly install resolved { name: 'Thorsten Lorenz', +3358 silly install resolved email: 'thlorenz@gmx.de', +3358 silly install resolved url: 'http://thlorenz.com' }, +3358 silly install resolved license: 'MIT', +3358 silly install resolved engine: { node: '>=0.6' }, +3358 silly install resolved gitHead: 'c840d5ab5a1cfa4c8eb902283cac3fb120a6f466', +3358 silly install resolved bugs: { url: 'https://github.com/thlorenz/convert-source-map/issues' }, +3358 silly install resolved _id: 'convert-source-map@1.2.0', +3358 silly install resolved _shasum: '44c08c2506f10fb3ca6fd888d5a3444cf8d6a669', +3358 silly install resolved _from: 'convert-source-map@>=1.1.1 <2.0.0', +3358 silly install resolved _npmVersion: '2.14.15', +3358 silly install resolved _nodeVersion: '4.3.1-rc.2', +3358 silly install resolved _npmUser: { name: 'thlorenz', email: 'thlorenz@gmx.de' }, +3358 silly install resolved dist: +3358 silly install resolved { shasum: '44c08c2506f10fb3ca6fd888d5a3444cf8d6a669', +3358 silly install resolved size: 7891, +3358 silly install resolved noattachment: false, +3358 silly install resolved key: 'convert-source-map/-/convert-source-map-1.2.0.tgz', +3358 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/convert-source-map/download/convert-source-map-1.2.0.tgz' }, +3358 silly install resolved maintainers: [ [Object] ], +3358 silly install resolved _npmOperationalInternal: +3358 silly install resolved { host: 'packages-5-east.internal.npmjs.com', +3358 silly install resolved tmp: 'tmp/convert-source-map-1.2.0.tgz_1456506734770_0.5290673428680748' }, +3358 silly install resolved directories: {}, +3358 silly install resolved publish_time: 1456506736052, +3358 silly install resolved _cnpm_publish_time: 1456506736052, +3358 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/convert-source-map/download/convert-source-map-1.2.0.tgz', +3358 silly install resolved readme: 'ERROR: No README data found!' } ] +3359 info install convert-source-map@1.2.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps +3360 info installOne convert-source-map@1.2.0 +3361 verbose installOne of convert-source-map to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps not in flight; installing +3362 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3363 silly gunzTarPerm extractEntry package.json +3364 verbose tar unpack /home/ruanyf/.tnpm/first-chunk-stream/1.0.0/package.tgz +3365 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream +3366 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream is being purged +3367 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream +3368 silly gunzTarPerm extractEntry curry.js +3369 silly gunzTarPerm extractEntry _checkGlobal.js +3370 verbose tar unpack /home/ruanyf/.tnpm/is-utf8/0.2.1/package.tgz +3371 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 +3372 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 is being purged +3373 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 +3374 silly gunzTarPerm extractEntry package.json +3375 silly gunzTarPerm extractEntry package.json +3376 silly gunzTarPerm extractEntry package.json +3377 silly gunzTarPerm extractEntry package.json +3378 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] +3379 silly gunzTarPerm extractEntry package.json +3380 silly gunzTarPerm modes [ '755', '644' ] +3381 silly gunzTarPerm modes [ '755', '644' ] +3382 verbose lock using /home/ruanyf/.tnpm/_locks/convert-source-map-1e2549d3702e64b0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map +3383 silly install write writing convert-source-map 1.2.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map +3384 silly prepareForInstallMany adding clone@^1.0.0 from vinyl dependencies +3385 silly prepareForInstallMany adding clone-stats@^0.0.1 from vinyl dependencies +3386 silly prepareForInstallMany adding replace-ext@0.0.1 from vinyl dependencies +3387 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/package.json +3388 silly addNameRange number 2 { name: 'lodash.keys', range: '>=4.0.0 <5.0.0', hasData: true } +3389 silly addNameRange versions [ 'lodash.keys', +3389 silly addNameRange [ '4.0.7', +3389 silly addNameRange '4.0.6', +3389 silly addNameRange '4.0.5', +3389 silly addNameRange '4.0.4', +3389 silly addNameRange '4.0.3', +3389 silly addNameRange '4.0.2', +3389 silly addNameRange '4.0.1', +3389 silly addNameRange '4.0.0', +3389 silly addNameRange '3.1.2', +3389 silly addNameRange '3.1.1', +3389 silly addNameRange '3.1.0', +3389 silly addNameRange '3.0.7', +3389 silly addNameRange '3.0.6', +3389 silly addNameRange '3.0.5', +3389 silly addNameRange '3.0.4', +3389 silly addNameRange '3.0.3', +3389 silly addNameRange '3.0.2', +3389 silly addNameRange '3.0.1', +3389 silly addNameRange '3.0.0', +3389 silly addNameRange '2.4.1', +3389 silly addNameRange '2.4.0', +3389 silly addNameRange '2.3.0', +3389 silly addNameRange '2.2.1', +3389 silly addNameRange '2.2.0', +3389 silly addNameRange '2.1.0', +3389 silly addNameRange '2.0.0' ] ] +3390 silly addNamed lodash.keys@4.0.7 +3391 verbose addNamed "4.0.7" is a plain semver version for lodash.keys +3392 silly gunzTarPerm extractEntry README.md +3393 silly gunzTarPerm extractEntry LICENSE +3394 silly cache afterAdd inherits@2.0.1 +3395 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing +3396 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3397 silly cache afterAdd lodash._root@3.0.1 +3398 verbose afterAdd /home/ruanyf/.tnpm/lodash._root/3.0.1/package/package.json not in flight; writing +3399 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3400 silly addNameRange number 2 { name: 'micromatch', range: '>=2.3.7 <3.0.0', hasData: true } +3401 silly addNameRange versions [ 'micromatch', +3401 silly addNameRange [ '2.3.8', +3401 silly addNameRange '2.3.7', +3401 silly addNameRange '2.3.6', +3401 silly addNameRange '2.3.5', +3401 silly addNameRange '2.3.4', +3401 silly addNameRange '2.3.3', +3401 silly addNameRange '2.3.2', +3401 silly addNameRange '2.3.1', +3401 silly addNameRange '2.3.0', +3401 silly addNameRange '2.2.0', +3401 silly addNameRange '2.1.6', +3401 silly addNameRange '2.1.5', +3401 silly addNameRange '2.1.4', +3401 silly addNameRange '2.1.3', +3401 silly addNameRange '2.1.2', +3401 silly addNameRange '2.1.1', +3401 silly addNameRange '2.1.0', +3401 silly addNameRange '2.0.0', +3401 silly addNameRange '1.6.2', +3401 silly addNameRange '1.6.1', +3401 silly addNameRange '1.6.0', +3401 silly addNameRange '1.5.0', +3401 silly addNameRange '1.4.5', +3401 silly addNameRange '1.4.4', +3401 silly addNameRange '1.4.3', +3401 silly addNameRange '1.4.2', +3401 silly addNameRange '1.4.1', +3401 silly addNameRange '1.4.0', +3401 silly addNameRange '1.3.3', +3401 silly addNameRange '1.3.2', +3401 silly addNameRange '1.3.1', +3401 silly addNameRange '1.3.0', +3401 silly addNameRange '1.2.2', +3401 silly addNameRange '1.2.0', +3401 silly addNameRange '1.0.1', +3401 silly addNameRange '1.0.0', +3401 silly addNameRange '0.2.2', +3401 silly addNameRange '0.2.1', +3401 silly addNameRange '0.2.0', +3401 silly addNameRange '0.1.0' ] ] +3402 silly addNamed micromatch@2.3.8 +3403 verbose addNamed "2.3.8" is a plain semver version for micromatch +3404 silly mapToRegistry name lodash.keys +3405 silly mapToRegistry using default registry +3406 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3407 silly mapToRegistry data Result { +3407 silly mapToRegistry raw: 'lodash.keys', +3407 silly mapToRegistry scope: null, +3407 silly mapToRegistry name: 'lodash.keys', +3407 silly mapToRegistry rawSpec: '', +3407 silly mapToRegistry spec: 'latest', +3407 silly mapToRegistry type: 'tag' } +3408 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/lodash.keys +3409 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz not in flight; adding +3410 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz', +3410 verbose addRemoteTarball '30e1b3bd98e54d6a0611991812685b6bc47cb63b' ] +3411 silly gunzTarPerm extractEntry index.js +3412 silly gunzTarPerm extractEntry test.js +3413 silly gunzTarPerm extractEntry README.md +3414 silly gunzTarPerm extractEntry LICENSE +3415 silly gunzTarPerm extractEntry README.md +3416 silly gunzTarPerm extractEntry LICENSE +3417 silly gunzTarPerm extractEntry .npmignore +3418 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] +3419 silly gunzTarPerm extractEntry README.md +3420 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] +3421 silly gunzTarPerm extractEntry .npmignore +3422 silly gunzTarPerm extractEntry README.md +3423 silly gunzTarPerm extractEntry mutable.js +3424 silly gunzTarPerm modified mode [ 'mutable.js', 436, 420 ] +3425 silly gunzTarPerm extractEntry test.js +3426 silly gunzTarPerm modified mode [ 'test.js', 436, 420 ] +3427 silly gunzTarPerm extractEntry package.json +3428 silly gunzTarPerm extractEntry package.json +3429 silly gunzTarPerm extractEntry .jshintrc +3430 silly gunzTarPerm extractEntry .gitattributes +3431 silly gunzTarPerm extractEntry .editorconfig +3432 silly gunzTarPerm extractEntry test/auto-destroy.js +3433 silly gunzTarPerm extractEntry test/buffering.js +3434 silly gunzTarPerm extractEntry authors.txt +3435 silly gunzTarPerm extractEntry bower.json +3436 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map +3437 info retry fetch attempt 1 at 上午9:12:29 +3438 info attempt registry request try #1 at 上午9:12:29 +3439 http fetch GET http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz +3440 silly gunzTarPerm extractEntry _cloneArrayBuffer.js +3441 silly gunzTarPerm extractEntry countBy.js +3442 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written +3443 verbose afterAdd /home/ruanyf/.tnpm/lodash._root/3.0.1/package/package.json written +3444 silly gunzTarPerm extractEntry index.js +3445 silly gunzTarPerm extractEntry readme.md +3446 silly gunzTarPerm extractEntry README.md +3447 silly gunzTarPerm extractEntry LICENSE +3448 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map is being purged from base /home/ruanyf/npm-global +3449 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map +3450 silly cache afterAdd micromatch@2.3.8 +3451 verbose afterAdd /home/ruanyf/.tnpm/micromatch/2.3.8/package/package.json not in flight; writing +3452 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3453 silly cache add args [ 'replace-ext@0.0.1', null ] +3454 verbose cache add spec replace-ext@0.0.1 +3455 silly cache add parsed spec Result { +3455 silly cache add raw: 'replace-ext@0.0.1', +3455 silly cache add scope: null, +3455 silly cache add name: 'replace-ext', +3455 silly cache add rawSpec: '0.0.1', +3455 silly cache add spec: '0.0.1', +3455 silly cache add type: 'version' } +3456 silly addNamed replace-ext@0.0.1 +3457 verbose addNamed "0.0.1" is a plain semver version for replace-ext +3458 silly mapToRegistry name replace-ext +3459 silly mapToRegistry using default registry +3460 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3461 silly mapToRegistry data Result { +3461 silly mapToRegistry raw: 'replace-ext', +3461 silly mapToRegistry scope: null, +3461 silly mapToRegistry name: 'replace-ext', +3461 silly mapToRegistry rawSpec: '', +3461 silly mapToRegistry spec: 'latest', +3461 silly mapToRegistry type: 'tag' } +3462 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/replace-ext +3463 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/replace-ext not in flight; fetching +3464 silly cache add args [ 'clone@^1.0.0', null ] +3465 verbose cache add spec clone@^1.0.0 +3466 silly cache add parsed spec Result { +3466 silly cache add raw: 'clone@^1.0.0', +3466 silly cache add scope: null, +3466 silly cache add name: 'clone', +3466 silly cache add rawSpec: '^1.0.0', +3466 silly cache add spec: '>=1.0.0 <2.0.0', +3466 silly cache add type: 'range' } +3467 silly addNamed clone@>=1.0.0 <2.0.0 +3468 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for clone +3469 silly addNameRange { name: 'clone', range: '>=1.0.0 <2.0.0', hasData: false } +3470 silly mapToRegistry name clone +3471 silly mapToRegistry using default registry +3472 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3473 silly mapToRegistry data Result { +3473 silly mapToRegistry raw: 'clone', +3473 silly mapToRegistry scope: null, +3473 silly mapToRegistry name: 'clone', +3473 silly mapToRegistry rawSpec: '', +3473 silly mapToRegistry spec: 'latest', +3473 silly mapToRegistry type: 'tag' } +3474 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/clone +3475 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/clone not in flight; fetching +3476 verbose tar unpack /home/ruanyf/.tnpm/convert-source-map/1.2.0/package.tgz +3477 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map +3478 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map is being purged +3479 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map +3480 silly cache add args [ 'clone-stats@^0.0.1', null ] +3481 verbose cache add spec clone-stats@^0.0.1 +3482 silly cache add parsed spec Result { +3482 silly cache add raw: 'clone-stats@^0.0.1', +3482 silly cache add scope: null, +3482 silly cache add name: 'clone-stats', +3482 silly cache add rawSpec: '^0.0.1', +3482 silly cache add spec: '>=0.0.1 <0.0.2', +3482 silly cache add type: 'range' } +3483 silly addNamed clone-stats@>=0.0.1 <0.0.2 +3484 verbose addNamed ">=0.0.1 <0.0.2" is a valid semver range for clone-stats +3485 silly addNameRange { name: 'clone-stats', range: '>=0.0.1 <0.0.2', hasData: false } +3486 silly mapToRegistry name clone-stats +3487 silly mapToRegistry using default registry +3488 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3489 silly mapToRegistry data Result { +3489 silly mapToRegistry raw: 'clone-stats', +3489 silly mapToRegistry scope: null, +3489 silly mapToRegistry name: 'clone-stats', +3489 silly mapToRegistry rawSpec: '', +3489 silly mapToRegistry spec: 'latest', +3489 silly mapToRegistry type: 'tag' } +3490 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/clone-stats +3491 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/clone-stats not in flight; fetching +3492 silly gunzTarPerm modes [ '755', '644' ] +3493 silly gunzTarPerm extractEntry browser.js +3494 silly gunzTarPerm extractEntry node.js +3495 silly gunzTarPerm extractEntry inherits.js +3496 silly gunzTarPerm extractEntry inherits_browser.js +3497 http 304 http://registry.npm.alibaba-inc.com/end-of-stream +3498 verbose headers { server: 'Tengine', +3498 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3498 verbose headers connection: 'keep-alive', +3498 verbose headers etag: '"2b37-lC4Q3xDLsfexs8mFXY5tgw"', +3498 verbose headers 'x-readtime': '22' } +3499 silly get cb [ 304, +3499 silly get { server: 'Tengine', +3499 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3499 silly get connection: 'keep-alive', +3499 silly get etag: '"2b37-lC4Q3xDLsfexs8mFXY5tgw"', +3499 silly get 'x-readtime': '22' } ] +3500 verbose etag http://registry.npm.alibaba-inc.com/end-of-stream from cache +3501 verbose get saving end-of-stream to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/end-of-stream/.cache.json +3502 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3503 silly gunzTarPerm extractEntry .travis.yml +3504 silly gunzTarPerm extractEntry license.md +3505 silly gunzTarPerm extractEntry test.js +3506 silly gunzTarPerm extractEntry float.patch +3507 silly gunzTarPerm extractEntry index.js +3508 silly gunzTarPerm extractEntry test.js +3509 silly gunzTarPerm extractEntry LICENSE +3510 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ] +3511 silly gunzTarPerm extractEntry index.js +3512 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ] +3513 silly gunzTarPerm extractEntry .jshintrc +3514 silly gunzTarPerm modified mode [ '.jshintrc', 436, 420 ] +3515 silly gunzTarPerm extractEntry Makefile +3516 silly gunzTarPerm modified mode [ 'Makefile', 436, 420 ] +3517 silly gunzTarPerm extractEntry code-of-conduct.md +3518 silly gunzTarPerm modified mode [ 'code-of-conduct.md', 384, 420 ] +3519 silly gunzTarPerm extractEntry .coveralls.yml +3520 verbose afterAdd /home/ruanyf/.tnpm/micromatch/2.3.8/package/package.json written +3521 silly gunzTarPerm extractEntry test/end.js +3522 verbose request uri http://registry.npm.alibaba-inc.com/replace-ext +3523 verbose request no auth needed +3524 info attempt registry request try #1 at 上午9:12:29 +3525 verbose etag "d79-GYBSaDhg5TuKvHAumQnYpQ" +3526 http request GET http://registry.npm.alibaba-inc.com/replace-ext +3527 verbose request uri http://registry.npm.alibaba-inc.com/clone +3528 verbose request no auth needed +3529 info attempt registry request try #1 at 上午9:12:29 +3530 verbose etag "e7e0-KXN0RDf0KYD4qYqwymjlGg" +3531 http request GET http://registry.npm.alibaba-inc.com/clone +3532 silly gunzTarPerm extractEntry deburr.js +3533 verbose request uri http://registry.npm.alibaba-inc.com/clone-stats +3534 verbose request no auth needed +3535 info attempt registry request try #1 at 上午9:12:29 +3536 verbose etag "f7f-q74EEwP+QRm1cugmBw7xVQ" +3537 http request GET http://registry.npm.alibaba-inc.com/clone-stats +3538 silly gunzTarPerm extractEntry package.json +3539 silly gunzTarPerm extractEntry defaults.js +3540 silly gunzTarPerm extractEntry is-utf8.js +3541 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream/package.json +3542 silly gunzTarPerm extractEntry History.md +3543 silly gunzTarPerm extractEntry .npmignore +3544 silly gunzTarPerm extractEntry README.md +3545 silly gunzTarPerm extractEntry lib/util.js +3546 silly gunzTarPerm extractEntry test.js +3547 silly gunzTarPerm extractEntry .travis.yml +3548 silly gunzTarPerm extractEntry Makefile +3549 silly gunzTarPerm extractEntry readme.md +3550 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/package.json +3551 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/package.json +3552 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/package.json +3553 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/package.json +3554 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes/package.json +3555 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/package.json +3556 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/package.json +3557 silly gunzTarPerm extractEntry contributing.md +3558 silly gunzTarPerm modified mode [ 'contributing.md', 384, 420 ] +3559 silly gunzTarPerm extractEntry test/index.js +3560 info preinstall lazystream@1.0.0 +3561 silly gunzTarPerm extractEntry defaultsDeep.js +3562 silly gunzTarPerm extractEntry defer.js +3563 info preinstall cli-cursor@1.0.2 +3564 info preinstall pinkie-promise@2.0.1 +3565 info preinstall strip-ansi@3.0.1 +3566 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream/package.json +3567 silly cache afterAdd end-of-stream@1.0.0 +3568 verbose afterAdd /home/ruanyf/.tnpm/end-of-stream/1.0.0/package/package.json not in flight; writing +3569 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3570 info preinstall string-width@1.0.1 +3571 info preinstall ansi-escapes@1.4.0 +3572 info preinstall figures@1.7.0 +3573 info preinstall chalk@1.1.3 +3574 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/package.json +3575 http 304 http://registry.npm.alibaba-inc.com/replace-ext +3576 verbose headers { server: 'Tengine', +3576 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3576 verbose headers connection: 'keep-alive', +3576 verbose headers etag: '"d79-GYBSaDhg5TuKvHAumQnYpQ"', +3576 verbose headers 'x-readtime': '21' } +3577 silly get cb [ 304, +3577 silly get { server: 'Tengine', +3577 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3577 silly get connection: 'keep-alive', +3577 silly get etag: '"d79-GYBSaDhg5TuKvHAumQnYpQ"', +3577 silly get 'x-readtime': '21' } ] +3578 verbose etag http://registry.npm.alibaba-inc.com/replace-ext from cache +3579 verbose get saving replace-ext to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/replace-ext/.cache.json +3580 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3581 http fetch 200 http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz +3582 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/package.json +3583 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/package.json +3584 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/package.json +3585 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes/package.json +3586 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/package.json +3587 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/package.json +3588 silly gunzTarPerm extractEntry LICENSE +3589 silly gunzTarPerm extractEntry index.js +3590 silly gunzTarPerm extractEntry component.json +3591 http 200 http://registry.npm.alibaba-inc.com/clone-stats +3592 verbose headers { server: 'Tengine', +3592 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3592 verbose headers 'content-type': 'application/json; charset=utf-8', +3592 verbose headers 'transfer-encoding': 'chunked', +3592 verbose headers connection: 'keep-alive', +3592 verbose headers vary: 'Accept-Encoding', +3592 verbose headers 'x-readtime': '22', +3592 verbose headers 'content-encoding': 'gzip' } +3593 silly get cb [ 200, +3593 silly get { server: 'Tengine', +3593 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3593 silly get 'content-type': 'application/json; charset=utf-8', +3593 silly get 'transfer-encoding': 'chunked', +3593 silly get connection: 'keep-alive', +3593 silly get vary: 'Accept-Encoding', +3593 silly get 'x-readtime': '22', +3593 silly get 'content-encoding': 'gzip' } ] +3594 verbose get saving clone-stats to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/clone-stats/.cache.json +3595 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3596 silly gunzTarPerm extractEntry dist/rx.aggregates.js +3597 silly gunzTarPerm extractEntry dist/rx.binding.min.js +3598 verbose afterAdd /home/ruanyf/.tnpm/end-of-stream/1.0.0/package/package.json written +3599 silly install resolved [ { name: 'inherits', +3599 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', +3599 silly install resolved version: '2.0.1', +3599 silly install resolved keywords: +3599 silly install resolved [ 'inheritance', +3599 silly install resolved 'class', +3599 silly install resolved 'klass', +3599 silly install resolved 'oop', +3599 silly install resolved 'object-oriented', +3599 silly install resolved 'inherits', +3599 silly install resolved 'browser', +3599 silly install resolved 'browserify' ], +3599 silly install resolved main: './inherits.js', +3599 silly install resolved browser: './inherits_browser.js', +3599 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, +3599 silly install resolved license: 'ISC', +3599 silly install resolved scripts: { test: 'node test' }, +3599 silly install resolved readmeFilename: 'README.md', +3599 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, +3599 silly install resolved _id: 'inherits@2.0.1', +3599 silly install resolved dist: +3599 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +3599 silly install resolved size: 2122, +3599 silly install resolved noattachment: false, +3599 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', +3599 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, +3599 silly install resolved _from: 'inherits@>=2.0.1 <3.0.0', +3599 silly install resolved _npmVersion: '1.3.8', +3599 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +3599 silly install resolved maintainers: [ [Object] ], +3599 silly install resolved directories: {}, +3599 silly install resolved publish_time: 1376950220463, +3599 silly install resolved _cnpm_publish_time: 1376950220463, +3599 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +3599 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', +3599 silly install resolved readme: 'ERROR: No README data found!', +3599 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' }, +3599 silly install resolved { name: 'end-of-stream', +3599 silly install resolved version: '1.0.0', +3599 silly install resolved description: 'Call a callback when a readable/writable/duplex stream has completed or failed.', +3599 silly install resolved repository: +3599 silly install resolved { type: 'git', +3599 silly install resolved url: 'git://github.com/mafintosh/end-of-stream.git' }, +3599 silly install resolved dependencies: { once: '~1.3.0' }, +3599 silly install resolved scripts: { test: 'node test.js' }, +3599 silly install resolved keywords: [ 'stream', 'streams', 'callback', 'finish', 'close', 'end', 'wait' ], +3599 silly install resolved bugs: { url: 'https://github.com/mafintosh/end-of-stream/issues' }, +3599 silly install resolved homepage: 'https://github.com/mafintosh/end-of-stream', +3599 silly install resolved main: 'index.js', +3599 silly install resolved author: { name: 'Mathias Buus', email: 'mathiasbuus@gmail.com' }, +3599 silly install resolved license: 'MIT', +3599 silly install resolved _id: 'end-of-stream@1.0.0', +3599 silly install resolved _shasum: 'd4596e702734a93e40e9af864319eabd99ff2f0e', +3599 silly install resolved _from: 'end-of-stream@1.0.0', +3599 silly install resolved _npmVersion: '1.4.9', +3599 silly install resolved _npmUser: { name: 'mafintosh', email: 'mathiasbuus@gmail.com' }, +3599 silly install resolved maintainers: [ [Object] ], +3599 silly install resolved dist: +3599 silly install resolved { shasum: 'd4596e702734a93e40e9af864319eabd99ff2f0e', +3599 silly install resolved size: 1702, +3599 silly install resolved noattachment: false, +3599 silly install resolved key: 'end-of-stream/-/end-of-stream-1.0.0.tgz', +3599 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/end-of-stream/download/end-of-stream-1.0.0.tgz' }, +3599 silly install resolved directories: {}, +3599 silly install resolved publish_time: 1405940672385, +3599 silly install resolved _cnpm_publish_time: 1405940672385, +3599 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/end-of-stream/download/end-of-stream-1.0.0.tgz', +3599 silly install resolved readme: 'ERROR: No README data found!' } ] +3600 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify +3601 info install end-of-stream@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify +3602 info installOne inherits@2.0.1 +3603 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify not in flight; installing +3604 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3605 info installOne end-of-stream@1.0.0 +3606 verbose installOne of end-of-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify not in flight; installing +3607 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3608 silly fetchAndShaCheck shasum 30e1b3bd98e54d6a0611991812685b6bc47cb63b +3609 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream/package.json +3610 silly gunzTarPerm extractEntry delay.js +3611 silly gunzTarPerm extractEntry core.min.js +3612 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-5220b4c05119a294.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits +3613 verbose lock using /home/ruanyf/.tnpm/_locks/end-of-stream-202720a5c8d9dbba.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +3614 silly prepareForInstallMany adding restore-cursor@^1.0.1 from cli-cursor dependencies +3615 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/package.json +3616 silly prepareForInstallMany adding pinkie@^2.0.0 from pinkie-promise dependencies +3617 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/package.json +3618 silly prepareForInstallMany adding ansi-regex@^2.0.0 from strip-ansi dependencies +3619 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/package.json +3620 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes/package.json +3621 silly prepareForInstallMany adding code-point-at@^1.0.0 from string-width dependencies +3622 silly prepareForInstallMany adding is-fullwidth-code-point@^1.0.0 from string-width dependencies +3623 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/package.json +3624 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits +3625 silly install write writing end-of-stream 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +3626 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz not in flight; adding +3627 verbose addTmpTarball already have metadata; skipping unpack for lodash.keys@4.0.7 +3628 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3629 silly prepareForInstallMany adding ansi-styles@^2.2.1 from chalk dependencies +3630 silly prepareForInstallMany adding escape-string-regexp@^1.0.2 from chalk dependencies +3631 silly prepareForInstallMany adding has-ansi@^2.0.0 from chalk dependencies +3632 silly prepareForInstallMany adding supports-color@^2.0.0 from chalk dependencies +3633 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/package.json +3634 http 200 http://registry.npm.alibaba-inc.com/glob +3635 verbose headers { server: 'Tengine', +3635 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3635 verbose headers 'content-type': 'application/json; charset=utf-8', +3635 verbose headers 'transfer-encoding': 'chunked', +3635 verbose headers connection: 'keep-alive', +3635 verbose headers vary: 'Accept-Encoding', +3635 verbose headers 'x-readtime': '183', +3635 verbose headers 'content-encoding': 'gzip' } +3636 silly get cb [ 200, +3636 silly get { server: 'Tengine', +3636 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3636 silly get 'content-type': 'application/json; charset=utf-8', +3636 silly get 'transfer-encoding': 'chunked', +3636 silly get connection: 'keep-alive', +3636 silly get vary: 'Accept-Encoding', +3636 silly get 'x-readtime': '183', +3636 silly get 'content-encoding': 'gzip' } ] +3637 verbose get saving glob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/glob/.cache.json +3638 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3639 silly gunzTarPerm extractEntry .travis.yml +3640 silly gunzTarPerm extractEntry example/comment-to-json.js +3641 silly gunzTarPerm extractEntry test/comment-regex.js +3642 silly gunzTarPerm extractEntry test/convert-source-map.js +3643 silly gunzTarPerm extractEntry test/map-file-comment.js +3644 silly gunzTarPerm extractEntry test/fixtures/map-file-comment-double-slash.css +3645 silly gunzTarPerm extractEntry test/fixtures/map-file-comment-inline.css +3646 silly gunzTarPerm extractEntry test/fixtures/map-file-comment.css +3647 silly gunzTarPerm extractEntry test/fixtures/map-file-comment.css.map +3648 silly install resolved [] +3649 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream +3650 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream +3651 silly addNameRange number 2 { name: 'clone-stats', range: '>=0.0.1 <0.0.2', hasData: true } +3652 silly addNameRange versions [ 'clone-stats', [ '1.0.0', '0.0.1', '0.0.0' ] ] +3653 silly addNamed clone-stats@0.0.1 +3654 verbose addNamed "0.0.1" is a plain semver version for clone-stats +3655 silly gunzTarPerm extractEntry dist/rx.coincidence.js +3656 silly gunzTarPerm extractEntry dist/rx.sorting.js +3657 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits +3658 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +3659 silly prepareForInstallMany adding escape-string-regexp@^1.0.5 from figures dependencies +3660 silly prepareForInstallMany adding object-assign@^4.1.0 from figures dependencies +3661 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/package.json +3662 http 304 http://registry.npm.alibaba-inc.com/clone +3663 verbose headers { server: 'Tengine', +3663 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', +3663 verbose headers connection: 'keep-alive', +3663 verbose headers etag: '"e7e0-KXN0RDf0KYD4qYqwymjlGg"', +3663 verbose headers 'x-readtime': '61' } +3664 silly get cb [ 304, +3664 silly get { server: 'Tengine', +3664 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', +3664 silly get connection: 'keep-alive', +3664 silly get etag: '"e7e0-KXN0RDf0KYD4qYqwymjlGg"', +3664 silly get 'x-readtime': '61' } ] +3665 verbose etag http://registry.npm.alibaba-inc.com/clone from cache +3666 verbose get saving clone to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/clone/.cache.json +3667 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3668 silly install resolved [] +3669 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes +3670 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes +3671 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream/package.json +3672 silly cache add args [ 'restore-cursor@^1.0.1', null ] +3673 verbose cache add spec restore-cursor@^1.0.1 +3674 silly cache add parsed spec Result { +3674 silly cache add raw: 'restore-cursor@^1.0.1', +3674 silly cache add scope: null, +3674 silly cache add name: 'restore-cursor', +3674 silly cache add rawSpec: '^1.0.1', +3674 silly cache add spec: '>=1.0.1 <2.0.0', +3674 silly cache add type: 'range' } +3675 silly addNamed restore-cursor@>=1.0.1 <2.0.0 +3676 verbose addNamed ">=1.0.1 <2.0.0" is a valid semver range for restore-cursor +3677 silly addNameRange { name: 'restore-cursor', +3677 silly addNameRange range: '>=1.0.1 <2.0.0', +3677 silly addNameRange hasData: false } +3678 silly mapToRegistry name restore-cursor +3679 silly mapToRegistry using default registry +3680 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3681 silly mapToRegistry data Result { +3681 silly mapToRegistry raw: 'restore-cursor', +3681 silly mapToRegistry scope: null, +3681 silly mapToRegistry name: 'restore-cursor', +3681 silly mapToRegistry rawSpec: '', +3681 silly mapToRegistry spec: 'latest', +3681 silly mapToRegistry type: 'tag' } +3682 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/restore-cursor +3683 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/restore-cursor not in flight; fetching +3684 silly gunzTarPerm extractEntry difference.js +3685 silly gunzTarPerm extractEntry core.js +3686 silly cache add args [ 'code-point-at@^1.0.0', null ] +3687 verbose cache add spec code-point-at@^1.0.0 +3688 silly cache add args [ 'pinkie@^2.0.0', null ] +3689 verbose cache add spec pinkie@^2.0.0 +3690 silly cache add args [ 'ansi-regex@^2.0.0', null ] +3691 verbose cache add spec ansi-regex@^2.0.0 +3692 silly cache add parsed spec Result { +3692 silly cache add raw: 'code-point-at@^1.0.0', +3692 silly cache add scope: null, +3692 silly cache add name: 'code-point-at', +3692 silly cache add rawSpec: '^1.0.0', +3692 silly cache add spec: '>=1.0.0 <2.0.0', +3692 silly cache add type: 'range' } +3693 silly addNamed code-point-at@>=1.0.0 <2.0.0 +3694 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for code-point-at +3695 silly addNameRange { name: 'code-point-at', +3695 silly addNameRange range: '>=1.0.0 <2.0.0', +3695 silly addNameRange hasData: false } +3696 silly mapToRegistry name code-point-at +3697 silly mapToRegistry using default registry +3698 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3699 silly mapToRegistry data Result { +3699 silly mapToRegistry raw: 'code-point-at', +3699 silly mapToRegistry scope: null, +3699 silly mapToRegistry name: 'code-point-at', +3699 silly mapToRegistry rawSpec: '', +3699 silly mapToRegistry spec: 'latest', +3699 silly mapToRegistry type: 'tag' } +3700 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/code-point-at +3701 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/code-point-at not in flight; fetching +3702 silly cache add parsed spec Result { +3702 silly cache add raw: 'pinkie@^2.0.0', +3702 silly cache add scope: null, +3702 silly cache add name: 'pinkie', +3702 silly cache add rawSpec: '^2.0.0', +3702 silly cache add spec: '>=2.0.0 <3.0.0', +3702 silly cache add type: 'range' } +3703 silly addNamed pinkie@>=2.0.0 <3.0.0 +3704 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for pinkie +3705 silly addNameRange { name: 'pinkie', range: '>=2.0.0 <3.0.0', hasData: false } +3706 silly mapToRegistry name pinkie +3707 silly mapToRegistry using default registry +3708 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3709 silly mapToRegistry data Result { +3709 silly mapToRegistry raw: 'pinkie', +3709 silly mapToRegistry scope: null, +3709 silly mapToRegistry name: 'pinkie', +3709 silly mapToRegistry rawSpec: '', +3709 silly mapToRegistry spec: 'latest', +3709 silly mapToRegistry type: 'tag' } +3710 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/pinkie +3711 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/pinkie not in flight; fetching +3712 silly cache add parsed spec Result { +3712 silly cache add raw: 'ansi-regex@^2.0.0', +3712 silly cache add scope: null, +3712 silly cache add name: 'ansi-regex', +3712 silly cache add rawSpec: '^2.0.0', +3712 silly cache add spec: '>=2.0.0 <3.0.0', +3712 silly cache add type: 'range' } +3713 silly addNamed ansi-regex@>=2.0.0 <3.0.0 +3714 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for ansi-regex +3715 silly addNameRange { name: 'ansi-regex', range: '>=2.0.0 <3.0.0', hasData: false } +3716 silly mapToRegistry name ansi-regex +3717 silly mapToRegistry using default registry +3718 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3719 silly mapToRegistry data Result { +3719 silly mapToRegistry raw: 'ansi-regex', +3719 silly mapToRegistry scope: null, +3719 silly mapToRegistry name: 'ansi-regex', +3719 silly mapToRegistry rawSpec: '', +3719 silly mapToRegistry spec: 'latest', +3719 silly mapToRegistry type: 'tag' } +3720 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/ansi-regex +3721 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/ansi-regex not in flight; fetching +3722 silly cache add args [ 'is-fullwidth-code-point@^1.0.0', null ] +3723 verbose cache add spec is-fullwidth-code-point@^1.0.0 +3724 silly cache add parsed spec Result { +3724 silly cache add raw: 'is-fullwidth-code-point@^1.0.0', +3724 silly cache add scope: null, +3724 silly cache add name: 'is-fullwidth-code-point', +3724 silly cache add rawSpec: '^1.0.0', +3724 silly cache add spec: '>=1.0.0 <2.0.0', +3724 silly cache add type: 'range' } +3725 silly addNamed is-fullwidth-code-point@>=1.0.0 <2.0.0 +3726 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for is-fullwidth-code-point +3727 silly addNameRange { name: 'is-fullwidth-code-point', +3727 silly addNameRange range: '>=1.0.0 <2.0.0', +3727 silly addNameRange hasData: false } +3728 silly mapToRegistry name is-fullwidth-code-point +3729 silly mapToRegistry using default registry +3730 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3731 silly mapToRegistry data Result { +3731 silly mapToRegistry raw: 'is-fullwidth-code-point', +3731 silly mapToRegistry scope: null, +3731 silly mapToRegistry name: 'is-fullwidth-code-point', +3731 silly mapToRegistry rawSpec: '', +3731 silly mapToRegistry spec: 'latest', +3731 silly mapToRegistry type: 'tag' } +3732 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-fullwidth-code-point +3733 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-fullwidth-code-point not in flight; fetching +3734 silly cache afterAdd replace-ext@0.0.1 +3735 verbose afterAdd /home/ruanyf/.tnpm/replace-ext/0.0.1/package/package.json not in flight; writing +3736 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3737 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits is being purged from base /home/ruanyf/npm-global +3738 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits +3739 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream is being purged from base /home/ruanyf/npm-global +3740 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +3741 silly cache add args [ 'has-ansi@^2.0.0', null ] +3742 verbose cache add spec has-ansi@^2.0.0 +3743 silly cache add parsed spec Result { +3743 silly cache add raw: 'has-ansi@^2.0.0', +3743 silly cache add scope: null, +3743 silly cache add name: 'has-ansi', +3743 silly cache add rawSpec: '^2.0.0', +3743 silly cache add spec: '>=2.0.0 <3.0.0', +3743 silly cache add type: 'range' } +3744 silly addNamed has-ansi@>=2.0.0 <3.0.0 +3745 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for has-ansi +3746 silly addNameRange { name: 'has-ansi', range: '>=2.0.0 <3.0.0', hasData: false } +3747 silly mapToRegistry name has-ansi +3748 silly mapToRegistry using default registry +3749 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3750 silly mapToRegistry data Result { +3750 silly mapToRegistry raw: 'has-ansi', +3750 silly mapToRegistry scope: null, +3750 silly mapToRegistry name: 'has-ansi', +3750 silly mapToRegistry rawSpec: '', +3750 silly mapToRegistry spec: 'latest', +3750 silly mapToRegistry type: 'tag' } +3751 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/has-ansi +3752 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/has-ansi not in flight; fetching +3753 info linkStuff lazystream@1.0.0 +3754 silly linkStuff lazystream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +3755 silly linkStuff lazystream@1.0.0 is part of a global install +3756 silly linkStuff lazystream@1.0.0 is installed into a global node_modules +3757 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz +3758 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits +3759 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits is being purged +3760 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits +3761 verbose tar unpack /home/ruanyf/.tnpm/end-of-stream/1.0.0/package.tgz +3762 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +3763 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream is being purged +3764 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +3765 silly cache add args [ 'ansi-styles@^2.2.1', null ] +3766 verbose cache add spec ansi-styles@^2.2.1 +3767 silly cache add parsed spec Result { +3767 silly cache add raw: 'ansi-styles@^2.2.1', +3767 silly cache add scope: null, +3767 silly cache add name: 'ansi-styles', +3767 silly cache add rawSpec: '^2.2.1', +3767 silly cache add spec: '>=2.2.1 <3.0.0', +3767 silly cache add type: 'range' } +3768 silly addNamed ansi-styles@>=2.2.1 <3.0.0 +3769 verbose addNamed ">=2.2.1 <3.0.0" is a valid semver range for ansi-styles +3770 silly addNameRange { name: 'ansi-styles', range: '>=2.2.1 <3.0.0', hasData: false } +3771 silly mapToRegistry name ansi-styles +3772 silly mapToRegistry using default registry +3773 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3774 silly mapToRegistry data Result { +3774 silly mapToRegistry raw: 'ansi-styles', +3774 silly mapToRegistry scope: null, +3774 silly mapToRegistry name: 'ansi-styles', +3774 silly mapToRegistry rawSpec: '', +3774 silly mapToRegistry spec: 'latest', +3774 silly mapToRegistry type: 'tag' } +3775 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/ansi-styles +3776 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/ansi-styles not in flight; fetching +3777 silly cache add args [ 'escape-string-regexp@^1.0.2', null ] +3778 verbose cache add spec escape-string-regexp@^1.0.2 +3779 silly cache add parsed spec Result { +3779 silly cache add raw: 'escape-string-regexp@^1.0.2', +3779 silly cache add scope: null, +3779 silly cache add name: 'escape-string-regexp', +3779 silly cache add rawSpec: '^1.0.2', +3779 silly cache add spec: '>=1.0.2 <2.0.0', +3779 silly cache add type: 'range' } +3780 silly addNamed escape-string-regexp@>=1.0.2 <2.0.0 +3781 verbose addNamed ">=1.0.2 <2.0.0" is a valid semver range for escape-string-regexp +3782 silly addNameRange { name: 'escape-string-regexp', +3782 silly addNameRange range: '>=1.0.2 <2.0.0', +3782 silly addNameRange hasData: false } +3783 silly mapToRegistry name escape-string-regexp +3784 silly mapToRegistry using default registry +3785 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3786 silly mapToRegistry data Result { +3786 silly mapToRegistry raw: 'escape-string-regexp', +3786 silly mapToRegistry scope: null, +3786 silly mapToRegistry name: 'escape-string-regexp', +3786 silly mapToRegistry rawSpec: '', +3786 silly mapToRegistry spec: 'latest', +3786 silly mapToRegistry type: 'tag' } +3787 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/escape-string-regexp +3788 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/escape-string-regexp not in flight; fetching +3789 silly cache add args [ 'supports-color@^2.0.0', null ] +3790 verbose cache add spec supports-color@^2.0.0 +3791 silly cache add parsed spec Result { +3791 silly cache add raw: 'supports-color@^2.0.0', +3791 silly cache add scope: null, +3791 silly cache add name: 'supports-color', +3791 silly cache add rawSpec: '^2.0.0', +3791 silly cache add spec: '>=2.0.0 <3.0.0', +3791 silly cache add type: 'range' } +3792 silly addNamed supports-color@>=2.0.0 <3.0.0 +3793 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for supports-color +3794 silly addNameRange { name: 'supports-color', +3794 silly addNameRange range: '>=2.0.0 <3.0.0', +3794 silly addNameRange hasData: false } +3795 silly mapToRegistry name supports-color +3796 silly mapToRegistry using default registry +3797 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3798 silly mapToRegistry data Result { +3798 silly mapToRegistry raw: 'supports-color', +3798 silly mapToRegistry scope: null, +3798 silly mapToRegistry name: 'supports-color', +3798 silly mapToRegistry rawSpec: '', +3798 silly mapToRegistry spec: 'latest', +3798 silly mapToRegistry type: 'tag' } +3799 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/supports-color +3800 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/supports-color not in flight; fetching +3801 silly addNameRange number 2 { name: 'glob', range: '>=5.0.3 <6.0.0', hasData: true } +3802 silly addNameRange versions [ 'glob', +3802 silly addNameRange [ '7.0.3', +3802 silly addNameRange '7.0.1', +3802 silly addNameRange '7.0.0', +3802 silly addNameRange '6.0.4', +3802 silly addNameRange '6.0.3', +3802 silly addNameRange '6.0.2', +3802 silly addNameRange '6.0.1', +3802 silly addNameRange '5.0.15', +3802 silly addNameRange '5.0.14', +3802 silly addNameRange '5.0.13', +3802 silly addNameRange '5.0.12', +3802 silly addNameRange '5.0.11', +3802 silly addNameRange '5.0.10', +3802 silly addNameRange '5.0.9', +3802 silly addNameRange '5.0.7', +3802 silly addNameRange '5.0.6', +3802 silly addNameRange '5.0.5', +3802 silly addNameRange '5.0.4', +3802 silly addNameRange '5.0.3', +3802 silly addNameRange '4.5.3', +3802 silly addNameRange '5.0.2', +3802 silly addNameRange '4.5.2', +3802 silly addNameRange '5.0.1', +3802 silly addNameRange '4.5.1', +3802 silly addNameRange '5.0.0', +3802 silly addNameRange '4.5.0', +3802 silly addNameRange '4.4.2', +3802 silly addNameRange '4.4.0', +3802 silly addNameRange '4.3.5', +3802 silly addNameRange '4.3.4', +3802 silly addNameRange '4.3.3', +3802 silly addNameRange '4.3.2', +3802 silly addNameRange '4.3.1', +3802 silly addNameRange '4.3.0', +3802 silly addNameRange '4.2.2', +3802 silly addNameRange '4.2.1', +3802 silly addNameRange '4.2.0', +3802 silly addNameRange '4.1.6', +3802 silly addNameRange '4.1.5', +3802 silly addNameRange '4.1.4', +3802 silly addNameRange '4.1.3', +3802 silly addNameRange '4.1.2', +3802 silly addNameRange '4.1.2-beta', +3802 silly addNameRange '4.0.6', +3802 silly addNameRange '4.0.5', +3802 silly addNameRange '4.0.4', +3802 silly addNameRange '4.0.3', +3802 silly addNameRange '4.0.2', +3802 silly addNameRange '4.0.1', +3802 silly addNameRange '4.0.0', +3802 silly addNameRange '3.2.11', +3802 silly addNameRange '3.2.10', +3802 silly addNameRange '3.2.9', +3802 silly addNameRange '3.2.8', +3802 silly addNameRange '3.2.7', +3802 silly addNameRange '3.2.6', +3802 silly addNameRange '3.2.5', +3802 silly addNameRange '3.2.4', +3802 silly addNameRange '3.2.3', +3802 silly addNameRange '3.2.1', +3802 silly addNameRange '3.2.0', +3802 silly addNameRange '3.1.21', +3802 silly addNameRange '3.1.20', +3802 silly addNameRange '3.1.19', +3802 silly addNameRange '3.1.18', +3802 silly addNameRange '3.1.17', +3802 silly addNameRange '3.1.16', +3802 silly addNameRange '3.1.15', +3802 silly addNameRange '3.1.14', +3802 silly addNameRange '3.1.13', +3802 silly addNameRange '3.1.12', +3802 silly addNameRange '3.1.11', +3802 silly addNameRange '3.1.10', +3802 silly addNameRange '3.1.9', +3802 silly addNameRange '3.1.7', +3802 silly addNameRange '3.1.6', +3802 silly addNameRange '3.1.5', +3802 silly addNameRange '3.1.4', +3802 silly addNameRange '3.1.3', +3802 silly addNameRange '3.1.2', +3802 silly addNameRange '3.1.1', +3802 silly addNameRange '3.1.0', +3802 silly addNameRange '3.0.1', +3802 silly addNameRange '3.0.0', +3802 silly addNameRange '2.1.0', +3802 silly addNameRange '2.0.9', +3802 silly addNameRange '2.0.8', +3802 silly addNameRange '2.0.7', +3802 silly addNameRange '1.1.0' ] ] +3803 silly addNamed glob@5.0.15 +3804 verbose addNamed "5.0.15" is a plain semver version for glob +3805 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream/package.json +3806 silly gunzTarPerm modes [ '755', '644' ] +3807 silly gunzTarPerm modes [ '755', '644' ] +3808 info preinstall mute-stream@0.0.6 +3809 silly cache afterAdd clone-stats@0.0.1 +3810 verbose afterAdd /home/ruanyf/.tnpm/clone-stats/0.0.1/package/package.json not in flight; writing +3811 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3812 info linkStuff ansi-escapes@1.4.0 +3813 silly linkStuff ansi-escapes@1.4.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +3814 silly linkStuff ansi-escapes@1.4.0 is part of a global install +3815 silly linkStuff ansi-escapes@1.4.0 is installed into a global node_modules +3816 verbose request uri http://registry.npm.alibaba-inc.com/restore-cursor +3817 verbose request no auth needed +3818 info attempt registry request try #1 at 上午9:12:30 +3819 verbose etag "f26-Rf1QwcpBseL8XjodWQLZjA" +3820 http request GET http://registry.npm.alibaba-inc.com/restore-cursor +3821 verbose linkBins lazystream@1.0.0 +3822 verbose linkMans lazystream@1.0.0 +3823 verbose rebuildBundles lazystream@1.0.0 +3824 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream/package.json +3825 verbose request uri http://registry.npm.alibaba-inc.com/code-point-at +3826 verbose request no auth needed +3827 info attempt registry request try #1 at 上午9:12:30 +3828 verbose etag "ac1-y0V/VwUraFfH/214avn1Yg" +3829 http request GET http://registry.npm.alibaba-inc.com/code-point-at +3830 verbose request uri http://registry.npm.alibaba-inc.com/is-fullwidth-code-point +3831 verbose request no auth needed +3832 info attempt registry request try #1 at 上午9:12:30 +3833 verbose etag "c8d-adF4SQbWgTWwNcpSmYQtiA" +3834 http request GET http://registry.npm.alibaba-inc.com/is-fullwidth-code-point +3835 info install lazystream@1.0.0 +3836 verbose request uri http://registry.npm.alibaba-inc.com/ansi-regex +3837 verbose request no auth needed +3838 info attempt registry request try #1 at 上午9:12:30 +3839 verbose etag "2d1c-dmT9K8nM6zxZeXqlgMlsdw" +3840 http request GET http://registry.npm.alibaba-inc.com/ansi-regex +3841 verbose request uri http://registry.npm.alibaba-inc.com/pinkie +3842 verbose request no auth needed +3843 info attempt registry request try #1 at 上午9:12:30 +3844 verbose etag "3c63-xICIHhtMas1sNNinkFjRqg" +3845 http request GET http://registry.npm.alibaba-inc.com/pinkie +3846 verbose afterAdd /home/ruanyf/.tnpm/replace-ext/0.0.1/package/package.json written +3847 silly gunzTarPerm extractEntry dist/rx.sorting.min.js +3848 silly gunzTarPerm extractEntry dist/rx.compat.js +3849 silly addNameRange number 2 { name: 'clone', range: '>=1.0.0 <2.0.0', hasData: true } +3850 silly addNameRange versions [ 'clone', +3850 silly addNameRange [ '1.0.2', +3850 silly addNameRange '1.0.1', +3850 silly addNameRange '1.0.0', +3850 silly addNameRange '0.1.19', +3850 silly addNameRange '0.2.0', +3850 silly addNameRange '0.1.18', +3850 silly addNameRange '0.1.17', +3850 silly addNameRange '0.1.16', +3850 silly addNameRange '0.1.15', +3850 silly addNameRange '0.1.14', +3850 silly addNameRange '0.1.13', +3850 silly addNameRange '0.1.12', +3850 silly addNameRange '0.1.11', +3850 silly addNameRange '0.1.10', +3850 silly addNameRange '0.1.9', +3850 silly addNameRange '0.1.8', +3850 silly addNameRange '0.1.7', +3850 silly addNameRange '0.1.6', +3850 silly addNameRange '0.1.5', +3850 silly addNameRange '0.1.4', +3850 silly addNameRange '0.1.3', +3850 silly addNameRange '0.1.2', +3850 silly addNameRange '0.1.1', +3850 silly addNameRange '0.1.0', +3850 silly addNameRange '0.0.7', +3850 silly addNameRange '0.0.6', +3850 silly addNameRange '0.0.5', +3850 silly addNameRange '0.0.4', +3850 silly addNameRange '0.0.3', +3850 silly addNameRange '0.0.2', +3850 silly addNameRange '0.0.1', +3850 silly addNameRange '0.0.0' ] ] +3851 silly addNamed clone@1.0.2 +3852 verbose addNamed "1.0.2" is a plain semver version for clone +3853 verbose request uri http://registry.npm.alibaba-inc.com/has-ansi +3854 verbose request no auth needed +3855 info attempt registry request try #1 at 上午9:12:30 +3856 verbose etag "29af-WEge/oRG6eXrMQh9zEsSSQ" +3857 http request GET http://registry.npm.alibaba-inc.com/has-ansi +3858 info preinstall first-chunk-stream@1.0.0 +3859 verbose linkBins ansi-escapes@1.4.0 +3860 verbose linkMans ansi-escapes@1.4.0 +3861 verbose rebuildBundles ansi-escapes@1.4.0 +3862 verbose request uri http://registry.npm.alibaba-inc.com/ansi-styles +3863 verbose request no auth needed +3864 info attempt registry request try #1 at 上午9:12:30 +3865 verbose etag "407f-fOsiImONKsV1JPJQ0LbRjw" +3866 http request GET http://registry.npm.alibaba-inc.com/ansi-styles +3867 verbose request uri http://registry.npm.alibaba-inc.com/escape-string-regexp +3868 verbose request no auth needed +3869 info attempt registry request try #1 at 上午9:12:30 +3870 verbose etag "2773-u+1hVS8w+la4QX/BkxESDA" +3871 http request GET http://registry.npm.alibaba-inc.com/escape-string-regexp +3872 silly cache afterAdd lodash.keys@4.0.7 +3873 verbose afterAdd /home/ruanyf/.tnpm/lodash.keys/4.0.7/package/package.json not in flight; writing +3874 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3875 verbose request uri http://registry.npm.alibaba-inc.com/supports-color +3876 verbose request no auth needed +3877 info attempt registry request try #1 at 上午9:12:30 +3878 verbose etag "56fa-xdGFAzmi7C4qzdas+C7J9w" +3879 http request GET http://registry.npm.alibaba-inc.com/supports-color +3880 info postinstall lazystream@1.0.0 +3881 silly gunzTarPerm extractEntry differenceBy.js +3882 silly gunzTarPerm extractEntry constant.js +3883 info install ansi-escapes@1.4.0 +3884 silly gunzTarPerm extractEntry package.json +3885 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream/package.json +3886 silly cache afterAdd glob@5.0.15 +3887 verbose afterAdd /home/ruanyf/.tnpm/glob/5.0.15/package/package.json not in flight; writing +3888 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3889 verbose afterAdd /home/ruanyf/.tnpm/clone-stats/0.0.1/package/package.json written +3890 silly gunzTarPerm extractEntry package.json +3891 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8/package.json +3892 info postinstall ansi-escapes@1.4.0 +3893 silly cache add args [ 'escape-string-regexp@^1.0.5', null ] +3894 verbose cache add spec escape-string-regexp@^1.0.5 +3895 silly cache add args [ 'object-assign@^4.1.0', null ] +3896 verbose cache add spec object-assign@^4.1.0 +3897 silly cache add parsed spec Result { +3897 silly cache add raw: 'escape-string-regexp@^1.0.5', +3897 silly cache add scope: null, +3897 silly cache add name: 'escape-string-regexp', +3897 silly cache add rawSpec: '^1.0.5', +3897 silly cache add spec: '>=1.0.5 <2.0.0', +3897 silly cache add type: 'range' } +3898 silly addNamed escape-string-regexp@>=1.0.5 <2.0.0 +3899 verbose addNamed ">=1.0.5 <2.0.0" is a valid semver range for escape-string-regexp +3900 silly addNameRange { name: 'escape-string-regexp', +3900 silly addNameRange range: '>=1.0.5 <2.0.0', +3900 silly addNameRange hasData: false } +3901 silly mapToRegistry name escape-string-regexp +3902 silly mapToRegistry using default registry +3903 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3904 silly mapToRegistry data Result { +3904 silly mapToRegistry raw: 'escape-string-regexp', +3904 silly mapToRegistry scope: null, +3904 silly mapToRegistry name: 'escape-string-regexp', +3904 silly mapToRegistry rawSpec: '', +3904 silly mapToRegistry spec: 'latest', +3904 silly mapToRegistry type: 'tag' } +3905 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/escape-string-regexp +3906 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/escape-string-regexp already in flight; waiting +3907 silly cache add parsed spec Result { +3907 silly cache add raw: 'object-assign@^4.1.0', +3907 silly cache add scope: null, +3907 silly cache add name: 'object-assign', +3907 silly cache add rawSpec: '^4.1.0', +3907 silly cache add spec: '>=4.1.0 <5.0.0', +3907 silly cache add type: 'range' } +3908 silly addNamed object-assign@>=4.1.0 <5.0.0 +3909 verbose addNamed ">=4.1.0 <5.0.0" is a valid semver range for object-assign +3910 silly addNameRange { name: 'object-assign', +3910 silly addNameRange range: '>=4.1.0 <5.0.0', +3910 silly addNameRange hasData: false } +3911 silly mapToRegistry name object-assign +3912 silly mapToRegistry using default registry +3913 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +3914 silly mapToRegistry data Result { +3914 silly mapToRegistry raw: 'object-assign', +3914 silly mapToRegistry scope: null, +3914 silly mapToRegistry name: 'object-assign', +3914 silly mapToRegistry rawSpec: '', +3914 silly mapToRegistry spec: 'latest', +3914 silly mapToRegistry type: 'tag' } +3915 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/object-assign +3916 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/object-assign not in flight; fetching +3917 verbose unlock done using /home/ruanyf/.tnpm/_locks/lazystream-2a93ce1452b50114.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream +3918 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream/package.json +3919 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +3920 silly gunzTarPerm extractEntry README.md +3921 silly gunzTarPerm extractEntry LICENSE +3922 verbose afterAdd /home/ruanyf/.tnpm/lodash.keys/4.0.7/package/package.json written +3923 silly install resolved [ { name: 'lodash._root', +3923 silly install resolved version: '3.0.1', +3923 silly install resolved description: 'The internal lodash function `root` exported as a module.', +3923 silly install resolved homepage: 'https://lodash.com/', +3923 silly install resolved icon: 'https://lodash.com/icon.svg', +3923 silly install resolved license: 'MIT', +3923 silly install resolved author: +3923 silly install resolved { name: 'John-David Dalton', +3923 silly install resolved email: 'john.david.dalton@gmail.com', +3923 silly install resolved url: 'http://allyoucanleet.com/' }, +3923 silly install resolved contributors: [ [Object], [Object], [Object] ], +3923 silly install resolved repository: { type: 'git', url: 'git+https://github.com/lodash/lodash.git' }, +3923 silly install resolved scripts: { test: 'echo "See https://travis-ci.org/lodash/lodash-cli for testing details."' }, +3923 silly install resolved bugs: { url: 'https://github.com/lodash/lodash/issues' }, +3923 silly install resolved _id: 'lodash._root@3.0.1', +3923 silly install resolved _shasum: 'fba1c4524c19ee9a5f8136b4609f017cf4ded692', +3923 silly install resolved _from: 'lodash._root@>=3.0.0 <3.1.0', +3923 silly install resolved _npmVersion: '2.14.18', +3923 silly install resolved _nodeVersion: '5.5.0', +3923 silly install resolved _npmUser: { name: 'jdalton', email: 'john.david.dalton@gmail.com' }, +3923 silly install resolved dist: +3923 silly install resolved { shasum: 'fba1c4524c19ee9a5f8136b4609f017cf4ded692', +3923 silly install resolved size: 2128, +3923 silly install resolved noattachment: false, +3923 silly install resolved key: 'lodash._root/-/lodash._root-3.0.1.tgz', +3923 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/lodash._root/download/lodash._root-3.0.1.tgz' }, +3923 silly install resolved maintainers: [ [Object], [Object], [Object] ], +3923 silly install resolved _npmOperationalInternal: +3923 silly install resolved { host: 'packages-6-west.internal.npmjs.com', +3923 silly install resolved tmp: 'tmp/lodash._root-3.0.1.tgz_1455615057559_0.24128212919458747' }, +3923 silly install resolved directories: {}, +3923 silly install resolved publish_time: 1455615059518, +3923 silly install resolved _cnpm_publish_time: 1455615059518, +3923 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/lodash._root/download/lodash._root-3.0.1.tgz', +3923 silly install resolved readme: 'ERROR: No README data found!' }, +3923 silly install resolved { name: 'lodash.keys', +3923 silly install resolved version: '4.0.7', +3923 silly install resolved description: 'The lodash method `_.keys` exported as a module.', +3923 silly install resolved homepage: 'https://lodash.com/', +3923 silly install resolved icon: 'https://lodash.com/icon.svg', +3923 silly install resolved license: 'MIT', +3923 silly install resolved keywords: [ 'lodash-modularized', 'keys' ], +3923 silly install resolved author: +3923 silly install resolved { name: 'John-David Dalton', +3923 silly install resolved email: 'john.david.dalton@gmail.com', +3923 silly install resolved url: 'http://allyoucanleet.com/' }, +3923 silly install resolved contributors: [ [Object], [Object], [Object] ], +3923 silly install resolved repository: { type: 'git', url: 'git+https://github.com/lodash/lodash.git' }, +3923 silly install resolved scripts: { test: 'echo "See https://travis-ci.org/lodash/lodash-cli for testing details."' }, +3923 silly install resolved bugs: { url: 'https://github.com/lodash/lodash/issues' }, +3923 silly install resolved _id: 'lodash.keys@4.0.7', +3923 silly install resolved _shasum: '30e1b3bd98e54d6a0611991812685b6bc47cb63b', +3923 silly install resolved _from: 'lodash.keys@>=4.0.0 <5.0.0', +3923 silly install resolved _npmVersion: '2.15.5', +3923 silly install resolved _nodeVersion: '5.5.0', +3923 silly install resolved _npmUser: { name: 'jdalton', email: 'john.david.dalton@gmail.com' }, +3923 silly install resolved dist: +3923 silly install resolved { shasum: '30e1b3bd98e54d6a0611991812685b6bc47cb63b', +3923 silly install resolved size: 4876, +3923 silly install resolved noattachment: false, +3923 silly install resolved key: 'lodash.keys/-/lodash.keys-4.0.7.tgz', +3923 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz' }, +3923 silly install resolved maintainers: [ [Object], [Object], [Object] ], +3923 silly install resolved _npmOperationalInternal: +3923 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +3923 silly install resolved tmp: 'tmp/lodash.keys-4.0.7.tgz_1463062346790_0.19413627637550235' }, +3923 silly install resolved directories: {}, +3923 silly install resolved publish_time: 1463062349907, +3923 silly install resolved _cnpm_publish_time: 1463062349907, +3923 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz' } ] +3924 info install lodash._root@3.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal +3925 info install lodash.keys@4.0.7 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal +3926 info installOne lodash._root@3.0.1 +3927 verbose installOne of lodash._root to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal not in flight; installing +3928 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3929 info installOne lodash.keys@4.0.7 +3930 verbose installOne of lodash.keys to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal not in flight; installing +3931 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3932 silly cache afterAdd clone@1.0.2 +3933 verbose afterAdd /home/ruanyf/.tnpm/clone/1.0.2/package/package.json not in flight; writing +3934 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3935 verbose unlock done using /home/ruanyf/.tnpm/_locks/ansi-escapes-e3b00eb232f4df7f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes +3936 silly gunzTarPerm extractEntry .npmignore +3937 silly gunzTarPerm extractEntry README.md +3938 http 304 http://registry.npm.alibaba-inc.com/restore-cursor +3939 verbose headers { server: 'Tengine', +3939 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +3939 verbose headers connection: 'keep-alive', +3939 verbose headers etag: '"f26-Rf1QwcpBseL8XjodWQLZjA"', +3939 verbose headers 'x-readtime': '16' } +3940 silly get cb [ 304, +3940 silly get { server: 'Tengine', +3940 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +3940 silly get connection: 'keep-alive', +3940 silly get etag: '"f26-Rf1QwcpBseL8XjodWQLZjA"', +3940 silly get 'x-readtime': '16' } ] +3941 verbose etag http://registry.npm.alibaba-inc.com/restore-cursor from cache +3942 verbose get saving restore-cursor to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/restore-cursor/.cache.json +3943 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3944 info preinstall is-utf8@0.2.1 +3945 verbose afterAdd /home/ruanyf/.tnpm/glob/5.0.15/package/package.json written +3946 silly install resolved [ { name: 'through2', +3946 silly install resolved version: '0.6.5', +3946 silly install resolved description: 'A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise', +3946 silly install resolved main: 'through2.js', +3946 silly install resolved scripts: +3946 silly install resolved { test: 'node test/test.js', +3946 silly install resolved 'test-local': 'brtapsauce-local test/basic-test.js' }, +3946 silly install resolved repository: +3946 silly install resolved { type: 'git', +3946 silly install resolved url: 'git+https://github.com/rvagg/through2.git' }, +3946 silly install resolved keywords: [ 'stream', 'streams2', 'through', 'transform' ], +3946 silly install resolved author: +3946 silly install resolved { name: 'Rod Vagg', +3946 silly install resolved email: 'r@va.gg', +3946 silly install resolved url: 'https://github.com/rvagg' }, +3946 silly install resolved license: 'MIT', +3946 silly install resolved dependencies: +3946 silly install resolved { 'readable-stream': '>=1.0.33-1 <1.1.0-0', +3946 silly install resolved xtend: '>=4.0.0 <4.1.0-0' }, +3946 silly install resolved devDependencies: +3946 silly install resolved { bl: '>=0.9.0 <0.10.0-0', +3946 silly install resolved 'stream-spigot': '>=3.0.4 <3.1.0-0', +3946 silly install resolved tape: '>=2.14.0 <2.15.0-0' }, +3946 silly install resolved gitHead: 'ba4a87875f2c82323c10023e36f4ae4b386c1bf8', +3946 silly install resolved bugs: { url: 'https://github.com/rvagg/through2/issues' }, +3946 silly install resolved homepage: 'https://github.com/rvagg/through2', +3946 silly install resolved _id: 'through2@0.6.5', +3946 silly install resolved _shasum: '41ab9c67b29d57209071410e1d7a7a968cd3ad48', +3946 silly install resolved _from: 'through2@>=0.6.0 <0.7.0', +3946 silly install resolved _npmVersion: '1.4.28', +3946 silly install resolved _npmUser: { name: 'bryce', email: 'bryce@ravenwall.com' }, +3946 silly install resolved maintainers: [ [Object], [Object] ], +3946 silly install resolved dist: +3946 silly install resolved { shasum: '41ab9c67b29d57209071410e1d7a7a968cd3ad48', +3946 silly install resolved size: 4380, +3946 silly install resolved noattachment: false, +3946 silly install resolved key: 'through2/-/through2-0.6.5.tgz', +3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/through2/download/through2-0.6.5.tgz' }, +3946 silly install resolved directories: {}, +3946 silly install resolved publish_time: 1428601327435, +3946 silly install resolved _cnpm_publish_time: 1428601327435, +3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/through2/download/through2-0.6.5.tgz', +3946 silly install resolved readme: 'ERROR: No README data found!' }, +3946 silly install resolved { name: 'glob-parent', +3946 silly install resolved version: '2.0.0', +3946 silly install resolved description: 'Strips glob magic from a string to provide the parent path', +3946 silly install resolved main: 'index.js', +3946 silly install resolved scripts: { test: 'istanbul cover _mocha && cat ./coverage/lcov.info | coveralls' }, +3946 silly install resolved repository: +3946 silly install resolved { type: 'git', +3946 silly install resolved url: 'git+https://github.com/es128/glob-parent.git' }, +3946 silly install resolved keywords: [ 'glob', 'parent', 'strip', 'path', 'directory', 'base' ], +3946 silly install resolved author: { name: 'Elan Shanker' }, +3946 silly install resolved license: 'ISC', +3946 silly install resolved bugs: { url: 'https://github.com/es128/glob-parent/issues' }, +3946 silly install resolved homepage: 'https://github.com/es128/glob-parent', +3946 silly install resolved dependencies: { 'is-glob': '^2.0.0' }, +3946 silly install resolved devDependencies: { coveralls: '^2.11.2', istanbul: '^0.3.5', mocha: '^2.1.0' }, +3946 silly install resolved gitHead: 'a956910c7ccb5eafd1b3fe900ceb6335cc5b6d3d', +3946 silly install resolved _id: 'glob-parent@2.0.0', +3946 silly install resolved _shasum: '81383d72db054fcccf5336daa902f182f6edbb28', +3946 silly install resolved _from: 'glob-parent@>=2.0.0 <3.0.0', +3946 silly install resolved _npmVersion: '2.13.3', +3946 silly install resolved _nodeVersion: '3.0.0', +3946 silly install resolved _npmUser: { name: 'es128', email: 'elan.shanker+npm@gmail.com' }, +3946 silly install resolved dist: +3946 silly install resolved { shasum: '81383d72db054fcccf5336daa902f182f6edbb28', +3946 silly install resolved size: 2017, +3946 silly install resolved noattachment: false, +3946 silly install resolved key: 'glob-parent/-/glob-parent-2.0.0.tgz', +3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/glob-parent/download/glob-parent-2.0.0.tgz' }, +3946 silly install resolved maintainers: [ [Object] ], +3946 silly install resolved directories: {}, +3946 silly install resolved publish_time: 1442588350292, +3946 silly install resolved _cnpm_publish_time: 1442588350292, +3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/glob-parent/download/glob-parent-2.0.0.tgz', +3946 silly install resolved readme: 'ERROR: No README data found!' }, +3946 silly install resolved { name: 'unique-stream', +3946 silly install resolved version: '2.2.1', +3946 silly install resolved description: 'node.js through stream that emits a unique stream of objects based on criteria', +3946 silly install resolved repository: +3946 silly install resolved { type: 'git', +3946 silly install resolved url: 'git+https://github.com/eugeneware/unique-stream.git' }, +3946 silly install resolved author: { name: 'Eugene Ware', email: 'eugene@noblesamurai.com' }, +3946 silly install resolved license: 'MIT', +3946 silly install resolved files: [ 'index.js' ], +3946 silly install resolved scripts: +3946 silly install resolved { test: 'mocha', +3946 silly install resolved coverage: 'istanbul cover _mocha', +3946 silly install resolved coveralls: '${npm_package_scripts_coverage} && istanbul-coveralls' }, +3946 silly install resolved keywords: [ 'unique', 'stream', 'unique-stream', 'streaming', 'streams' ], +3946 silly install resolved dependencies: +3946 silly install resolved { 'json-stable-stringify': '^1.0.0', +3946 silly install resolved 'through2-filter': '^2.0.0' }, +3946 silly install resolved devDependencies: +3946 silly install resolved { after: '~0.8.1', +3946 silly install resolved chai: '^3.0.0', +3946 silly install resolved istanbul: '^0.4.2', +3946 silly install resolved 'istanbul-coveralls': '^1.0.3', +3946 silly install resolved mocha: '^2.1.0' }, +3946 silly install resolved gitHead: '44bb895ede1645668c4f62a81c7af8edaf47bff9', +3946 silly install resolved bugs: { url: 'https://github.com/eugeneware/unique-stream/issues' }, +3946 silly install resolved homepage: 'https://github.com/eugeneware/unique-stream#readme', +3946 silly install resolved _id: 'unique-stream@2.2.1', +3946 silly install resolved _shasum: '5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369', +3946 silly install resolved _from: 'unique-stream@>=2.0.2 <3.0.0', +3946 silly install resolved _npmVersion: '3.7.2', +3946 silly install resolved _nodeVersion: '5.6.0', +3946 silly install resolved _npmUser: { name: 'shinnn', email: 'snnskwtnb@gmail.com' }, +3946 silly install resolved dist: +3946 silly install resolved { shasum: '5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369', +3946 silly install resolved size: 2809, +3946 silly install resolved noattachment: false, +3946 silly install resolved key: 'unique-stream/-/unique-stream-2.2.1.tgz', +3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/unique-stream/download/unique-stream-2.2.1.tgz' }, +3946 silly install resolved maintainers: [ [Object], [Object] ], +3946 silly install resolved _npmOperationalInternal: +3946 silly install resolved { host: 'packages-6-west.internal.npmjs.com', +3946 silly install resolved tmp: 'tmp/unique-stream-2.2.1.tgz_1455624338144_0.2851575950626284' }, +3946 silly install resolved directories: {}, +3946 silly install resolved publish_time: 1455624340106, +3946 silly install resolved _cnpm_publish_time: 1455624340106, +3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/unique-stream/download/unique-stream-2.2.1.tgz', +3946 silly install resolved readme: 'ERROR: No README data found!' }, +3946 silly install resolved { name: 'to-absolute-glob', +3946 silly install resolved description: 'Make a glob pattern absolute, ensuring that negative globs and patterns with trailing slashes are correctly handled.', +3946 silly install resolved version: '0.1.1', +3946 silly install resolved homepage: 'https://github.com/jonschlinkert/to-absolute-glob', +3946 silly install resolved author: +3946 silly install resolved { name: 'Jon Schlinkert', +3946 silly install resolved url: 'https://github.com/jonschlinkert' }, +3946 silly install resolved repository: +3946 silly install resolved { type: 'git', +3946 silly install resolved url: 'git+https://github.com/jonschlinkert/to-absolute-glob.git' }, +3946 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/to-absolute-glob/issues' }, +3946 silly install resolved license: 'MIT', +3946 silly install resolved files: [ 'index.js' ], +3946 silly install resolved main: 'index.js', +3946 silly install resolved engines: { node: '>=0.10.0' }, +3946 silly install resolved scripts: { test: 'mocha' }, +3946 silly install resolved dependencies: { 'extend-shallow': '^2.0.1' }, +3946 silly install resolved devDependencies: { mocha: '*' }, +3946 silly install resolved keywords: [ 'resolve', 'pattern', 'absolute', 'glob' ], +3946 silly install resolved verb: { related: [Object] }, +3946 silly install resolved gitHead: '42428d988edb8c0cd7d97fbc0622b9720dc57437', +3946 silly install resolved _id: 'to-absolute-glob@0.1.1', +3946 silly install resolved _shasum: '1cdfa472a9ef50c239ee66999b662ca0eb39937f', +3946 silly install resolved _from: 'to-absolute-glob@>=0.1.1 <0.2.0', +3946 silly install resolved _npmVersion: '3.3.6', +3946 silly install resolved _nodeVersion: '5.0.0', +3946 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +3946 silly install resolved maintainers: [ [Object] ], +3946 silly install resolved dist: +3946 silly install resolved { shasum: '1cdfa472a9ef50c239ee66999b662ca0eb39937f', +3946 silly install resolved size: 2341, +3946 silly install resolved noattachment: false, +3946 silly install resolved key: 'to-absolute-glob/-/to-absolute-glob-0.1.1.tgz', +3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/to-absolute-glob/download/to-absolute-glob-0.1.1.tgz' }, +3946 silly install resolved directories: {}, +3946 silly install resolved publish_time: 1446757436171, +3946 silly install resolved _cnpm_publish_time: 1446757436171, +3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/to-absolute-glob/download/to-absolute-glob-0.1.1.tgz', +3946 silly install resolved readme: 'ERROR: No README data found!' }, +3946 silly install resolved { name: 'ordered-read-streams', +3946 silly install resolved version: '0.3.0', +3946 silly install resolved description: 'Combines array of streams into one read stream in strict order', +3946 silly install resolved files: [ 'index.js' ], +3946 silly install resolved scripts: { test: 'jshint *.js test/*.js && mocha' }, +3946 silly install resolved repository: +3946 silly install resolved { type: 'git', +3946 silly install resolved url: 'git+https://github.com/armed/ordered-read-streams.git' }, +3946 silly install resolved author: +3946 silly install resolved { name: 'Artem Medeusheyev', +3946 silly install resolved email: 'artem.medeusheyev@gmail.com' }, +3946 silly install resolved license: 'MIT', +3946 silly install resolved dependencies: { 'is-stream': '^1.0.1', 'readable-stream': '^2.0.1' }, +3946 silly install resolved devDependencies: +3946 silly install resolved { should: '^7.0.1', +3946 silly install resolved mocha: '^2.2.5', +3946 silly install resolved through2: '^2.0.0', +3946 silly install resolved jshint: '^2.8.0', +3946 silly install resolved 'pre-commit': '^1.0.10' }, +3946 silly install resolved gitHead: 'd1d4cb9437b1afc750fb0cb7f8f438ba6d9c4406', +3946 silly install resolved bugs: { url: 'https://github.com/armed/ordered-read-streams/issues' }, +3946 silly install resolved homepage: 'https://github.com/armed/ordered-read-streams#readme', +3946 silly install resolved _id: 'ordered-read-streams@0.3.0', +3946 silly install resolved _shasum: '7137e69b3298bb342247a1bbee3881c80e2fd78b', +3946 silly install resolved _from: 'ordered-read-streams@>=0.3.0 <0.4.0', +3946 silly install resolved _npmVersion: '2.11.2', +3946 silly install resolved _nodeVersion: '2.2.1', +3946 silly install resolved _npmUser: { name: 'armed', email: 'artem.medeusheyev@gmail.com' }, +3946 silly install resolved maintainers: [ [Object] ], +3946 silly install resolved dist: +3946 silly install resolved { shasum: '7137e69b3298bb342247a1bbee3881c80e2fd78b', +3946 silly install resolved size: 2183, +3946 silly install resolved noattachment: false, +3946 silly install resolved key: 'ordered-read-streams/-/ordered-read-streams-0.3.0.tgz', +3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ordered-read-streams/download/ordered-read-streams-0.3.0.tgz' }, +3946 silly install resolved directories: {}, +3946 silly install resolved publish_time: 1436013631826, +3946 silly install resolved _cnpm_publish_time: 1436013631826, +3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ordered-read-streams/download/ordered-read-streams-0.3.0.tgz', +3946 silly install resolved readme: 'ERROR: No README data found!' }, +3946 silly install resolved { name: 'extend', +3946 silly install resolved author: +3946 silly install resolved { name: 'Stefan Thomas', +3946 silly install resolved email: 'justmoon@members.fsf.org', +3946 silly install resolved url: 'http://www.justmoon.net' }, +3946 silly install resolved version: '3.0.0', +3946 silly install resolved description: 'Port of jQuery.extend for node.js and the browser', +3946 silly install resolved main: 'index', +3946 silly install resolved scripts: +3946 silly install resolved { test: 'npm run lint && node test/index.js && npm run coverage-quiet', +3946 silly install resolved coverage: 'covert test/index.js', +3946 silly install resolved 'coverage-quiet': 'covert test/index.js --quiet', +3946 silly install resolved lint: 'npm run jscs && npm run eslint', +3946 silly install resolved jscs: 'jscs *.js */*.js', +3946 silly install resolved eslint: 'eslint *.js */*.js' }, +3946 silly install resolved contributors: [ [Object] ], +3946 silly install resolved keywords: [ 'extend', 'clone', 'merge' ], +3946 silly install resolved repository: +3946 silly install resolved { type: 'git', +3946 silly install resolved url: 'git+https://github.com/justmoon/node-extend.git' }, +3946 silly install resolved dependencies: {}, +3946 silly install resolved devDependencies: +3946 silly install resolved { tape: '^4.0.0', +3946 silly install resolved covert: '^1.1.0', +3946 silly install resolved jscs: '^1.13.1', +3946 silly install resolved eslint: '^0.24.0' }, +3946 silly install resolved license: 'MIT', +3946 silly install resolved gitHead: '148e7270cab2e9413af2cd0cab147070d755ed6d', +3946 silly install resolved bugs: { url: 'https://github.com/justmoon/node-extend/issues' }, +3946 silly install resolved homepage: 'https://github.com/justmoon/node-extend#readme', +3946 silly install resolved _id: 'extend@3.0.0', +3946 silly install resolved _shasum: '5a474353b9f3353ddd8176dfd37b91c83a46f1d4', +3946 silly install resolved _from: 'extend@>=3.0.0 <4.0.0', +3946 silly install resolved _npmVersion: '2.11.3', +3946 silly install resolved _nodeVersion: '2.3.1', +3946 silly install resolved _npmUser: { name: 'ljharb', email: 'ljharb@gmail.com' }, +3946 silly install resolved dist: +3946 silly install resolved { shasum: '5a474353b9f3353ddd8176dfd37b91c83a46f1d4', +3946 silly install resolved size: 6771, +3946 silly install resolved noattachment: false, +3946 silly install resolved key: 'extend/-/extend-3.0.0.tgz', +3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/extend/download/extend-3.0.0.tgz' }, +3946 silly install resolved maintainers: [ [Object], [Object] ], +3946 silly install resolved directories: {}, +3946 silly install resolved publish_time: 1435783626834, +3946 silly install resolved _cnpm_publish_time: 1435783626834, +3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/extend/download/extend-3.0.0.tgz', +3946 silly install resolved readme: 'ERROR: No README data found!' }, +3946 silly install resolved { name: 'micromatch', +3946 silly install resolved description: 'Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.', +3946 silly install resolved version: '2.3.8', +3946 silly install resolved homepage: 'https://github.com/jonschlinkert/micromatch', +3946 silly install resolved author: +3946 silly install resolved { name: 'Jon Schlinkert', +3946 silly install resolved url: 'https://github.com/jonschlinkert' }, +3946 silly install resolved repository: +3946 silly install resolved { type: 'git', +3946 silly install resolved url: 'git+https://github.com/jonschlinkert/micromatch.git' }, +3946 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/micromatch/issues' }, +3946 silly install resolved license: 'MIT', +3946 silly install resolved files: [ 'index.js', 'lib/' ], +3946 silly install resolved main: 'index.js', +3946 silly install resolved engines: { node: '>=0.10.0' }, +3946 silly install resolved scripts: { test: 'mocha' }, +3946 silly install resolved dependencies: +3946 silly install resolved { 'arr-diff': '^2.0.0', +3946 silly install resolved 'array-unique': '^0.2.1', +3946 silly install resolved braces: '^1.8.2', +3946 silly install resolved 'expand-brackets': '^0.1.4', +3946 silly install resolved extglob: '^0.3.1', +3946 silly install resolved 'filename-regex': '^2.0.0', +3946 silly install resolved 'is-extglob': '^1.0.0', +3946 silly install resolved 'is-glob': '^2.0.1', +3946 silly install resolved 'kind-of': '^3.0.2', +3946 silly install resolved 'normalize-path': '^2.0.1', +3946 silly install resolved 'object.omit': '^2.0.0', +3946 silly install resolved 'parse-glob': '^3.0.4', +3946 silly install resolved 'regex-cache': '^0.4.2' }, +3946 silly install resolved devDependencies: +3946 silly install resolved { benchmarked: '^0.1.4', +3946 silly install resolved chalk: '^1.1.1', +3946 silly install resolved gulp: '^3.9.0', +3946 silly install resolved 'gulp-eslint': '^1.1.1', +3946 silly install resolved 'gulp-format-md': '^0.1.8', +3946 silly install resolved 'gulp-istanbul': '^0.10.1', +3946 silly install resolved 'gulp-mocha': '^2.1.3', +3946 silly install resolved minimatch: '^3.0.0', +3946 silly install resolved minimist: '^1.2.0', +3946 silly install resolved mocha: '^2', +3946 silly install resolved multimatch: '^2.0.0', +3946 silly install resolved should: '^8', +3946 silly install resolved write: '^0.2.1' }, +3946 silly install resolved keywords: +3946 silly install resolved [ 'bash', +3946 silly install resolved 'expand', +3946 silly install resolved 'expansion', +3946 silly install resolved 'expression', +3946 silly install resolved 'file', +3946 silly install resolved 'files', +3946 silly install resolved 'filter', +3946 silly install resolved 'find', +3946 silly install resolved 'glob', +3946 silly install resolved 'globbing', +3946 silly install resolved 'globs', +3946 silly install resolved 'globstar', +3946 silly install resolved 'match', +3946 silly install resolved 'matcher', +3946 silly install resolved 'matches', +3946 silly install resolved 'matching', +3946 silly install resolved 'minimatch', +3946 silly install resolved 'multimatch', +3946 silly install resolved 'path', +3946 silly install resolved 'pattern', +3946 silly install resolved 'patterns', +3946 silly install resolved 'regex', +3946 silly install resolved 'regexp', +3946 silly install resolved 'regular', +3946 silly install resolved 'shell', +3946 silly install resolved 'wildcard' ], +3946 silly install resolved verb: +3946 silly install resolved { related: [Object], +3946 silly install resolved reflinks: [Object], +3946 silly install resolved toc: false, +3946 silly install resolved layout: false, +3946 silly install resolved tasks: [Object], +3946 silly install resolved plugins: [Object], +3946 silly install resolved lint: [Object] }, +3946 silly install resolved gitHead: 'dc5e49fc2d665bfc5e9c06c6c8e5db74e14311b7', +3946 silly install resolved _id: 'micromatch@2.3.8', +3946 silly install resolved _shasum: '94fbf8f37ed9edeca06bf1c8f7b743fb5f6f5854', +3946 silly install resolved _from: 'micromatch@>=2.3.7 <3.0.0', +3946 silly install resolved _npmVersion: '3.6.0', +3946 silly install resolved _nodeVersion: '5.5.0', +3946 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +3946 silly install resolved maintainers: [ [Object], [Object], [Object] ], +3946 silly install resolved dist: +3946 silly install resolved { shasum: '94fbf8f37ed9edeca06bf1c8f7b743fb5f6f5854', +3946 silly install resolved size: 14434, +3946 silly install resolved noattachment: false, +3946 silly install resolved key: 'micromatch/-/micromatch-2.3.8.tgz', +3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/micromatch/download/micromatch-2.3.8.tgz' }, +3946 silly install resolved _npmOperationalInternal: +3946 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +3946 silly install resolved tmp: 'tmp/micromatch-2.3.8.tgz_1461361550189_0.8745819758623838' }, +3946 silly install resolved directories: {}, +3946 silly install resolved publish_time: 1461361552692, +3946 silly install resolved _cnpm_publish_time: 1461361552692, +3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/micromatch/download/micromatch-2.3.8.tgz', +3946 silly install resolved readme: 'ERROR: No README data found!' }, +3946 silly install resolved { author: +3946 silly install resolved { name: 'Isaac Z. Schlueter', +3946 silly install resolved email: 'i@izs.me', +3946 silly install resolved url: 'http://blog.izs.me/' }, +3946 silly install resolved name: 'glob', +3946 silly install resolved description: 'a little globber', +3946 silly install resolved version: '5.0.15', +3946 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/node-glob.git' }, +3946 silly install resolved main: 'glob.js', +3946 silly install resolved files: [ 'glob.js', 'sync.js', 'common.js' ], +3946 silly install resolved engines: { node: '*' }, +3946 silly install resolved dependencies: +3946 silly install resolved { inflight: '^1.0.4', +3946 silly install resolved inherits: '2', +3946 silly install resolved minimatch: '2 || 3', +3946 silly install resolved once: '^1.3.0', +3946 silly install resolved 'path-is-absolute': '^1.0.0' }, +3946 silly install resolved devDependencies: { mkdirp: '0', rimraf: '^2.2.8', tap: '^1.1.4', tick: '0.0.6' }, +3946 silly install resolved scripts: +3946 silly install resolved { prepublish: 'npm run benchclean', +3946 silly install resolved profclean: 'rm -f v8.log profile.txt', +3946 silly install resolved test: 'tap test/*.js --cov', +3946 silly install resolved 'test-regen': 'npm run profclean && TEST_REGEN=1 node test/00-setup.js', +3946 silly install resolved bench: 'bash benchmark.sh', +3946 silly install resolved prof: 'bash prof.sh && cat profile.txt', +3946 silly install resolved benchclean: 'node benchclean.js' }, +3946 silly install resolved license: 'ISC', +3946 silly install resolved gitHead: '3a7e71d453dd80e75b196fd262dd23ed54beeceb', +3946 silly install resolved bugs: { url: 'https://github.com/isaacs/node-glob/issues' }, +3946 silly install resolved homepage: 'https://github.com/isaacs/node-glob#readme', +3946 silly install resolved _id: 'glob@5.0.15', +3946 silly install resolved _shasum: '1bc936b9e02f4a603fcc222ecf7633d30b8b93b1', +3946 silly install resolved _from: 'glob@>=5.0.3 <6.0.0', +3946 silly install resolved _npmVersion: '3.3.2', +3946 silly install resolved _nodeVersion: '4.0.0', +3946 silly install resolved _npmUser: { name: 'isaacs', email: 'isaacs@npmjs.com' }, +3946 silly install resolved dist: +3946 silly install resolved { shasum: '1bc936b9e02f4a603fcc222ecf7633d30b8b93b1', +3946 silly install resolved size: 14800, +3946 silly install resolved noattachment: false, +3946 silly install resolved key: 'glob/-/glob-5.0.15.tgz', +3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/glob/download/glob-5.0.15.tgz' }, +3946 silly install resolved maintainers: [ [Object] ], +3946 silly install resolved directories: {}, +3946 silly install resolved publish_time: 1443378062495, +3946 silly install resolved _cnpm_publish_time: 1443378062495, +3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/glob/download/glob-5.0.15.tgz', +3946 silly install resolved readme: 'ERROR: No README data found!' } ] +3947 info install through2@0.6.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +3948 info install glob-parent@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +3949 info install unique-stream@2.2.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +3950 info install to-absolute-glob@0.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +3951 info install ordered-read-streams@0.3.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +3952 info install extend@3.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +3953 info install micromatch@2.3.8 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +3954 info install glob@5.0.15 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +3955 info installOne through2@0.6.5 +3956 verbose installOne of through2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing +3957 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3958 info installOne glob-parent@2.0.0 +3959 verbose installOne of glob-parent to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing +3960 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3961 info installOne unique-stream@2.2.1 +3962 verbose installOne of unique-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing +3963 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3964 info installOne to-absolute-glob@0.1.1 +3965 verbose installOne of to-absolute-glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing +3966 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3967 info installOne ordered-read-streams@0.3.0 +3968 verbose installOne of ordered-read-streams to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing +3969 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3970 info installOne extend@3.0.0 +3971 verbose installOne of extend to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing +3972 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3973 info installOne micromatch@2.3.8 +3974 verbose installOne of micromatch to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing +3975 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3976 info installOne glob@5.0.15 +3977 verbose installOne of glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing +3978 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +3979 silly gunzTarPerm extractEntry dist/rx.min.js +3980 http 304 http://registry.npm.alibaba-inc.com/is-fullwidth-code-point +3981 verbose headers { server: 'Tengine', +3981 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +3981 verbose headers connection: 'keep-alive', +3981 verbose headers etag: '"c8d-adF4SQbWgTWwNcpSmYQtiA"', +3981 verbose headers 'x-readtime': '16' } +3982 silly get cb [ 304, +3982 silly get { server: 'Tengine', +3982 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +3982 silly get connection: 'keep-alive', +3982 silly get etag: '"c8d-adF4SQbWgTWwNcpSmYQtiA"', +3982 silly get 'x-readtime': '16' } ] +3983 verbose etag http://registry.npm.alibaba-inc.com/is-fullwidth-code-point from cache +3984 verbose get saving is-fullwidth-code-point to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-fullwidth-code-point/.cache.json +3985 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3986 http 304 http://registry.npm.alibaba-inc.com/code-point-at +3987 verbose headers { server: 'Tengine', +3987 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +3987 verbose headers connection: 'keep-alive', +3987 verbose headers etag: '"ac1-y0V/VwUraFfH/214avn1Yg"', +3987 verbose headers 'x-readtime': '19' } +3988 silly get cb [ 304, +3988 silly get { server: 'Tengine', +3988 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +3988 silly get connection: 'keep-alive', +3988 silly get etag: '"ac1-y0V/VwUraFfH/214avn1Yg"', +3988 silly get 'x-readtime': '19' } ] +3989 verbose etag http://registry.npm.alibaba-inc.com/code-point-at from cache +3990 verbose get saving code-point-at to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/code-point-at/.cache.json +3991 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +3992 verbose lock using /home/ruanyf/.tnpm/_locks/lodash-root-eb8554dced03e461.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root +3993 verbose lock using /home/ruanyf/.tnpm/_locks/lodash-keys-f7eea82de372afb3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys +3994 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream/package.json +3995 silly gunzTarPerm extractEntry dist/rx.compat.min.js +3996 verbose get http://registry.npm.alibaba-inc.com/object-assign not expired, no request +3997 silly addNameRange number 2 { name: 'object-assign', range: '>=4.1.0 <5.0.0', hasData: true } +3998 silly addNameRange versions [ 'object-assign', +3998 silly addNameRange [ '4.1.0', +3998 silly addNameRange '4.0.1', +3998 silly addNameRange '4.0.0', +3998 silly addNameRange '2.1.1', +3998 silly addNameRange '3.0.0', +3998 silly addNameRange '2.0.0', +3998 silly addNameRange '1.0.0', +3998 silly addNameRange '0.4.0', +3998 silly addNameRange '0.3.1', +3998 silly addNameRange '0.3.0', +3998 silly addNameRange '0.2.2', +3998 silly addNameRange '0.2.1', +3998 silly addNameRange '0.2.0', +3998 silly addNameRange '0.1.2', +3998 silly addNameRange '0.1.1', +3998 silly addNameRange '0.1.0' ] ] +3999 silly addNamed object-assign@4.1.0 +4000 verbose addNamed "4.1.0" is a plain semver version for object-assign +4001 http 304 http://registry.npm.alibaba-inc.com/has-ansi +4002 verbose headers { server: 'Tengine', +4002 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +4002 verbose headers connection: 'keep-alive', +4002 verbose headers etag: '"29af-WEge/oRG6eXrMQh9zEsSSQ"', +4002 verbose headers 'x-readtime': '21' } +4003 silly get cb [ 304, +4003 silly get { server: 'Tengine', +4003 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +4003 silly get connection: 'keep-alive', +4003 silly get etag: '"29af-WEge/oRG6eXrMQh9zEsSSQ"', +4003 silly get 'x-readtime': '21' } ] +4004 verbose etag http://registry.npm.alibaba-inc.com/has-ansi from cache +4005 verbose get saving has-ansi to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/has-ansi/.cache.json +4006 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4007 http 304 http://registry.npm.alibaba-inc.com/pinkie +4008 verbose headers { server: 'Tengine', +4008 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +4008 verbose headers connection: 'keep-alive', +4008 verbose headers etag: '"3c63-xICIHhtMas1sNNinkFjRqg"', +4008 verbose headers 'x-readtime': '25' } +4009 silly get cb [ 304, +4009 silly get { server: 'Tengine', +4009 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +4009 silly get connection: 'keep-alive', +4009 silly get etag: '"3c63-xICIHhtMas1sNNinkFjRqg"', +4009 silly get 'x-readtime': '25' } ] +4010 verbose etag http://registry.npm.alibaba-inc.com/pinkie from cache +4011 verbose get saving pinkie to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/pinkie/.cache.json +4012 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4013 silly install write writing lodash._root 3.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root +4014 silly install write writing lodash.keys 4.0.7 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys +4015 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8/package.json +4016 verbose lock using /home/ruanyf/.tnpm/_locks/through2-a3053459c9d64905.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +4017 verbose lock using /home/ruanyf/.tnpm/_locks/glob-parent-de91b99c284b0f17.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +4018 verbose lock using /home/ruanyf/.tnpm/_locks/unique-stream-cabed25d6b4ec536.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +4019 verbose lock using /home/ruanyf/.tnpm/_locks/to-absolute-glob-a3e8296dd7adbf52.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +4020 verbose lock using /home/ruanyf/.tnpm/_locks/ordered-read-streams-c4c8dc9fe775af65.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +4021 verbose lock using /home/ruanyf/.tnpm/_locks/extend-c4c45b992dfc6b94.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend +4022 verbose lock using /home/ruanyf/.tnpm/_locks/micromatch-24c668eacc4b7001.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +4023 verbose lock using /home/ruanyf/.tnpm/_locks/glob-e1e1511196958541.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +4024 info preinstall string_decoder@0.10.31 +4025 http 304 http://registry.npm.alibaba-inc.com/ansi-regex +4026 verbose headers { server: 'Tengine', +4026 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +4026 verbose headers connection: 'keep-alive', +4026 verbose headers etag: '"2d1c-dmT9K8nM6zxZeXqlgMlsdw"', +4026 verbose headers 'x-readtime': '27' } +4027 silly get cb [ 304, +4027 silly get { server: 'Tengine', +4027 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +4027 silly get connection: 'keep-alive', +4027 silly get etag: '"2d1c-dmT9K8nM6zxZeXqlgMlsdw"', +4027 silly get 'x-readtime': '27' } ] +4028 verbose etag http://registry.npm.alibaba-inc.com/ansi-regex from cache +4029 verbose get saving ansi-regex to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/ansi-regex/.cache.json +4030 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4031 http 304 http://registry.npm.alibaba-inc.com/escape-string-regexp +4032 verbose headers { server: 'Tengine', +4032 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +4032 verbose headers connection: 'keep-alive', +4032 verbose headers etag: '"2773-u+1hVS8w+la4QX/BkxESDA"', +4032 verbose headers 'x-readtime': '21' } +4033 silly get cb [ 304, +4033 silly get { server: 'Tengine', +4033 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +4033 silly get connection: 'keep-alive', +4033 silly get etag: '"2773-u+1hVS8w+la4QX/BkxESDA"', +4033 silly get 'x-readtime': '21' } ] +4034 verbose etag http://registry.npm.alibaba-inc.com/escape-string-regexp from cache +4035 verbose get saving escape-string-regexp to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/escape-string-regexp/.cache.json +4036 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4037 http 304 http://registry.npm.alibaba-inc.com/ansi-styles +4038 verbose headers { server: 'Tengine', +4038 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +4038 verbose headers connection: 'keep-alive', +4038 verbose headers etag: '"407f-fOsiImONKsV1JPJQ0LbRjw"', +4038 verbose headers 'x-readtime': '19' } +4039 silly get cb [ 304, +4039 silly get { server: 'Tengine', +4039 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +4039 silly get connection: 'keep-alive', +4039 silly get etag: '"407f-fOsiImONKsV1JPJQ0LbRjw"', +4039 silly get 'x-readtime': '19' } ] +4040 verbose etag http://registry.npm.alibaba-inc.com/ansi-styles from cache +4041 verbose get saving ansi-styles to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/ansi-styles/.cache.json +4042 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4043 silly install write writing through2 0.6.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +4044 silly install write writing glob-parent 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +4045 silly install write writing unique-stream 2.2.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +4046 silly install write writing to-absolute-glob 0.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +4047 silly install write writing ordered-read-streams 0.3.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +4048 silly install write writing extend 3.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend +4049 silly install write writing micromatch 2.3.8 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +4050 silly install write writing glob 5.0.15 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +4051 silly gunzTarPerm extractEntry differenceWith.js +4052 silly gunzTarPerm extractEntry conforms.js +4053 silly install resolved [] +4054 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream +4055 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream +4056 verbose afterAdd /home/ruanyf/.tnpm/clone/1.0.2/package/package.json written +4057 silly install resolved [ { name: 'replace-ext', +4057 silly install resolved description: 'Replaces a file extension with another one', +4057 silly install resolved version: '0.0.1', +4057 silly install resolved homepage: 'http://github.com/wearefractal/replace-ext', +4057 silly install resolved repository: +4057 silly install resolved { type: 'git', +4057 silly install resolved url: 'git://github.com/wearefractal/replace-ext.git' }, +4057 silly install resolved author: +4057 silly install resolved { name: 'Fractal', +4057 silly install resolved email: 'contact@wearefractal.com', +4057 silly install resolved url: 'http://wearefractal.com/' }, +4057 silly install resolved main: './index.js', +4057 silly install resolved dependencies: {}, +4057 silly install resolved devDependencies: +4057 silly install resolved { mocha: '~1.17.0', +4057 silly install resolved should: '~3.1.0', +4057 silly install resolved 'mocha-lcov-reporter': '~0.0.1', +4057 silly install resolved coveralls: '~2.6.1', +4057 silly install resolved istanbul: '~0.2.3', +4057 silly install resolved rimraf: '~2.2.5', +4057 silly install resolved jshint: '~2.4.1' }, +4057 silly install resolved scripts: +4057 silly install resolved { test: 'mocha --reporter spec && jshint', +4057 silly install resolved coveralls: 'istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage' }, +4057 silly install resolved engines: { node: '>= 0.4' }, +4057 silly install resolved licenses: [ [Object] ], +4057 silly install resolved bugs: { url: 'https://github.com/wearefractal/replace-ext/issues' }, +4057 silly install resolved _id: 'replace-ext@0.0.1', +4057 silly install resolved dist: +4057 silly install resolved { shasum: '29bbd92078a739f0bcce2b4ee41e837953522924', +4057 silly install resolved size: 2238, +4057 silly install resolved noattachment: false, +4057 silly install resolved key: '/replace-ext/-/replace-ext-0.0.1.tgz', +4057 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/replace-ext/download/replace-ext-0.0.1.tgz' }, +4057 silly install resolved _from: 'replace-ext@0.0.1', +4057 silly install resolved _npmVersion: '1.4.4', +4057 silly install resolved _npmUser: { name: 'fractal', email: 'contact@wearefractal.com' }, +4057 silly install resolved maintainers: [ [Object] ], +4057 silly install resolved directories: {}, +4057 silly install resolved publish_time: 1393364054210, +4057 silly install resolved _cnpm_publish_time: 1393364054210, +4057 silly install resolved _shasum: '29bbd92078a739f0bcce2b4ee41e837953522924', +4057 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/replace-ext/download/replace-ext-0.0.1.tgz', +4057 silly install resolved readme: 'ERROR: No README data found!' }, +4057 silly install resolved { name: 'clone-stats', +4057 silly install resolved description: 'Safely clone node\'s fs.Stats instances without losing their class methods', +4057 silly install resolved version: '0.0.1', +4057 silly install resolved main: 'index.js', +4057 silly install resolved browser: 'index.js', +4057 silly install resolved dependencies: {}, +4057 silly install resolved devDependencies: { tape: '~2.3.2' }, +4057 silly install resolved scripts: { test: 'node test' }, +4057 silly install resolved author: +4057 silly install resolved { name: 'Hugh Kennedy', +4057 silly install resolved email: 'hughskennedy@gmail.com', +4057 silly install resolved url: 'http://hughsk.io/' }, +4057 silly install resolved license: 'MIT', +4057 silly install resolved repository: { type: 'git', url: 'git://github.com/hughsk/clone-stats.git' }, +4057 silly install resolved bugs: { url: 'https://github.com/hughsk/clone-stats/issues' }, +4057 silly install resolved homepage: 'https://github.com/hughsk/clone-stats', +4057 silly install resolved keywords: [ 'stats', 'fs', 'clone', 'copy', 'prototype' ], +4057 silly install resolved readmeFilename: 'README.md', +4057 silly install resolved _id: 'clone-stats@0.0.1', +4057 silly install resolved dist: +4057 silly install resolved { shasum: 'b88f94a82cf38b8791d58046ea4029ad88ca99d1', +4057 silly install resolved size: 2009, +4057 silly install resolved noattachment: false, +4057 silly install resolved key: '/clone-stats/-/clone-stats-0.0.1.tgz', +4057 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/clone-stats/download/clone-stats-0.0.1.tgz' }, +4057 silly install resolved _from: 'clone-stats@>=0.0.1 <0.0.2', +4057 silly install resolved _npmVersion: '1.3.22', +4057 silly install resolved _npmUser: { name: 'hughsk', email: 'hughskennedy@gmail.com' }, +4057 silly install resolved maintainers: [ [Object] ], +4057 silly install resolved directories: {}, +4057 silly install resolved publish_time: 1389423795565, +4057 silly install resolved _cnpm_publish_time: 1389423795565, +4057 silly install resolved _shasum: 'b88f94a82cf38b8791d58046ea4029ad88ca99d1', +4057 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/clone-stats/download/clone-stats-0.0.1.tgz', +4057 silly install resolved readme: 'ERROR: No README data found!' }, +4057 silly install resolved { name: 'clone', +4057 silly install resolved description: 'deep cloning of objects and arrays', +4057 silly install resolved tags: [ 'clone', 'object', 'array', 'function', 'date' ], +4057 silly install resolved version: '1.0.2', +4057 silly install resolved repository: { type: 'git', url: 'git://github.com/pvorb/node-clone.git' }, +4057 silly install resolved bugs: { url: 'https://github.com/pvorb/node-clone/issues' }, +4057 silly install resolved main: 'clone.js', +4057 silly install resolved author: +4057 silly install resolved { name: 'Paul Vorbach', +4057 silly install resolved email: 'paul@vorba.ch', +4057 silly install resolved url: 'http://paul.vorba.ch/' }, +4057 silly install resolved contributors: +4057 silly install resolved [ [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object], +4057 silly install resolved [Object] ], +4057 silly install resolved license: 'MIT', +4057 silly install resolved engines: { node: '>=0.8' }, +4057 silly install resolved dependencies: {}, +4057 silly install resolved devDependencies: { nodeunit: '~0.9.0' }, +4057 silly install resolved optionalDependencies: {}, +4057 silly install resolved scripts: { test: 'nodeunit test.js' }, +4057 silly install resolved gitHead: '0e8216efc672496b612fd7ab62159117d16ec4a0', +4057 silly install resolved homepage: 'https://github.com/pvorb/node-clone', +4057 silly install resolved _id: 'clone@1.0.2', +4057 silly install resolved _shasum: '260b7a99ebb1edfe247538175f783243cb19d149', +4057 silly install resolved _from: 'clone@>=1.0.0 <2.0.0', +4057 silly install resolved _npmVersion: '1.4.14', +4057 silly install resolved _npmUser: { name: 'pvorb', email: 'paul@vorba.ch' }, +4057 silly install resolved maintainers: [ [Object] ], +4057 silly install resolved dist: +4057 silly install resolved { shasum: '260b7a99ebb1edfe247538175f783243cb19d149', +4057 silly install resolved size: 7631, +4057 silly install resolved noattachment: false, +4057 silly install resolved key: 'clone/-/clone-1.0.2.tgz', +4057 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/clone/download/clone-1.0.2.tgz' }, +4057 silly install resolved directories: {}, +4057 silly install resolved publish_time: 1427326650099, +4057 silly install resolved _cnpm_publish_time: 1427326650099, +4057 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/clone/download/clone-1.0.2.tgz', +4057 silly install resolved readme: 'ERROR: No README data found!' } ] +4058 info install replace-ext@0.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl +4059 info install clone-stats@0.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl +4060 info install clone@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl +4061 info installOne replace-ext@0.0.1 +4062 verbose installOne of replace-ext to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl not in flight; installing +4063 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4064 info installOne clone-stats@0.0.1 +4065 verbose installOne of clone-stats to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl not in flight; installing +4066 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4067 info installOne clone@1.0.2 +4068 verbose installOne of clone to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl not in flight; installing +4069 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4070 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +4071 http 304 http://registry.npm.alibaba-inc.com/supports-color +4072 verbose headers { server: 'Tengine', +4072 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +4072 verbose headers connection: 'keep-alive', +4072 verbose headers etag: '"56fa-xdGFAzmi7C4qzdas+C7J9w"', +4072 verbose headers 'x-readtime': '30' } +4073 silly get cb [ 304, +4073 silly get { server: 'Tengine', +4073 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +4073 silly get connection: 'keep-alive', +4073 silly get etag: '"56fa-xdGFAzmi7C4qzdas+C7J9w"', +4073 silly get 'x-readtime': '30' } ] +4074 verbose etag http://registry.npm.alibaba-inc.com/supports-color from cache +4075 verbose get saving supports-color to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/supports-color/.cache.json +4076 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4077 verbose lock using /home/ruanyf/.tnpm/_locks/replace-ext-c39d86c5b44d8ff0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext +4078 verbose lock using /home/ruanyf/.tnpm/_locks/clone-stats-37c782b238fb79f0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats +4079 verbose lock using /home/ruanyf/.tnpm/_locks/clone-9e12a0eea285225b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone +4080 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json +4081 silly gunzTarPerm extractEntry inherits.js +4082 silly gunzTarPerm extractEntry inherits_browser.js +4083 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root +4084 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys +4085 silly install write writing replace-ext 0.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext +4086 silly install write writing clone-stats 0.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats +4087 silly install write writing clone 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone +4088 silly install resolved [] +4089 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream +4090 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream +4091 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args/package.json +4092 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate/package.json +4093 silly cache afterAdd object-assign@4.1.0 +4094 verbose afterAdd /home/ruanyf/.tnpm/object-assign/4.1.0/package/package.json not in flight; writing +4095 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4096 silly addNameRange number 2 { name: 'restore-cursor', +4096 silly addNameRange range: '>=1.0.1 <2.0.0', +4096 silly addNameRange hasData: true } +4097 silly addNameRange versions [ 'restore-cursor', [ '1.0.1', '1.0.0' ] ] +4098 silly addNamed restore-cursor@1.0.1 +4099 verbose addNamed "1.0.1" is a plain semver version for restore-cursor +4100 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8/package.json +4101 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +4102 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +4103 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +4104 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +4105 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +4106 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend +4107 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +4108 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +4109 silly gunzTarPerm extractEntry index.js +4110 silly gunzTarPerm extractEntry test.js +4111 silly addNameRange number 2 { name: 'is-fullwidth-code-point', +4111 silly addNameRange range: '>=1.0.0 <2.0.0', +4111 silly addNameRange hasData: true } +4112 silly addNameRange versions [ 'is-fullwidth-code-point', [ '1.0.0' ] ] +4113 silly addNamed is-fullwidth-code-point@1.0.0 +4114 verbose addNamed "1.0.0" is a plain semver version for is-fullwidth-code-point +4115 silly addNameRange number 2 { name: 'code-point-at', range: '>=1.0.0 <2.0.0', hasData: true } +4116 silly addNameRange versions [ 'code-point-at', [ '1.0.0' ] ] +4117 silly addNamed code-point-at@1.0.0 +4118 verbose addNamed "1.0.0" is a plain semver version for code-point-at +4119 info linkStuff mute-stream@0.0.6 +4120 silly linkStuff mute-stream@0.0.6 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +4121 silly linkStuff mute-stream@0.0.6 is part of a global install +4122 silly linkStuff mute-stream@0.0.6 is installed into a global node_modules +4123 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/package.json +4124 silly gunzTarPerm extractEntry dist/rx.core.binding.js +4125 silly gunzTarPerm extractEntry dist/rx.lite.min.js +4126 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json +4127 silly addNameRange number 2 { name: 'has-ansi', range: '>=2.0.0 <3.0.0', hasData: true } +4128 silly addNameRange versions [ 'has-ansi', +4128 silly addNameRange [ '2.0.0', '1.0.3', '1.0.2', '1.0.1', '1.0.0', '0.1.0' ] ] +4129 silly addNamed has-ansi@2.0.0 +4130 verbose addNamed "2.0.0" is a plain semver version for has-ansi +4131 silly addNameRange number 2 { name: 'pinkie', range: '>=2.0.0 <3.0.0', hasData: true } +4132 silly addNameRange versions [ 'pinkie', +4132 silly addNameRange [ '2.0.4', +4132 silly addNameRange '2.0.3', +4132 silly addNameRange '2.0.2', +4132 silly addNameRange '2.0.1', +4132 silly addNameRange '2.0.0', +4132 silly addNameRange '1.0.0', +4132 silly addNameRange '0.0.2', +4132 silly addNameRange '0.0.1', +4132 silly addNameRange '0.0.0' ] ] +4133 silly addNamed pinkie@2.0.4 +4134 verbose addNamed "2.0.4" is a plain semver version for pinkie +4135 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root is being purged from base /home/ruanyf/npm-global +4136 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root +4137 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys is being purged from base /home/ruanyf/npm-global +4138 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys +4139 info preinstall inherits@2.0.1 +4140 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +4141 silly addNameRange number 2 { name: 'escape-string-regexp', +4141 silly addNameRange range: '>=1.0.2 <2.0.0', +4141 silly addNameRange hasData: true } +4142 silly addNameRange versions [ 'escape-string-regexp', +4142 silly addNameRange [ '1.0.5', '1.0.4', '1.0.3', '1.0.2', '1.0.1', '1.0.0' ] ] +4143 silly addNamed escape-string-regexp@1.0.5 +4144 verbose addNamed "1.0.5" is a plain semver version for escape-string-regexp +4145 silly addNameRange number 2 { name: 'escape-string-regexp', +4145 silly addNameRange range: '>=1.0.5 <2.0.0', +4145 silly addNameRange hasData: true } +4146 silly addNameRange versions [ 'escape-string-regexp', +4146 silly addNameRange [ '1.0.5', '1.0.4', '1.0.3', '1.0.2', '1.0.1', '1.0.0' ] ] +4147 silly addNamed escape-string-regexp@1.0.5 +4148 verbose addNamed "1.0.5" is a plain semver version for escape-string-regexp +4149 silly addNameRange number 2 { name: 'ansi-regex', range: '>=2.0.0 <3.0.0', hasData: true } +4150 silly addNameRange versions [ 'ansi-regex', +4150 silly addNameRange [ '2.0.0', '1.1.1', '1.1.0', '1.0.0', '0.2.1', '0.2.0', '0.1.0' ] ] +4151 silly addNamed ansi-regex@2.0.0 +4152 verbose addNamed "2.0.0" is a plain semver version for ansi-regex +4153 silly addNameRange number 2 { name: 'ansi-styles', range: '>=2.2.1 <3.0.0', hasData: true } +4154 silly addNameRange versions [ 'ansi-styles', +4154 silly addNameRange [ '2.2.1', +4154 silly addNameRange '2.1.0', +4154 silly addNameRange '2.0.1', +4154 silly addNameRange '2.0.0', +4154 silly addNameRange '1.1.0', +4154 silly addNameRange '1.0.0', +4154 silly addNameRange '0.2.0', +4154 silly addNameRange '0.1.2', +4154 silly addNameRange '0.1.1', +4154 silly addNameRange '0.1.0' ] ] +4155 silly addNamed ansi-styles@2.2.1 +4156 verbose addNamed "2.2.1" is a plain semver version for ansi-styles +4157 verbose tar unpack /home/ruanyf/.tnpm/lodash._root/3.0.1/package.tgz +4158 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root +4159 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root is being purged +4160 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root +4161 verbose tar unpack /home/ruanyf/.tnpm/lodash.keys/4.0.7/package.tgz +4162 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys +4163 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys is being purged +4164 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys +4165 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 is being purged from base /home/ruanyf/npm-global +4166 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +4167 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent is being purged from base /home/ruanyf/npm-global +4168 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +4169 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream is being purged from base /home/ruanyf/npm-global +4170 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +4171 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob is being purged from base /home/ruanyf/npm-global +4172 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +4173 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams is being purged from base /home/ruanyf/npm-global +4174 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +4175 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend is being purged from base /home/ruanyf/npm-global +4176 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend +4177 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch is being purged from base /home/ruanyf/npm-global +4178 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +4179 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob is being purged from base /home/ruanyf/npm-global +4180 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +4181 info preinstall process-nextick-args@1.0.7 +4182 info preinstall util-deprecate@1.0.2 +4183 verbose linkBins mute-stream@0.0.6 +4184 verbose linkMans mute-stream@0.0.6 +4185 verbose rebuildBundles mute-stream@0.0.6 +4186 silly gunzTarPerm modes [ '755', '644' ] +4187 silly gunzTarPerm modes [ '755', '644' ] +4188 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext +4189 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone +4190 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats +4191 info linkStuff first-chunk-stream@1.0.0 +4192 silly linkStuff first-chunk-stream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules as its parent node_modules +4193 silly linkStuff first-chunk-stream@1.0.0 is part of a global install +4194 silly linkStuff first-chunk-stream@1.0.0 is installed into a global node_modules +4195 verbose tar unpack /home/ruanyf/.tnpm/through2/0.6.5/package.tgz +4196 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +4197 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 is being purged +4198 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +4199 verbose tar unpack /home/ruanyf/.tnpm/glob-parent/2.0.0/package.tgz +4200 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +4201 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent is being purged +4202 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +4203 verbose tar unpack /home/ruanyf/.tnpm/unique-stream/2.2.1/package.tgz +4204 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +4205 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream is being purged +4206 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +4207 verbose tar unpack /home/ruanyf/.tnpm/to-absolute-glob/0.1.1/package.tgz +4208 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +4209 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob is being purged +4210 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +4211 verbose tar unpack /home/ruanyf/.tnpm/ordered-read-streams/0.3.0/package.tgz +4212 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +4213 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams is being purged +4214 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +4215 verbose tar unpack /home/ruanyf/.tnpm/extend/3.0.0/package.tgz +4216 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend +4217 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend is being purged +4218 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend +4219 verbose tar unpack /home/ruanyf/.tnpm/micromatch/2.3.8/package.tgz +4220 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +4221 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch is being purged +4222 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +4223 verbose tar unpack /home/ruanyf/.tnpm/glob/5.0.15/package.tgz +4224 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +4225 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob is being purged +4226 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +4227 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json +4228 silly gunzTarPerm extractEntry divide.js +4229 silly gunzTarPerm extractEntry cond.js +4230 verbose afterAdd /home/ruanyf/.tnpm/object-assign/4.1.0/package/package.json written +4231 info install mute-stream@0.0.6 +4232 silly addNameRange number 2 { name: 'supports-color', +4232 silly addNameRange range: '>=2.0.0 <3.0.0', +4232 silly addNameRange hasData: true } +4233 silly addNameRange versions [ 'supports-color', +4233 silly addNameRange [ '3.1.2', +4233 silly addNameRange '3.1.1', +4233 silly addNameRange '3.1.0', +4233 silly addNameRange '3.0.1', +4233 silly addNameRange '3.0.0', +4233 silly addNameRange '2.0.0', +4233 silly addNameRange '1.3.1', +4233 silly addNameRange '1.3.0', +4233 silly addNameRange '1.2.1', +4233 silly addNameRange '1.2.0', +4233 silly addNameRange '1.1.0', +4233 silly addNameRange '1.0.0', +4233 silly addNameRange '0.2.0' ] ] +4234 silly addNamed supports-color@2.0.0 +4235 verbose addNamed "2.0.0" is a plain semver version for supports-color +4236 info preinstall readable-stream@2.1.4 +4237 silly gunzTarPerm modes [ '755', '644' ] +4238 silly gunzTarPerm modes [ '755', '644' ] +4239 silly gunzTarPerm modes [ '755', '644' ] +4240 silly gunzTarPerm modes [ '755', '644' ] +4241 silly gunzTarPerm modes [ '755', '644' ] +4242 silly gunzTarPerm modes [ '755', '644' ] +4243 silly gunzTarPerm modes [ '755', '644' ] +4244 silly gunzTarPerm modes [ '755', '644' ] +4245 info preinstall core-util-is@1.0.2 +4246 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args/package.json +4247 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate/package.json +4248 silly install resolved [] +4249 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 +4250 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 +4251 silly cache afterAdd restore-cursor@1.0.1 +4252 verbose afterAdd /home/ruanyf/.tnpm/restore-cursor/1.0.1/package/package.json not in flight; writing +4253 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4254 info postinstall mute-stream@0.0.6 +4255 silly cache afterAdd is-fullwidth-code-point@1.0.0 +4256 verbose afterAdd /home/ruanyf/.tnpm/is-fullwidth-code-point/1.0.0/package/package.json not in flight; writing +4257 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4258 silly cache afterAdd code-point-at@1.0.0 +4259 verbose afterAdd /home/ruanyf/.tnpm/code-point-at/1.0.0/package/package.json not in flight; writing +4260 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4261 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext is being purged from base /home/ruanyf/npm-global +4262 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext +4263 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone is being purged from base /home/ruanyf/npm-global +4264 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone +4265 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats is being purged from base /home/ruanyf/npm-global +4266 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats +4267 verbose linkBins first-chunk-stream@1.0.0 +4268 verbose linkMans first-chunk-stream@1.0.0 +4269 verbose rebuildBundles first-chunk-stream@1.0.0 +4270 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/package.json +4271 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json +4272 silly gunzTarPerm extractEntry test.js +4273 silly cache afterAdd pinkie@2.0.4 +4274 verbose afterAdd /home/ruanyf/.tnpm/pinkie/2.0.4/package/package.json not in flight; writing +4275 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4276 silly cache afterAdd has-ansi@2.0.0 +4277 verbose afterAdd /home/ruanyf/.tnpm/has-ansi/2.0.0/package/package.json not in flight; writing +4278 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4279 verbose tar unpack /home/ruanyf/.tnpm/replace-ext/0.0.1/package.tgz +4280 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext +4281 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext is being purged +4282 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext +4283 verbose tar unpack /home/ruanyf/.tnpm/clone/1.0.2/package.tgz +4284 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone +4285 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone is being purged +4286 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone +4287 verbose tar unpack /home/ruanyf/.tnpm/clone-stats/0.0.1/package.tgz +4288 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats +4289 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats is being purged +4290 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats +4291 info install first-chunk-stream@1.0.0 +4292 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/package.json +4293 silly install resolved [] +4294 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +4295 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +4296 silly cache afterAdd ansi-regex@2.0.0 +4297 verbose afterAdd /home/ruanyf/.tnpm/ansi-regex/2.0.0/package/package.json not in flight; writing +4298 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4299 silly cache afterAdd escape-string-regexp@1.0.5 +4300 verbose afterAdd /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package/package.json not in flight; writing +4301 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4302 silly cache afterAdd escape-string-regexp@1.0.5 +4303 verbose afterAdd /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package/package.json already in flight; not writing +4304 silly cache afterAdd ansi-styles@2.2.1 +4305 verbose afterAdd /home/ruanyf/.tnpm/ansi-styles/2.2.1/package/package.json not in flight; writing +4306 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4307 silly gunzTarPerm extractEntry package.json +4308 silly gunzTarPerm modes [ '755', '644' ] +4309 silly gunzTarPerm modes [ '755', '644' ] +4310 silly gunzTarPerm modes [ '755', '644' ] +4311 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend/package.json +4312 silly gunzTarPerm extractEntry dist/rx.binding.js +4313 silly gunzTarPerm extractEntry dist/rx.core.binding.min.js +4314 verbose unlock done using /home/ruanyf/.tnpm/_locks/mute-stream-2084b951161707d7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream +4315 silly gunzTarPerm extractEntry package.json +4316 info postinstall first-chunk-stream@1.0.0 +4317 silly gunzTarPerm extractEntry package.json +4318 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json +4319 silly cache afterAdd supports-color@2.0.0 +4320 verbose afterAdd /home/ruanyf/.tnpm/supports-color/2.0.0/package/package.json not in flight; writing +4321 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4322 info linkStuff is-utf8@0.2.1 +4323 silly linkStuff is-utf8@0.2.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules as its parent node_modules +4324 silly linkStuff is-utf8@0.2.1 is part of a global install +4325 silly linkStuff is-utf8@0.2.1 is installed into a global node_modules +4326 verbose afterAdd /home/ruanyf/.tnpm/restore-cursor/1.0.1/package/package.json written +4327 silly install resolved [ { name: 'restore-cursor', +4327 silly install resolved version: '1.0.1', +4327 silly install resolved description: 'Gracefully restore the CLI cursor on exit', +4327 silly install resolved license: 'MIT', +4327 silly install resolved repository: +4327 silly install resolved { type: 'git', +4327 silly install resolved url: 'git+https://github.com/sindresorhus/restore-cursor.git' }, +4327 silly install resolved author: +4327 silly install resolved { name: 'Sindre Sorhus', +4327 silly install resolved email: 'sindresorhus@gmail.com', +4327 silly install resolved url: 'http://sindresorhus.com' }, +4327 silly install resolved engines: { node: '>=0.10.0' }, +4327 silly install resolved files: [ 'index.js' ], +4327 silly install resolved keywords: +4327 silly install resolved [ 'exit', +4327 silly install resolved 'quit', +4327 silly install resolved 'process', +4327 silly install resolved 'graceful', +4327 silly install resolved 'shutdown', +4327 silly install resolved 'sigterm', +4327 silly install resolved 'sigint', +4327 silly install resolved 'terminate', +4327 silly install resolved 'kill', +4327 silly install resolved 'stop', +4327 silly install resolved 'cli', +4327 silly install resolved 'cursor', +4327 silly install resolved 'ansi', +4327 silly install resolved 'show', +4327 silly install resolved 'term', +4327 silly install resolved 'terminal', +4327 silly install resolved 'console', +4327 silly install resolved 'tty', +4327 silly install resolved 'shell', +4327 silly install resolved 'command-line' ], +4327 silly install resolved dependencies: { 'exit-hook': '^1.0.0', onetime: '^1.0.0' }, +4327 silly install resolved gitHead: '91542e5be16d7ccda8e42a63d56cc783d2cfaba2', +4327 silly install resolved bugs: { url: 'https://github.com/sindresorhus/restore-cursor/issues' }, +4327 silly install resolved homepage: 'https://github.com/sindresorhus/restore-cursor#readme', +4327 silly install resolved _id: 'restore-cursor@1.0.1', +4327 silly install resolved scripts: {}, +4327 silly install resolved _shasum: '34661f46886327fed2991479152252df92daa541', +4327 silly install resolved _from: 'restore-cursor@>=1.0.1 <2.0.0', +4327 silly install resolved _npmVersion: '2.14.3', +4327 silly install resolved _nodeVersion: '4.1.0', +4327 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +4327 silly install resolved dist: +4327 silly install resolved { shasum: '34661f46886327fed2991479152252df92daa541', +4327 silly install resolved size: 1465, +4327 silly install resolved noattachment: false, +4327 silly install resolved key: 'restore-cursor/-/restore-cursor-1.0.1.tgz', +4327 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/restore-cursor/download/restore-cursor-1.0.1.tgz' }, +4327 silly install resolved maintainers: [ [Object] ], +4327 silly install resolved directories: {}, +4327 silly install resolved publish_time: 1442583494630, +4327 silly install resolved _cnpm_publish_time: 1442583494630, +4327 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/restore-cursor/download/restore-cursor-1.0.1.tgz', +4327 silly install resolved readme: 'ERROR: No README data found!' } ] +4328 info install restore-cursor@1.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +4329 info installOne restore-cursor@1.0.1 +4330 verbose installOne of restore-cursor to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor not in flight; installing +4331 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4332 silly gunzTarPerm extractEntry package.json +4333 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] +4334 silly gunzTarPerm extractEntry package.json +4335 silly gunzTarPerm extractEntry package.json +4336 silly gunzTarPerm extractEntry package.json +4337 silly gunzTarPerm extractEntry package.json +4338 silly gunzTarPerm extractEntry package.json +4339 silly gunzTarPerm extractEntry package.json +4340 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args/package.json +4341 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate/package.json +4342 verbose afterAdd /home/ruanyf/.tnpm/code-point-at/1.0.0/package/package.json written +4343 verbose afterAdd /home/ruanyf/.tnpm/is-fullwidth-code-point/1.0.0/package/package.json written +4344 silly install resolved [ { name: 'code-point-at', +4344 silly install resolved version: '1.0.0', +4344 silly install resolved description: 'ES2015 String#codePointAt() ponyfill', +4344 silly install resolved license: 'MIT', +4344 silly install resolved repository: +4344 silly install resolved { type: 'git', +4344 silly install resolved url: 'git+https://github.com/sindresorhus/code-point-at.git' }, +4344 silly install resolved author: +4344 silly install resolved { name: 'Sindre Sorhus', +4344 silly install resolved email: 'sindresorhus@gmail.com', +4344 silly install resolved url: 'sindresorhus.com' }, +4344 silly install resolved engines: { node: '>=0.10.0' }, +4344 silly install resolved scripts: { test: 'node test.js' }, +4344 silly install resolved files: [ 'index.js' ], +4344 silly install resolved keywords: +4344 silly install resolved [ 'es2015', +4344 silly install resolved 'es6', +4344 silly install resolved 'ponyfill', +4344 silly install resolved 'polyfill', +4344 silly install resolved 'shim', +4344 silly install resolved 'string', +4344 silly install resolved 'str', +4344 silly install resolved 'code', +4344 silly install resolved 'point', +4344 silly install resolved 'at', +4344 silly install resolved 'codepoint', +4344 silly install resolved 'unicode' ], +4344 silly install resolved dependencies: { 'number-is-nan': '^1.0.0' }, +4344 silly install resolved devDependencies: { ava: '0.0.4' }, +4344 silly install resolved gitHead: 'c2ffa4064718b37c84c73a633abeeed5b486a469', +4344 silly install resolved bugs: { url: 'https://github.com/sindresorhus/code-point-at/issues' }, +4344 silly install resolved homepage: 'https://github.com/sindresorhus/code-point-at', +4344 silly install resolved _id: 'code-point-at@1.0.0', +4344 silly install resolved _shasum: 'f69b192d3f7d91e382e4b71bddb77878619ab0c6', +4344 silly install resolved _from: 'code-point-at@>=1.0.0 <2.0.0', +4344 silly install resolved _npmVersion: '2.11.2', +4344 silly install resolved _nodeVersion: '0.12.5', +4344 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +4344 silly install resolved dist: +4344 silly install resolved { shasum: 'f69b192d3f7d91e382e4b71bddb77878619ab0c6', +4344 silly install resolved size: 1795, +4344 silly install resolved noattachment: false, +4344 silly install resolved key: 'code-point-at/-/code-point-at-1.0.0.tgz', +4344 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/code-point-at/download/code-point-at-1.0.0.tgz' }, +4344 silly install resolved maintainers: [ [Object] ], +4344 silly install resolved directories: {}, +4344 silly install resolved publish_time: 1437083487313, +4344 silly install resolved _cnpm_publish_time: 1437083487313, +4344 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/code-point-at/download/code-point-at-1.0.0.tgz', +4344 silly install resolved readme: 'ERROR: No README data found!' }, +4344 silly install resolved { name: 'is-fullwidth-code-point', +4344 silly install resolved version: '1.0.0', +4344 silly install resolved description: 'Check if the character represented by a given Unicode code point is fullwidth', +4344 silly install resolved license: 'MIT', +4344 silly install resolved repository: +4344 silly install resolved { type: 'git', +4344 silly install resolved url: 'git+https://github.com/sindresorhus/is-fullwidth-code-point.git' }, +4344 silly install resolved author: +4344 silly install resolved { name: 'Sindre Sorhus', +4344 silly install resolved email: 'sindresorhus@gmail.com', +4344 silly install resolved url: 'sindresorhus.com' }, +4344 silly install resolved engines: { node: '>=0.10.0' }, +4344 silly install resolved scripts: { test: 'node test.js' }, +4344 silly install resolved files: [ 'index.js' ], +4344 silly install resolved keywords: +4344 silly install resolved [ 'fullwidth', +4344 silly install resolved 'full-width', +4344 silly install resolved 'full', +4344 silly install resolved 'width', +4344 silly install resolved 'unicode', +4344 silly install resolved 'character', +4344 silly install resolved 'char', +4344 silly install resolved 'string', +4344 silly install resolved 'str', +4344 silly install resolved 'codepoint', +4344 silly install resolved 'code', +4344 silly install resolved 'point', +4344 silly install resolved 'is', +4344 silly install resolved 'detect', +4344 silly install resolved 'check' ], +4344 silly install resolved dependencies: { 'number-is-nan': '^1.0.0' }, +4344 silly install resolved devDependencies: { ava: '0.0.4', 'code-point-at': '^1.0.0' }, +4344 silly install resolved gitHead: 'f2152d357f41f82785436d428e4f8ede143b7548', +4344 silly install resolved bugs: { url: 'https://github.com/sindresorhus/is-fullwidth-code-point/issues' }, +4344 silly install resolved homepage: 'https://github.com/sindresorhus/is-fullwidth-code-point', +4344 silly install resolved _id: 'is-fullwidth-code-point@1.0.0', +4344 silly install resolved _shasum: 'ef9e31386f031a7f0d643af82fde50c457ef00cb', +4344 silly install resolved _from: 'is-fullwidth-code-point@>=1.0.0 <2.0.0', +4344 silly install resolved _npmVersion: '2.11.2', +4344 silly install resolved _nodeVersion: '0.12.5', +4344 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +4344 silly install resolved dist: +4344 silly install resolved { shasum: 'ef9e31386f031a7f0d643af82fde50c457ef00cb', +4344 silly install resolved size: 2124, +4344 silly install resolved noattachment: false, +4344 silly install resolved key: 'is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz', +4344 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz' }, +4344 silly install resolved maintainers: [ [Object] ], +4344 silly install resolved directories: {}, +4344 silly install resolved publish_time: 1437084018162, +4344 silly install resolved _cnpm_publish_time: 1437084018162, +4344 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz', +4344 silly install resolved readme: 'ERROR: No README data found!' } ] +4345 info install code-point-at@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +4346 info install is-fullwidth-code-point@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +4347 info installOne code-point-at@1.0.0 +4348 verbose installOne of code-point-at to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width not in flight; installing +4349 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4350 info installOne is-fullwidth-code-point@1.0.0 +4351 verbose installOne of is-fullwidth-code-point to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width not in flight; installing +4352 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4353 info preinstall run-async@2.2.0 +4354 verbose afterAdd /home/ruanyf/.tnpm/pinkie/2.0.4/package/package.json written +4355 silly install resolved [ { name: 'pinkie', +4355 silly install resolved version: '2.0.4', +4355 silly install resolved description: 'Itty bitty little widdle twinkie pinkie ES2015 Promise implementation', +4355 silly install resolved license: 'MIT', +4355 silly install resolved repository: +4355 silly install resolved { type: 'git', +4355 silly install resolved url: 'git+https://github.com/floatdrop/pinkie.git' }, +4355 silly install resolved author: +4355 silly install resolved { name: 'Vsevolod Strukchinsky', +4355 silly install resolved email: 'floatdrop@gmail.com', +4355 silly install resolved url: 'github.com/floatdrop' }, +4355 silly install resolved engines: { node: '>=0.10.0' }, +4355 silly install resolved scripts: +4355 silly install resolved { test: 'xo && nyc mocha', +4355 silly install resolved coverage: 'nyc report --reporter=text-lcov | coveralls' }, +4355 silly install resolved files: [ 'index.js' ], +4355 silly install resolved keywords: [ 'promise', 'promises', 'es2015', 'es6' ], +4355 silly install resolved devDependencies: +4355 silly install resolved { 'core-assert': '^0.1.1', +4355 silly install resolved coveralls: '^2.11.4', +4355 silly install resolved mocha: '*', +4355 silly install resolved nyc: '^3.2.2', +4355 silly install resolved 'promises-aplus-tests': '*', +4355 silly install resolved xo: '^0.10.1' }, +4355 silly install resolved gitHead: '8d4a92447a5c62bff9f89756caeb4c9c8770579b', +4355 silly install resolved bugs: { url: 'https://github.com/floatdrop/pinkie/issues' }, +4355 silly install resolved homepage: 'https://github.com/floatdrop/pinkie', +4355 silly install resolved _id: 'pinkie@2.0.4', +4355 silly install resolved _shasum: '72556b80cfa0d48a974e80e77248e80ed4f7f870', +4355 silly install resolved _from: 'pinkie@>=2.0.0 <3.0.0', +4355 silly install resolved _npmVersion: '2.14.12', +4355 silly install resolved _nodeVersion: '4.2.4', +4355 silly install resolved _npmUser: { name: 'floatdrop', email: 'floatdrop@gmail.com' }, +4355 silly install resolved dist: +4355 silly install resolved { shasum: '72556b80cfa0d48a974e80e77248e80ed4f7f870', +4355 silly install resolved size: 3935, +4355 silly install resolved noattachment: false, +4355 silly install resolved key: 'pinkie/-/pinkie-2.0.4.tgz', +4355 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/pinkie/download/pinkie-2.0.4.tgz' }, +4355 silly install resolved maintainers: [ [Object] ], +4355 silly install resolved directories: {}, +4355 silly install resolved publish_time: 1454324926357, +4355 silly install resolved _cnpm_publish_time: 1454324926357, +4355 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/pinkie/download/pinkie-2.0.4.tgz', +4355 silly install resolved readme: 'ERROR: No README data found!' } ] +4356 info install pinkie@2.0.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +4357 info installOne pinkie@2.0.4 +4358 verbose installOne of pinkie to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise not in flight; installing +4359 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4360 verbose afterAdd /home/ruanyf/.tnpm/has-ansi/2.0.0/package/package.json written +4361 silly gunzTarPerm extractEntry README.md +4362 silly gunzTarPerm extractEntry LICENSE +4363 verbose lock using /home/ruanyf/.tnpm/_locks/restore-cursor-adaa1e73f0b61457.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +4364 verbose unlock done using /home/ruanyf/.tnpm/_locks/first-chunk-stream-8f8e638611f67384.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream +4365 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream +4366 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream +4367 info preinstall xtend@4.0.1 +4368 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json +4369 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json +4370 silly gunzTarPerm extractEntry drop.js +4371 silly gunzTarPerm extractEntry concat.js +4372 info linkStuff string_decoder@0.10.31 +4373 silly linkStuff string_decoder@0.10.31 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +4374 silly linkStuff string_decoder@0.10.31 is part of a global install +4375 silly linkStuff string_decoder@0.10.31 is installed into a global node_modules +4376 verbose afterAdd /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package/package.json written +4377 silly install resolved [ { name: 'object-assign', +4377 silly install resolved version: '4.1.0', +4377 silly install resolved description: 'ES2015 Object.assign() ponyfill', +4377 silly install resolved license: 'MIT', +4377 silly install resolved repository: +4377 silly install resolved { type: 'git', +4377 silly install resolved url: 'git+https://github.com/sindresorhus/object-assign.git' }, +4377 silly install resolved author: +4377 silly install resolved { name: 'Sindre Sorhus', +4377 silly install resolved email: 'sindresorhus@gmail.com', +4377 silly install resolved url: 'sindresorhus.com' }, +4377 silly install resolved engines: { node: '>=0.10.0' }, +4377 silly install resolved scripts: { test: 'xo && mocha', bench: 'matcha bench.js' }, +4377 silly install resolved files: [ 'index.js' ], +4377 silly install resolved keywords: +4377 silly install resolved [ 'object', +4377 silly install resolved 'assign', +4377 silly install resolved 'extend', +4377 silly install resolved 'properties', +4377 silly install resolved 'es2015', +4377 silly install resolved 'ecmascript', +4377 silly install resolved 'harmony', +4377 silly install resolved 'ponyfill', +4377 silly install resolved 'prollyfill', +4377 silly install resolved 'polyfill', +4377 silly install resolved 'shim', +4377 silly install resolved 'browser' ], +4377 silly install resolved devDependencies: { lodash: '^4.8.2', matcha: '^0.7.0', mocha: '*', xo: '*' }, +4377 silly install resolved gitHead: '72fe21c86911758f3342fdf41c2a57860d5829bc', +4377 silly install resolved bugs: { url: 'https://github.com/sindresorhus/object-assign/issues' }, +4377 silly install resolved homepage: 'https://github.com/sindresorhus/object-assign#readme', +4377 silly install resolved _id: 'object-assign@4.1.0', +4377 silly install resolved _shasum: '7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0', +4377 silly install resolved _from: 'object-assign@>=4.1.0 <5.0.0', +4377 silly install resolved _npmVersion: '2.14.19', +4377 silly install resolved _nodeVersion: '4.1.0', +4377 silly install resolved _npmUser: { name: 'spicyj', email: 'ben@benalpert.com' }, +4377 silly install resolved maintainers: [ [Object], [Object] ], +4377 silly install resolved dist: +4377 silly install resolved { shasum: '7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0', +4377 silly install resolved size: 3247, +4377 silly install resolved noattachment: false, +4377 silly install resolved key: 'object-assign/-/object-assign-4.1.0.tgz', +4377 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.0.tgz' }, +4377 silly install resolved _npmOperationalInternal: +4377 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +4377 silly install resolved tmp: 'tmp/object-assign-4.1.0.tgz_1462212593641_0.3332549517508596' }, +4377 silly install resolved directories: {}, +4377 silly install resolved publish_time: 1462212595804, +4377 silly install resolved _cnpm_publish_time: 1462212595804, +4377 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.0.tgz', +4377 silly install resolved readme: 'ERROR: No README data found!' }, +4377 silly install resolved { name: 'escape-string-regexp', +4377 silly install resolved version: '1.0.5', +4377 silly install resolved description: 'Escape RegExp special characters', +4377 silly install resolved license: 'MIT', +4377 silly install resolved repository: +4377 silly install resolved { type: 'git', +4377 silly install resolved url: 'git+https://github.com/sindresorhus/escape-string-regexp.git' }, +4377 silly install resolved author: +4377 silly install resolved { name: 'Sindre Sorhus', +4377 silly install resolved email: 'sindresorhus@gmail.com', +4377 silly install resolved url: 'sindresorhus.com' }, +4377 silly install resolved maintainers: [ [Object], [Object] ], +4377 silly install resolved engines: { node: '>=0.8.0' }, +4377 silly install resolved scripts: { test: 'xo && ava' }, +4377 silly install resolved files: [ 'index.js' ], +4377 silly install resolved keywords: +4377 silly install resolved [ 'escape', +4377 silly install resolved 'regex', +4377 silly install resolved 'regexp', +4377 silly install resolved 're', +4377 silly install resolved 'regular', +4377 silly install resolved 'expression', +4377 silly install resolved 'string', +4377 silly install resolved 'str', +4377 silly install resolved 'special', +4377 silly install resolved 'characters' ], +4377 silly install resolved devDependencies: { ava: '*', xo: '*' }, +4377 silly install resolved gitHead: 'db124a3e1aae9d692c4899e42a5c6c3e329eaa20', +4377 silly install resolved bugs: { url: 'https://github.com/sindresorhus/escape-string-regexp/issues' }, +4377 silly install resolved homepage: 'https://github.com/sindresorhus/escape-string-regexp', +4377 silly install resolved _id: 'escape-string-regexp@1.0.5', +4377 silly install resolved _shasum: '1b61c0562190a8dff6ae3bb2cf0200ca130b86d4', +4377 silly install resolved _from: 'escape-string-regexp@>=1.0.2 <2.0.0', +4377 silly install resolved _npmVersion: '2.14.12', +4377 silly install resolved _nodeVersion: '4.2.6', +4377 silly install resolved _npmUser: { name: 'jbnicolai', email: 'jappelman@xebia.com' }, +4377 silly install resolved dist: +4377 silly install resolved { shasum: '1b61c0562190a8dff6ae3bb2cf0200ca130b86d4', +4377 silly install resolved size: 1578, +4377 silly install resolved noattachment: false, +4377 silly install resolved key: 'escape-string-regexp/-/escape-string-regexp-1.0.5.tgz', +4377 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz' }, +4377 silly install resolved _npmOperationalInternal: +4377 silly install resolved { host: 'packages-9-west.internal.npmjs.com', +4377 silly install resolved tmp: 'tmp/escape-string-regexp-1.0.5.tgz_1456059312074_0.7245344955008477' }, +4377 silly install resolved directories: {}, +4377 silly install resolved publish_time: 1456059317074, +4377 silly install resolved _cnpm_publish_time: 1456059317074, +4377 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz', +4377 silly install resolved readme: 'ERROR: No README data found!' } ] +4378 info install object-assign@4.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +4379 info install escape-string-regexp@1.0.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +4380 info installOne object-assign@4.1.0 +4381 verbose installOne of object-assign to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures not in flight; installing +4382 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4383 info installOne escape-string-regexp@1.0.5 +4384 verbose installOne of escape-string-regexp to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures not in flight; installing +4385 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4386 verbose afterAdd /home/ruanyf/.tnpm/ansi-regex/2.0.0/package/package.json written +4387 silly install resolved [ { name: 'ansi-regex', +4387 silly install resolved version: '2.0.0', +4387 silly install resolved description: 'Regular expression for matching ANSI escape codes', +4387 silly install resolved license: 'MIT', +4387 silly install resolved repository: +4387 silly install resolved { type: 'git', +4387 silly install resolved url: 'git+https://github.com/sindresorhus/ansi-regex.git' }, +4387 silly install resolved author: +4387 silly install resolved { name: 'Sindre Sorhus', +4387 silly install resolved email: 'sindresorhus@gmail.com', +4387 silly install resolved url: 'sindresorhus.com' }, +4387 silly install resolved maintainers: [ [Object], [Object] ], +4387 silly install resolved engines: { node: '>=0.10.0' }, +4387 silly install resolved scripts: +4387 silly install resolved { test: 'mocha test/test.js', +4387 silly install resolved 'view-supported': 'node test/viewCodes.js' }, +4387 silly install resolved files: [ 'index.js' ], +4387 silly install resolved keywords: +4387 silly install resolved [ 'ansi', +4387 silly install resolved 'styles', +4387 silly install resolved 'color', +4387 silly install resolved 'colour', +4387 silly install resolved 'colors', +4387 silly install resolved 'terminal', +4387 silly install resolved 'console', +4387 silly install resolved 'cli', +4387 silly install resolved 'string', +4387 silly install resolved 'tty', +4387 silly install resolved 'escape', +4387 silly install resolved 'formatting', +4387 silly install resolved 'rgb', +4387 silly install resolved '256', +4387 silly install resolved 'shell', +4387 silly install resolved 'xterm', +4387 silly install resolved 'command-line', +4387 silly install resolved 'text', +4387 silly install resolved 'regex', +4387 silly install resolved 'regexp', +4387 silly install resolved 're', +4387 silly install resolved 'match', +4387 silly install resolved 'test', +4387 silly install resolved 'find', +4387 silly install resolved 'pattern' ], +4387 silly install resolved devDependencies: { mocha: '*' }, +4387 silly install resolved gitHead: '57c3f2941a73079fa8b081e02a522e3d29913e2f', +4387 silly install resolved bugs: { url: 'https://github.com/sindresorhus/ansi-regex/issues' }, +4387 silly install resolved homepage: 'https://github.com/sindresorhus/ansi-regex', +4387 silly install resolved _id: 'ansi-regex@2.0.0', +4387 silly install resolved _shasum: 'c5061b6e0ef8a81775e50f5d66151bf6bf371107', +4387 silly install resolved _from: 'ansi-regex@>=2.0.0 <3.0.0', +4387 silly install resolved _npmVersion: '2.11.2', +4387 silly install resolved _nodeVersion: '0.12.5', +4387 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +4387 silly install resolved dist: +4387 silly install resolved { shasum: 'c5061b6e0ef8a81775e50f5d66151bf6bf371107', +4387 silly install resolved size: 1665, +4387 silly install resolved noattachment: false, +4387 silly install resolved key: 'ansi-regex/-/ansi-regex-2.0.0.tgz', +4387 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-2.0.0.tgz' }, +4387 silly install resolved directories: {}, +4387 silly install resolved publish_time: 1435680439279, +4387 silly install resolved _cnpm_publish_time: 1435680439279, +4387 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-2.0.0.tgz', +4387 silly install resolved readme: 'ERROR: No README data found!' } ] +4388 info install ansi-regex@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +4389 info installOne ansi-regex@2.0.0 +4390 verbose installOne of ansi-regex to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi not in flight; installing +4391 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4392 verbose lock using /home/ruanyf/.tnpm/_locks/code-point-at-d5ee80b89d077134.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +4393 verbose afterAdd /home/ruanyf/.tnpm/ansi-styles/2.2.1/package/package.json written +4394 silly gunzTarPerm extractEntry package.json +4395 verbose lock using /home/ruanyf/.tnpm/_locks/is-fullwidth-code-point-8af8b37bbc384528.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +4396 verbose linkBins is-utf8@0.2.1 +4397 verbose linkMans is-utf8@0.2.1 +4398 verbose rebuildBundles is-utf8@0.2.1 +4399 silly install write writing restore-cursor 1.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +4400 silly gunzTarPerm extractEntry README.md +4401 silly gunzTarPerm extractEntry LICENSE +4402 silly gunzTarPerm extractEntry README.md +4403 silly gunzTarPerm extractEntry LICENSE +4404 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/package.json +4405 verbose lock using /home/ruanyf/.tnpm/_locks/pinkie-2602c6197036fe75.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie +4406 silly install write writing code-point-at 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +4407 silly gunzTarPerm extractEntry package.json +4408 silly gunzTarPerm modified mode [ 'package.json', 438, 420 ] +4409 silly gunzTarPerm extractEntry package.json +4410 silly install write writing is-fullwidth-code-point 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +4411 info install is-utf8@0.2.1 +4412 silly gunzTarPerm extractEntry .npmignore +4413 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] +4414 silly gunzTarPerm extractEntry README.md +4415 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] +4416 silly gunzTarPerm extractEntry .npmignore +4417 silly gunzTarPerm extractEntry README.md +4418 silly gunzTarPerm extractEntry LICENSE +4419 silly gunzTarPerm extractEntry index.js +4420 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend/package.json +4421 silly gunzTarPerm extractEntry README.md +4422 silly gunzTarPerm extractEntry LICENSE +4423 silly gunzTarPerm extractEntry .npmignore +4424 silly gunzTarPerm extractEntry README.md +4425 silly gunzTarPerm extractEntry README.md +4426 silly gunzTarPerm extractEntry LICENSE +4427 silly gunzTarPerm extractEntry common.js +4428 silly gunzTarPerm extractEntry glob.js +4429 silly gunzTarPerm extractEntry sync.js +4430 silly gunzTarPerm extractEntry README.md +4431 silly gunzTarPerm extractEntry LICENSE +4432 silly gunzTarPerm extractEntry index.js +4433 silly gunzTarPerm extractEntry lib/chars.js +4434 silly gunzTarPerm extractEntry lib/expand.js +4435 silly gunzTarPerm extractEntry lib/glob.js +4436 silly gunzTarPerm extractEntry lib/utils.js +4437 verbose lock using /home/ruanyf/.tnpm/_locks/object-assign-eafc798024093e48.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign +4438 verbose lock using /home/ruanyf/.tnpm/_locks/escape-string-regexp-e55ea98c78fe1e1c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp +4439 silly install write writing pinkie 2.0.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie +4440 verbose lock using /home/ruanyf/.tnpm/_locks/ansi-regex-984f03aa752cf33a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex +4441 verbose afterAdd /home/ruanyf/.tnpm/supports-color/2.0.0/package/package.json written +4442 silly install resolved [ { name: 'has-ansi', +4442 silly install resolved version: '2.0.0', +4442 silly install resolved description: 'Check if a string has ANSI escape codes', +4442 silly install resolved license: 'MIT', +4442 silly install resolved repository: +4442 silly install resolved { type: 'git', +4442 silly install resolved url: 'git+https://github.com/sindresorhus/has-ansi.git' }, +4442 silly install resolved author: +4442 silly install resolved { name: 'Sindre Sorhus', +4442 silly install resolved email: 'sindresorhus@gmail.com', +4442 silly install resolved url: 'sindresorhus.com' }, +4442 silly install resolved maintainers: [ [Object], [Object] ], +4442 silly install resolved engines: { node: '>=0.10.0' }, +4442 silly install resolved scripts: { test: 'node test.js' }, +4442 silly install resolved files: [ 'index.js' ], +4442 silly install resolved keywords: +4442 silly install resolved [ 'ansi', +4442 silly install resolved 'styles', +4442 silly install resolved 'color', +4442 silly install resolved 'colour', +4442 silly install resolved 'colors', +4442 silly install resolved 'terminal', +4442 silly install resolved 'console', +4442 silly install resolved 'string', +4442 silly install resolved 'tty', +4442 silly install resolved 'escape', +4442 silly install resolved 'shell', +4442 silly install resolved 'xterm', +4442 silly install resolved 'command-line', +4442 silly install resolved 'text', +4442 silly install resolved 'regex', +4442 silly install resolved 'regexp', +4442 silly install resolved 're', +4442 silly install resolved 'match', +4442 silly install resolved 'test', +4442 silly install resolved 'find', +4442 silly install resolved 'pattern', +4442 silly install resolved 'has' ], +4442 silly install resolved dependencies: { 'ansi-regex': '^2.0.0' }, +4442 silly install resolved devDependencies: { ava: '0.0.4' }, +4442 silly install resolved gitHead: '0722275e1bef139fcd09137da6e5550c3cd368b9', +4442 silly install resolved bugs: { url: 'https://github.com/sindresorhus/has-ansi/issues' }, +4442 silly install resolved homepage: 'https://github.com/sindresorhus/has-ansi', +4442 silly install resolved _id: 'has-ansi@2.0.0', +4442 silly install resolved _shasum: '34f5049ce1ecdf2b0649af3ef24e45ed35416d91', +4442 silly install resolved _from: 'has-ansi@>=2.0.0 <3.0.0', +4442 silly install resolved _npmVersion: '2.11.2', +4442 silly install resolved _nodeVersion: '0.12.5', +4442 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +4442 silly install resolved dist: +4442 silly install resolved { shasum: '34f5049ce1ecdf2b0649af3ef24e45ed35416d91', +4442 silly install resolved size: 1702, +4442 silly install resolved noattachment: false, +4442 silly install resolved key: 'has-ansi/-/has-ansi-2.0.0.tgz', +4442 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/has-ansi/download/has-ansi-2.0.0.tgz' }, +4442 silly install resolved directories: {}, +4442 silly install resolved publish_time: 1435681054067, +4442 silly install resolved _cnpm_publish_time: 1435681054067, +4442 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/has-ansi/download/has-ansi-2.0.0.tgz', +4442 silly install resolved readme: 'ERROR: No README data found!' }, +4442 silly install resolved { name: 'escape-string-regexp', +4442 silly install resolved version: '1.0.5', +4442 silly install resolved description: 'Escape RegExp special characters', +4442 silly install resolved license: 'MIT', +4442 silly install resolved repository: +4442 silly install resolved { type: 'git', +4442 silly install resolved url: 'git+https://github.com/sindresorhus/escape-string-regexp.git' }, +4442 silly install resolved author: +4442 silly install resolved { name: 'Sindre Sorhus', +4442 silly install resolved email: 'sindresorhus@gmail.com', +4442 silly install resolved url: 'sindresorhus.com' }, +4442 silly install resolved maintainers: [ [Object], [Object] ], +4442 silly install resolved engines: { node: '>=0.8.0' }, +4442 silly install resolved scripts: { test: 'xo && ava' }, +4442 silly install resolved files: [ 'index.js' ], +4442 silly install resolved keywords: +4442 silly install resolved [ 'escape', +4442 silly install resolved 'regex', +4442 silly install resolved 'regexp', +4442 silly install resolved 're', +4442 silly install resolved 'regular', +4442 silly install resolved 'expression', +4442 silly install resolved 'string', +4442 silly install resolved 'str', +4442 silly install resolved 'special', +4442 silly install resolved 'characters' ], +4442 silly install resolved devDependencies: { ava: '*', xo: '*' }, +4442 silly install resolved gitHead: 'db124a3e1aae9d692c4899e42a5c6c3e329eaa20', +4442 silly install resolved bugs: { url: 'https://github.com/sindresorhus/escape-string-regexp/issues' }, +4442 silly install resolved homepage: 'https://github.com/sindresorhus/escape-string-regexp', +4442 silly install resolved _id: 'escape-string-regexp@1.0.5', +4442 silly install resolved _shasum: '1b61c0562190a8dff6ae3bb2cf0200ca130b86d4', +4442 silly install resolved _from: 'escape-string-regexp@>=1.0.2 <2.0.0', +4442 silly install resolved _npmVersion: '2.14.12', +4442 silly install resolved _nodeVersion: '4.2.6', +4442 silly install resolved _npmUser: { name: 'jbnicolai', email: 'jappelman@xebia.com' }, +4442 silly install resolved dist: +4442 silly install resolved { shasum: '1b61c0562190a8dff6ae3bb2cf0200ca130b86d4', +4442 silly install resolved size: 1578, +4442 silly install resolved noattachment: false, +4442 silly install resolved key: 'escape-string-regexp/-/escape-string-regexp-1.0.5.tgz', +4442 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz' }, +4442 silly install resolved _npmOperationalInternal: +4442 silly install resolved { host: 'packages-9-west.internal.npmjs.com', +4442 silly install resolved tmp: 'tmp/escape-string-regexp-1.0.5.tgz_1456059312074_0.7245344955008477' }, +4442 silly install resolved directories: {}, +4442 silly install resolved publish_time: 1456059317074, +4442 silly install resolved _cnpm_publish_time: 1456059317074, +4442 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz', +4442 silly install resolved readme: 'ERROR: No README data found!' }, +4442 silly install resolved { name: 'ansi-styles', +4442 silly install resolved version: '2.2.1', +4442 silly install resolved description: 'ANSI escape codes for styling strings in the terminal', +4442 silly install resolved license: 'MIT', +4442 silly install resolved repository: +4442 silly install resolved { type: 'git', +4442 silly install resolved url: 'git+https://github.com/chalk/ansi-styles.git' }, +4442 silly install resolved author: +4442 silly install resolved { name: 'Sindre Sorhus', +4442 silly install resolved email: 'sindresorhus@gmail.com', +4442 silly install resolved url: 'sindresorhus.com' }, +4442 silly install resolved maintainers: [ [Object], [Object] ], +4442 silly install resolved engines: { node: '>=0.10.0' }, +4442 silly install resolved scripts: { test: 'mocha' }, +4442 silly install resolved files: [ 'index.js' ], +4442 silly install resolved keywords: +4442 silly install resolved [ 'ansi', +4442 silly install resolved 'styles', +4442 silly install resolved 'color', +4442 silly install resolved 'colour', +4442 silly install resolved 'colors', +4442 silly install resolved 'terminal', +4442 silly install resolved 'console', +4442 silly install resolved 'cli', +4442 silly install resolved 'string', +4442 silly install resolved 'tty', +4442 silly install resolved 'escape', +4442 silly install resolved 'formatting', +4442 silly install resolved 'rgb', +4442 silly install resolved '256', +4442 silly install resolved 'shell', +4442 silly install resolved 'xterm', +4442 silly install resolved 'log', +4442 silly install resolved 'logging', +4442 silly install resolved 'command-line', +4442 silly install resolved 'text' ], +4442 silly install resolved devDependencies: { mocha: '*' }, +4442 silly install resolved gitHead: '95c59b23be760108b6530ca1c89477c21b258032', +4442 silly install resolved bugs: { url: 'https://github.com/chalk/ansi-styles/issues' }, +4442 silly install resolved homepage: 'https://github.com/chalk/ansi-styles#readme', +4442 silly install resolved _id: 'ansi-styles@2.2.1', +4442 silly install resolved _shasum: 'b432dd3358b634cf75e1e4664368240533c1ddbe', +4442 silly install resolved _from: 'ansi-styles@>=2.2.1 <3.0.0', +4442 silly install resolved _npmVersion: '3.8.3', +4442 silly install resolved _nodeVersion: '4.3.0', +4442 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +4442 silly install resolved dist: +4442 silly install resolved { shasum: 'b432dd3358b634cf75e1e4664368240533c1ddbe', +4442 silly install resolved size: 2443, +4442 silly install resolved noattachment: false, +4442 silly install resolved key: 'ansi-styles/-/ansi-styles-2.2.1.tgz', +4442 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ansi-styles/download/ansi-styles-2.2.1.tgz' }, +4442 silly install resolved _npmOperationalInternal: +4442 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +4442 silly install resolved tmp: 'tmp/ansi-styles-2.2.1.tgz_1459197317833_0.9694824463222176' }, +4442 silly install resolved directories: {}, +4442 silly install resolved publish_time: 1459197318267, +4442 silly install resolved _cnpm_publish_time: 1459197318267, +4442 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ansi-styles/download/ansi-styles-2.2.1.tgz', +4442 silly install resolved readme: 'ERROR: No README data found!' }, +4442 silly install resolved { name: 'supports-color', +4442 silly install resolved version: '2.0.0', +4442 silly install resolved description: 'Detect whether a terminal supports color', +4442 silly install resolved license: 'MIT', +4442 silly install resolved repository: +4442 silly install resolved { type: 'git', +4442 silly install resolved url: 'git+https://github.com/chalk/supports-color.git' }, +4442 silly install resolved author: +4442 silly install resolved { name: 'Sindre Sorhus', +4442 silly install resolved email: 'sindresorhus@gmail.com', +4442 silly install resolved url: 'sindresorhus.com' }, +4442 silly install resolved maintainers: [ [Object], [Object] ], +4442 silly install resolved engines: { node: '>=0.8.0' }, +4442 silly install resolved scripts: { test: 'mocha' }, +4442 silly install resolved files: [ 'index.js' ], +4442 silly install resolved keywords: +4442 silly install resolved [ 'color', +4442 silly install resolved 'colour', +4442 silly install resolved 'colors', +4442 silly install resolved 'terminal', +4442 silly install resolved 'console', +4442 silly install resolved 'cli', +4442 silly install resolved 'ansi', +4442 silly install resolved 'styles', +4442 silly install resolved 'tty', +4442 silly install resolved 'rgb', +4442 silly install resolved '256', +4442 silly install resolved 'shell', +4442 silly install resolved 'xterm', +4442 silly install resolved 'command-line', +4442 silly install resolved 'support', +4442 silly install resolved 'supports', +4442 silly install resolved 'capability', +4442 silly install resolved 'detect' ], +4442 silly install resolved devDependencies: { mocha: '*', 'require-uncached': '^1.0.2' }, +4442 silly install resolved gitHead: '8400d98ade32b2adffd50902c06d9e725a5c6588', +4442 silly install resolved bugs: { url: 'https://github.com/chalk/supports-color/issues' }, +4442 silly install resolved homepage: 'https://github.com/chalk/supports-color', +4442 silly install resolved _id: 'supports-color@2.0.0', +4442 silly install resolved _shasum: '535d045ce6b6363fa40117084629995e9df324c7', +4442 silly install resolved _from: 'supports-color@>=2.0.0 <3.0.0', +4442 silly install resolved _npmVersion: '2.11.2', +4442 silly install resolved _nodeVersion: '0.12.5', +4442 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +4442 silly install resolved dist: +4442 silly install resolved { shasum: '535d045ce6b6363fa40117084629995e9df324c7', +4442 silly install resolved size: 1951, +4442 silly install resolved noattachment: false, +4442 silly install resolved key: 'supports-color/-/supports-color-2.0.0.tgz', +4442 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/supports-color/download/supports-color-2.0.0.tgz' }, +4442 silly install resolved directories: {}, +4442 silly install resolved publish_time: 1435705114955, +4442 silly install resolved _cnpm_publish_time: 1435705114955, +4442 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/supports-color/download/supports-color-2.0.0.tgz', +4442 silly install resolved readme: 'ERROR: No README data found!' } ] +4443 info install has-ansi@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +4444 info install escape-string-regexp@1.0.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +4445 info install ansi-styles@2.2.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +4446 info install supports-color@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +4447 info installOne has-ansi@2.0.0 +4448 verbose installOne of has-ansi to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk not in flight; installing +4449 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4450 info installOne escape-string-regexp@1.0.5 +4451 verbose installOne of escape-string-regexp to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk not in flight; installing +4452 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4453 info installOne ansi-styles@2.2.1 +4454 verbose installOne of ansi-styles to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk not in flight; installing +4455 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4456 info installOne supports-color@2.0.0 +4457 verbose installOne of supports-color to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk not in flight; installing +4458 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +4459 silly install resolved [] +4460 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits +4461 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits +4462 verbose linkBins string_decoder@0.10.31 +4463 verbose linkMans string_decoder@0.10.31 +4464 verbose rebuildBundles string_decoder@0.10.31 +4465 silly install write writing object-assign 4.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign +4466 silly install write writing escape-string-regexp 1.0.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp +4467 silly install write writing ansi-regex 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex +4468 info postinstall is-utf8@0.2.1 +4469 silly gunzTarPerm extractEntry dist/rx.backpressure.min.js +4470 silly gunzTarPerm extractEntry dist/rx.core.js +4471 silly gunzTarPerm extractEntry dist/rx.testing.js +4472 silly install resolved [] +4473 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args +4474 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args +4475 silly install resolved [] +4476 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate +4477 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate +4478 info install string_decoder@0.10.31 +4479 verbose lock using /home/ruanyf/.tnpm/_locks/has-ansi-add0ceae132370e9.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +4480 silly gunzTarPerm extractEntry .npmignore +4481 silly gunzTarPerm extractEntry README.md +4482 info preinstall isarray@1.0.0 +4483 silly prepareForInstallMany adding buffer-shims@^1.0.0 from readable-stream dependencies +4484 silly prepareForInstallMany adding core-util-is@~1.0.0 from readable-stream dependencies +4485 silly prepareForInstallMany adding inherits@~2.0.1 from readable-stream dependencies +4486 silly prepareForInstallMany adding isarray@~1.0.0 from readable-stream dependencies +4487 silly prepareForInstallMany adding process-nextick-args@~1.0.6 from readable-stream dependencies +4488 silly prepareForInstallMany adding string_decoder@~0.10.x from readable-stream dependencies +4489 silly prepareForInstallMany adding util-deprecate@~1.0.1 from readable-stream dependencies +4490 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/package.json +4491 verbose lock using /home/ruanyf/.tnpm/_locks/escape-string-regexp-b8d42e784d559946.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp +4492 info linkStuff strip-bom-stream@1.0.0 +4493 silly linkStuff strip-bom-stream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +4494 silly linkStuff strip-bom-stream@1.0.0 is part of a global install +4495 silly linkStuff strip-bom-stream@1.0.0 is installed into a global node_modules +4496 verbose lock using /home/ruanyf/.tnpm/_locks/ansi-styles-fc6f7da6acaeb14f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles +4497 silly install write writing has-ansi 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +4498 silly gunzTarPerm extractEntry .npmignore +4499 silly gunzTarPerm modified mode [ '.npmignore', 438, 420 ] +4500 silly gunzTarPerm extractEntry README.md +4501 silly gunzTarPerm modified mode [ 'README.md', 438, 420 ] +4502 silly gunzTarPerm extractEntry README.md +4503 silly gunzTarPerm extractEntry index.js +4504 verbose lock using /home/ruanyf/.tnpm/_locks/supports-color-cce39b409b837f7c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color +4505 silly install write writing escape-string-regexp 1.0.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp +4506 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +4507 silly install write writing ansi-styles 2.2.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles +4508 silly install resolved [] +4509 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +4510 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +4511 info postinstall string_decoder@0.10.31 +4512 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +4513 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +4514 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json +4515 silly install write writing supports-color 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color +4516 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-utf8-3fff051c3e4a800b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 +4517 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom +4518 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom +4519 silly prepareForInstallMany adding is-promise@^2.1.0 from run-async dependencies +4520 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/package.json +4521 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie +4522 verbose linkBins strip-bom-stream@1.0.0 +4523 verbose linkMans strip-bom-stream@1.0.0 +4524 verbose rebuildBundles strip-bom-stream@1.0.0 +4525 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend/package.json +4526 silly gunzTarPerm extractEntry dist/rx.lite.js +4527 info linkStuff inherits@2.0.1 +4528 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +4529 silly linkStuff inherits@2.0.1 is part of a global install +4530 silly linkStuff inherits@2.0.1 is installed into a global node_modules +4531 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign +4532 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp +4533 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex +4534 silly gunzTarPerm extractEntry index.js +4535 verbose rebuildBundles [ 'first-chunk-stream' ] +4536 info install strip-bom-stream@1.0.0 +4537 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor is being purged from base /home/ruanyf/npm-global +4538 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +4539 info linkStuff process-nextick-args@1.0.7 +4540 silly linkStuff process-nextick-args@1.0.7 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +4541 silly linkStuff process-nextick-args@1.0.7 is part of a global install +4542 silly linkStuff process-nextick-args@1.0.7 is installed into a global node_modules +4543 info linkStuff util-deprecate@1.0.2 +4544 silly linkStuff util-deprecate@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +4545 silly linkStuff util-deprecate@1.0.2 is part of a global install +4546 silly linkStuff util-deprecate@1.0.2 is installed into a global node_modules +4547 silly gunzTarPerm extractEntry dropRight.js +4548 silly gunzTarPerm extractEntry compact.js +4549 verbose unlock done using /home/ruanyf/.tnpm/_locks/string-decoder-e42dd0bbb825ea12.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +4550 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at is being purged from base /home/ruanyf/npm-global +4551 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +4552 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point is being purged from base /home/ruanyf/npm-global +4553 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +4554 silly gunzTarPerm extractEntry index.js +4555 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through/package.json +4556 verbose tar unpack /home/ruanyf/.tnpm/restore-cursor/1.0.1/package.tgz +4557 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +4558 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor is being purged +4559 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +4560 silly gunzTarPerm extractEntry index.js +4561 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie is being purged from base /home/ruanyf/npm-global +4562 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie +4563 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +4564 verbose tar unpack /home/ruanyf/.tnpm/code-point-at/1.0.0/package.tgz +4565 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +4566 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at is being purged +4567 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +4568 verbose tar unpack /home/ruanyf/.tnpm/is-fullwidth-code-point/1.0.0/package.tgz +4569 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +4570 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point is being purged +4571 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +4572 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp +4573 info postinstall strip-bom-stream@1.0.0 +4574 silly gunzTarPerm modes [ '755', '644' ] +4575 silly gunzTarPerm extractEntry readme.md +4576 silly gunzTarPerm extractEntry LICENSE +4577 silly gunzTarPerm extractEntry index.js +4578 silly gunzTarPerm extractEntry index.js +4579 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles +4580 silly gunzTarPerm extractEntry LICENSE +4581 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ] +4582 silly gunzTarPerm extractEntry through2.js +4583 silly gunzTarPerm modified mode [ 'through2.js', 436, 420 ] +4584 silly gunzTarPerm extractEntry LICENSE +4585 silly gunzTarPerm extractEntry index.js +4586 info linkStuff core-util-is@1.0.2 +4587 silly linkStuff core-util-is@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +4588 silly linkStuff core-util-is@1.0.2 is part of a global install +4589 silly linkStuff core-util-is@1.0.2 is installed into a global node_modules +4590 verbose linkBins inherits@2.0.1 +4591 verbose linkMans inherits@2.0.1 +4592 verbose rebuildBundles inherits@2.0.1 +4593 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign is being purged from base /home/ruanyf/npm-global +4594 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign +4595 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp is being purged from base /home/ruanyf/npm-global +4596 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp +4597 verbose tar unpack /home/ruanyf/.tnpm/pinkie/2.0.4/package.tgz +4598 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie +4599 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie is being purged +4600 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie +4601 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex is being purged from base /home/ruanyf/npm-global +4602 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex +4603 silly gunzTarPerm modes [ '755', '644' ] +4604 silly gunzTarPerm modes [ '755', '644' ] +4605 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color +4606 info linkStuff strip-bom@2.0.0 +4607 silly linkStuff strip-bom@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +4608 silly linkStuff strip-bom@2.0.0 is part of a global install +4609 silly linkStuff strip-bom@2.0.0 is installed into a global node_modules +4610 verbose linkBins process-nextick-args@1.0.7 +4611 verbose linkMans process-nextick-args@1.0.7 +4612 verbose rebuildBundles process-nextick-args@1.0.7 +4613 verbose linkBins util-deprecate@1.0.2 +4614 verbose linkMans util-deprecate@1.0.2 +4615 verbose rebuildBundles util-deprecate@1.0.2 +4616 info install inherits@2.0.1 +4617 verbose tar unpack /home/ruanyf/.tnpm/object-assign/4.1.0/package.tgz +4618 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign +4619 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign is being purged +4620 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign +4621 verbose tar unpack /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package.tgz +4622 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp +4623 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp is being purged +4624 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp +4625 silly gunzTarPerm modes [ '755', '644' ] +4626 verbose tar unpack /home/ruanyf/.tnpm/ansi-regex/2.0.0/package.tgz +4627 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex +4628 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex is being purged +4629 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex +4630 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json +4631 info install process-nextick-args@1.0.7 +4632 info install util-deprecate@1.0.2 +4633 silly gunzTarPerm modes [ '755', '644' ] +4634 silly gunzTarPerm modes [ '755', '644' ] +4635 silly gunzTarPerm modes [ '755', '644' ] +4636 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi is being purged from base /home/ruanyf/npm-global +4637 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +4638 silly gunzTarPerm extractEntry LICENSE +4639 silly gunzTarPerm extractEntry index.js +4640 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp is being purged from base /home/ruanyf/npm-global +4641 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp +4642 verbose unlock done using /home/ruanyf/.tnpm/_locks/strip-bom-stream-3514f47f3087cb04.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream +4643 info preinstall through@2.3.8 +4644 silly install resolved [] +4645 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend +4646 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend +4647 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles is being purged from base /home/ruanyf/npm-global +4648 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles +4649 verbose linkBins core-util-is@1.0.2 +4650 verbose linkMans core-util-is@1.0.2 +4651 verbose rebuildBundles core-util-is@1.0.2 +4652 info postinstall inherits@2.0.1 +4653 verbose tar unpack /home/ruanyf/.tnpm/has-ansi/2.0.0/package.tgz +4654 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +4655 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi is being purged +4656 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +4657 silly gunzTarPerm extractEntry LICENSE +4658 silly gunzTarPerm modified mode [ 'LICENSE', 438, 420 ] +4659 silly gunzTarPerm extractEntry test.js +4660 silly gunzTarPerm modified mode [ 'test.js', 438, 420 ] +4661 silly gunzTarPerm extractEntry test.js +4662 silly gunzTarPerm extractEntry LICENSE.md +4663 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color is being purged from base /home/ruanyf/npm-global +4664 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color +4665 verbose tar unpack /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package.tgz +4666 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp +4667 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp is being purged +4668 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp +4669 verbose linkBins strip-bom@2.0.0 +4670 verbose linkMans strip-bom@2.0.0 +4671 verbose rebuildBundles strip-bom@2.0.0 +4672 silly cache add args [ 'is-promise@^2.1.0', null ] +4673 verbose cache add spec is-promise@^2.1.0 +4674 silly cache add parsed spec Result { +4674 silly cache add raw: 'is-promise@^2.1.0', +4674 silly cache add scope: null, +4674 silly cache add name: 'is-promise', +4674 silly cache add rawSpec: '^2.1.0', +4674 silly cache add spec: '>=2.1.0 <3.0.0', +4674 silly cache add type: 'range' } +4675 silly addNamed is-promise@>=2.1.0 <3.0.0 +4676 verbose addNamed ">=2.1.0 <3.0.0" is a valid semver range for is-promise +4677 silly addNameRange { name: 'is-promise', range: '>=2.1.0 <3.0.0', hasData: false } +4678 silly mapToRegistry name is-promise +4679 silly mapToRegistry using default registry +4680 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +4681 silly mapToRegistry data Result { +4681 silly mapToRegistry raw: 'is-promise', +4681 silly mapToRegistry scope: null, +4681 silly mapToRegistry name: 'is-promise', +4681 silly mapToRegistry rawSpec: '', +4681 silly mapToRegistry spec: 'latest', +4681 silly mapToRegistry type: 'tag' } +4682 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-promise +4683 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-promise not in flight; fetching +4684 verbose tar unpack /home/ruanyf/.tnpm/ansi-styles/2.2.1/package.tgz +4685 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles +4686 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles is being purged +4687 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles +4688 info postinstall process-nextick-args@1.0.7 +4689 info install core-util-is@1.0.2 +4690 info postinstall util-deprecate@1.0.2 +4691 silly gunzTarPerm modes [ '755', '644' ] +4692 verbose tar unpack /home/ruanyf/.tnpm/supports-color/2.0.0/package.tgz +4693 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color +4694 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color is being purged +4695 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color +4696 silly gunzTarPerm modes [ '755', '644' ] +4697 verbose rebuildBundles [ 'is-utf8' ] +4698 info install strip-bom@2.0.0 +4699 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through/package.json +4700 silly gunzTarPerm extractEntry package.json +4701 silly gunzTarPerm modes [ '755', '644' ] +4702 silly gunzTarPerm extractEntry package.json +4703 silly gunzTarPerm modes [ '755', '644' ] +4704 silly cache add args [ 'inherits@~2.0.1', null ] +4705 verbose cache add spec inherits@~2.0.1 +4706 silly cache add parsed spec Result { +4706 silly cache add raw: 'inherits@~2.0.1', +4706 silly cache add scope: null, +4706 silly cache add name: 'inherits', +4706 silly cache add rawSpec: '~2.0.1', +4706 silly cache add spec: '>=2.0.1 <2.1.0', +4706 silly cache add type: 'range' } +4707 silly addNamed inherits@>=2.0.1 <2.1.0 +4708 verbose addNamed ">=2.0.1 <2.1.0" is a valid semver range for inherits +4709 silly addNameRange { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: false } +4710 silly mapToRegistry name inherits +4711 silly mapToRegistry using default registry +4712 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +4713 silly mapToRegistry data Result { +4713 silly mapToRegistry raw: 'inherits', +4713 silly mapToRegistry scope: null, +4713 silly mapToRegistry name: 'inherits', +4713 silly mapToRegistry rawSpec: '', +4713 silly mapToRegistry spec: 'latest', +4713 silly mapToRegistry type: 'tag' } +4714 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits +4715 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching +4716 silly cache add args [ 'isarray@~1.0.0', null ] +4717 verbose cache add spec isarray@~1.0.0 +4718 silly cache add parsed spec Result { +4718 silly cache add raw: 'isarray@~1.0.0', +4718 silly cache add scope: null, +4718 silly cache add name: 'isarray', +4718 silly cache add rawSpec: '~1.0.0', +4718 silly cache add spec: '>=1.0.0 <1.1.0', +4718 silly cache add type: 'range' } +4719 silly addNamed isarray@>=1.0.0 <1.1.0 +4720 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for isarray +4721 silly addNameRange { name: 'isarray', range: '>=1.0.0 <1.1.0', hasData: false } +4722 silly mapToRegistry name isarray +4723 silly mapToRegistry using default registry +4724 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +4725 silly mapToRegistry data Result { +4725 silly mapToRegistry raw: 'isarray', +4725 silly mapToRegistry scope: null, +4725 silly mapToRegistry name: 'isarray', +4725 silly mapToRegistry rawSpec: '', +4725 silly mapToRegistry spec: 'latest', +4725 silly mapToRegistry type: 'tag' } +4726 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isarray +4727 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/isarray not in flight; fetching +4728 silly cache add args [ 'process-nextick-args@~1.0.6', null ] +4729 verbose cache add spec process-nextick-args@~1.0.6 +4730 silly cache add parsed spec Result { +4730 silly cache add raw: 'process-nextick-args@~1.0.6', +4730 silly cache add scope: null, +4730 silly cache add name: 'process-nextick-args', +4730 silly cache add rawSpec: '~1.0.6', +4730 silly cache add spec: '>=1.0.6 <1.1.0', +4730 silly cache add type: 'range' } +4731 silly addNamed process-nextick-args@>=1.0.6 <1.1.0 +4732 verbose addNamed ">=1.0.6 <1.1.0" is a valid semver range for process-nextick-args +4733 silly addNameRange { name: 'process-nextick-args', +4733 silly addNameRange range: '>=1.0.6 <1.1.0', +4733 silly addNameRange hasData: false } +4734 silly mapToRegistry name process-nextick-args +4735 silly mapToRegistry using default registry +4736 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +4737 silly mapToRegistry data Result { +4737 silly mapToRegistry raw: 'process-nextick-args', +4737 silly mapToRegistry scope: null, +4737 silly mapToRegistry name: 'process-nextick-args', +4737 silly mapToRegistry rawSpec: '', +4737 silly mapToRegistry spec: 'latest', +4737 silly mapToRegistry type: 'tag' } +4738 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/process-nextick-args +4739 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/process-nextick-args not in flight; fetching +4740 silly cache add args [ 'string_decoder@~0.10.x', null ] +4741 verbose cache add spec string_decoder@~0.10.x +4742 silly cache add parsed spec Result { +4742 silly cache add raw: 'string_decoder@~0.10.x', +4742 silly cache add scope: null, +4742 silly cache add name: 'string_decoder', +4742 silly cache add rawSpec: '~0.10.x', +4742 silly cache add spec: '>=0.10.0 <0.11.0', +4742 silly cache add type: 'range' } +4743 silly addNamed string_decoder@>=0.10.0 <0.11.0 +4744 verbose addNamed ">=0.10.0 <0.11.0" is a valid semver range for string_decoder +4745 silly addNameRange { name: 'string_decoder', +4745 silly addNameRange range: '>=0.10.0 <0.11.0', +4745 silly addNameRange hasData: false } +4746 silly mapToRegistry name string_decoder +4747 silly mapToRegistry using default registry +4748 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +4749 silly mapToRegistry data Result { +4749 silly mapToRegistry raw: 'string_decoder', +4749 silly mapToRegistry scope: null, +4749 silly mapToRegistry name: 'string_decoder', +4749 silly mapToRegistry rawSpec: '', +4749 silly mapToRegistry spec: 'latest', +4749 silly mapToRegistry type: 'tag' } +4750 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/string_decoder +4751 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/string_decoder not in flight; fetching +4752 silly cache add args [ 'util-deprecate@~1.0.1', null ] +4753 verbose cache add spec util-deprecate@~1.0.1 +4754 silly cache add parsed spec Result { +4754 silly cache add raw: 'util-deprecate@~1.0.1', +4754 silly cache add scope: null, +4754 silly cache add name: 'util-deprecate', +4754 silly cache add rawSpec: '~1.0.1', +4754 silly cache add spec: '>=1.0.1 <1.1.0', +4754 silly cache add type: 'range' } +4755 silly addNamed util-deprecate@>=1.0.1 <1.1.0 +4756 verbose addNamed ">=1.0.1 <1.1.0" is a valid semver range for util-deprecate +4757 silly addNameRange { name: 'util-deprecate', +4757 silly addNameRange range: '>=1.0.1 <1.1.0', +4757 silly addNameRange hasData: false } +4758 silly mapToRegistry name util-deprecate +4759 silly mapToRegistry using default registry +4760 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +4761 silly mapToRegistry data Result { +4761 silly mapToRegistry raw: 'util-deprecate', +4761 silly mapToRegistry scope: null, +4761 silly mapToRegistry name: 'util-deprecate', +4761 silly mapToRegistry rawSpec: '', +4761 silly mapToRegistry spec: 'latest', +4761 silly mapToRegistry type: 'tag' } +4762 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/util-deprecate +4763 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/util-deprecate not in flight; fetching +4764 silly cache add args [ 'buffer-shims@^1.0.0', null ] +4765 verbose cache add spec buffer-shims@^1.0.0 +4766 silly cache add parsed spec Result { +4766 silly cache add raw: 'buffer-shims@^1.0.0', +4766 silly cache add scope: null, +4766 silly cache add name: 'buffer-shims', +4766 silly cache add rawSpec: '^1.0.0', +4766 silly cache add spec: '>=1.0.0 <2.0.0', +4766 silly cache add type: 'range' } +4767 silly addNamed buffer-shims@>=1.0.0 <2.0.0 +4768 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for buffer-shims +4769 silly addNameRange { name: 'buffer-shims', range: '>=1.0.0 <2.0.0', hasData: false } +4770 silly mapToRegistry name buffer-shims +4771 silly mapToRegistry using default registry +4772 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +4773 silly mapToRegistry data Result { +4773 silly mapToRegistry raw: 'buffer-shims', +4773 silly mapToRegistry scope: null, +4773 silly mapToRegistry name: 'buffer-shims', +4773 silly mapToRegistry rawSpec: '', +4773 silly mapToRegistry spec: 'latest', +4773 silly mapToRegistry type: 'tag' } +4774 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/buffer-shims +4775 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/buffer-shims not in flight; fetching +4776 silly cache add args [ 'core-util-is@~1.0.0', null ] +4777 verbose cache add spec core-util-is@~1.0.0 +4778 silly cache add parsed spec Result { +4778 silly cache add raw: 'core-util-is@~1.0.0', +4778 silly cache add scope: null, +4778 silly cache add name: 'core-util-is', +4778 silly cache add rawSpec: '~1.0.0', +4778 silly cache add spec: '>=1.0.0 <1.1.0', +4778 silly cache add type: 'range' } +4779 silly addNamed core-util-is@>=1.0.0 <1.1.0 +4780 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for core-util-is +4781 silly addNameRange { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: false } +4782 silly mapToRegistry name core-util-is +4783 silly mapToRegistry using default registry +4784 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +4785 silly mapToRegistry data Result { +4785 silly mapToRegistry raw: 'core-util-is', +4785 silly mapToRegistry scope: null, +4785 silly mapToRegistry name: 'core-util-is', +4785 silly mapToRegistry rawSpec: '', +4785 silly mapToRegistry spec: 'latest', +4785 silly mapToRegistry type: 'tag' } +4786 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/core-util-is +4787 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/core-util-is not in flight; fetching +4788 info postinstall core-util-is@1.0.2 +4789 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-5a31eb8d44663059.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits +4790 silly gunzTarPerm extractEntry package.json +4791 silly gunzTarPerm extractEntry package.json +4792 info postinstall strip-bom@2.0.0 +4793 verbose request uri http://registry.npm.alibaba-inc.com/buffer-shims +4794 verbose request no auth needed +4795 info attempt registry request try #1 at 上午9:12:30 +4796 http request GET http://registry.npm.alibaba-inc.com/buffer-shims +4797 verbose unlock done using /home/ruanyf/.tnpm/_locks/process-nextick-args-640681cf1f951d3d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args +4798 verbose unlock done using /home/ruanyf/.tnpm/_locks/util-deprecate-da6ff6e24a0a44c8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate +4799 silly gunzTarPerm extractEntry dropRightWhile.js +4800 silly gunzTarPerm extractEntry commit.js +4801 silly gunzTarPerm extractEntry package.json +4802 silly gunzTarPerm extractEntry package.json +4803 silly install resolved [] +4804 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray +4805 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray +4806 silly gunzTarPerm extractEntry test.js +4807 silly gunzTarPerm extractEntry .travis.yml +4808 info linkStuff xtend@4.0.1 +4809 silly linkStuff xtend@4.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules as its parent node_modules +4810 silly linkStuff xtend@4.0.1 is part of a global install +4811 silly linkStuff xtend@4.0.1 is installed into a global node_modules +4812 silly gunzTarPerm extractEntry CHANGELOG.md +4813 silly gunzTarPerm extractEntry .jscs.json +4814 silly gunzTarPerm extractEntry dist/rx.backpressure.js +4815 silly gunzTarPerm extractEntry dist/rx.core.min.js +4816 silly gunzTarPerm extractEntry package.json +4817 verbose request uri http://registry.npm.alibaba-inc.com/is-promise +4818 verbose request no auth needed +4819 info attempt registry request try #1 at 上午9:12:30 +4820 verbose etag "1738-EhyMPiWgAtQw36379g38fA" +4821 http request GET http://registry.npm.alibaba-inc.com/is-promise +4822 silly gunzTarPerm extractEntry index.js +4823 silly gunzTarPerm extractEntry license +4824 verbose unlock done using /home/ruanyf/.tnpm/_locks/core-util-is-43b8c89985671e22.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +4825 silly gunzTarPerm extractEntry package.json +4826 silly gunzTarPerm extractEntry index.js +4827 silly gunzTarPerm extractEntry license +4828 verbose unlock done using /home/ruanyf/.tnpm/_locks/strip-bom-254e130643bfa36f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom +4829 silly gunzTarPerm extractEntry index.js +4830 silly gunzTarPerm extractEntry license +4831 silly gunzTarPerm extractEntry .travis.yml +4832 silly gunzTarPerm extractEntry test/main.js +4833 silly gunzTarPerm extractEntry index.js +4834 silly gunzTarPerm extractEntry license +4835 silly gunzTarPerm extractEntry package.json +4836 verbose get http://registry.npm.alibaba-inc.com/inherits not expired, no request +4837 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: true } +4838 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] +4839 silly addNamed inherits@2.0.1 +4840 verbose addNamed "2.0.1" is a plain semver version for inherits +4841 verbose get http://registry.npm.alibaba-inc.com/isarray not expired, no request +4842 silly addNameRange number 2 { name: 'isarray', range: '>=1.0.0 <1.1.0', hasData: true } +4843 silly addNameRange versions [ 'isarray', [ '1.0.0', '0.0.1', '0.0.0' ] ] +4844 silly addNamed isarray@1.0.0 +4845 verbose addNamed "1.0.0" is a plain semver version for isarray +4846 verbose get http://registry.npm.alibaba-inc.com/process-nextick-args not expired, no request +4847 silly addNameRange number 2 { name: 'process-nextick-args', +4847 silly addNameRange range: '>=1.0.6 <1.1.0', +4847 silly addNameRange hasData: true } +4848 silly addNameRange versions [ 'process-nextick-args', +4848 silly addNameRange [ '1.0.7', +4848 silly addNameRange '1.0.6', +4848 silly addNameRange '1.0.5', +4848 silly addNameRange '1.0.4', +4848 silly addNameRange '1.0.3', +4848 silly addNameRange '1.0.2', +4848 silly addNameRange '1.0.1', +4848 silly addNameRange '1.0.0' ] ] +4849 silly addNamed process-nextick-args@1.0.7 +4850 verbose addNamed "1.0.7" is a plain semver version for process-nextick-args +4851 verbose get http://registry.npm.alibaba-inc.com/string_decoder not expired, no request +4852 silly addNameRange number 2 { name: 'string_decoder', +4852 silly addNameRange range: '>=0.10.0 <0.11.0', +4852 silly addNameRange hasData: true } +4853 silly addNameRange versions [ 'string_decoder', +4853 silly addNameRange [ '0.10.31', +4853 silly addNameRange '0.10.25-1', +4853 silly addNameRange '0.11.10-1', +4853 silly addNameRange '0.10.25', +4853 silly addNameRange '0.11.10', +4853 silly addNameRange '0.10.24', +4853 silly addNameRange '0.0.1', +4853 silly addNameRange '0.0.0' ] ] +4854 silly addNamed string_decoder@0.10.31 +4855 verbose addNamed "0.10.31" is a plain semver version for string_decoder +4856 verbose get http://registry.npm.alibaba-inc.com/util-deprecate not expired, no request +4857 silly addNameRange number 2 { name: 'util-deprecate', +4857 silly addNameRange range: '>=1.0.1 <1.1.0', +4857 silly addNameRange hasData: true } +4858 silly addNameRange versions [ 'util-deprecate', [ '1.0.2', '1.0.1', '1.0.0' ] ] +4859 silly addNamed util-deprecate@1.0.2 +4860 verbose addNamed "1.0.2" is a plain semver version for util-deprecate +4861 verbose get http://registry.npm.alibaba-inc.com/core-util-is not expired, no request +4862 silly addNameRange number 2 { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: true } +4863 silly addNameRange versions [ 'core-util-is', [ '1.0.2', '1.0.1', '1.0.0' ] ] +4864 silly addNamed core-util-is@1.0.2 +4865 verbose addNamed "1.0.2" is a plain semver version for core-util-is +4866 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through/package.json +4867 verbose linkBins xtend@4.0.1 +4868 verbose linkMans xtend@4.0.1 +4869 verbose rebuildBundles xtend@4.0.1 +4870 silly gunzTarPerm extractEntry package.json +4871 silly gunzTarPerm extractEntry index.js +4872 silly gunzTarPerm extractEntry license +4873 silly gunzTarPerm extractEntry index.js +4874 silly gunzTarPerm extractEntry license +4875 silly gunzTarPerm extractEntry clone.js +4876 silly gunzTarPerm modified mode [ 'clone.js', 438, 420 ] +4877 silly gunzTarPerm extractEntry package.json +4878 info install xtend@4.0.1 +4879 silly gunzTarPerm extractEntry index.js +4880 silly gunzTarPerm extractEntry license +4881 info linkStuff isarray@1.0.0 +4882 silly linkStuff isarray@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +4883 silly linkStuff isarray@1.0.0 is part of a global install +4884 silly linkStuff isarray@1.0.0 is installed into a global node_modules +4885 silly gunzTarPerm extractEntry index.js +4886 silly gunzTarPerm extractEntry license +4887 http 200 http://registry.npm.alibaba-inc.com/buffer-shims +4888 verbose headers { server: 'Tengine', +4888 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +4888 verbose headers 'content-type': 'application/json; charset=utf-8', +4888 verbose headers 'transfer-encoding': 'chunked', +4888 verbose headers connection: 'keep-alive', +4888 verbose headers vary: 'Accept-Encoding', +4888 verbose headers 'x-readtime': '13', +4888 verbose headers 'content-encoding': 'gzip' } +4889 silly get cb [ 200, +4889 silly get { server: 'Tengine', +4889 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +4889 silly get 'content-type': 'application/json; charset=utf-8', +4889 silly get 'transfer-encoding': 'chunked', +4889 silly get connection: 'keep-alive', +4889 silly get vary: 'Accept-Encoding', +4889 silly get 'x-readtime': '13', +4889 silly get 'content-encoding': 'gzip' } ] +4890 verbose get saving buffer-shims to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/buffer-shims/.cache.json +4891 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4892 info postinstall xtend@4.0.1 +4893 silly gunzTarPerm extractEntry index.js +4894 silly gunzTarPerm extractEntry license +4895 silly gunzTarPerm extractEntry index.js +4896 silly gunzTarPerm extractEntry license +4897 verbose linkBins isarray@1.0.0 +4898 verbose linkMans isarray@1.0.0 +4899 verbose rebuildBundles isarray@1.0.0 +4900 silly gunzTarPerm extractEntry index.js +4901 silly gunzTarPerm extractEntry license +4902 silly gunzTarPerm extractEntry dropWhile.js +4903 silly gunzTarPerm extractEntry collection.js +4904 info install isarray@1.0.0 +4905 silly cache afterAdd inherits@2.0.1 +4906 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing +4907 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4908 silly cache afterAdd isarray@1.0.0 +4909 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json not in flight; writing +4910 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4911 silly cache afterAdd process-nextick-args@1.0.7 +4912 verbose afterAdd /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package/package.json not in flight; writing +4913 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4914 silly cache afterAdd string_decoder@0.10.31 +4915 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json not in flight; writing +4916 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4917 silly cache afterAdd util-deprecate@1.0.2 +4918 verbose afterAdd /home/ruanyf/.tnpm/util-deprecate/1.0.2/package/package.json not in flight; writing +4919 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4920 silly cache afterAdd core-util-is@1.0.2 +4921 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json not in flight; writing +4922 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4923 silly install resolved [] +4924 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through +4925 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through +4926 verbose unlock done using /home/ruanyf/.tnpm/_locks/xtend-b1f074d35a78cd4c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend +4927 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter +4928 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter +4929 silly gunzTarPerm extractEntry component.json +4930 silly gunzTarPerm extractEntry dist/rx.async.min.js +4931 silly gunzTarPerm extractEntry dist/rx.core.testing.js +4932 silly gunzTarPerm extractEntry dist/rx.testing.min.js +4933 http 304 http://registry.npm.alibaba-inc.com/is-promise +4934 verbose headers { server: 'Tengine', +4934 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +4934 verbose headers connection: 'keep-alive', +4934 verbose headers etag: '"1738-EhyMPiWgAtQw36379g38fA"', +4934 verbose headers 'x-readtime': '14' } +4935 silly get cb [ 304, +4935 silly get { server: 'Tengine', +4935 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +4935 silly get connection: 'keep-alive', +4935 silly get etag: '"1738-EhyMPiWgAtQw36379g38fA"', +4935 silly get 'x-readtime': '14' } ] +4936 verbose etag http://registry.npm.alibaba-inc.com/is-promise from cache +4937 verbose get saving is-promise to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-promise/.cache.json +4938 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +4939 silly gunzTarPerm extractEntry readme.md +4940 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/package.json +4941 silly gunzTarPerm extractEntry readme.md +4942 info postinstall isarray@1.0.0 +4943 silly gunzTarPerm extractEntry readme.md +4944 silly gunzTarPerm extractEntry readme.md +4945 silly gunzTarPerm extractEntry dist/rx.lite.extras.min.js +4946 silly gunzTarPerm extractEntry readme.md +4947 silly gunzTarPerm extractEntry readme.md +4948 silly gunzTarPerm extractEntry .travis.yml +4949 silly gunzTarPerm modified mode [ '.travis.yml', 438, 420 ] +4950 silly gunzTarPerm extractEntry test-apart-ctx.html +4951 silly gunzTarPerm modified mode [ 'test-apart-ctx.html', 438, 420 ] +4952 silly gunzTarPerm extractEntry readme.md +4953 verbose unlock done using /home/ruanyf/.tnpm/_locks/isarray-62ce9f5052cd7d81.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray +4954 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream +4955 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream +4956 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json written +4957 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written +4958 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json written +4959 verbose afterAdd /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package/package.json written +4960 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json written +4961 verbose afterAdd /home/ruanyf/.tnpm/util-deprecate/1.0.2/package/package.json written +4962 info linkStuff through@2.3.8 +4963 silly linkStuff through@2.3.8 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +4964 silly linkStuff through@2.3.8 is part of a global install +4965 silly linkStuff through@2.3.8 is installed into a global node_modules +4966 info linkStuff through2-filter@2.0.0 +4967 silly linkStuff through2-filter@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +4968 silly linkStuff through2-filter@2.0.0 is part of a global install +4969 silly linkStuff through2-filter@2.0.0 is installed into a global node_modules +4970 info preinstall end-of-stream@1.0.0 +4971 silly gunzTarPerm extractEntry readme.md +4972 silly gunzTarPerm extractEntry readme.md +4973 silly addNameRange number 2 { name: 'buffer-shims', range: '>=1.0.0 <2.0.0', hasData: true } +4974 silly addNameRange versions [ 'buffer-shims', [ '1.0.0' ] ] +4975 silly addNamed buffer-shims@1.0.0 +4976 verbose addNamed "1.0.0" is a plain semver version for buffer-shims +4977 silly gunzTarPerm extractEntry readme.md +4978 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/package.json +4979 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/package.json +4980 silly gunzTarPerm extractEntry readme.md +4981 silly mapToRegistry name buffer-shims +4982 silly mapToRegistry using default registry +4983 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +4984 silly mapToRegistry data Result { +4984 silly mapToRegistry raw: 'buffer-shims', +4984 silly mapToRegistry scope: null, +4984 silly mapToRegistry name: 'buffer-shims', +4984 silly mapToRegistry rawSpec: '', +4984 silly mapToRegistry spec: 'latest', +4984 silly mapToRegistry type: 'tag' } +4985 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/buffer-shims +4986 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz not in flight; adding +4987 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz', +4987 verbose addRemoteTarball '9978ce317388c649ad8793028c3477ef044a8b51' ] +4988 verbose linkBins through@2.3.8 +4989 verbose linkMans through@2.3.8 +4990 verbose rebuildBundles through@2.3.8 +4991 verbose linkBins through2-filter@2.0.0 +4992 verbose linkMans through2-filter@2.0.0 +4993 verbose rebuildBundles through2-filter@2.0.0 +4994 silly gunzTarPerm extractEntry each.js +4995 silly gunzTarPerm extractEntry cloneWith.js +4996 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits/package.json +4997 info install through@2.3.8 +4998 verbose rebuildBundles [ 'xtend' ] +4999 info install through2-filter@2.0.0 +5000 silly addNameRange number 2 { name: 'is-promise', range: '>=2.1.0 <3.0.0', hasData: true } +5001 silly addNameRange versions [ 'is-promise', [ '2.1.0', '2.0.0', '1.0.1', '1.0.0' ] ] +5002 silly addNamed is-promise@2.1.0 +5003 verbose addNamed "2.1.0" is a plain semver version for is-promise +5004 silly gunzTarPerm extractEntry .eslintrc +5005 silly gunzTarPerm extractEntry .travis.yml +5006 info linkStuff readable-stream@2.0.6 +5007 silly linkStuff readable-stream@2.0.6 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules as its parent node_modules +5008 silly linkStuff readable-stream@2.0.6 is part of a global install +5009 silly linkStuff readable-stream@2.0.6 is installed into a global node_modules +5010 info retry fetch attempt 1 at 上午9:12:30 +5011 info attempt registry request try #1 at 上午9:12:30 +5012 http fetch GET http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz +5013 info postinstall through@2.3.8 +5014 info postinstall through2-filter@2.0.0 +5015 silly gunzTarPerm extractEntry dist/rx.async.js +5016 silly gunzTarPerm extractEntry dist/rx.core.testing.min.js +5017 info preinstall mkdirp@0.5.1 +5018 info preinstall inherits@2.0.1 +5019 silly gunzTarPerm extractEntry test.html +5020 silly gunzTarPerm modified mode [ 'test.html', 438, 420 ] +5021 verbose linkBins readable-stream@2.0.6 +5022 verbose linkMans readable-stream@2.0.6 +5023 verbose rebuildBundles readable-stream@2.0.6 +5024 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/package.json +5025 silly prepareForInstallMany adding once@~1.3.0 from end-of-stream dependencies +5026 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/package.json +5027 verbose rebuildBundles [ 'core-util-is', +5027 verbose rebuildBundles 'inherits', +5027 verbose rebuildBundles 'isarray', +5027 verbose rebuildBundles 'process-nextick-args', +5027 verbose rebuildBundles 'string_decoder', +5027 verbose rebuildBundles 'util-deprecate' ] +5028 info install readable-stream@2.0.6 +5029 verbose unlock done using /home/ruanyf/.tnpm/_locks/through-a3c6e237a9a7f49c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through +5030 verbose unlock done using /home/ruanyf/.tnpm/_locks/through2-filter-70dc8f93679832ec.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter +5031 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits/package.json +5032 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys/package.json +5033 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root/package.json +5034 silly cache afterAdd is-promise@2.1.0 +5035 verbose afterAdd /home/ruanyf/.tnpm/is-promise/2.1.0/package/package.json not in flight; writing +5036 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5037 info postinstall readable-stream@2.0.6 +5038 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/package.json +5039 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/package.json +5040 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/package.json +5041 silly gunzTarPerm extractEntry eachRight.js +5042 silly gunzTarPerm extractEntry cloneDeepWith.js +5043 silly gunzTarPerm extractEntry endsWith.js +5044 info preinstall lodash.keys@4.0.7 +5045 verbose unlock done using /home/ruanyf/.tnpm/_locks/readable-stream-37828330509bd5f4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream +5046 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2 +5047 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2 +5048 info preinstall lodash._root@3.0.1 +5049 silly gunzTarPerm extractEntry cloneDeep.js +5050 silly gunzTarPerm extractEntry dist/rx.async.compat.min.js +5051 silly gunzTarPerm extractEntry dist/rx.experimental.js +5052 verbose afterAdd /home/ruanyf/.tnpm/is-promise/2.1.0/package/package.json written +5053 silly install resolved [ { name: 'is-promise', +5053 silly install resolved version: '2.1.0', +5053 silly install resolved description: 'Test whether an object looks like a promises-a+ promise', +5053 silly install resolved main: 'index.js', +5053 silly install resolved scripts: { test: 'mocha -R spec' }, +5053 silly install resolved repository: +5053 silly install resolved { type: 'git', +5053 silly install resolved url: 'git+https://github.com/then/is-promise.git' }, +5053 silly install resolved author: { name: 'ForbesLindesay' }, +5053 silly install resolved license: 'MIT', +5053 silly install resolved devDependencies: { 'better-assert': '~0.1.0', mocha: '~1.7.4' }, +5053 silly install resolved gitHead: '056f8ac12eed91886ac4f0f7d872a176f6ed698f', +5053 silly install resolved bugs: { url: 'https://github.com/then/is-promise/issues' }, +5053 silly install resolved homepage: 'https://github.com/then/is-promise', +5053 silly install resolved _id: 'is-promise@2.1.0', +5053 silly install resolved _shasum: '79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa', +5053 silly install resolved _from: 'is-promise@>=2.1.0 <3.0.0', +5053 silly install resolved _npmVersion: '2.7.1', +5053 silly install resolved _nodeVersion: '1.6.2', +5053 silly install resolved _npmUser: { name: 'forbeslindesay', email: 'forbes@lindesay.co.uk' }, +5053 silly install resolved maintainers: [ [Object], [Object] ], +5053 silly install resolved dist: +5053 silly install resolved { shasum: '79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa', +5053 silly install resolved size: 2283, +5053 silly install resolved noattachment: false, +5053 silly install resolved key: 'is-promise/-/is-promise-2.1.0.tgz', +5053 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-promise/download/is-promise-2.1.0.tgz' }, +5053 silly install resolved directories: {}, +5053 silly install resolved publish_time: 1441562796412, +5053 silly install resolved _cnpm_publish_time: 1441562796412, +5053 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-promise/download/is-promise-2.1.0.tgz', +5053 silly install resolved readme: 'ERROR: No README data found!' } ] +5054 info install is-promise@2.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +5055 info installOne is-promise@2.1.0 +5056 verbose installOne of is-promise to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async not in flight; installing +5057 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5058 silly prepareForInstallMany adding minimist@0.0.8 from mkdirp dependencies +5059 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/package.json +5060 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits/package.json +5061 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys/package.json +5062 silly cache add args [ 'once@~1.3.0', null ] +5063 verbose cache add spec once@~1.3.0 +5064 silly cache add parsed spec Result { +5064 silly cache add raw: 'once@~1.3.0', +5064 silly cache add scope: null, +5064 silly cache add name: 'once', +5064 silly cache add rawSpec: '~1.3.0', +5064 silly cache add spec: '>=1.3.0 <1.4.0', +5064 silly cache add type: 'range' } +5065 silly addNamed once@>=1.3.0 <1.4.0 +5066 verbose addNamed ">=1.3.0 <1.4.0" is a valid semver range for once +5067 silly addNameRange { name: 'once', range: '>=1.3.0 <1.4.0', hasData: false } +5068 silly mapToRegistry name once +5069 silly mapToRegistry using default registry +5070 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5071 silly mapToRegistry data Result { +5071 silly mapToRegistry raw: 'once', +5071 silly mapToRegistry scope: null, +5071 silly mapToRegistry name: 'once', +5071 silly mapToRegistry rawSpec: '', +5071 silly mapToRegistry spec: 'latest', +5071 silly mapToRegistry type: 'tag' } +5072 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/once +5073 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/once not in flight; fetching +5074 info preinstall to-absolute-glob@0.1.1 +5075 info preinstall unique-stream@2.2.1 +5076 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root/package.json +5077 info preinstall ordered-read-streams@0.3.0 +5078 silly gunzTarPerm extractEntry entries.js +5079 http fetch 200 http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz +5080 verbose lock using /home/ruanyf/.tnpm/_locks/is-promise-42edfdb63885d862.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise +5081 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/package.json +5082 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/package.json +5083 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/package.json +5084 silly install write writing is-promise 2.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise +5085 silly gunzTarPerm extractEntry clone.js +5086 info linkStuff through2@2.0.1 +5087 silly linkStuff through2@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules as its parent node_modules +5088 silly linkStuff through2@2.0.1 is part of a global install +5089 silly linkStuff through2@2.0.1 is installed into a global node_modules +5090 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/package.json +5091 silly gunzTarPerm extractEntry entriesIn.js +5092 silly fetchAndShaCheck shasum 9978ce317388c649ad8793028c3477ef044a8b51 +5093 verbose request uri http://registry.npm.alibaba-inc.com/once +5094 verbose request no auth needed +5095 info attempt registry request try #1 at 上午9:12:30 +5096 verbose etag "2053-cQ/iFzfNocPaJqrU2XPTLg" +5097 http request GET http://registry.npm.alibaba-inc.com/once +5098 silly install resolved [] +5099 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits +5100 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits +5101 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width/package.json +5102 verbose linkBins through2@2.0.1 +5103 verbose linkMans through2@2.0.1 +5104 verbose rebuildBundles through2@2.0.1 +5105 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root/package.json +5106 silly gunzTarPerm extractEntry clamp.js +5107 verbose rebuildBundles [ 'readable-stream', 'xtend' ] +5108 info install through2@2.0.1 +5109 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise +5110 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json +5111 silly cache add args [ 'minimist@0.0.8', null ] +5112 verbose cache add spec minimist@0.0.8 +5113 silly cache add parsed spec Result { +5113 silly cache add raw: 'minimist@0.0.8', +5113 silly cache add scope: null, +5113 silly cache add name: 'minimist', +5113 silly cache add rawSpec: '0.0.8', +5113 silly cache add spec: '0.0.8', +5113 silly cache add type: 'version' } +5114 silly addNamed minimist@0.0.8 +5115 verbose addNamed "0.0.8" is a plain semver version for minimist +5116 silly mapToRegistry name minimist +5117 silly mapToRegistry using default registry +5118 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5119 silly mapToRegistry data Result { +5119 silly mapToRegistry raw: 'minimist', +5119 silly mapToRegistry scope: null, +5119 silly mapToRegistry name: 'minimist', +5119 silly mapToRegistry rawSpec: '', +5119 silly mapToRegistry spec: 'latest', +5119 silly mapToRegistry type: 'tag' } +5120 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/minimist +5121 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/minimist not in flight; fetching +5122 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz not in flight; adding +5123 verbose addTmpTarball already have metadata; skipping unpack for buffer-shims@1.0.0 +5124 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5125 silly prepareForInstallMany adding json-stable-stringify@^1.0.0 from unique-stream dependencies +5126 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/package.json +5127 silly prepareForInstallMany adding extend-shallow@^2.0.1 from to-absolute-glob dependencies +5128 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/package.json +5129 silly prepareForInstallMany adding is-stream@^1.0.1 from ordered-read-streams dependencies +5130 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/package.json +5131 info preinstall through2@0.6.5 +5132 silly gunzTarPerm extractEntry dist/rx.time.js +5133 silly gunzTarPerm extractEntry dist/rx.lite.extras.js +5134 silly gunzTarPerm extractEntry dist/rx.async.compat.js +5135 silly gunzTarPerm extractEntry eq.js +5136 info postinstall through2@2.0.1 +5137 info preinstall cli-width@2.1.0 +5138 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/package.json +5139 silly gunzTarPerm extractEntry dist/rx.experimental.min.js +5140 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise is being purged from base /home/ruanyf/npm-global +5141 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise +5142 silly gunzTarPerm extractEntry chunk.js +5143 info linkStuff inherits@2.0.1 +5144 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules as its parent node_modules +5145 silly linkStuff inherits@2.0.1 is part of a global install +5146 silly linkStuff inherits@2.0.1 is installed into a global node_modules +5147 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys/package.json +5148 verbose tar unpack /home/ruanyf/.tnpm/is-promise/2.1.0/package.tgz +5149 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise +5150 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise is being purged +5151 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise +5152 info preinstall clone-stats@0.0.1 +5153 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width/package.json +5154 verbose unlock done using /home/ruanyf/.tnpm/_locks/through2-4310595aca71b05a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2 +5155 silly install resolved [] +5156 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root +5157 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root +5158 silly gunzTarPerm extractEntry dist/rx.all.min.js +5159 silly gunzTarPerm modes [ '755', '644' ] +5160 verbose request uri http://registry.npm.alibaba-inc.com/minimist +5161 verbose request no auth needed +5162 info attempt registry request try #1 at 上午9:12:30 +5163 http request GET http://registry.npm.alibaba-inc.com/minimist +5164 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/package.json +5165 verbose linkBins inherits@2.0.1 +5166 verbose linkMans inherits@2.0.1 +5167 verbose rebuildBundles inherits@2.0.1 +5168 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json +5169 silly gunzTarPerm extractEntry dist/rx.joinpatterns.js +5170 info install inherits@2.0.1 +5171 http 304 http://registry.npm.alibaba-inc.com/once +5172 verbose headers { server: 'Tengine', +5172 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +5172 verbose headers connection: 'keep-alive', +5172 verbose headers etag: '"2053-cQ/iFzfNocPaJqrU2XPTLg"', +5172 verbose headers 'x-readtime': '20' } +5173 silly get cb [ 304, +5173 silly get { server: 'Tengine', +5173 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +5173 silly get connection: 'keep-alive', +5173 silly get etag: '"2053-cQ/iFzfNocPaJqrU2XPTLg"', +5173 silly get 'x-readtime': '20' } ] +5174 verbose etag http://registry.npm.alibaba-inc.com/once from cache +5175 verbose get saving once to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/once/.cache.json +5176 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5177 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/package.json +5178 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json +5179 silly cache add args [ 'json-stable-stringify@^1.0.0', null ] +5180 verbose cache add spec json-stable-stringify@^1.0.0 +5181 silly cache add args [ 'extend-shallow@^2.0.1', null ] +5182 verbose cache add spec extend-shallow@^2.0.1 +5183 silly cache add args [ 'is-stream@^1.0.1', null ] +5184 verbose cache add spec is-stream@^1.0.1 +5185 silly cache add parsed spec Result { +5185 silly cache add raw: 'json-stable-stringify@^1.0.0', +5185 silly cache add scope: null, +5185 silly cache add name: 'json-stable-stringify', +5185 silly cache add rawSpec: '^1.0.0', +5185 silly cache add spec: '>=1.0.0 <2.0.0', +5185 silly cache add type: 'range' } +5186 silly addNamed json-stable-stringify@>=1.0.0 <2.0.0 +5187 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for json-stable-stringify +5188 silly addNameRange { name: 'json-stable-stringify', +5188 silly addNameRange range: '>=1.0.0 <2.0.0', +5188 silly addNameRange hasData: false } +5189 silly mapToRegistry name json-stable-stringify +5190 silly mapToRegistry using default registry +5191 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5192 silly mapToRegistry data Result { +5192 silly mapToRegistry raw: 'json-stable-stringify', +5192 silly mapToRegistry scope: null, +5192 silly mapToRegistry name: 'json-stable-stringify', +5192 silly mapToRegistry rawSpec: '', +5192 silly mapToRegistry spec: 'latest', +5192 silly mapToRegistry type: 'tag' } +5193 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/json-stable-stringify +5194 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/json-stable-stringify not in flight; fetching +5195 silly cache add parsed spec Result { +5195 silly cache add raw: 'extend-shallow@^2.0.1', +5195 silly cache add scope: null, +5195 silly cache add name: 'extend-shallow', +5195 silly cache add rawSpec: '^2.0.1', +5195 silly cache add spec: '>=2.0.1 <3.0.0', +5195 silly cache add type: 'range' } +5196 silly addNamed extend-shallow@>=2.0.1 <3.0.0 +5197 verbose addNamed ">=2.0.1 <3.0.0" is a valid semver range for extend-shallow +5198 silly addNameRange { name: 'extend-shallow', +5198 silly addNameRange range: '>=2.0.1 <3.0.0', +5198 silly addNameRange hasData: false } +5199 silly mapToRegistry name extend-shallow +5200 silly mapToRegistry using default registry +5201 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5202 silly mapToRegistry data Result { +5202 silly mapToRegistry raw: 'extend-shallow', +5202 silly mapToRegistry scope: null, +5202 silly mapToRegistry name: 'extend-shallow', +5202 silly mapToRegistry rawSpec: '', +5202 silly mapToRegistry spec: 'latest', +5202 silly mapToRegistry type: 'tag' } +5203 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/extend-shallow +5204 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/extend-shallow not in flight; fetching +5205 silly cache add parsed spec Result { +5205 silly cache add raw: 'is-stream@^1.0.1', +5205 silly cache add scope: null, +5205 silly cache add name: 'is-stream', +5205 silly cache add rawSpec: '^1.0.1', +5205 silly cache add spec: '>=1.0.1 <2.0.0', +5205 silly cache add type: 'range' } +5206 silly addNamed is-stream@>=1.0.1 <2.0.0 +5207 verbose addNamed ">=1.0.1 <2.0.0" is a valid semver range for is-stream +5208 silly addNameRange { name: 'is-stream', range: '>=1.0.1 <2.0.0', hasData: false } +5209 silly mapToRegistry name is-stream +5210 silly mapToRegistry using default registry +5211 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5212 silly mapToRegistry data Result { +5212 silly mapToRegistry raw: 'is-stream', +5212 silly mapToRegistry scope: null, +5212 silly mapToRegistry name: 'is-stream', +5212 silly mapToRegistry rawSpec: '', +5212 silly mapToRegistry spec: 'latest', +5212 silly mapToRegistry type: 'tag' } +5213 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-stream +5214 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-stream not in flight; fetching +5215 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/package.json +5216 silly prepareForInstallMany adding readable-stream@>=1.0.33-1 <1.1.0-0 from through2 dependencies +5217 silly prepareForInstallMany adding xtend@>=4.0.0 <4.1.0-0 from through2 dependencies +5218 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/package.json +5219 info postinstall inherits@2.0.1 +5220 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie/package.json +5221 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex/package.json +5222 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp/package.json +5223 info linkStuff lodash._root@3.0.1 +5224 silly linkStuff lodash._root@3.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules as its parent node_modules +5225 silly linkStuff lodash._root@3.0.1 is part of a global install +5226 silly linkStuff lodash._root@3.0.1 is installed into a global node_modules +5227 info preinstall restore-cursor@1.0.1 +5228 silly gunzTarPerm extractEntry package.json +5229 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign/package.json +5230 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width/package.json +5231 silly gunzTarPerm extractEntry dist/rx.time.min.js +5232 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/package.json +5233 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp/package.json +5234 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/package.json +5235 silly gunzTarPerm extractEntry escape.js +5236 silly gunzTarPerm extractEntry chain.js +5237 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-5220b4c05119a294.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits +5238 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json +5239 info preinstall is-fullwidth-code-point@1.0.0 +5240 info preinstall code-point-at@1.0.0 +5241 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/package.json +5242 verbose linkBins lodash._root@3.0.1 +5243 verbose linkMans lodash._root@3.0.1 +5244 verbose rebuildBundles lodash._root@3.0.1 +5245 info preinstall glob@5.0.15 +5246 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles/package.json +5247 silly gunzTarPerm extractEntry dist/rx.lite.extras.compat.min.js +5248 info preinstall pinkie@2.0.4 +5249 info preinstall ansi-regex@2.0.0 +5250 info preinstall escape-string-regexp@1.0.5 +5251 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color/package.json +5252 info install lodash._root@3.0.1 +5253 verbose request uri http://registry.npm.alibaba-inc.com/json-stable-stringify +5254 verbose request no auth needed +5255 info attempt registry request try #1 at 上午9:12:30 +5256 verbose etag "3ced-ANb110mqWnC+hIe62SGyWg" +5257 http request GET http://registry.npm.alibaba-inc.com/json-stable-stringify +5258 verbose request uri http://registry.npm.alibaba-inc.com/extend-shallow +5259 verbose request no auth needed +5260 info attempt registry request try #1 at 上午9:12:30 +5261 verbose etag "49e6-GE7Yn4YonbyD9fuWi6qa1Q" +5262 http request GET http://registry.npm.alibaba-inc.com/extend-shallow +5263 verbose request uri http://registry.npm.alibaba-inc.com/is-stream +5264 verbose request no auth needed +5265 info attempt registry request try #1 at 上午9:12:30 +5266 verbose etag "1537-KUcGKAXBFuKhGNLVFzDRhQ" +5267 http request GET http://registry.npm.alibaba-inc.com/is-stream +5268 silly gunzTarPerm extractEntry .npmignore +5269 silly gunzTarPerm extractEntry LICENSE +5270 info preinstall object-assign@4.1.0 +5271 silly install resolved [] +5272 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys +5273 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys +5274 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json +5275 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/package.json +5276 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/package.json +5277 silly gunzTarPerm extractEntry dist/rx.all.js +5278 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie/package.json +5279 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex/package.json +5280 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp/package.json +5281 info preinstall has-ansi@2.0.0 +5282 info preinstall escape-string-regexp@1.0.5 +5283 silly addNameRange number 2 { name: 'once', range: '>=1.3.0 <1.4.0', hasData: true } +5284 silly addNameRange versions [ 'once', +5284 silly addNameRange [ '1.3.3', '1.3.2', '1.3.1', '1.3.0', '1.2.0', '1.1.1' ] ] +5285 silly addNamed once@1.3.3 +5286 verbose addNamed "1.3.3" is a plain semver version for once +5287 info postinstall lodash._root@3.0.1 +5288 silly install resolved [] +5289 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width +5290 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width +5291 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign/package.json +5292 silly cache add args [ 'readable-stream@>=1.0.33-1 <1.1.0-0', null ] +5293 verbose cache add spec readable-stream@>=1.0.33-1 <1.1.0-0 +5294 silly cache add parsed spec Result { +5294 silly cache add raw: 'readable-stream@>=1.0.33-1 <1.1.0-0', +5294 silly cache add scope: null, +5294 silly cache add name: 'readable-stream', +5294 silly cache add rawSpec: '>=1.0.33-1 <1.1.0-0', +5294 silly cache add spec: '>=1.0.33-1 <1.1.0-0', +5294 silly cache add type: 'range' } +5295 silly addNamed readable-stream@>=1.0.33-1 <1.1.0-0 +5296 verbose addNamed ">=1.0.33-1 <1.1.0-0" is a valid semver range for readable-stream +5297 silly addNameRange { name: 'readable-stream', +5297 silly addNameRange range: '>=1.0.33-1 <1.1.0-0', +5297 silly addNameRange hasData: false } +5298 silly mapToRegistry name readable-stream +5299 silly mapToRegistry using default registry +5300 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5301 silly mapToRegistry data Result { +5301 silly mapToRegistry raw: 'readable-stream', +5301 silly mapToRegistry scope: null, +5301 silly mapToRegistry name: 'readable-stream', +5301 silly mapToRegistry rawSpec: '', +5301 silly mapToRegistry spec: 'latest', +5301 silly mapToRegistry type: 'tag' } +5302 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/readable-stream +5303 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/readable-stream not in flight; fetching +5304 silly cache add args [ 'xtend@>=4.0.0 <4.1.0-0', null ] +5305 verbose cache add spec xtend@>=4.0.0 <4.1.0-0 +5306 silly cache add parsed spec Result { +5306 silly cache add raw: 'xtend@>=4.0.0 <4.1.0-0', +5306 silly cache add scope: null, +5306 silly cache add name: 'xtend', +5306 silly cache add rawSpec: '>=4.0.0 <4.1.0-0', +5306 silly cache add spec: '>=4.0.0 <4.1.0-0', +5306 silly cache add type: 'range' } +5307 silly addNamed xtend@>=4.0.0 <4.1.0-0 +5308 verbose addNamed ">=4.0.0 <4.1.0-0" is a valid semver range for xtend +5309 silly addNameRange { name: 'xtend', range: '>=4.0.0 <4.1.0-0', hasData: false } +5310 silly mapToRegistry name xtend +5311 silly mapToRegistry using default registry +5312 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5313 silly mapToRegistry data Result { +5313 silly mapToRegistry raw: 'xtend', +5313 silly mapToRegistry scope: null, +5313 silly mapToRegistry name: 'xtend', +5313 silly mapToRegistry rawSpec: '', +5313 silly mapToRegistry spec: 'latest', +5313 silly mapToRegistry type: 'tag' } +5314 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/xtend +5315 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/xtend not in flight; fetching +5316 info preinstall glob-parent@2.0.0 +5317 info preinstall ansi-styles@2.2.1 +5318 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext/package.json +5319 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/package.json +5320 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp/package.json +5321 info preinstall supports-color@2.0.0 +5322 silly prepareForInstallMany adding exit-hook@^1.0.0 from restore-cursor dependencies +5323 silly prepareForInstallMany adding onetime@^1.0.0 from restore-cursor dependencies +5324 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/package.json +5325 silly install resolved [] +5326 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats +5327 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats +5328 verbose unlock done using /home/ruanyf/.tnpm/_locks/lodash-root-eb8554dced03e461.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root +5329 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/package.json +5330 silly gunzTarPerm extractEntry dist/rx.joinpatterns.min.js +5331 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles/package.json +5332 silly cache afterAdd buffer-shims@1.0.0 +5333 verbose afterAdd /home/ruanyf/.tnpm/buffer-shims/1.0.0/package/package.json not in flight; writing +5334 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5335 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color/package.json +5336 silly prepareForInstallMany adding number-is-nan@^1.0.0 from is-fullwidth-code-point dependencies +5337 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json +5338 silly prepareForInstallMany adding number-is-nan@^1.0.0 from code-point-at dependencies +5339 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/package.json +5340 silly prepareForInstallMany adding inflight@^1.0.4 from glob dependencies +5341 silly prepareForInstallMany adding inherits@2 from glob dependencies +5342 silly prepareForInstallMany adding minimatch@2 || 3 from glob dependencies +5343 silly prepareForInstallMany adding once@^1.3.0 from glob dependencies +5344 silly prepareForInstallMany adding path-is-absolute@^1.0.0 from glob dependencies +5345 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/package.json +5346 silly gunzTarPerm extractEntry dist/rx.all.compat.min.js +5347 silly gunzTarPerm extractEntry escapeRegExp.js +5348 silly gunzTarPerm extractEntry ceil.js +5349 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map/package.json +5350 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie/package.json +5351 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex/package.json +5352 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp/package.json +5353 info preinstall replace-ext@0.0.1 +5354 info linkStuff cli-width@2.1.0 +5355 silly linkStuff cli-width@2.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +5356 silly linkStuff cli-width@2.1.0 is part of a global install +5357 silly linkStuff cli-width@2.1.0 is installed into a global node_modules +5358 verbose get http://registry.npm.alibaba-inc.com/readable-stream not expired, no request +5359 silly addNameRange number 2 { name: 'readable-stream', +5359 silly addNameRange range: '>=1.0.33-1 <1.1.0-0', +5359 silly addNameRange hasData: true } +5360 silly addNameRange versions [ 'readable-stream', +5360 silly addNameRange [ '2.1.4', +5360 silly addNameRange '2.1.3', +5360 silly addNameRange '2.1.2', +5360 silly addNameRange '2.1.1', +5360 silly addNameRange '2.1.0', +5360 silly addNameRange '1.1.14', +5360 silly addNameRange '1.0.34', +5360 silly addNameRange '2.0.6', +5360 silly addNameRange '2.0.5', +5360 silly addNameRange '2.0.4', +5360 silly addNameRange '2.0.3', +5360 silly addNameRange '2.0.2', +5360 silly addNameRange '2.0.1', +5360 silly addNameRange '2.0.0', +5360 silly addNameRange '1.0.33', +5360 silly addNameRange '1.0.33-2', +5360 silly addNameRange '1.0.33-1', +5360 silly addNameRange '1.0.32-1', +5360 silly addNameRange '1.0.32', +5360 silly addNameRange '1.1.13', +5360 silly addNameRange '1.0.31', +5360 silly addNameRange '1.1.13-1', +5360 silly addNameRange '1.0.27-1', +5360 silly addNameRange '1.1.12-1', +5360 silly addNameRange '1.0.26-4', +5360 silly addNameRange '1.0.26-3', +5360 silly addNameRange '1.1.12', +5360 silly addNameRange '1.0.26-2', +5360 silly addNameRange '1.1.11-1', +5360 silly addNameRange '1.0.26-1', +5360 silly addNameRange '1.0.26', +5360 silly addNameRange '1.1.11', +5360 silly addNameRange '1.0.25-1', +5360 silly addNameRange '1.0.25', +5360 silly addNameRange '1.1.10', +5360 silly addNameRange '1.0.24', +5360 silly addNameRange '1.1.9', +5360 silly addNameRange '1.1.8', +5360 silly addNameRange '1.1.7', +5360 silly addNameRange '1.0.17', +5360 silly addNameRange '1.0.15', +5360 silly addNameRange '1.0.2', +5360 silly addNameRange '1.0.1', +5360 silly addNameRange '1.0.0', +5360 silly addNameRange '0.3.1', +5360 silly addNameRange '0.3.0', +5360 silly addNameRange '0.2.0', +5360 silly addNameRange '0.1.0', +5360 silly addNameRange '0.0.4', +5360 silly addNameRange '0.0.3', +5360 silly addNameRange '0.0.2', +5360 silly addNameRange '0.0.1' ] ] +5361 silly addNamed readable-stream@1.0.34 +5362 verbose addNamed "1.0.34" is a plain semver version for readable-stream +5363 verbose get http://registry.npm.alibaba-inc.com/xtend not expired, no request +5364 silly addNameRange number 2 { name: 'xtend', range: '>=4.0.0 <4.1.0-0', hasData: true } +5365 silly addNameRange versions [ 'xtend', +5365 silly addNameRange [ '4.0.1', +5365 silly addNameRange '4.0.0', +5365 silly addNameRange '3.0.0', +5365 silly addNameRange '2.2.0', +5365 silly addNameRange '2.1.2', +5365 silly addNameRange '2.1.1', +5365 silly addNameRange '2.0.6', +5365 silly addNameRange '2.0.5', +5365 silly addNameRange '2.0.4', +5365 silly addNameRange '2.0.3', +5365 silly addNameRange '2.0.2', +5365 silly addNameRange '2.0.1', +5365 silly addNameRange '1.0.3', +5365 silly addNameRange '1.0.2', +5365 silly addNameRange '1.0.1', +5365 silly addNameRange '1.0.0' ] ] +5366 silly addNamed xtend@4.0.1 +5367 verbose addNamed "4.0.1" is a plain semver version for xtend +5368 silly cache afterAdd once@1.3.3 +5369 verbose afterAdd /home/ruanyf/.tnpm/once/1.3.3/package/package.json not in flight; writing +5370 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5371 silly gunzTarPerm extractEntry index.js +5372 silly gunzTarPerm extractEntry .travis.yml +5373 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign/package.json +5374 info linkStuff clone-stats@0.0.1 +5375 silly linkStuff clone-stats@0.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules as its parent node_modules +5376 silly linkStuff clone-stats@0.0.1 is part of a global install +5377 silly linkStuff clone-stats@0.0.1 is installed into a global node_modules +5378 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext/package.json +5379 silly prepareForInstallMany adding ansi-regex@^2.0.0 from has-ansi dependencies +5380 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/package.json +5381 http 304 http://registry.npm.alibaba-inc.com/is-stream +5382 verbose headers { server: 'Tengine', +5382 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +5382 verbose headers connection: 'keep-alive', +5382 verbose headers etag: '"1537-KUcGKAXBFuKhGNLVFzDRhQ"', +5382 verbose headers 'x-readtime': '19' } +5383 silly get cb [ 304, +5383 silly get { server: 'Tengine', +5383 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +5383 silly get connection: 'keep-alive', +5383 silly get etag: '"1537-KUcGKAXBFuKhGNLVFzDRhQ"', +5383 silly get 'x-readtime': '19' } ] +5384 verbose etag http://registry.npm.alibaba-inc.com/is-stream from cache +5385 verbose get saving is-stream to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-stream/.cache.json +5386 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5387 http 304 http://registry.npm.alibaba-inc.com/json-stable-stringify +5388 verbose headers { server: 'Tengine', +5388 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +5388 verbose headers connection: 'keep-alive', +5388 verbose headers etag: '"3ced-ANb110mqWnC+hIe62SGyWg"', +5388 verbose headers 'x-readtime': '20' } +5389 silly get cb [ 304, +5389 silly get { server: 'Tengine', +5389 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +5389 silly get connection: 'keep-alive', +5389 silly get etag: '"3ced-ANb110mqWnC+hIe62SGyWg"', +5389 silly get 'x-readtime': '20' } ] +5390 verbose etag http://registry.npm.alibaba-inc.com/json-stable-stringify from cache +5391 verbose get saving json-stable-stringify to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/json-stable-stringify/.cache.json +5392 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5393 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp/package.json +5394 verbose linkBins cli-width@2.1.0 +5395 verbose linkMans cli-width@2.1.0 +5396 verbose rebuildBundles cli-width@2.1.0 +5397 info linkStuff lodash.keys@4.0.7 +5398 silly linkStuff lodash.keys@4.0.7 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules as its parent node_modules +5399 silly linkStuff lodash.keys@4.0.7 is part of a global install +5400 silly linkStuff lodash.keys@4.0.7 is installed into a global node_modules +5401 http 304 http://registry.npm.alibaba-inc.com/extend-shallow +5402 verbose headers { server: 'Tengine', +5402 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +5402 verbose headers connection: 'keep-alive', +5402 verbose headers etag: '"49e6-GE7Yn4YonbyD9fuWi6qa1Q"', +5402 verbose headers 'x-readtime': '26' } +5403 silly get cb [ 304, +5403 silly get { server: 'Tengine', +5403 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +5403 silly get connection: 'keep-alive', +5403 silly get etag: '"49e6-GE7Yn4YonbyD9fuWi6qa1Q"', +5403 silly get 'x-readtime': '26' } ] +5404 verbose etag http://registry.npm.alibaba-inc.com/extend-shallow from cache +5405 verbose get saving extend-shallow to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/extend-shallow/.cache.json +5406 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5407 silly prepareForInstallMany adding is-glob@^2.0.0 from glob-parent dependencies +5408 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/package.json +5409 verbose afterAdd /home/ruanyf/.tnpm/buffer-shims/1.0.0/package/package.json written +5410 silly install resolved [ { name: 'isarray', +5410 silly install resolved description: 'Array#isArray for older browsers', +5410 silly install resolved version: '1.0.0', +5410 silly install resolved repository: +5410 silly install resolved { type: 'git', +5410 silly install resolved url: 'git://github.com/juliangruber/isarray.git' }, +5410 silly install resolved homepage: 'https://github.com/juliangruber/isarray', +5410 silly install resolved main: 'index.js', +5410 silly install resolved dependencies: {}, +5410 silly install resolved devDependencies: { tape: '~2.13.4' }, +5410 silly install resolved keywords: [ 'browser', 'isarray', 'array' ], +5410 silly install resolved author: +5410 silly install resolved { name: 'Julian Gruber', +5410 silly install resolved email: 'mail@juliangruber.com', +5410 silly install resolved url: 'http://juliangruber.com' }, +5410 silly install resolved license: 'MIT', +5410 silly install resolved testling: { files: 'test.js', browsers: [Object] }, +5410 silly install resolved scripts: { test: 'tape test.js' }, +5410 silly install resolved gitHead: '2a23a281f369e9ae06394c0fb4d2381355a6ba33', +5410 silly install resolved bugs: { url: 'https://github.com/juliangruber/isarray/issues' }, +5410 silly install resolved _id: 'isarray@1.0.0', +5410 silly install resolved _shasum: 'bb935d48582cba168c06834957a54a3e07124f11', +5410 silly install resolved _from: 'isarray@>=1.0.0 <1.1.0', +5410 silly install resolved _npmVersion: '3.3.12', +5410 silly install resolved _nodeVersion: '5.1.0', +5410 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, +5410 silly install resolved dist: +5410 silly install resolved { shasum: 'bb935d48582cba168c06834957a54a3e07124f11', +5410 silly install resolved size: 2021, +5410 silly install resolved noattachment: false, +5410 silly install resolved key: 'isarray/-/isarray-1.0.0.tgz', +5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz' }, +5410 silly install resolved maintainers: [ [Object] ], +5410 silly install resolved directories: {}, +5410 silly install resolved publish_time: 1449741907067, +5410 silly install resolved _cnpm_publish_time: 1449741907067, +5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz', +5410 silly install resolved readme: 'ERROR: No README data found!' }, +5410 silly install resolved { name: 'inherits', +5410 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', +5410 silly install resolved version: '2.0.1', +5410 silly install resolved keywords: +5410 silly install resolved [ 'inheritance', +5410 silly install resolved 'class', +5410 silly install resolved 'klass', +5410 silly install resolved 'oop', +5410 silly install resolved 'object-oriented', +5410 silly install resolved 'inherits', +5410 silly install resolved 'browser', +5410 silly install resolved 'browserify' ], +5410 silly install resolved main: './inherits.js', +5410 silly install resolved browser: './inherits_browser.js', +5410 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, +5410 silly install resolved license: 'ISC', +5410 silly install resolved scripts: { test: 'node test' }, +5410 silly install resolved readmeFilename: 'README.md', +5410 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, +5410 silly install resolved _id: 'inherits@2.0.1', +5410 silly install resolved dist: +5410 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +5410 silly install resolved size: 2122, +5410 silly install resolved noattachment: false, +5410 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', +5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, +5410 silly install resolved _from: 'inherits@>=2.0.1 <2.1.0', +5410 silly install resolved _npmVersion: '1.3.8', +5410 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +5410 silly install resolved maintainers: [ [Object] ], +5410 silly install resolved directories: {}, +5410 silly install resolved publish_time: 1376950220463, +5410 silly install resolved _cnpm_publish_time: 1376950220463, +5410 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', +5410 silly install resolved readme: 'ERROR: No README data found!', +5410 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' }, +5410 silly install resolved { name: 'string_decoder', +5410 silly install resolved version: '0.10.31', +5410 silly install resolved description: 'The string_decoder module from Node core', +5410 silly install resolved main: 'index.js', +5410 silly install resolved dependencies: {}, +5410 silly install resolved devDependencies: { tap: '~0.4.8' }, +5410 silly install resolved scripts: { test: 'tap test/simple/*.js' }, +5410 silly install resolved repository: +5410 silly install resolved { type: 'git', +5410 silly install resolved url: 'git://github.com/rvagg/string_decoder.git' }, +5410 silly install resolved homepage: 'https://github.com/rvagg/string_decoder', +5410 silly install resolved keywords: [ 'string', 'decoder', 'browser', 'browserify' ], +5410 silly install resolved license: 'MIT', +5410 silly install resolved gitHead: 'd46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0', +5410 silly install resolved bugs: { url: 'https://github.com/rvagg/string_decoder/issues' }, +5410 silly install resolved _id: 'string_decoder@0.10.31', +5410 silly install resolved _shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', +5410 silly install resolved _from: 'string_decoder@>=0.10.0 <0.11.0', +5410 silly install resolved _npmVersion: '1.4.23', +5410 silly install resolved _npmUser: { name: 'rvagg', email: 'rod@vagg.org' }, +5410 silly install resolved maintainers: [ [Object], [Object] ], +5410 silly install resolved dist: +5410 silly install resolved { shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', +5410 silly install resolved size: 3608, +5410 silly install resolved noattachment: false, +5410 silly install resolved key: 'string_decoder/-/string_decoder-0.10.31.tgz', +5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz' }, +5410 silly install resolved directories: {}, +5410 silly install resolved publish_time: 1408767919329, +5410 silly install resolved _cnpm_publish_time: 1408767919329, +5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz', +5410 silly install resolved readme: 'ERROR: No README data found!' }, +5410 silly install resolved { name: 'process-nextick-args', +5410 silly install resolved version: '1.0.7', +5410 silly install resolved description: 'process.nextTick but always with args', +5410 silly install resolved main: 'index.js', +5410 silly install resolved scripts: { test: 'node test.js' }, +5410 silly install resolved repository: +5410 silly install resolved { type: 'git', +5410 silly install resolved url: 'git+https://github.com/calvinmetcalf/process-nextick-args.git' }, +5410 silly install resolved author: '', +5410 silly install resolved license: 'MIT', +5410 silly install resolved bugs: { url: 'https://github.com/calvinmetcalf/process-nextick-args/issues' }, +5410 silly install resolved homepage: 'https://github.com/calvinmetcalf/process-nextick-args', +5410 silly install resolved devDependencies: { tap: '~0.2.6' }, +5410 silly install resolved gitHead: '5c00899ab01dd32f93ad4b5743da33da91404f39', +5410 silly install resolved _id: 'process-nextick-args@1.0.7', +5410 silly install resolved _shasum: '150e20b756590ad3f91093f25a4f2ad8bff30ba3', +5410 silly install resolved _from: 'process-nextick-args@>=1.0.6 <1.1.0', +5410 silly install resolved _npmVersion: '3.8.6', +5410 silly install resolved _nodeVersion: '5.11.0', +5410 silly install resolved _npmUser: { name: 'cwmma', email: 'calvin.metcalf@gmail.com' }, +5410 silly install resolved dist: +5410 silly install resolved { shasum: '150e20b756590ad3f91093f25a4f2ad8bff30ba3', +5410 silly install resolved size: 1923, +5410 silly install resolved noattachment: false, +5410 silly install resolved key: 'process-nextick-args/-/process-nextick-args-1.0.7.tgz', +5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/process-nextick-args/download/process-nextick-args-1.0.7.tgz' }, +5410 silly install resolved maintainers: [ [Object] ], +5410 silly install resolved _npmOperationalInternal: +5410 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +5410 silly install resolved tmp: 'tmp/process-nextick-args-1.0.7.tgz_1462394251778_0.36989671061746776' }, +5410 silly install resolved directories: {}, +5410 silly install resolved publish_time: 1462394254467, +5410 silly install resolved _cnpm_publish_time: 1462394254467, +5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/process-nextick-args/download/process-nextick-args-1.0.7.tgz', +5410 silly install resolved readme: 'ERROR: No README data found!' }, +5410 silly install resolved { name: 'core-util-is', +5410 silly install resolved version: '1.0.2', +5410 silly install resolved description: 'The `util.is*` functions introduced in Node v0.12.', +5410 silly install resolved main: 'lib/util.js', +5410 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/core-util-is.git' }, +5410 silly install resolved keywords: +5410 silly install resolved [ 'util', +5410 silly install resolved 'isBuffer', +5410 silly install resolved 'isArray', +5410 silly install resolved 'isNumber', +5410 silly install resolved 'isString', +5410 silly install resolved 'isRegExp', +5410 silly install resolved 'isThis', +5410 silly install resolved 'isThat', +5410 silly install resolved 'polyfill' ], +5410 silly install resolved author: +5410 silly install resolved { name: 'Isaac Z. Schlueter', +5410 silly install resolved email: 'i@izs.me', +5410 silly install resolved url: 'http://blog.izs.me/' }, +5410 silly install resolved license: 'MIT', +5410 silly install resolved bugs: { url: 'https://github.com/isaacs/core-util-is/issues' }, +5410 silly install resolved scripts: { test: 'tap test.js' }, +5410 silly install resolved devDependencies: { tap: '^2.3.0' }, +5410 silly install resolved gitHead: 'a177da234df5638b363ddc15fa324619a38577c8', +5410 silly install resolved homepage: 'https://github.com/isaacs/core-util-is#readme', +5410 silly install resolved _id: 'core-util-is@1.0.2', +5410 silly install resolved _shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', +5410 silly install resolved _from: 'core-util-is@>=1.0.0 <1.1.0', +5410 silly install resolved _npmVersion: '3.3.2', +5410 silly install resolved _nodeVersion: '4.0.0', +5410 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +5410 silly install resolved dist: +5410 silly install resolved { shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', +5410 silly install resolved size: 7016, +5410 silly install resolved noattachment: false, +5410 silly install resolved key: 'core-util-is/-/core-util-is-1.0.2.tgz', +5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz' }, +5410 silly install resolved maintainers: [ [Object] ], +5410 silly install resolved directories: {}, +5410 silly install resolved publish_time: 1447979853081, +5410 silly install resolved _cnpm_publish_time: 1447979853081, +5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz', +5410 silly install resolved readme: 'ERROR: No README data found!' }, +5410 silly install resolved { name: 'util-deprecate', +5410 silly install resolved version: '1.0.2', +5410 silly install resolved description: 'The Node.js `util.deprecate()` function with browser support', +5410 silly install resolved main: 'node.js', +5410 silly install resolved browser: 'browser.js', +5410 silly install resolved scripts: { test: 'echo "Error: no test specified" && exit 1' }, +5410 silly install resolved repository: +5410 silly install resolved { type: 'git', +5410 silly install resolved url: 'git://github.com/TooTallNate/util-deprecate.git' }, +5410 silly install resolved keywords: [ 'util', 'deprecate', 'browserify', 'browser', 'node' ], +5410 silly install resolved author: +5410 silly install resolved { name: 'Nathan Rajlich', +5410 silly install resolved email: 'nathan@tootallnate.net', +5410 silly install resolved url: 'http://n8.io/' }, +5410 silly install resolved license: 'MIT', +5410 silly install resolved bugs: { url: 'https://github.com/TooTallNate/util-deprecate/issues' }, +5410 silly install resolved homepage: 'https://github.com/TooTallNate/util-deprecate', +5410 silly install resolved gitHead: '475fb6857cd23fafff20c1be846c1350abf8e6d4', +5410 silly install resolved _id: 'util-deprecate@1.0.2', +5410 silly install resolved _shasum: '450d4dc9fa70de732762fbd2d4a28981419a0ccf', +5410 silly install resolved _from: 'util-deprecate@>=1.0.1 <1.1.0', +5410 silly install resolved _npmVersion: '2.14.4', +5410 silly install resolved _nodeVersion: '4.1.2', +5410 silly install resolved _npmUser: { name: 'tootallnate', email: 'nathan@tootallnate.net' }, +5410 silly install resolved maintainers: [ [Object] ], +5410 silly install resolved dist: +5410 silly install resolved { shasum: '450d4dc9fa70de732762fbd2d4a28981419a0ccf', +5410 silly install resolved size: 2246, +5410 silly install resolved noattachment: false, +5410 silly install resolved key: 'util-deprecate/-/util-deprecate-1.0.2.tgz', +5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz' }, +5410 silly install resolved directories: {}, +5410 silly install resolved publish_time: 1444243060665, +5410 silly install resolved _cnpm_publish_time: 1444243060665, +5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz', +5410 silly install resolved readme: 'ERROR: No README data found!' }, +5410 silly install resolved { name: 'buffer-shims', +5410 silly install resolved version: '1.0.0', +5410 silly install resolved description: 'some shims for node buffers', +5410 silly install resolved main: 'index.js', +5410 silly install resolved scripts: { test: 'tape test/*.js' }, +5410 silly install resolved files: [ 'index.js' ], +5410 silly install resolved license: 'MIT', +5410 silly install resolved devDependencies: { tape: '^4.5.1' }, +5410 silly install resolved repository: +5410 silly install resolved { type: 'git', +5410 silly install resolved url: 'git@github.com:calvinmetcalf/buffer-shims.git' }, +5410 silly install resolved gitHead: 'ea89b3857ab5b8203957922a84e9a48cf4c47e0a', +5410 silly install resolved bugs: { url: 'https://github.com/calvinmetcalf/buffer-shims/issues' }, +5410 silly install resolved _id: 'buffer-shims@1.0.0', +5410 silly install resolved _shasum: '9978ce317388c649ad8793028c3477ef044a8b51', +5410 silly install resolved _from: 'buffer-shims@>=1.0.0 <2.0.0', +5410 silly install resolved _npmVersion: '3.8.6', +5410 silly install resolved _nodeVersion: '5.11.0', +5410 silly install resolved _npmUser: { name: 'cwmma', email: 'calvin.metcalf@gmail.com' }, +5410 silly install resolved dist: +5410 silly install resolved { shasum: '9978ce317388c649ad8793028c3477ef044a8b51', +5410 silly install resolved size: 2156, +5410 silly install resolved noattachment: false, +5410 silly install resolved key: 'buffer-shims/-/buffer-shims-1.0.0.tgz', +5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz' }, +5410 silly install resolved maintainers: [ [Object] ], +5410 silly install resolved _npmOperationalInternal: +5410 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +5410 silly install resolved tmp: 'tmp/buffer-shims-1.0.0.tgz_1462560889323_0.8640750856138766' }, +5410 silly install resolved directories: {}, +5410 silly install resolved publish_time: 1462560891096, +5410 silly install resolved _cnpm_publish_time: 1462560891096, +5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz' } ] +5411 info install isarray@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +5412 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +5413 info install string_decoder@0.10.31 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +5414 info install process-nextick-args@1.0.7 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +5415 info install core-util-is@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +5416 info install util-deprecate@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +5417 info install buffer-shims@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +5418 info installOne isarray@1.0.0 +5419 verbose installOne of isarray to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing +5420 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5421 info installOne inherits@2.0.1 +5422 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing +5423 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5424 info installOne string_decoder@0.10.31 +5425 verbose installOne of string_decoder to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing +5426 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5427 info installOne process-nextick-args@1.0.7 +5428 verbose installOne of process-nextick-args to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing +5429 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5430 info installOne core-util-is@1.0.2 +5431 verbose installOne of core-util-is to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing +5432 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5433 info installOne util-deprecate@1.0.2 +5434 verbose installOne of util-deprecate to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing +5435 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5436 info installOne buffer-shims@1.0.0 +5437 verbose installOne of buffer-shims to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing +5438 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5439 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles/package.json +5440 info preinstall convert-source-map@1.2.0 +5441 info install cli-width@2.1.0 +5442 silly cache add args [ 'exit-hook@^1.0.0', null ] +5443 verbose cache add spec exit-hook@^1.0.0 +5444 silly cache add parsed spec Result { +5444 silly cache add raw: 'exit-hook@^1.0.0', +5444 silly cache add scope: null, +5444 silly cache add name: 'exit-hook', +5444 silly cache add rawSpec: '^1.0.0', +5444 silly cache add spec: '>=1.0.0 <2.0.0', +5444 silly cache add type: 'range' } +5445 silly addNamed exit-hook@>=1.0.0 <2.0.0 +5446 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for exit-hook +5447 silly addNameRange { name: 'exit-hook', range: '>=1.0.0 <2.0.0', hasData: false } +5448 silly mapToRegistry name exit-hook +5449 silly mapToRegistry using default registry +5450 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5451 silly mapToRegistry data Result { +5451 silly mapToRegistry raw: 'exit-hook', +5451 silly mapToRegistry scope: null, +5451 silly mapToRegistry name: 'exit-hook', +5451 silly mapToRegistry rawSpec: '', +5451 silly mapToRegistry spec: 'latest', +5451 silly mapToRegistry type: 'tag' } +5452 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/exit-hook +5453 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/exit-hook not in flight; fetching +5454 silly cache add args [ 'onetime@^1.0.0', null ] +5455 verbose cache add spec onetime@^1.0.0 +5456 silly cache add parsed spec Result { +5456 silly cache add raw: 'onetime@^1.0.0', +5456 silly cache add scope: null, +5456 silly cache add name: 'onetime', +5456 silly cache add rawSpec: '^1.0.0', +5456 silly cache add spec: '>=1.0.0 <2.0.0', +5456 silly cache add type: 'range' } +5457 silly addNamed onetime@>=1.0.0 <2.0.0 +5458 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for onetime +5459 silly addNameRange { name: 'onetime', range: '>=1.0.0 <2.0.0', hasData: false } +5460 silly mapToRegistry name onetime +5461 silly mapToRegistry using default registry +5462 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5463 silly mapToRegistry data Result { +5463 silly mapToRegistry raw: 'onetime', +5463 silly mapToRegistry scope: null, +5463 silly mapToRegistry name: 'onetime', +5463 silly mapToRegistry rawSpec: '', +5463 silly mapToRegistry spec: 'latest', +5463 silly mapToRegistry type: 'tag' } +5464 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/onetime +5465 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/onetime not in flight; fetching +5466 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color/package.json +5467 verbose linkBins clone-stats@0.0.1 +5468 verbose linkMans clone-stats@0.0.1 +5469 verbose rebuildBundles clone-stats@0.0.1 +5470 verbose lock using /home/ruanyf/.tnpm/_locks/isarray-3f8fc3c76d274bae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray +5471 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-f6ef6acc91466ebe.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits +5472 verbose lock using /home/ruanyf/.tnpm/_locks/string-decoder-41a36a35d7546451.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder +5473 verbose lock using /home/ruanyf/.tnpm/_locks/process-nextick-args-53c0069f7053538d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args +5474 verbose lock using /home/ruanyf/.tnpm/_locks/core-util-is-fd2215fcc21f4f15.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is +5475 verbose lock using /home/ruanyf/.tnpm/_locks/util-deprecate-b30e99e036e007f1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate +5476 verbose lock using /home/ruanyf/.tnpm/_locks/buffer-shims-8211e13276fdb335.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims +5477 verbose afterAdd /home/ruanyf/.tnpm/once/1.3.3/package/package.json written +5478 silly install resolved [ { name: 'once', +5478 silly install resolved version: '1.3.3', +5478 silly install resolved description: 'Run a function exactly one time', +5478 silly install resolved main: 'once.js', +5478 silly install resolved directories: { test: 'test' }, +5478 silly install resolved dependencies: { wrappy: '1' }, +5478 silly install resolved devDependencies: { tap: '^1.2.0' }, +5478 silly install resolved scripts: { test: 'tap test/*.js' }, +5478 silly install resolved files: [ 'once.js' ], +5478 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/once.git' }, +5478 silly install resolved keywords: [ 'once', 'function', 'one', 'single' ], +5478 silly install resolved author: +5478 silly install resolved { name: 'Isaac Z. Schlueter', +5478 silly install resolved email: 'i@izs.me', +5478 silly install resolved url: 'http://blog.izs.me/' }, +5478 silly install resolved license: 'ISC', +5478 silly install resolved gitHead: '2ad558657e17fafd24803217ba854762842e4178', +5478 silly install resolved bugs: { url: 'https://github.com/isaacs/once/issues' }, +5478 silly install resolved homepage: 'https://github.com/isaacs/once#readme', +5478 silly install resolved _id: 'once@1.3.3', +5478 silly install resolved _shasum: 'b2e261557ce4c314ec8304f3fa82663e4297ca20', +5478 silly install resolved _from: 'once@>=1.3.0 <1.4.0', +5478 silly install resolved _npmVersion: '3.3.2', +5478 silly install resolved _nodeVersion: '4.0.0', +5478 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +5478 silly install resolved dist: +5478 silly install resolved { shasum: 'b2e261557ce4c314ec8304f3fa82663e4297ca20', +5478 silly install resolved size: 1573, +5478 silly install resolved noattachment: false, +5478 silly install resolved key: 'once/-/once-1.3.3.tgz', +5478 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/once/download/once-1.3.3.tgz' }, +5478 silly install resolved maintainers: [ [Object] ], +5478 silly install resolved publish_time: 1448055914765, +5478 silly install resolved _cnpm_publish_time: 1448055914765, +5478 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/once/download/once-1.3.3.tgz', +5478 silly install resolved readme: 'ERROR: No README data found!' } ] +5479 info install once@1.3.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +5480 info installOne once@1.3.3 +5481 verbose installOne of once to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream not in flight; installing +5482 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5483 silly install resolved [] +5484 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex +5485 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex +5486 silly install resolved [] +5487 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp +5488 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp +5489 silly install resolved [] +5490 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie +5491 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie +5492 info install clone-stats@0.0.1 +5493 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map/package.json +5494 info postinstall cli-width@2.1.0 +5495 verbose linkBins lodash.keys@4.0.7 +5496 verbose linkMans lodash.keys@4.0.7 +5497 verbose rebuildBundles lodash.keys@4.0.7 +5498 silly cache add args [ 'number-is-nan@^1.0.0', null ] +5499 verbose cache add spec number-is-nan@^1.0.0 +5500 silly cache add args [ 'number-is-nan@^1.0.0', null ] +5501 verbose cache add spec number-is-nan@^1.0.0 +5502 silly cache add parsed spec Result { +5502 silly cache add raw: 'number-is-nan@^1.0.0', +5502 silly cache add scope: null, +5502 silly cache add name: 'number-is-nan', +5502 silly cache add rawSpec: '^1.0.0', +5502 silly cache add spec: '>=1.0.0 <2.0.0', +5502 silly cache add type: 'range' } +5503 silly addNamed number-is-nan@>=1.0.0 <2.0.0 +5504 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for number-is-nan +5505 silly addNameRange { name: 'number-is-nan', +5505 silly addNameRange range: '>=1.0.0 <2.0.0', +5505 silly addNameRange hasData: false } +5506 silly mapToRegistry name number-is-nan +5507 silly mapToRegistry using default registry +5508 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5509 silly mapToRegistry data Result { +5509 silly mapToRegistry raw: 'number-is-nan', +5509 silly mapToRegistry scope: null, +5509 silly mapToRegistry name: 'number-is-nan', +5509 silly mapToRegistry rawSpec: '', +5509 silly mapToRegistry spec: 'latest', +5509 silly mapToRegistry type: 'tag' } +5510 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/number-is-nan +5511 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/number-is-nan not in flight; fetching +5512 silly cache add parsed spec Result { +5512 silly cache add raw: 'number-is-nan@^1.0.0', +5512 silly cache add scope: null, +5512 silly cache add name: 'number-is-nan', +5512 silly cache add rawSpec: '^1.0.0', +5512 silly cache add spec: '>=1.0.0 <2.0.0', +5512 silly cache add type: 'range' } +5513 silly addNamed number-is-nan@>=1.0.0 <2.0.0 +5514 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for number-is-nan +5515 silly addNameRange { name: 'number-is-nan', +5515 silly addNameRange range: '>=1.0.0 <2.0.0', +5515 silly addNameRange hasData: false } +5516 silly mapToRegistry name number-is-nan +5517 silly mapToRegistry using default registry +5518 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5519 silly mapToRegistry data Result { +5519 silly mapToRegistry raw: 'number-is-nan', +5519 silly mapToRegistry scope: null, +5519 silly mapToRegistry name: 'number-is-nan', +5519 silly mapToRegistry rawSpec: '', +5519 silly mapToRegistry spec: 'latest', +5519 silly mapToRegistry type: 'tag' } +5520 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/number-is-nan +5521 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/number-is-nan already in flight; waiting +5522 silly cache afterAdd xtend@4.0.1 +5523 verbose afterAdd /home/ruanyf/.tnpm/xtend/4.0.1/package/package.json not in flight; writing +5524 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5525 silly install write writing isarray 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray +5526 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits +5527 silly install write writing string_decoder 0.10.31 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder +5528 silly install write writing process-nextick-args 1.0.7 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args +5529 silly install write writing core-util-is 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is +5530 silly install write writing util-deprecate 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate +5531 silly install write writing buffer-shims 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims +5532 silly cache afterAdd readable-stream@1.0.34 +5533 verbose afterAdd /home/ruanyf/.tnpm/readable-stream/1.0.34/package/package.json not in flight; writing +5534 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5535 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/package.json +5536 silly gunzTarPerm extractEntry dist/rx.js +5537 info install lodash.keys@4.0.7 +5538 silly install resolved [] +5539 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign +5540 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign +5541 silly cache add args [ 'inflight@^1.0.4', null ] +5542 verbose cache add spec inflight@^1.0.4 +5543 silly cache add parsed spec Result { +5543 silly cache add raw: 'inflight@^1.0.4', +5543 silly cache add scope: null, +5543 silly cache add name: 'inflight', +5543 silly cache add rawSpec: '^1.0.4', +5543 silly cache add spec: '>=1.0.4 <2.0.0', +5543 silly cache add type: 'range' } +5544 silly addNamed inflight@>=1.0.4 <2.0.0 +5545 verbose addNamed ">=1.0.4 <2.0.0" is a valid semver range for inflight +5546 silly addNameRange { name: 'inflight', range: '>=1.0.4 <2.0.0', hasData: false } +5547 silly mapToRegistry name inflight +5548 silly mapToRegistry using default registry +5549 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5550 silly mapToRegistry data Result { +5550 silly mapToRegistry raw: 'inflight', +5550 silly mapToRegistry scope: null, +5550 silly mapToRegistry name: 'inflight', +5550 silly mapToRegistry rawSpec: '', +5550 silly mapToRegistry spec: 'latest', +5550 silly mapToRegistry type: 'tag' } +5551 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inflight +5552 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inflight not in flight; fetching +5553 silly cache add args [ 'inherits@2', null ] +5554 verbose cache add spec inherits@2 +5555 silly cache add parsed spec Result { +5555 silly cache add raw: 'inherits@2', +5555 silly cache add scope: null, +5555 silly cache add name: 'inherits', +5555 silly cache add rawSpec: '2', +5555 silly cache add spec: '>=2.0.0 <3.0.0', +5555 silly cache add type: 'range' } +5556 silly addNamed inherits@>=2.0.0 <3.0.0 +5557 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for inherits +5558 silly addNameRange { name: 'inherits', range: '>=2.0.0 <3.0.0', hasData: false } +5559 silly mapToRegistry name inherits +5560 silly mapToRegistry using default registry +5561 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5562 silly mapToRegistry data Result { +5562 silly mapToRegistry raw: 'inherits', +5562 silly mapToRegistry scope: null, +5562 silly mapToRegistry name: 'inherits', +5562 silly mapToRegistry rawSpec: '', +5562 silly mapToRegistry spec: 'latest', +5562 silly mapToRegistry type: 'tag' } +5563 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits +5564 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching +5565 silly cache add args [ 'minimatch@2 || 3', null ] +5566 verbose cache add spec minimatch@2 || 3 +5567 silly cache add parsed spec Result { +5567 silly cache add raw: 'minimatch@2 || 3', +5567 silly cache add scope: null, +5567 silly cache add name: 'minimatch', +5567 silly cache add rawSpec: '2 || 3', +5567 silly cache add spec: '>=2.0.0 <3.0.0||>=3.0.0 <4.0.0', +5567 silly cache add type: 'range' } +5568 silly addNamed minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0 +5569 verbose addNamed ">=2.0.0 <3.0.0||>=3.0.0 <4.0.0" is a valid semver range for minimatch +5570 silly addNameRange { name: 'minimatch', +5570 silly addNameRange range: '>=2.0.0 <3.0.0||>=3.0.0 <4.0.0', +5570 silly addNameRange hasData: false } +5571 silly mapToRegistry name minimatch +5572 silly mapToRegistry using default registry +5573 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5574 silly mapToRegistry data Result { +5574 silly mapToRegistry raw: 'minimatch', +5574 silly mapToRegistry scope: null, +5574 silly mapToRegistry name: 'minimatch', +5574 silly mapToRegistry rawSpec: '', +5574 silly mapToRegistry spec: 'latest', +5574 silly mapToRegistry type: 'tag' } +5575 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/minimatch +5576 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/minimatch not in flight; fetching +5577 silly cache add args [ 'once@^1.3.0', null ] +5578 verbose cache add spec once@^1.3.0 +5579 silly cache add parsed spec Result { +5579 silly cache add raw: 'once@^1.3.0', +5579 silly cache add scope: null, +5579 silly cache add name: 'once', +5579 silly cache add rawSpec: '^1.3.0', +5579 silly cache add spec: '>=1.3.0 <2.0.0', +5579 silly cache add type: 'range' } +5580 silly addNamed once@>=1.3.0 <2.0.0 +5581 verbose addNamed ">=1.3.0 <2.0.0" is a valid semver range for once +5582 silly addNameRange { name: 'once', range: '>=1.3.0 <2.0.0', hasData: false } +5583 silly mapToRegistry name once +5584 silly mapToRegistry using default registry +5585 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5586 silly mapToRegistry data Result { +5586 silly mapToRegistry raw: 'once', +5586 silly mapToRegistry scope: null, +5586 silly mapToRegistry name: 'once', +5586 silly mapToRegistry rawSpec: '', +5586 silly mapToRegistry spec: 'latest', +5586 silly mapToRegistry type: 'tag' } +5587 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/once +5588 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/once not in flight; fetching +5589 silly cache add args [ 'path-is-absolute@^1.0.0', null ] +5590 verbose cache add spec path-is-absolute@^1.0.0 +5591 silly cache add parsed spec Result { +5591 silly cache add raw: 'path-is-absolute@^1.0.0', +5591 silly cache add scope: null, +5591 silly cache add name: 'path-is-absolute', +5591 silly cache add rawSpec: '^1.0.0', +5591 silly cache add spec: '>=1.0.0 <2.0.0', +5591 silly cache add type: 'range' } +5592 silly addNamed path-is-absolute@>=1.0.0 <2.0.0 +5593 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for path-is-absolute +5594 silly addNameRange { name: 'path-is-absolute', +5594 silly addNameRange range: '>=1.0.0 <2.0.0', +5594 silly addNameRange hasData: false } +5595 silly mapToRegistry name path-is-absolute +5596 silly mapToRegistry using default registry +5597 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5598 silly mapToRegistry data Result { +5598 silly mapToRegistry raw: 'path-is-absolute', +5598 silly mapToRegistry scope: null, +5598 silly mapToRegistry name: 'path-is-absolute', +5598 silly mapToRegistry rawSpec: '', +5598 silly mapToRegistry spec: 'latest', +5598 silly mapToRegistry type: 'tag' } +5599 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/path-is-absolute +5600 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/path-is-absolute not in flight; fetching +5601 verbose lock using /home/ruanyf/.tnpm/_locks/once-80d6dab4b7675236.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +5602 silly gunzTarPerm extractEntry every.js +5603 silly gunzTarPerm extractEntry castArray.js +5604 info postinstall clone-stats@0.0.1 +5605 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext/package.json +5606 silly install resolved [] +5607 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp +5608 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp +5609 silly install write writing once 1.3.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +5610 silly gunzTarPerm extractEntry readme.md +5611 verbose unlock done using /home/ruanyf/.tnpm/_locks/cli-width-56eac2007d3e9b43.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width +5612 info postinstall lodash.keys@4.0.7 +5613 verbose request uri http://registry.npm.alibaba-inc.com/exit-hook +5614 verbose request no auth needed +5615 info attempt registry request try #1 at 上午9:12:30 +5616 verbose etag "1404-ikN0KFdIx9MgokDvwK4w7g" +5617 http request GET http://registry.npm.alibaba-inc.com/exit-hook +5618 silly cache add args [ 'ansi-regex@^2.0.0', null ] +5619 verbose cache add spec ansi-regex@^2.0.0 +5620 silly cache add parsed spec Result { +5620 silly cache add raw: 'ansi-regex@^2.0.0', +5620 silly cache add scope: null, +5620 silly cache add name: 'ansi-regex', +5620 silly cache add rawSpec: '^2.0.0', +5620 silly cache add spec: '>=2.0.0 <3.0.0', +5620 silly cache add type: 'range' } +5621 silly addNamed ansi-regex@>=2.0.0 <3.0.0 +5622 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for ansi-regex +5623 silly addNameRange { name: 'ansi-regex', range: '>=2.0.0 <3.0.0', hasData: false } +5624 silly mapToRegistry name ansi-regex +5625 silly mapToRegistry using default registry +5626 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5627 silly mapToRegistry data Result { +5627 silly mapToRegistry raw: 'ansi-regex', +5627 silly mapToRegistry scope: null, +5627 silly mapToRegistry name: 'ansi-regex', +5627 silly mapToRegistry rawSpec: '', +5627 silly mapToRegistry spec: 'latest', +5627 silly mapToRegistry type: 'tag' } +5628 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/ansi-regex +5629 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/ansi-regex not in flight; fetching +5630 verbose request uri http://registry.npm.alibaba-inc.com/onetime +5631 verbose request no auth needed +5632 info attempt registry request try #1 at 上午9:12:30 +5633 verbose etag "19a0-O0eNPUCiVJQCmRDCk3W/tA" +5634 http request GET http://registry.npm.alibaba-inc.com/onetime +5635 silly install resolved [] +5636 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles +5637 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles +5638 silly addNameRange number 2 { name: 'is-stream', range: '>=1.0.1 <2.0.0', hasData: true } +5639 silly addNameRange versions [ 'is-stream', [ '1.1.0', '1.0.1', '1.0.0' ] ] +5640 silly addNamed is-stream@1.1.0 +5641 verbose addNamed "1.1.0" is a plain semver version for is-stream +5642 silly addNameRange number 2 { name: 'json-stable-stringify', +5642 silly addNameRange range: '>=1.0.0 <2.0.0', +5642 silly addNameRange hasData: true } +5643 silly addNameRange versions [ 'json-stable-stringify', +5643 silly addNameRange [ '1.0.1', +5643 silly addNameRange '1.0.0', +5643 silly addNameRange '0.1.3', +5643 silly addNameRange '0.1.2', +5643 silly addNameRange '0.1.1', +5643 silly addNameRange '0.1.0', +5643 silly addNameRange '0.0.1', +5643 silly addNameRange '0.0.0' ] ] +5644 silly addNamed json-stable-stringify@1.0.1 +5645 verbose addNamed "1.0.1" is a plain semver version for json-stable-stringify +5646 silly install resolved [] +5647 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color +5648 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color +5649 info preinstall micromatch@2.3.8 +5650 info linkStuff ansi-regex@2.0.0 +5651 silly linkStuff ansi-regex@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules as its parent node_modules +5652 silly linkStuff ansi-regex@2.0.0 is part of a global install +5653 silly linkStuff ansi-regex@2.0.0 is installed into a global node_modules +5654 info linkStuff escape-string-regexp@1.0.5 +5655 silly linkStuff escape-string-regexp@1.0.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules as its parent node_modules +5656 silly linkStuff escape-string-regexp@1.0.5 is part of a global install +5657 silly linkStuff escape-string-regexp@1.0.5 is installed into a global node_modules +5658 info linkStuff pinkie@2.0.4 +5659 silly linkStuff pinkie@2.0.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules as its parent node_modules +5660 silly linkStuff pinkie@2.0.4 is part of a global install +5661 silly linkStuff pinkie@2.0.4 is installed into a global node_modules +5662 verbose unlock done using /home/ruanyf/.tnpm/_locks/clone-stats-37c782b238fb79f0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats +5663 verbose request uri http://registry.npm.alibaba-inc.com/number-is-nan +5664 verbose request no auth needed +5665 info attempt registry request try #1 at 上午9:12:30 +5666 verbose etag "a5a-fGMcfSEf8TDHFV1Rcknlag" +5667 http request GET http://registry.npm.alibaba-inc.com/number-is-nan +5668 silly cache add args [ 'is-glob@^2.0.0', null ] +5669 verbose cache add spec is-glob@^2.0.0 +5670 silly cache add parsed spec Result { +5670 silly cache add raw: 'is-glob@^2.0.0', +5670 silly cache add scope: null, +5670 silly cache add name: 'is-glob', +5670 silly cache add rawSpec: '^2.0.0', +5670 silly cache add spec: '>=2.0.0 <3.0.0', +5670 silly cache add type: 'range' } +5671 silly addNamed is-glob@>=2.0.0 <3.0.0 +5672 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for is-glob +5673 silly addNameRange { name: 'is-glob', range: '>=2.0.0 <3.0.0', hasData: false } +5674 silly mapToRegistry name is-glob +5675 silly mapToRegistry using default registry +5676 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +5677 silly mapToRegistry data Result { +5677 silly mapToRegistry raw: 'is-glob', +5677 silly mapToRegistry scope: null, +5677 silly mapToRegistry name: 'is-glob', +5677 silly mapToRegistry rawSpec: '', +5677 silly mapToRegistry spec: 'latest', +5677 silly mapToRegistry type: 'tag' } +5678 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-glob +5679 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-glob not in flight; fetching +5680 silly addNameRange number 2 { name: 'extend-shallow', +5680 silly addNameRange range: '>=2.0.1 <3.0.0', +5680 silly addNameRange hasData: true } +5681 silly addNameRange versions [ 'extend-shallow', +5681 silly addNameRange [ '2.0.1', +5681 silly addNameRange '2.0.0', +5681 silly addNameRange '1.1.4', +5681 silly addNameRange '1.1.2', +5681 silly addNameRange '1.1.1', +5681 silly addNameRange '1.0.1', +5681 silly addNameRange '1.0.0', +5681 silly addNameRange '0.2.0', +5681 silly addNameRange '0.1.1', +5681 silly addNameRange '0.1.0' ] ] +5682 silly addNamed extend-shallow@2.0.1 +5683 verbose addNamed "2.0.1" is a plain semver version for extend-shallow +5684 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray +5685 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits +5686 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args +5687 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder +5688 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is +5689 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate +5690 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims +5691 verbose afterAdd /home/ruanyf/.tnpm/xtend/4.0.1/package/package.json written +5692 verbose afterAdd /home/ruanyf/.tnpm/readable-stream/1.0.34/package/package.json written +5693 silly install resolved [ { name: 'xtend', +5693 silly install resolved version: '4.0.1', +5693 silly install resolved description: 'extend like a boss', +5693 silly install resolved keywords: [ 'extend', 'merge', 'options', 'opts', 'object', 'array' ], +5693 silly install resolved author: { name: 'Raynos', email: 'raynos2@gmail.com' }, +5693 silly install resolved repository: { type: 'git', url: 'git://github.com/Raynos/xtend.git' }, +5693 silly install resolved main: 'immutable', +5693 silly install resolved scripts: { test: 'node test' }, +5693 silly install resolved dependencies: {}, +5693 silly install resolved devDependencies: { tape: '~1.1.0' }, +5693 silly install resolved homepage: 'https://github.com/Raynos/xtend', +5693 silly install resolved contributors: [ [Object], [Object] ], +5693 silly install resolved bugs: +5693 silly install resolved { url: 'https://github.com/Raynos/xtend/issues', +5693 silly install resolved email: 'raynos2@gmail.com' }, +5693 silly install resolved license: 'MIT', +5693 silly install resolved testling: { files: 'test.js', browsers: [Object] }, +5693 silly install resolved engines: { node: '>=0.4' }, +5693 silly install resolved gitHead: '23dc302a89756da89c1897bc732a752317e35390', +5693 silly install resolved _id: 'xtend@4.0.1', +5693 silly install resolved _shasum: 'a5c6d532be656e23db820efb943a1f04998d63af', +5693 silly install resolved _from: 'xtend@>=4.0.0 <4.1.0-0', +5693 silly install resolved _npmVersion: '2.14.1', +5693 silly install resolved _nodeVersion: '0.10.32', +5693 silly install resolved _npmUser: { name: 'raynos', email: 'raynos2@gmail.com' }, +5693 silly install resolved dist: +5693 silly install resolved { shasum: 'a5c6d532be656e23db820efb943a1f04998d63af', +5693 silly install resolved size: 2542, +5693 silly install resolved noattachment: false, +5693 silly install resolved key: 'xtend/-/xtend-4.0.1.tgz', +5693 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.1.tgz' }, +5693 silly install resolved maintainers: [ [Object] ], +5693 silly install resolved directories: {}, +5693 silly install resolved publish_time: 1446502761923, +5693 silly install resolved _cnpm_publish_time: 1446502761923, +5693 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.1.tgz', +5693 silly install resolved readme: 'ERROR: No README data found!' }, +5693 silly install resolved { name: 'readable-stream', +5693 silly install resolved version: '1.0.34', +5693 silly install resolved description: 'Streams2, a user-land copy of the stream library from Node.js v0.10.x', +5693 silly install resolved main: 'readable.js', +5693 silly install resolved dependencies: +5693 silly install resolved { 'core-util-is': '~1.0.0', +5693 silly install resolved isarray: '0.0.1', +5693 silly install resolved string_decoder: '~0.10.x', +5693 silly install resolved inherits: '~2.0.1' }, +5693 silly install resolved devDependencies: { tap: '~0.2.6' }, +5693 silly install resolved scripts: { test: 'tap test/simple/*.js' }, +5693 silly install resolved repository: +5693 silly install resolved { type: 'git', +5693 silly install resolved url: 'git://github.com/isaacs/readable-stream.git' }, +5693 silly install resolved keywords: [ 'readable', 'stream', 'pipe' ], +5693 silly install resolved browser: { util: false }, +5693 silly install resolved author: +5693 silly install resolved { name: 'Isaac Z. Schlueter', +5693 silly install resolved email: 'i@izs.me', +5693 silly install resolved url: 'http://blog.izs.me/' }, +5693 silly install resolved license: 'MIT', +5693 silly install resolved gitHead: '1227c7b66deedb1dc5284a89425854d5f7ad9576', +5693 silly install resolved bugs: { url: 'https://github.com/isaacs/readable-stream/issues' }, +5693 silly install resolved _id: 'readable-stream@1.0.34', +5693 silly install resolved _shasum: '125820e34bc842d2f2aaafafe4c2916ee32c157c', +5693 silly install resolved _from: 'readable-stream@>=1.0.33-1 <1.1.0-0', +5693 silly install resolved _npmVersion: '3.8.3', +5693 silly install resolved _nodeVersion: '5.10.1', +5693 silly install resolved _npmUser: { name: 'cwmma', email: 'calvin.metcalf@gmail.com' }, +5693 silly install resolved dist: +5693 silly install resolved { shasum: '125820e34bc842d2f2aaafafe4c2916ee32c157c', +5693 silly install resolved size: 15447, +5693 silly install resolved noattachment: false, +5693 silly install resolved key: 'readable-stream/-/readable-stream-1.0.34.tgz', +5693 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/readable-stream/download/readable-stream-1.0.34.tgz' }, +5693 silly install resolved maintainers: [ [Object], [Object], [Object], [Object] ], +5693 silly install resolved _npmOperationalInternal: +5693 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +5693 silly install resolved tmp: 'tmp/readable-stream-1.0.34.tgz_1460562521506_0.019665231462568045' }, +5693 silly install resolved directories: {}, +5693 silly install resolved publish_time: 1460562524049, +5693 silly install resolved _cnpm_publish_time: 1460562524049, +5693 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/readable-stream/download/readable-stream-1.0.34.tgz', +5693 silly install resolved readme: 'ERROR: No README data found!', +5693 silly install resolved homepage: 'https://github.com/isaacs/readable-stream#readme' } ] +5694 info install xtend@4.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +5695 info install readable-stream@1.0.34 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +5696 info installOne xtend@4.0.1 +5697 verbose installOne of xtend to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 not in flight; installing +5698 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5699 info installOne readable-stream@1.0.34 +5700 verbose installOne of readable-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 not in flight; installing +5701 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5702 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map/package.json +5703 verbose unlock done using /home/ruanyf/.tnpm/_locks/lodash-keys-f7eea82de372afb3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys +5704 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal +5705 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal +5706 info linkStuff object-assign@4.1.0 +5707 silly linkStuff object-assign@4.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules as its parent node_modules +5708 silly linkStuff object-assign@4.1.0 is part of a global install +5709 silly linkStuff object-assign@4.1.0 is installed into a global node_modules +5710 verbose get http://registry.npm.alibaba-inc.com/inherits not expired, no request +5711 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.0 <3.0.0', hasData: true } +5712 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] +5713 silly addNamed inherits@2.0.1 +5714 verbose addNamed "2.0.1" is a plain semver version for inherits +5715 verbose get http://registry.npm.alibaba-inc.com/once not expired, no request +5716 silly addNameRange number 2 { name: 'once', range: '>=1.3.0 <2.0.0', hasData: true } +5717 silly addNameRange versions [ 'once', +5717 silly addNameRange [ '1.3.3', '1.3.2', '1.3.1', '1.3.0', '1.2.0', '1.1.1' ] ] +5718 silly addNamed once@1.3.3 +5719 verbose addNamed "1.3.3" is a plain semver version for once +5720 verbose request uri http://registry.npm.alibaba-inc.com/inflight +5721 verbose request no auth needed +5722 info attempt registry request try #1 at 上午9:12:30 +5723 verbose etag "1ec6-BuuPYubrWaNZg79belMxGw" +5724 http request GET http://registry.npm.alibaba-inc.com/inflight +5725 verbose request uri http://registry.npm.alibaba-inc.com/minimatch +5726 verbose request no auth needed +5727 info attempt registry request try #1 at 上午9:12:30 +5728 http request GET http://registry.npm.alibaba-inc.com/minimatch +5729 verbose request uri http://registry.npm.alibaba-inc.com/path-is-absolute +5730 verbose request no auth needed +5731 info attempt registry request try #1 at 上午9:12:30 +5732 verbose etag "c50-19QW3RZWN2t8mvNGLl3rdQ" +5733 http request GET http://registry.npm.alibaba-inc.com/path-is-absolute +5734 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/package.json +5735 http 304 http://registry.npm.alibaba-inc.com/exit-hook +5736 verbose headers { server: 'Tengine', +5736 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +5736 verbose headers connection: 'keep-alive', +5736 verbose headers etag: '"1404-ikN0KFdIx9MgokDvwK4w7g"', +5736 verbose headers 'x-readtime': '15' } +5737 silly get cb [ 304, +5737 silly get { server: 'Tengine', +5737 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +5737 silly get connection: 'keep-alive', +5737 silly get etag: '"1404-ikN0KFdIx9MgokDvwK4w7g"', +5737 silly get 'x-readtime': '15' } ] +5738 verbose etag http://registry.npm.alibaba-inc.com/exit-hook from cache +5739 verbose get saving exit-hook to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/exit-hook/.cache.json +5740 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5741 info linkStuff escape-string-regexp@1.0.5 +5742 silly linkStuff escape-string-regexp@1.0.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules as its parent node_modules +5743 silly linkStuff escape-string-regexp@1.0.5 is part of a global install +5744 silly linkStuff escape-string-regexp@1.0.5 is installed into a global node_modules +5745 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +5746 verbose lock using /home/ruanyf/.tnpm/_locks/xtend-0b3d1bcac6730436.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend +5747 verbose lock using /home/ruanyf/.tnpm/_locks/readable-stream-68221f11311704f0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +5748 verbose linkBins ansi-regex@2.0.0 +5749 verbose linkMans ansi-regex@2.0.0 +5750 verbose rebuildBundles ansi-regex@2.0.0 +5751 verbose linkBins escape-string-regexp@1.0.5 +5752 verbose linkMans escape-string-regexp@1.0.5 +5753 verbose rebuildBundles escape-string-regexp@1.0.5 +5754 verbose linkBins pinkie@2.0.4 +5755 verbose linkMans pinkie@2.0.4 +5756 verbose rebuildBundles pinkie@2.0.4 +5757 silly install resolved [] +5758 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext +5759 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext +5760 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json +5761 verbose get http://registry.npm.alibaba-inc.com/ansi-regex not expired, no request +5762 silly addNameRange number 2 { name: 'ansi-regex', range: '>=2.0.0 <3.0.0', hasData: true } +5763 silly addNameRange versions [ 'ansi-regex', +5763 silly addNameRange [ '2.0.0', '1.1.1', '1.1.0', '1.0.0', '0.2.1', '0.2.0', '0.1.0' ] ] +5764 silly addNamed ansi-regex@2.0.0 +5765 verbose addNamed "2.0.0" is a plain semver version for ansi-regex +5766 http 304 http://registry.npm.alibaba-inc.com/onetime +5767 verbose headers { server: 'Tengine', +5767 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +5767 verbose headers connection: 'keep-alive', +5767 verbose headers etag: '"19a0-O0eNPUCiVJQCmRDCk3W/tA"', +5767 verbose headers 'x-readtime': '16' } +5768 silly get cb [ 304, +5768 silly get { server: 'Tengine', +5768 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +5768 silly get connection: 'keep-alive', +5768 silly get etag: '"19a0-O0eNPUCiVJQCmRDCk3W/tA"', +5768 silly get 'x-readtime': '16' } ] +5769 verbose etag http://registry.npm.alibaba-inc.com/onetime from cache +5770 verbose get saving onetime to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/onetime/.cache.json +5771 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5772 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray is being purged from base /home/ruanyf/npm-global +5773 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray +5774 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits is being purged from base /home/ruanyf/npm-global +5775 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits +5776 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args is being purged from base /home/ruanyf/npm-global +5777 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args +5778 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder is being purged from base /home/ruanyf/npm-global +5779 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder +5780 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is is being purged from base /home/ruanyf/npm-global +5781 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is +5782 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate is being purged from base /home/ruanyf/npm-global +5783 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate +5784 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims is being purged from base /home/ruanyf/npm-global +5785 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims +5786 info linkStuff ansi-styles@2.2.1 +5787 silly linkStuff ansi-styles@2.2.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules as its parent node_modules +5788 silly linkStuff ansi-styles@2.2.1 is part of a global install +5789 silly linkStuff ansi-styles@2.2.1 is installed into a global node_modules +5790 silly install write writing xtend 4.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend +5791 silly install write writing readable-stream 1.0.34 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +5792 info install ansi-regex@2.0.0 +5793 info install escape-string-regexp@1.0.5 +5794 info install pinkie@2.0.4 +5795 verbose linkBins object-assign@4.1.0 +5796 verbose linkMans object-assign@4.1.0 +5797 verbose rebuildBundles object-assign@4.1.0 +5798 http 304 http://registry.npm.alibaba-inc.com/number-is-nan +5799 verbose headers { server: 'Tengine', +5799 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +5799 verbose headers connection: 'keep-alive', +5799 verbose headers etag: '"a5a-fGMcfSEf8TDHFV1Rcknlag"', +5799 verbose headers 'x-readtime': '16' } +5800 silly get cb [ 304, +5800 silly get { server: 'Tengine', +5800 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +5800 silly get connection: 'keep-alive', +5800 silly get etag: '"a5a-fGMcfSEf8TDHFV1Rcknlag"', +5800 silly get 'x-readtime': '16' } ] +5801 verbose etag http://registry.npm.alibaba-inc.com/number-is-nan from cache +5802 verbose get saving number-is-nan to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/number-is-nan/.cache.json +5803 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5804 verbose tar unpack /home/ruanyf/.tnpm/isarray/1.0.0/package.tgz +5805 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray +5806 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray is being purged +5807 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray +5808 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz +5809 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits +5810 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits is being purged +5811 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits +5812 verbose tar unpack /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package.tgz +5813 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args +5814 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args is being purged +5815 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args +5816 verbose tar unpack /home/ruanyf/.tnpm/string_decoder/0.10.31/package.tgz +5817 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder +5818 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder is being purged +5819 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder +5820 verbose tar unpack /home/ruanyf/.tnpm/core-util-is/1.0.2/package.tgz +5821 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is +5822 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is is being purged +5823 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is +5824 verbose tar unpack /home/ruanyf/.tnpm/util-deprecate/1.0.2/package.tgz +5825 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate +5826 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate is being purged +5827 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate +5828 verbose tar unpack /home/ruanyf/.tnpm/buffer-shims/1.0.0/package.tgz +5829 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims +5830 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims is being purged +5831 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims +5832 info linkStuff supports-color@2.0.0 +5833 silly linkStuff supports-color@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules as its parent node_modules +5834 silly linkStuff supports-color@2.0.0 is part of a global install +5835 silly linkStuff supports-color@2.0.0 is installed into a global node_modules +5836 info install object-assign@4.1.0 +5837 silly cache afterAdd json-stable-stringify@1.0.1 +5838 verbose afterAdd /home/ruanyf/.tnpm/json-stable-stringify/1.0.1/package/package.json not in flight; writing +5839 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5840 silly cache afterAdd is-stream@1.1.0 +5841 verbose afterAdd /home/ruanyf/.tnpm/is-stream/1.1.0/package/package.json not in flight; writing +5842 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5843 verbose linkBins escape-string-regexp@1.0.5 +5844 verbose linkMans escape-string-regexp@1.0.5 +5845 verbose rebuildBundles escape-string-regexp@1.0.5 +5846 silly gunzTarPerm modes [ '755', '644' ] +5847 silly gunzTarPerm modes [ '755', '644' ] +5848 verbose request uri http://registry.npm.alibaba-inc.com/is-glob +5849 verbose request no auth needed +5850 info attempt registry request try #1 at 上午9:12:30 +5851 verbose etag "4907-2Wl8x3/z/CL/UjIQNUc6AQ" +5852 http request GET http://registry.npm.alibaba-inc.com/is-glob +5853 silly gunzTarPerm modes [ '755', '644' ] +5854 silly gunzTarPerm modes [ '755', '644' ] +5855 silly gunzTarPerm modes [ '755', '644' ] +5856 silly gunzTarPerm modes [ '755', '644' ] +5857 silly gunzTarPerm modes [ '755', '644' ] +5858 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once is being purged from base /home/ruanyf/npm-global +5859 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +5860 info postinstall ansi-regex@2.0.0 +5861 info postinstall escape-string-regexp@1.0.5 +5862 info postinstall pinkie@2.0.4 +5863 silly gunzTarPerm extractEntry extend.js +5864 silly gunzTarPerm extractEntry capitalize.js +5865 info install escape-string-regexp@1.0.5 +5866 silly cache afterAdd extend-shallow@2.0.1 +5867 verbose afterAdd /home/ruanyf/.tnpm/extend-shallow/2.0.1/package/package.json not in flight; writing +5868 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5869 verbose tar unpack /home/ruanyf/.tnpm/once/1.3.3/package.tgz +5870 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +5871 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once is being purged +5872 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +5873 verbose linkBins ansi-styles@2.2.1 +5874 verbose linkMans ansi-styles@2.2.1 +5875 verbose rebuildBundles ansi-styles@2.2.1 +5876 silly install resolved [] +5877 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map +5878 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map +5879 silly cache afterAdd inherits@2.0.1 +5880 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing +5881 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5882 silly cache afterAdd once@1.3.3 +5883 verbose afterAdd /home/ruanyf/.tnpm/once/1.3.3/package/package.json not in flight; writing +5884 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5885 info preinstall clone@1.0.2 +5886 info postinstall object-assign@4.1.0 +5887 http 304 http://registry.npm.alibaba-inc.com/path-is-absolute +5888 verbose headers { server: 'Tengine', +5888 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +5888 verbose headers connection: 'keep-alive', +5888 verbose headers etag: '"c50-19QW3RZWN2t8mvNGLl3rdQ"', +5888 verbose headers 'x-readtime': '21' } +5889 silly get cb [ 304, +5889 silly get { server: 'Tengine', +5889 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +5889 silly get connection: 'keep-alive', +5889 silly get etag: '"c50-19QW3RZWN2t8mvNGLl3rdQ"', +5889 silly get 'x-readtime': '21' } ] +5890 verbose etag http://registry.npm.alibaba-inc.com/path-is-absolute from cache +5891 verbose get saving path-is-absolute to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/path-is-absolute/.cache.json +5892 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5893 verbose linkBins supports-color@2.0.0 +5894 verbose linkMans supports-color@2.0.0 +5895 verbose rebuildBundles supports-color@2.0.0 +5896 silly gunzTarPerm modes [ '755', '644' ] +5897 info install ansi-styles@2.2.1 +5898 silly prepareForInstallMany adding arr-diff@^2.0.0 from micromatch dependencies +5899 silly prepareForInstallMany adding array-unique@^0.2.1 from micromatch dependencies +5900 silly prepareForInstallMany adding braces@^1.8.2 from micromatch dependencies +5901 silly prepareForInstallMany adding expand-brackets@^0.1.4 from micromatch dependencies +5902 silly prepareForInstallMany adding extglob@^0.3.1 from micromatch dependencies +5903 silly prepareForInstallMany adding filename-regex@^2.0.0 from micromatch dependencies +5904 silly prepareForInstallMany adding is-extglob@^1.0.0 from micromatch dependencies +5905 silly prepareForInstallMany adding is-glob@^2.0.1 from micromatch dependencies +5906 silly prepareForInstallMany adding kind-of@^3.0.2 from micromatch dependencies +5907 silly prepareForInstallMany adding normalize-path@^2.0.1 from micromatch dependencies +5908 silly prepareForInstallMany adding object.omit@^2.0.0 from micromatch dependencies +5909 silly prepareForInstallMany adding parse-glob@^3.0.4 from micromatch dependencies +5910 silly prepareForInstallMany adding regex-cache@^0.4.2 from micromatch dependencies +5911 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/package.json +5912 info linkStuff replace-ext@0.0.1 +5913 silly linkStuff replace-ext@0.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules as its parent node_modules +5914 silly linkStuff replace-ext@0.0.1 is part of a global install +5915 silly linkStuff replace-ext@0.0.1 is installed into a global node_modules +5916 http 200 http://registry.npm.alibaba-inc.com/inflight +5917 verbose headers { server: 'Tengine', +5917 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +5917 verbose headers 'content-type': 'application/json; charset=utf-8', +5917 verbose headers 'transfer-encoding': 'chunked', +5917 verbose headers connection: 'keep-alive', +5917 verbose headers vary: 'Accept-Encoding', +5917 verbose headers 'x-readtime': '21', +5917 verbose headers 'content-encoding': 'gzip' } +5918 silly get cb [ 200, +5918 silly get { server: 'Tengine', +5918 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +5918 silly get 'content-type': 'application/json; charset=utf-8', +5918 silly get 'transfer-encoding': 'chunked', +5918 silly get connection: 'keep-alive', +5918 silly get vary: 'Accept-Encoding', +5918 silly get 'x-readtime': '21', +5918 silly get 'content-encoding': 'gzip' } ] +5919 verbose get saving inflight to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/inflight/.cache.json +5920 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5921 info postinstall escape-string-regexp@1.0.5 +5922 info install supports-color@2.0.0 +5923 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +5924 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend +5925 verbose unlock done using /home/ruanyf/.tnpm/_locks/ansi-regex-984f03aa752cf33a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex +5926 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +5927 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +5928 verbose unlock done using /home/ruanyf/.tnpm/_locks/escape-string-regexp-e55ea98c78fe1e1c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp +5929 verbose unlock done using /home/ruanyf/.tnpm/_locks/pinkie-2602c6197036fe75.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie +5930 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +5931 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +5932 silly cache afterAdd ansi-regex@2.0.0 +5933 verbose afterAdd /home/ruanyf/.tnpm/ansi-regex/2.0.0/package/package.json not in flight; writing +5934 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +5935 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json +5936 info postinstall ansi-styles@2.2.1 +5937 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend/package.json +5938 verbose unlock done using /home/ruanyf/.tnpm/_locks/object-assign-eafc798024093e48.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign +5939 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +5940 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +5941 verbose afterAdd /home/ruanyf/.tnpm/json-stable-stringify/1.0.1/package/package.json written +5942 silly install resolved [ { name: 'json-stable-stringify', +5942 silly install resolved version: '1.0.1', +5942 silly install resolved description: 'deterministic JSON.stringify() with custom sorting to get deterministic hashes from stringified results', +5942 silly install resolved main: 'index.js', +5942 silly install resolved dependencies: { jsonify: '~0.0.0' }, +5942 silly install resolved devDependencies: { tape: '~1.0.4' }, +5942 silly install resolved scripts: { test: 'tape test/*.js' }, +5942 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, +5942 silly install resolved repository: +5942 silly install resolved { type: 'git', +5942 silly install resolved url: 'git://github.com/substack/json-stable-stringify.git' }, +5942 silly install resolved homepage: 'https://github.com/substack/json-stable-stringify', +5942 silly install resolved keywords: [ 'json', 'stringify', 'deterministic', 'hash', 'sort', 'stable' ], +5942 silly install resolved author: +5942 silly install resolved { name: 'James Halliday', +5942 silly install resolved email: 'mail@substack.net', +5942 silly install resolved url: 'http://substack.net' }, +5942 silly install resolved license: 'MIT', +5942 silly install resolved gitHead: '4a3ac9cc006a91e64901f8ebe78d23bf9fc9fbd0', +5942 silly install resolved bugs: { url: 'https://github.com/substack/json-stable-stringify/issues' }, +5942 silly install resolved _id: 'json-stable-stringify@1.0.1', +5942 silly install resolved _shasum: '9a759d39c5f2ff503fd5300646ed445f88c4f9af', +5942 silly install resolved _from: 'json-stable-stringify@>=1.0.0 <2.0.0', +5942 silly install resolved _npmVersion: '3.4.1', +5942 silly install resolved _nodeVersion: '4.2.1', +5942 silly install resolved _npmUser: { name: 'substack', email: 'substack@gmail.com' }, +5942 silly install resolved dist: +5942 silly install resolved { shasum: '9a759d39c5f2ff503fd5300646ed445f88c4f9af', +5942 silly install resolved size: 4527, +5942 silly install resolved noattachment: false, +5942 silly install resolved key: 'json-stable-stringify/-/json-stable-stringify-1.0.1.tgz', +5942 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz' }, +5942 silly install resolved maintainers: [ [Object] ], +5942 silly install resolved _npmOperationalInternal: +5942 silly install resolved { host: 'packages-5-east.internal.npmjs.com', +5942 silly install resolved tmp: 'tmp/json-stable-stringify-1.0.1.tgz_1454436356521_0.9410459187347442' }, +5942 silly install resolved directories: {}, +5942 silly install resolved publish_time: 1454436358629, +5942 silly install resolved _cnpm_publish_time: 1454436358629, +5942 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz', +5942 silly install resolved readme: 'ERROR: No README data found!' } ] +5943 info install json-stable-stringify@1.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +5944 info installOne json-stable-stringify@1.0.1 +5945 verbose installOne of json-stable-stringify to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream not in flight; installing +5946 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5947 verbose afterAdd /home/ruanyf/.tnpm/is-stream/1.1.0/package/package.json written +5948 silly install resolved [ { name: 'is-stream', +5948 silly install resolved version: '1.1.0', +5948 silly install resolved description: 'Check if something is a Node.js stream', +5948 silly install resolved license: 'MIT', +5948 silly install resolved repository: +5948 silly install resolved { type: 'git', +5948 silly install resolved url: 'git+https://github.com/sindresorhus/is-stream.git' }, +5948 silly install resolved author: +5948 silly install resolved { name: 'Sindre Sorhus', +5948 silly install resolved email: 'sindresorhus@gmail.com', +5948 silly install resolved url: 'sindresorhus.com' }, +5948 silly install resolved engines: { node: '>=0.10.0' }, +5948 silly install resolved scripts: { test: 'xo && ava' }, +5948 silly install resolved files: [ 'index.js' ], +5948 silly install resolved keywords: +5948 silly install resolved [ 'stream', +5948 silly install resolved 'type', +5948 silly install resolved 'streams', +5948 silly install resolved 'writable', +5948 silly install resolved 'readable', +5948 silly install resolved 'duplex', +5948 silly install resolved 'transform', +5948 silly install resolved 'check', +5948 silly install resolved 'detect', +5948 silly install resolved 'is' ], +5948 silly install resolved devDependencies: { ava: '*', tempfile: '^1.1.0', xo: '*' }, +5948 silly install resolved gitHead: 'e21d73f1028c189d16150cea52641059b0936310', +5948 silly install resolved bugs: { url: 'https://github.com/sindresorhus/is-stream/issues' }, +5948 silly install resolved homepage: 'https://github.com/sindresorhus/is-stream#readme', +5948 silly install resolved _id: 'is-stream@1.1.0', +5948 silly install resolved _shasum: '12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44', +5948 silly install resolved _from: 'is-stream@>=1.0.1 <2.0.0', +5948 silly install resolved _npmVersion: '2.15.0', +5948 silly install resolved _nodeVersion: '4.4.2', +5948 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +5948 silly install resolved dist: +5948 silly install resolved { shasum: '12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44', +5948 silly install resolved size: 1616, +5948 silly install resolved noattachment: false, +5948 silly install resolved key: 'is-stream/-/is-stream-1.1.0.tgz', +5948 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-stream/download/is-stream-1.1.0.tgz' }, +5948 silly install resolved maintainers: [ [Object] ], +5948 silly install resolved _npmOperationalInternal: +5948 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +5948 silly install resolved tmp: 'tmp/is-stream-1.1.0.tgz_1460446915184_0.806101513793692' }, +5948 silly install resolved directories: {}, +5948 silly install resolved publish_time: 1460446915666, +5948 silly install resolved _cnpm_publish_time: 1460446915666, +5948 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-stream/download/is-stream-1.1.0.tgz', +5948 silly install resolved readme: 'ERROR: No README data found!' } ] +5949 info install is-stream@1.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +5950 info installOne is-stream@1.1.0 +5951 verbose installOne of is-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams not in flight; installing +5952 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5953 silly addNameRange number 2 { name: 'exit-hook', range: '>=1.0.0 <2.0.0', hasData: true } +5954 silly addNameRange versions [ 'exit-hook', [ '1.1.1', '1.1.0', '1.0.0' ] ] +5955 silly addNamed exit-hook@1.1.1 +5956 verbose addNamed "1.1.1" is a plain semver version for exit-hook +5957 silly gunzTarPerm extractEntry package.json +5958 info postinstall supports-color@2.0.0 +5959 verbose linkBins replace-ext@0.0.1 +5960 verbose linkMans replace-ext@0.0.1 +5961 verbose rebuildBundles replace-ext@0.0.1 +5962 info linkStuff lodash.isequal@4.2.0 +5963 silly linkStuff lodash.isequal@4.2.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +5964 silly linkStuff lodash.isequal@4.2.0 is part of a global install +5965 silly linkStuff lodash.isequal@4.2.0 is installed into a global node_modules +5966 verbose unlock done using /home/ruanyf/.tnpm/_locks/escape-string-regexp-b8d42e784d559946.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp +5967 silly addNameRange number 2 { name: 'onetime', range: '>=1.0.0 <2.0.0', hasData: true } +5968 silly addNameRange versions [ 'onetime', [ '1.1.0', '1.0.0', '0.1.1', '0.1.0' ] ] +5969 silly addNamed onetime@1.1.0 +5970 verbose addNamed "1.1.0" is a plain semver version for onetime +5971 silly gunzTarPerm extractEntry package.json +5972 silly gunzTarPerm extractEntry package.json +5973 silly gunzTarPerm extractEntry package.json +5974 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] +5975 silly gunzTarPerm extractEntry package.json +5976 silly gunzTarPerm extractEntry package.json +5977 silly gunzTarPerm extractEntry package.json +5978 verbose afterAdd /home/ruanyf/.tnpm/extend-shallow/2.0.1/package/package.json written +5979 silly install resolved [ { name: 'extend-shallow', +5979 silly install resolved description: 'Extend an object with the properties of additional objects. node.js/javascript util.', +5979 silly install resolved version: '2.0.1', +5979 silly install resolved homepage: 'https://github.com/jonschlinkert/extend-shallow', +5979 silly install resolved author: +5979 silly install resolved { name: 'Jon Schlinkert', +5979 silly install resolved url: 'https://github.com/jonschlinkert' }, +5979 silly install resolved repository: +5979 silly install resolved { type: 'git', +5979 silly install resolved url: 'git+https://github.com/jonschlinkert/extend-shallow.git' }, +5979 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/extend-shallow/issues' }, +5979 silly install resolved license: 'MIT', +5979 silly install resolved files: [ 'index.js' ], +5979 silly install resolved main: 'index.js', +5979 silly install resolved engines: { node: '>=0.10.0' }, +5979 silly install resolved scripts: { test: 'mocha' }, +5979 silly install resolved dependencies: { 'is-extendable': '^0.1.0' }, +5979 silly install resolved devDependencies: +5979 silly install resolved { 'array-slice': '^0.2.3', +5979 silly install resolved benchmarked: '^0.1.4', +5979 silly install resolved chalk: '^1.0.0', +5979 silly install resolved 'for-own': '^0.1.3', +5979 silly install resolved glob: '^5.0.12', +5979 silly install resolved 'is-plain-object': '^2.0.1', +5979 silly install resolved 'kind-of': '^2.0.0', +5979 silly install resolved minimist: '^1.1.1', +5979 silly install resolved mocha: '^2.2.5', +5979 silly install resolved should: '^7.0.1' }, +5979 silly install resolved keywords: +5979 silly install resolved [ 'assign', +5979 silly install resolved 'extend', +5979 silly install resolved 'javascript', +5979 silly install resolved 'js', +5979 silly install resolved 'keys', +5979 silly install resolved 'merge', +5979 silly install resolved 'obj', +5979 silly install resolved 'object', +5979 silly install resolved 'prop', +5979 silly install resolved 'properties', +5979 silly install resolved 'property', +5979 silly install resolved 'props', +5979 silly install resolved 'shallow', +5979 silly install resolved 'util', +5979 silly install resolved 'utility', +5979 silly install resolved 'utils', +5979 silly install resolved 'value' ], +5979 silly install resolved gitHead: 'e9b1f1d2ff9d2990ec4a127afa7c14732d1eec8a', +5979 silly install resolved _id: 'extend-shallow@2.0.1', +5979 silly install resolved _shasum: '51af7d614ad9a9f610ea1bafbb989d6b1c56890f', +5979 silly install resolved _from: 'extend-shallow@>=2.0.1 <3.0.0', +5979 silly install resolved _npmVersion: '2.10.1', +5979 silly install resolved _nodeVersion: '0.12.4', +5979 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +5979 silly install resolved maintainers: [ [Object] ], +5979 silly install resolved dist: +5979 silly install resolved { shasum: '51af7d614ad9a9f610ea1bafbb989d6b1c56890f', +5979 silly install resolved size: 2221, +5979 silly install resolved noattachment: false, +5979 silly install resolved key: 'extend-shallow/-/extend-shallow-2.0.1.tgz', +5979 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz' }, +5979 silly install resolved directories: {}, +5979 silly install resolved publish_time: 1437089316775, +5979 silly install resolved _cnpm_publish_time: 1437089316775, +5979 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz', +5979 silly install resolved readme: 'ERROR: No README data found!' } ] +5980 info install extend-shallow@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +5981 info installOne extend-shallow@2.0.1 +5982 verbose installOne of extend-shallow to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob not in flight; installing +5983 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +5984 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream is being purged from base /home/ruanyf/npm-global +5985 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +5986 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend is being purged from base /home/ruanyf/npm-global +5987 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend +5988 info linkStuff convert-source-map@1.2.0 +5989 silly linkStuff convert-source-map@1.2.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules as its parent node_modules +5990 silly linkStuff convert-source-map@1.2.0 is part of a global install +5991 silly linkStuff convert-source-map@1.2.0 is installed into a global node_modules +5992 info install replace-ext@0.0.1 +5993 verbose afterAdd /home/ruanyf/.tnpm/once/1.3.3/package/package.json written +5994 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written +5995 verbose lock using /home/ruanyf/.tnpm/_locks/json-stable-stringify-37de4acd438df36d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +5996 verbose lock using /home/ruanyf/.tnpm/_locks/is-stream-bcdd8d548190a97a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream +5997 silly addNameRange number 2 { name: 'number-is-nan', range: '>=1.0.0 <2.0.0', hasData: true } +5998 silly addNameRange versions [ 'number-is-nan', [ '1.0.0' ] ] +5999 silly addNamed number-is-nan@1.0.0 +6000 verbose addNamed "1.0.0" is a plain semver version for number-is-nan +6001 silly addNameRange number 2 { name: 'number-is-nan', range: '>=1.0.0 <2.0.0', hasData: true } +6002 silly addNameRange versions [ 'number-is-nan', [ '1.0.0' ] ] +6003 silly addNamed number-is-nan@1.0.0 +6004 verbose addNamed "1.0.0" is a plain semver version for number-is-nan +6005 http 304 http://registry.npm.alibaba-inc.com/is-glob +6006 verbose headers { server: 'Tengine', +6006 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6006 verbose headers connection: 'keep-alive', +6006 verbose headers etag: '"4907-2Wl8x3/z/CL/UjIQNUc6AQ"', +6006 verbose headers 'x-readtime': '18' } +6007 silly get cb [ 304, +6007 silly get { server: 'Tengine', +6007 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6007 silly get connection: 'keep-alive', +6007 silly get etag: '"4907-2Wl8x3/z/CL/UjIQNUc6AQ"', +6007 silly get 'x-readtime': '18' } ] +6008 verbose etag http://registry.npm.alibaba-inc.com/is-glob from cache +6009 verbose get saving is-glob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-glob/.cache.json +6010 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6011 silly gunzTarPerm extractEntry package.json +6012 verbose unlock done using /home/ruanyf/.tnpm/_locks/ansi-styles-fc6f7da6acaeb14f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles +6013 verbose tar unpack /home/ruanyf/.tnpm/readable-stream/1.0.34/package.tgz +6014 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +6015 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream is being purged +6016 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +6017 verbose tar unpack /home/ruanyf/.tnpm/xtend/4.0.1/package.tgz +6018 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend +6019 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend is being purged +6020 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend +6021 silly install write writing json-stable-stringify 1.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +6022 silly install write writing is-stream 1.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream +6023 verbose unlock done using /home/ruanyf/.tnpm/_locks/supports-color-cce39b409b837f7c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color +6024 verbose lock using /home/ruanyf/.tnpm/_locks/extend-shallow-c1525cdc47b1c1fa.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +6025 info preinstall extend@3.0.0 +6026 silly gunzTarPerm modes [ '755', '644' ] +6027 silly gunzTarPerm modes [ '755', '644' ] +6028 info linkStuff strip-ansi@3.0.1 +6029 silly linkStuff strip-ansi@3.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +6030 silly linkStuff strip-ansi@3.0.1 is part of a global install +6031 silly linkStuff strip-ansi@3.0.1 is installed into a global node_modules +6032 info linkStuff pinkie-promise@2.0.1 +6033 silly linkStuff pinkie-promise@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +6034 silly linkStuff pinkie-promise@2.0.1 is part of a global install +6035 silly linkStuff pinkie-promise@2.0.1 is installed into a global node_modules +6036 info postinstall replace-ext@0.0.1 +6037 verbose linkBins lodash.isequal@4.2.0 +6038 verbose linkMans lodash.isequal@4.2.0 +6039 verbose rebuildBundles lodash.isequal@4.2.0 +6040 verbose afterAdd /home/ruanyf/.tnpm/ansi-regex/2.0.0/package/package.json written +6041 silly install resolved [ { name: 'ansi-regex', +6041 silly install resolved version: '2.0.0', +6041 silly install resolved description: 'Regular expression for matching ANSI escape codes', +6041 silly install resolved license: 'MIT', +6041 silly install resolved repository: +6041 silly install resolved { type: 'git', +6041 silly install resolved url: 'git+https://github.com/sindresorhus/ansi-regex.git' }, +6041 silly install resolved author: +6041 silly install resolved { name: 'Sindre Sorhus', +6041 silly install resolved email: 'sindresorhus@gmail.com', +6041 silly install resolved url: 'sindresorhus.com' }, +6041 silly install resolved maintainers: [ [Object], [Object] ], +6041 silly install resolved engines: { node: '>=0.10.0' }, +6041 silly install resolved scripts: +6041 silly install resolved { test: 'mocha test/test.js', +6041 silly install resolved 'view-supported': 'node test/viewCodes.js' }, +6041 silly install resolved files: [ 'index.js' ], +6041 silly install resolved keywords: +6041 silly install resolved [ 'ansi', +6041 silly install resolved 'styles', +6041 silly install resolved 'color', +6041 silly install resolved 'colour', +6041 silly install resolved 'colors', +6041 silly install resolved 'terminal', +6041 silly install resolved 'console', +6041 silly install resolved 'cli', +6041 silly install resolved 'string', +6041 silly install resolved 'tty', +6041 silly install resolved 'escape', +6041 silly install resolved 'formatting', +6041 silly install resolved 'rgb', +6041 silly install resolved '256', +6041 silly install resolved 'shell', +6041 silly install resolved 'xterm', +6041 silly install resolved 'command-line', +6041 silly install resolved 'text', +6041 silly install resolved 'regex', +6041 silly install resolved 'regexp', +6041 silly install resolved 're', +6041 silly install resolved 'match', +6041 silly install resolved 'test', +6041 silly install resolved 'find', +6041 silly install resolved 'pattern' ], +6041 silly install resolved devDependencies: { mocha: '*' }, +6041 silly install resolved gitHead: '57c3f2941a73079fa8b081e02a522e3d29913e2f', +6041 silly install resolved bugs: { url: 'https://github.com/sindresorhus/ansi-regex/issues' }, +6041 silly install resolved homepage: 'https://github.com/sindresorhus/ansi-regex', +6041 silly install resolved _id: 'ansi-regex@2.0.0', +6041 silly install resolved _shasum: 'c5061b6e0ef8a81775e50f5d66151bf6bf371107', +6041 silly install resolved _from: 'ansi-regex@>=2.0.0 <3.0.0', +6041 silly install resolved _npmVersion: '2.11.2', +6041 silly install resolved _nodeVersion: '0.12.5', +6041 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +6041 silly install resolved dist: +6041 silly install resolved { shasum: 'c5061b6e0ef8a81775e50f5d66151bf6bf371107', +6041 silly install resolved size: 1665, +6041 silly install resolved noattachment: false, +6041 silly install resolved key: 'ansi-regex/-/ansi-regex-2.0.0.tgz', +6041 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-2.0.0.tgz' }, +6041 silly install resolved directories: {}, +6041 silly install resolved publish_time: 1435680439279, +6041 silly install resolved _cnpm_publish_time: 1435680439279, +6041 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-2.0.0.tgz', +6041 silly install resolved readme: 'ERROR: No README data found!' } ] +6042 info install ansi-regex@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +6043 info installOne ansi-regex@2.0.0 +6044 verbose installOne of ansi-regex to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi not in flight; installing +6045 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6046 silly gunzTarPerm extractEntry dist/rx.virtualtime.js +6047 silly gunzTarPerm extractEntry .npmignore +6048 silly gunzTarPerm extractEntry README.md +6049 silly install write writing extend-shallow 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +6050 silly gunzTarPerm extractEntry extendWith.js +6051 silly gunzTarPerm extractEntry camelCase.js +6052 verbose linkBins convert-source-map@1.2.0 +6053 verbose linkMans convert-source-map@1.2.0 +6054 verbose rebuildBundles convert-source-map@1.2.0 +6055 verbose rebuildBundles [ 'lodash._root', 'lodash.keys' ] +6056 info install lodash.isequal@4.2.0 +6057 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json +6058 silly cache add args [ 'filename-regex@^2.0.0', null ] +6059 verbose cache add spec filename-regex@^2.0.0 +6060 silly cache add parsed spec Result { +6060 silly cache add raw: 'filename-regex@^2.0.0', +6060 silly cache add scope: null, +6060 silly cache add name: 'filename-regex', +6060 silly cache add rawSpec: '^2.0.0', +6060 silly cache add spec: '>=2.0.0 <3.0.0', +6060 silly cache add type: 'range' } +6061 silly addNamed filename-regex@>=2.0.0 <3.0.0 +6062 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for filename-regex +6063 silly addNameRange { name: 'filename-regex', +6063 silly addNameRange range: '>=2.0.0 <3.0.0', +6063 silly addNameRange hasData: false } +6064 silly mapToRegistry name filename-regex +6065 silly mapToRegistry using default registry +6066 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6067 silly mapToRegistry data Result { +6067 silly mapToRegistry raw: 'filename-regex', +6067 silly mapToRegistry scope: null, +6067 silly mapToRegistry name: 'filename-regex', +6067 silly mapToRegistry rawSpec: '', +6067 silly mapToRegistry spec: 'latest', +6067 silly mapToRegistry type: 'tag' } +6068 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/filename-regex +6069 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/filename-regex not in flight; fetching +6070 silly cache add args [ 'is-extglob@^1.0.0', null ] +6071 verbose cache add spec is-extglob@^1.0.0 +6072 silly cache add parsed spec Result { +6072 silly cache add raw: 'is-extglob@^1.0.0', +6072 silly cache add scope: null, +6072 silly cache add name: 'is-extglob', +6072 silly cache add rawSpec: '^1.0.0', +6072 silly cache add spec: '>=1.0.0 <2.0.0', +6072 silly cache add type: 'range' } +6073 silly addNamed is-extglob@>=1.0.0 <2.0.0 +6074 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for is-extglob +6075 silly addNameRange { name: 'is-extglob', range: '>=1.0.0 <2.0.0', hasData: false } +6076 silly mapToRegistry name is-extglob +6077 silly mapToRegistry using default registry +6078 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6079 silly mapToRegistry data Result { +6079 silly mapToRegistry raw: 'is-extglob', +6079 silly mapToRegistry scope: null, +6079 silly mapToRegistry name: 'is-extglob', +6079 silly mapToRegistry rawSpec: '', +6079 silly mapToRegistry spec: 'latest', +6079 silly mapToRegistry type: 'tag' } +6080 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-extglob +6081 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-extglob not in flight; fetching +6082 silly cache add args [ 'is-glob@^2.0.1', null ] +6083 verbose cache add spec is-glob@^2.0.1 +6084 silly cache add parsed spec Result { +6084 silly cache add raw: 'is-glob@^2.0.1', +6084 silly cache add scope: null, +6084 silly cache add name: 'is-glob', +6084 silly cache add rawSpec: '^2.0.1', +6084 silly cache add spec: '>=2.0.1 <3.0.0', +6084 silly cache add type: 'range' } +6085 silly addNamed is-glob@>=2.0.1 <3.0.0 +6086 verbose addNamed ">=2.0.1 <3.0.0" is a valid semver range for is-glob +6087 silly addNameRange { name: 'is-glob', range: '>=2.0.1 <3.0.0', hasData: false } +6088 silly mapToRegistry name is-glob +6089 silly mapToRegistry using default registry +6090 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6091 silly mapToRegistry data Result { +6091 silly mapToRegistry raw: 'is-glob', +6091 silly mapToRegistry scope: null, +6091 silly mapToRegistry name: 'is-glob', +6091 silly mapToRegistry rawSpec: '', +6091 silly mapToRegistry spec: 'latest', +6091 silly mapToRegistry type: 'tag' } +6092 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-glob +6093 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-glob already in flight; waiting +6094 silly cache add args [ 'kind-of@^3.0.2', null ] +6095 verbose cache add spec kind-of@^3.0.2 +6096 silly cache add parsed spec Result { +6096 silly cache add raw: 'kind-of@^3.0.2', +6096 silly cache add scope: null, +6096 silly cache add name: 'kind-of', +6096 silly cache add rawSpec: '^3.0.2', +6096 silly cache add spec: '>=3.0.2 <4.0.0', +6096 silly cache add type: 'range' } +6097 silly addNamed kind-of@>=3.0.2 <4.0.0 +6098 verbose addNamed ">=3.0.2 <4.0.0" is a valid semver range for kind-of +6099 silly addNameRange { name: 'kind-of', range: '>=3.0.2 <4.0.0', hasData: false } +6100 silly mapToRegistry name kind-of +6101 silly mapToRegistry using default registry +6102 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6103 silly mapToRegistry data Result { +6103 silly mapToRegistry raw: 'kind-of', +6103 silly mapToRegistry scope: null, +6103 silly mapToRegistry name: 'kind-of', +6103 silly mapToRegistry rawSpec: '', +6103 silly mapToRegistry spec: 'latest', +6103 silly mapToRegistry type: 'tag' } +6104 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/kind-of +6105 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/kind-of not in flight; fetching +6106 silly cache add args [ 'normalize-path@^2.0.1', null ] +6107 verbose cache add spec normalize-path@^2.0.1 +6108 silly cache add parsed spec Result { +6108 silly cache add raw: 'normalize-path@^2.0.1', +6108 silly cache add scope: null, +6108 silly cache add name: 'normalize-path', +6108 silly cache add rawSpec: '^2.0.1', +6108 silly cache add spec: '>=2.0.1 <3.0.0', +6108 silly cache add type: 'range' } +6109 silly addNamed normalize-path@>=2.0.1 <3.0.0 +6110 verbose addNamed ">=2.0.1 <3.0.0" is a valid semver range for normalize-path +6111 silly addNameRange { name: 'normalize-path', +6111 silly addNameRange range: '>=2.0.1 <3.0.0', +6111 silly addNameRange hasData: false } +6112 silly mapToRegistry name normalize-path +6113 silly mapToRegistry using default registry +6114 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6115 silly mapToRegistry data Result { +6115 silly mapToRegistry raw: 'normalize-path', +6115 silly mapToRegistry scope: null, +6115 silly mapToRegistry name: 'normalize-path', +6115 silly mapToRegistry rawSpec: '', +6115 silly mapToRegistry spec: 'latest', +6115 silly mapToRegistry type: 'tag' } +6116 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/normalize-path +6117 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/normalize-path not in flight; fetching +6118 silly cache add args [ 'object.omit@^2.0.0', null ] +6119 verbose cache add spec object.omit@^2.0.0 +6120 silly cache add parsed spec Result { +6120 silly cache add raw: 'object.omit@^2.0.0', +6120 silly cache add scope: null, +6120 silly cache add name: 'object.omit', +6120 silly cache add rawSpec: '^2.0.0', +6120 silly cache add spec: '>=2.0.0 <3.0.0', +6120 silly cache add type: 'range' } +6121 silly addNamed object.omit@>=2.0.0 <3.0.0 +6122 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for object.omit +6123 silly addNameRange { name: 'object.omit', range: '>=2.0.0 <3.0.0', hasData: false } +6124 silly mapToRegistry name object.omit +6125 silly mapToRegistry using default registry +6126 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6127 silly mapToRegistry data Result { +6127 silly mapToRegistry raw: 'object.omit', +6127 silly mapToRegistry scope: null, +6127 silly mapToRegistry name: 'object.omit', +6127 silly mapToRegistry rawSpec: '', +6127 silly mapToRegistry spec: 'latest', +6127 silly mapToRegistry type: 'tag' } +6128 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/object.omit +6129 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/object.omit not in flight; fetching +6130 silly cache add args [ 'parse-glob@^3.0.4', null ] +6131 verbose cache add spec parse-glob@^3.0.4 +6132 silly cache add parsed spec Result { +6132 silly cache add raw: 'parse-glob@^3.0.4', +6132 silly cache add scope: null, +6132 silly cache add name: 'parse-glob', +6132 silly cache add rawSpec: '^3.0.4', +6132 silly cache add spec: '>=3.0.4 <4.0.0', +6132 silly cache add type: 'range' } +6133 silly addNamed parse-glob@>=3.0.4 <4.0.0 +6134 verbose addNamed ">=3.0.4 <4.0.0" is a valid semver range for parse-glob +6135 silly addNameRange { name: 'parse-glob', range: '>=3.0.4 <4.0.0', hasData: false } +6136 silly mapToRegistry name parse-glob +6137 silly mapToRegistry using default registry +6138 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6139 silly mapToRegistry data Result { +6139 silly mapToRegistry raw: 'parse-glob', +6139 silly mapToRegistry scope: null, +6139 silly mapToRegistry name: 'parse-glob', +6139 silly mapToRegistry rawSpec: '', +6139 silly mapToRegistry spec: 'latest', +6139 silly mapToRegistry type: 'tag' } +6140 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/parse-glob +6141 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/parse-glob not in flight; fetching +6142 silly cache add args [ 'regex-cache@^0.4.2', null ] +6143 verbose cache add spec regex-cache@^0.4.2 +6144 silly cache add parsed spec Result { +6144 silly cache add raw: 'regex-cache@^0.4.2', +6144 silly cache add scope: null, +6144 silly cache add name: 'regex-cache', +6144 silly cache add rawSpec: '^0.4.2', +6144 silly cache add spec: '>=0.4.2 <0.5.0', +6144 silly cache add type: 'range' } +6145 silly addNamed regex-cache@>=0.4.2 <0.5.0 +6146 verbose addNamed ">=0.4.2 <0.5.0" is a valid semver range for regex-cache +6147 silly addNameRange { name: 'regex-cache', range: '>=0.4.2 <0.5.0', hasData: false } +6148 silly mapToRegistry name regex-cache +6149 silly mapToRegistry using default registry +6150 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6151 silly mapToRegistry data Result { +6151 silly mapToRegistry raw: 'regex-cache', +6151 silly mapToRegistry scope: null, +6151 silly mapToRegistry name: 'regex-cache', +6151 silly mapToRegistry rawSpec: '', +6151 silly mapToRegistry spec: 'latest', +6151 silly mapToRegistry type: 'tag' } +6152 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/regex-cache +6153 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/regex-cache not in flight; fetching +6154 silly gunzTarPerm extractEntry README.md +6155 silly gunzTarPerm extractEntry LICENSE +6156 silly gunzTarPerm extractEntry index.js +6157 silly gunzTarPerm extractEntry test.js +6158 silly gunzTarPerm extractEntry .npmignore +6159 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] +6160 silly gunzTarPerm extractEntry README.md +6161 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] +6162 silly gunzTarPerm extractEntry README.md +6163 silly gunzTarPerm extractEntry LICENSE +6164 silly addNameRange number 2 { name: 'path-is-absolute', +6164 silly addNameRange range: '>=1.0.0 <2.0.0', +6164 silly addNameRange hasData: true } +6165 silly addNameRange versions [ 'path-is-absolute', [ '1.0.0' ] ] +6166 silly addNamed path-is-absolute@1.0.0 +6167 verbose addNamed "1.0.0" is a plain semver version for path-is-absolute +6168 silly gunzTarPerm extractEntry index.js +6169 silly gunzTarPerm extractEntry license.md +6170 silly gunzTarPerm extractEntry README.md +6171 silly gunzTarPerm extractEntry LICENSE +6172 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend/package.json +6173 info install convert-source-map@1.2.0 +6174 verbose lock using /home/ruanyf/.tnpm/_locks/ansi-regex-9bff194e757db787.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex +6175 silly addNameRange number 2 { name: 'inflight', range: '>=1.0.4 <2.0.0', hasData: true } +6176 silly addNameRange versions [ 'inflight', +6176 silly addNameRange [ '1.0.5', '1.0.4', '1.0.3', '1.0.2', '1.0.1', '1.0.0' ] ] +6177 silly addNamed inflight@1.0.5 +6178 verbose addNamed "1.0.5" is a plain semver version for inflight +6179 silly cache afterAdd exit-hook@1.1.1 +6180 verbose afterAdd /home/ruanyf/.tnpm/exit-hook/1.1.1/package/package.json not in flight; writing +6181 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6182 silly gunzTarPerm extractEntry README.md +6183 silly gunzTarPerm extractEntry LICENSE +6184 verbose linkBins strip-ansi@3.0.1 +6185 verbose linkMans strip-ansi@3.0.1 +6186 verbose rebuildBundles strip-ansi@3.0.1 +6187 verbose linkBins pinkie-promise@2.0.1 +6188 verbose linkMans pinkie-promise@2.0.1 +6189 verbose rebuildBundles pinkie-promise@2.0.1 +6190 verbose unlock done using /home/ruanyf/.tnpm/_locks/replace-ext-c39d86c5b44d8ff0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext +6191 info postinstall lodash.isequal@4.2.0 +6192 silly install write writing ansi-regex 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex +6193 silly cache add args [ 'arr-diff@^2.0.0', null ] +6194 verbose cache add spec arr-diff@^2.0.0 +6195 silly cache add parsed spec Result { +6195 silly cache add raw: 'arr-diff@^2.0.0', +6195 silly cache add scope: null, +6195 silly cache add name: 'arr-diff', +6195 silly cache add rawSpec: '^2.0.0', +6195 silly cache add spec: '>=2.0.0 <3.0.0', +6195 silly cache add type: 'range' } +6196 silly addNamed arr-diff@>=2.0.0 <3.0.0 +6197 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for arr-diff +6198 silly addNameRange { name: 'arr-diff', range: '>=2.0.0 <3.0.0', hasData: false } +6199 silly mapToRegistry name arr-diff +6200 silly mapToRegistry using default registry +6201 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6202 silly mapToRegistry data Result { +6202 silly mapToRegistry raw: 'arr-diff', +6202 silly mapToRegistry scope: null, +6202 silly mapToRegistry name: 'arr-diff', +6202 silly mapToRegistry rawSpec: '', +6202 silly mapToRegistry spec: 'latest', +6202 silly mapToRegistry type: 'tag' } +6203 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/arr-diff +6204 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/arr-diff not in flight; fetching +6205 silly cache add args [ 'array-unique@^0.2.1', null ] +6206 verbose cache add spec array-unique@^0.2.1 +6207 silly cache add parsed spec Result { +6207 silly cache add raw: 'array-unique@^0.2.1', +6207 silly cache add scope: null, +6207 silly cache add name: 'array-unique', +6207 silly cache add rawSpec: '^0.2.1', +6207 silly cache add spec: '>=0.2.1 <0.3.0', +6207 silly cache add type: 'range' } +6208 silly addNamed array-unique@>=0.2.1 <0.3.0 +6209 verbose addNamed ">=0.2.1 <0.3.0" is a valid semver range for array-unique +6210 silly addNameRange { name: 'array-unique', range: '>=0.2.1 <0.3.0', hasData: false } +6211 silly mapToRegistry name array-unique +6212 silly mapToRegistry using default registry +6213 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6214 silly mapToRegistry data Result { +6214 silly mapToRegistry raw: 'array-unique', +6214 silly mapToRegistry scope: null, +6214 silly mapToRegistry name: 'array-unique', +6214 silly mapToRegistry rawSpec: '', +6214 silly mapToRegistry spec: 'latest', +6214 silly mapToRegistry type: 'tag' } +6215 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/array-unique +6216 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/array-unique not in flight; fetching +6217 silly cache add args [ 'braces@^1.8.2', null ] +6218 verbose cache add spec braces@^1.8.2 +6219 silly cache add parsed spec Result { +6219 silly cache add raw: 'braces@^1.8.2', +6219 silly cache add scope: null, +6219 silly cache add name: 'braces', +6219 silly cache add rawSpec: '^1.8.2', +6219 silly cache add spec: '>=1.8.2 <2.0.0', +6219 silly cache add type: 'range' } +6220 silly addNamed braces@>=1.8.2 <2.0.0 +6221 verbose addNamed ">=1.8.2 <2.0.0" is a valid semver range for braces +6222 silly addNameRange { name: 'braces', range: '>=1.8.2 <2.0.0', hasData: false } +6223 silly mapToRegistry name braces +6224 silly mapToRegistry using default registry +6225 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6226 silly mapToRegistry data Result { +6226 silly mapToRegistry raw: 'braces', +6226 silly mapToRegistry scope: null, +6226 silly mapToRegistry name: 'braces', +6226 silly mapToRegistry rawSpec: '', +6226 silly mapToRegistry spec: 'latest', +6226 silly mapToRegistry type: 'tag' } +6227 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/braces +6228 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/braces not in flight; fetching +6229 silly cache add args [ 'expand-brackets@^0.1.4', null ] +6230 verbose cache add spec expand-brackets@^0.1.4 +6231 silly cache add parsed spec Result { +6231 silly cache add raw: 'expand-brackets@^0.1.4', +6231 silly cache add scope: null, +6231 silly cache add name: 'expand-brackets', +6231 silly cache add rawSpec: '^0.1.4', +6231 silly cache add spec: '>=0.1.4 <0.2.0', +6231 silly cache add type: 'range' } +6232 silly addNamed expand-brackets@>=0.1.4 <0.2.0 +6233 verbose addNamed ">=0.1.4 <0.2.0" is a valid semver range for expand-brackets +6234 silly addNameRange { name: 'expand-brackets', +6234 silly addNameRange range: '>=0.1.4 <0.2.0', +6234 silly addNameRange hasData: false } +6235 silly mapToRegistry name expand-brackets +6236 silly mapToRegistry using default registry +6237 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6238 silly mapToRegistry data Result { +6238 silly mapToRegistry raw: 'expand-brackets', +6238 silly mapToRegistry scope: null, +6238 silly mapToRegistry name: 'expand-brackets', +6238 silly mapToRegistry rawSpec: '', +6238 silly mapToRegistry spec: 'latest', +6238 silly mapToRegistry type: 'tag' } +6239 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/expand-brackets +6240 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/expand-brackets not in flight; fetching +6241 silly cache add args [ 'extglob@^0.3.1', null ] +6242 verbose cache add spec extglob@^0.3.1 +6243 silly cache add parsed spec Result { +6243 silly cache add raw: 'extglob@^0.3.1', +6243 silly cache add scope: null, +6243 silly cache add name: 'extglob', +6243 silly cache add rawSpec: '^0.3.1', +6243 silly cache add spec: '>=0.3.1 <0.4.0', +6243 silly cache add type: 'range' } +6244 silly addNamed extglob@>=0.3.1 <0.4.0 +6245 verbose addNamed ">=0.3.1 <0.4.0" is a valid semver range for extglob +6246 silly addNameRange { name: 'extglob', range: '>=0.3.1 <0.4.0', hasData: false } +6247 silly mapToRegistry name extglob +6248 silly mapToRegistry using default registry +6249 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6250 silly mapToRegistry data Result { +6250 silly mapToRegistry raw: 'extglob', +6250 silly mapToRegistry scope: null, +6250 silly mapToRegistry name: 'extglob', +6250 silly mapToRegistry rawSpec: '', +6250 silly mapToRegistry spec: 'latest', +6250 silly mapToRegistry type: 'tag' } +6251 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/extglob +6252 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/extglob not in flight; fetching +6253 silly mapToRegistry name inflight +6254 silly mapToRegistry using default registry +6255 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6256 silly mapToRegistry data Result { +6256 silly mapToRegistry raw: 'inflight', +6256 silly mapToRegistry scope: null, +6256 silly mapToRegistry name: 'inflight', +6256 silly mapToRegistry rawSpec: '', +6256 silly mapToRegistry spec: 'latest', +6256 silly mapToRegistry type: 'tag' } +6257 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inflight +6258 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz not in flight; adding +6259 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz', +6259 verbose addRemoteTarball 'db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a' ] +6260 silly cache afterAdd onetime@1.1.0 +6261 verbose afterAdd /home/ruanyf/.tnpm/onetime/1.1.0/package/package.json not in flight; writing +6262 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6263 verbose rebuildBundles [ 'ansi-regex' ] +6264 info install strip-ansi@3.0.1 +6265 verbose rebuildBundles [ 'pinkie' ] +6266 info install pinkie-promise@2.0.1 +6267 info postinstall convert-source-map@1.2.0 +6268 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +6269 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream +6270 silly cache afterAdd number-is-nan@1.0.0 +6271 verbose afterAdd /home/ruanyf/.tnpm/number-is-nan/1.0.0/package/package.json not in flight; writing +6272 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6273 silly cache afterAdd number-is-nan@1.0.0 +6274 verbose afterAdd /home/ruanyf/.tnpm/number-is-nan/1.0.0/package/package.json already in flight; not writing +6275 http 200 http://registry.npm.alibaba-inc.com/minimatch +6276 verbose headers { server: 'Tengine', +6276 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6276 verbose headers 'content-type': 'application/json; charset=utf-8', +6276 verbose headers 'transfer-encoding': 'chunked', +6276 verbose headers connection: 'keep-alive', +6276 verbose headers vary: 'Accept-Encoding', +6276 verbose headers 'x-readtime': '47', +6276 verbose headers 'content-encoding': 'gzip' } +6277 silly get cb [ 200, +6277 silly get { server: 'Tengine', +6277 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6277 silly get 'content-type': 'application/json; charset=utf-8', +6277 silly get 'transfer-encoding': 'chunked', +6277 silly get connection: 'keep-alive', +6277 silly get vary: 'Accept-Encoding', +6277 silly get 'x-readtime': '47', +6277 silly get 'content-encoding': 'gzip' } ] +6278 verbose get saving minimatch to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/minimatch/.cache.json +6279 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6280 silly gunzTarPerm extractEntry package.json +6281 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] +6282 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +6283 info postinstall strip-ansi@3.0.1 +6284 info postinstall pinkie-promise@2.0.1 +6285 silly gunzTarPerm extractEntry package.json +6286 verbose unlock done using /home/ruanyf/.tnpm/_locks/lodash-isequal-1be595e320d00e72.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal +6287 info linkStuff figures@1.7.0 +6288 silly linkStuff figures@1.7.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +6289 silly linkStuff figures@1.7.0 is part of a global install +6290 silly linkStuff figures@1.7.0 is installed into a global node_modules +6291 silly addNameRange number 2 { name: 'is-glob', range: '>=2.0.0 <3.0.0', hasData: true } +6292 silly addNameRange versions [ 'is-glob', +6292 silly addNameRange [ '2.0.1', +6292 silly addNameRange '2.0.0', +6292 silly addNameRange '1.1.3', +6292 silly addNameRange '1.1.2', +6292 silly addNameRange '1.1.1', +6292 silly addNameRange '1.1.0', +6292 silly addNameRange '1.0.0', +6292 silly addNameRange '0.3.0', +6292 silly addNameRange '0.2.0', +6292 silly addNameRange '0.1.0' ] ] +6293 silly addNamed is-glob@2.0.1 +6294 verbose addNamed "2.0.1" is a plain semver version for is-glob +6295 silly addNameRange number 2 { name: 'is-glob', range: '>=2.0.1 <3.0.0', hasData: true } +6296 silly addNameRange versions [ 'is-glob', +6296 silly addNameRange [ '2.0.1', +6296 silly addNameRange '2.0.0', +6296 silly addNameRange '1.1.3', +6296 silly addNameRange '1.1.2', +6296 silly addNameRange '1.1.1', +6296 silly addNameRange '1.1.0', +6296 silly addNameRange '1.0.0', +6296 silly addNameRange '0.3.0', +6296 silly addNameRange '0.2.0', +6296 silly addNameRange '0.1.0' ] ] +6297 silly addNamed is-glob@2.0.1 +6298 verbose addNamed "2.0.1" is a plain semver version for is-glob +6299 verbose request uri http://registry.npm.alibaba-inc.com/is-extglob +6300 verbose request no auth needed +6301 info attempt registry request try #1 at 上午9:12:30 +6302 verbose etag "fa3-nsT25tkbXMNQ/HoUIdcx8w" +6303 http request GET http://registry.npm.alibaba-inc.com/is-extglob +6304 verbose request uri http://registry.npm.alibaba-inc.com/filename-regex +6305 verbose request no auth needed +6306 info attempt registry request try #1 at 上午9:12:30 +6307 verbose etag "1cc2-3O1TIUt9NHHbzRkx7ThNsw" +6308 http request GET http://registry.npm.alibaba-inc.com/filename-regex +6309 verbose request uri http://registry.npm.alibaba-inc.com/kind-of +6310 verbose request no auth needed +6311 info attempt registry request try #1 at 上午9:12:30 +6312 http request GET http://registry.npm.alibaba-inc.com/kind-of +6313 verbose request uri http://registry.npm.alibaba-inc.com/normalize-path +6314 verbose request no auth needed +6315 info attempt registry request try #1 at 上午9:12:30 +6316 verbose etag "435c-EGI/vTL3T/qutoMalkIGUg" +6317 http request GET http://registry.npm.alibaba-inc.com/normalize-path +6318 verbose request uri http://registry.npm.alibaba-inc.com/parse-glob +6319 verbose request no auth needed +6320 info attempt registry request try #1 at 上午9:12:30 +6321 verbose etag "6527-9OP9+cTgIU5LGQHZhMXZFw" +6322 http request GET http://registry.npm.alibaba-inc.com/parse-glob +6323 verbose request uri http://registry.npm.alibaba-inc.com/object.omit +6324 verbose request no auth needed +6325 info attempt registry request try #1 at 上午9:12:30 +6326 verbose etag "25da-gV9QjFaw2CKGhu8B16l6MQ" +6327 http request GET http://registry.npm.alibaba-inc.com/object.omit +6328 info retry fetch attempt 1 at 上午9:12:30 +6329 info attempt registry request try #1 at 上午9:12:30 +6330 http fetch GET http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz +6331 verbose request uri http://registry.npm.alibaba-inc.com/regex-cache +6332 verbose request no auth needed +6333 info attempt registry request try #1 at 上午9:12:30 +6334 verbose etag "4e4a-X+jWDoi4IAiPwZpa7T/QbQ" +6335 http request GET http://registry.npm.alibaba-inc.com/regex-cache +6336 verbose unlock done using /home/ruanyf/.tnpm/_locks/convert-source-map-1e2549d3702e64b0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map +6337 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps +6338 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps +6339 silly gunzTarPerm extractEntry dist/rx.lite.compat.js +6340 silly install resolved [] +6341 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone +6342 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone +6343 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify is being purged from base /home/ruanyf/npm-global +6344 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +6345 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream is being purged from base /home/ruanyf/npm-global +6346 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream +6347 verbose afterAdd /home/ruanyf/.tnpm/exit-hook/1.1.1/package/package.json written +6348 silly cache afterAdd path-is-absolute@1.0.0 +6349 verbose afterAdd /home/ruanyf/.tnpm/path-is-absolute/1.0.0/package/package.json not in flight; writing +6350 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6351 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend/package.json +6352 verbose tar unpack /home/ruanyf/.tnpm/json-stable-stringify/1.0.1/package.tgz +6353 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +6354 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify is being purged +6355 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +6356 verbose tar unpack /home/ruanyf/.tnpm/is-stream/1.1.0/package.tgz +6357 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream +6358 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream is being purged +6359 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream +6360 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex +6361 verbose request uri http://registry.npm.alibaba-inc.com/arr-diff +6362 verbose request no auth needed +6363 info attempt registry request try #1 at 上午9:12:30 +6364 http request GET http://registry.npm.alibaba-inc.com/arr-diff +6365 verbose request uri http://registry.npm.alibaba-inc.com/array-unique +6366 verbose request no auth needed +6367 info attempt registry request try #1 at 上午9:12:30 +6368 verbose etag "1ab0-dJwkoq1CcSTiCogvIc6FuA" +6369 http request GET http://registry.npm.alibaba-inc.com/array-unique +6370 verbose request uri http://registry.npm.alibaba-inc.com/braces +6371 verbose request no auth needed +6372 info attempt registry request try #1 at 上午9:12:30 +6373 verbose etag "a2f4-qKOTW/UiD6Z2FCBPz08ArA" +6374 http request GET http://registry.npm.alibaba-inc.com/braces +6375 verbose request uri http://registry.npm.alibaba-inc.com/expand-brackets +6376 verbose request no auth needed +6377 info attempt registry request try #1 at 上午9:12:30 +6378 verbose etag "3811-i89Oisf4IICjDuHsqn/zcg" +6379 http request GET http://registry.npm.alibaba-inc.com/expand-brackets +6380 verbose request uri http://registry.npm.alibaba-inc.com/extglob +6381 verbose request no auth needed +6382 info attempt registry request try #1 at 上午9:12:30 +6383 verbose etag "2d7e-EfWk2y1UCSFw7QWPoNzxQw" +6384 http request GET http://registry.npm.alibaba-inc.com/extglob +6385 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow is being purged from base /home/ruanyf/npm-global +6386 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +6387 silly gunzTarPerm extractEntry .npmignore +6388 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] +6389 silly gunzTarPerm extractEntry README.md +6390 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] +6391 verbose afterAdd /home/ruanyf/.tnpm/onetime/1.1.0/package/package.json written +6392 silly install resolved [ { name: 'exit-hook', +6392 silly install resolved version: '1.1.1', +6392 silly install resolved description: 'Run some code when the process exits', +6392 silly install resolved license: 'MIT', +6392 silly install resolved repository: +6392 silly install resolved { type: 'git', +6392 silly install resolved url: 'git://github.com/sindresorhus/exit-hook.git' }, +6392 silly install resolved author: +6392 silly install resolved { name: 'Sindre Sorhus', +6392 silly install resolved email: 'sindresorhus@gmail.com', +6392 silly install resolved url: 'http://sindresorhus.com' }, +6392 silly install resolved engines: { node: '>=0.10.0' }, +6392 silly install resolved scripts: { test: 'node test.js' }, +6392 silly install resolved files: [ 'index.js' ], +6392 silly install resolved keywords: +6392 silly install resolved [ 'exit', +6392 silly install resolved 'quit', +6392 silly install resolved 'process', +6392 silly install resolved 'hook', +6392 silly install resolved 'graceful', +6392 silly install resolved 'handler', +6392 silly install resolved 'shutdown', +6392 silly install resolved 'sigterm', +6392 silly install resolved 'sigint', +6392 silly install resolved 'terminate', +6392 silly install resolved 'kill', +6392 silly install resolved 'stop', +6392 silly install resolved 'event' ], +6392 silly install resolved devDependencies: { ava: '0.0.4' }, +6392 silly install resolved bugs: { url: 'https://github.com/sindresorhus/exit-hook/issues' }, +6392 silly install resolved homepage: 'https://github.com/sindresorhus/exit-hook', +6392 silly install resolved _id: 'exit-hook@1.1.1', +6392 silly install resolved _shasum: 'f05ca233b48c05d54fff07765df8507e95c02ff8', +6392 silly install resolved _from: 'exit-hook@>=1.0.0 <2.0.0', +6392 silly install resolved _npmVersion: '1.4.9', +6392 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +6392 silly install resolved maintainers: [ [Object] ], +6392 silly install resolved dist: +6392 silly install resolved { shasum: 'f05ca233b48c05d54fff07765df8507e95c02ff8', +6392 silly install resolved size: 1006, +6392 silly install resolved noattachment: false, +6392 silly install resolved key: 'exit-hook/-/exit-hook-1.1.1.tgz', +6392 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/exit-hook/download/exit-hook-1.1.1.tgz' }, +6392 silly install resolved directories: {}, +6392 silly install resolved publish_time: 1409577290788, +6392 silly install resolved _cnpm_publish_time: 1409577290788, +6392 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/exit-hook/download/exit-hook-1.1.1.tgz', +6392 silly install resolved readme: 'ERROR: No README data found!' }, +6392 silly install resolved { name: 'onetime', +6392 silly install resolved version: '1.1.0', +6392 silly install resolved description: 'Only call a function once', +6392 silly install resolved license: 'MIT', +6392 silly install resolved repository: +6392 silly install resolved { type: 'git', +6392 silly install resolved url: 'git+https://github.com/sindresorhus/onetime.git' }, +6392 silly install resolved author: +6392 silly install resolved { name: 'Sindre Sorhus', +6392 silly install resolved email: 'sindresorhus@gmail.com', +6392 silly install resolved url: 'sindresorhus.com' }, +6392 silly install resolved engines: { node: '>=0.10.0' }, +6392 silly install resolved scripts: { test: 'xo && ava' }, +6392 silly install resolved files: [ 'index.js' ], +6392 silly install resolved keywords: [ 'once', 'one', 'single', 'call', 'function', 'prevent' ], +6392 silly install resolved devDependencies: { ava: '*', xo: '*' }, +6392 silly install resolved gitHead: '6fae2fb77b95b49719d1c270d8ba07d9515bdfe8', +6392 silly install resolved bugs: { url: 'https://github.com/sindresorhus/onetime/issues' }, +6392 silly install resolved homepage: 'https://github.com/sindresorhus/onetime', +6392 silly install resolved _id: 'onetime@1.1.0', +6392 silly install resolved _shasum: 'a1f7838f8314c516f05ecefcbc4ccfe04b4ed789', +6392 silly install resolved _from: 'onetime@>=1.0.0 <2.0.0', +6392 silly install resolved _npmVersion: '2.14.7', +6392 silly install resolved _nodeVersion: '4.2.1', +6392 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +6392 silly install resolved dist: +6392 silly install resolved { shasum: 'a1f7838f8314c516f05ecefcbc4ccfe04b4ed789', +6392 silly install resolved size: 1868, +6392 silly install resolved noattachment: false, +6392 silly install resolved key: 'onetime/-/onetime-1.1.0.tgz', +6392 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/onetime/download/onetime-1.1.0.tgz' }, +6392 silly install resolved maintainers: [ [Object] ], +6392 silly install resolved directories: {}, +6392 silly install resolved publish_time: 1450398655390, +6392 silly install resolved _cnpm_publish_time: 1450398655390, +6392 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/onetime/download/onetime-1.1.0.tgz', +6392 silly install resolved readme: 'ERROR: No README data found!' } ] +6393 info install exit-hook@1.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +6394 info install onetime@1.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +6395 info installOne exit-hook@1.1.1 +6396 verbose installOne of exit-hook to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor not in flight; installing +6397 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6398 info installOne onetime@1.1.0 +6399 verbose installOne of onetime to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor not in flight; installing +6400 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6401 verbose unlock done using /home/ruanyf/.tnpm/_locks/strip-ansi-8225ce477c1ac85b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi +6402 verbose unlock done using /home/ruanyf/.tnpm/_locks/pinkie-promise-800bae8d19425ab2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise +6403 silly gunzTarPerm extractEntry fill.js +6404 silly gunzTarPerm extractEntry bindKey.js +6405 verbose linkBins figures@1.7.0 +6406 verbose linkMans figures@1.7.0 +6407 verbose rebuildBundles figures@1.7.0 +6408 silly gunzTarPerm modes [ '755', '644' ] +6409 silly gunzTarPerm modes [ '755', '644' ] +6410 verbose afterAdd /home/ruanyf/.tnpm/number-is-nan/1.0.0/package/package.json written +6411 silly install resolved [ { name: 'number-is-nan', +6411 silly install resolved version: '1.0.0', +6411 silly install resolved description: 'ES6 Number.isNaN() ponyfill', +6411 silly install resolved license: 'MIT', +6411 silly install resolved repository: +6411 silly install resolved { type: 'git', +6411 silly install resolved url: 'git+https://github.com/sindresorhus/number-is-nan.git' }, +6411 silly install resolved author: +6411 silly install resolved { name: 'Sindre Sorhus', +6411 silly install resolved email: 'sindresorhus@gmail.com', +6411 silly install resolved url: 'sindresorhus.com' }, +6411 silly install resolved engines: { node: '>=0.10.0' }, +6411 silly install resolved scripts: { test: 'node test.js' }, +6411 silly install resolved files: [ 'index.js' ], +6411 silly install resolved keywords: +6411 silly install resolved [ 'es6', +6411 silly install resolved 'es2015', +6411 silly install resolved 'ecmascript', +6411 silly install resolved 'harmony', +6411 silly install resolved 'ponyfill', +6411 silly install resolved 'polyfill', +6411 silly install resolved 'shim', +6411 silly install resolved 'number', +6411 silly install resolved 'is', +6411 silly install resolved 'nan', +6411 silly install resolved 'not' ], +6411 silly install resolved devDependencies: { ava: '0.0.4' }, +6411 silly install resolved gitHead: '0f394b1bc33185c40304363b209e3f0588dbeeb3', +6411 silly install resolved bugs: { url: 'https://github.com/sindresorhus/number-is-nan/issues' }, +6411 silly install resolved homepage: 'https://github.com/sindresorhus/number-is-nan#readme', +6411 silly install resolved _id: 'number-is-nan@1.0.0', +6411 silly install resolved _shasum: 'c020f529c5282adfdd233d91d4b181c3d686dc4b', +6411 silly install resolved _from: 'number-is-nan@>=1.0.0 <2.0.0', +6411 silly install resolved _npmVersion: '2.10.0', +6411 silly install resolved _nodeVersion: '0.12.3', +6411 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +6411 silly install resolved dist: +6411 silly install resolved { shasum: 'c020f529c5282adfdd233d91d4b181c3d686dc4b', +6411 silly install resolved size: 1499, +6411 silly install resolved noattachment: false, +6411 silly install resolved key: 'number-is-nan/-/number-is-nan-1.0.0.tgz', +6411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/number-is-nan/download/number-is-nan-1.0.0.tgz' }, +6411 silly install resolved maintainers: [ [Object] ], +6411 silly install resolved directories: {}, +6411 silly install resolved publish_time: 1432155150474, +6411 silly install resolved _cnpm_publish_time: 1432155150474, +6411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/number-is-nan/download/number-is-nan-1.0.0.tgz', +6411 silly install resolved readme: 'ERROR: No README data found!' } ] +6412 info install number-is-nan@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +6413 info installOne number-is-nan@1.0.0 +6414 verbose installOne of number-is-nan to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point not in flight; installing +6415 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6416 silly install resolved [ { name: 'number-is-nan', +6416 silly install resolved version: '1.0.0', +6416 silly install resolved description: 'ES6 Number.isNaN() ponyfill', +6416 silly install resolved license: 'MIT', +6416 silly install resolved repository: +6416 silly install resolved { type: 'git', +6416 silly install resolved url: 'git+https://github.com/sindresorhus/number-is-nan.git' }, +6416 silly install resolved author: +6416 silly install resolved { name: 'Sindre Sorhus', +6416 silly install resolved email: 'sindresorhus@gmail.com', +6416 silly install resolved url: 'sindresorhus.com' }, +6416 silly install resolved engines: { node: '>=0.10.0' }, +6416 silly install resolved scripts: { test: 'node test.js' }, +6416 silly install resolved files: [ 'index.js' ], +6416 silly install resolved keywords: +6416 silly install resolved [ 'es6', +6416 silly install resolved 'es2015', +6416 silly install resolved 'ecmascript', +6416 silly install resolved 'harmony', +6416 silly install resolved 'ponyfill', +6416 silly install resolved 'polyfill', +6416 silly install resolved 'shim', +6416 silly install resolved 'number', +6416 silly install resolved 'is', +6416 silly install resolved 'nan', +6416 silly install resolved 'not' ], +6416 silly install resolved devDependencies: { ava: '0.0.4' }, +6416 silly install resolved gitHead: '0f394b1bc33185c40304363b209e3f0588dbeeb3', +6416 silly install resolved bugs: { url: 'https://github.com/sindresorhus/number-is-nan/issues' }, +6416 silly install resolved homepage: 'https://github.com/sindresorhus/number-is-nan#readme', +6416 silly install resolved _id: 'number-is-nan@1.0.0', +6416 silly install resolved _shasum: 'c020f529c5282adfdd233d91d4b181c3d686dc4b', +6416 silly install resolved _from: 'number-is-nan@>=1.0.0 <2.0.0', +6416 silly install resolved _npmVersion: '2.10.0', +6416 silly install resolved _nodeVersion: '0.12.3', +6416 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +6416 silly install resolved dist: +6416 silly install resolved { shasum: 'c020f529c5282adfdd233d91d4b181c3d686dc4b', +6416 silly install resolved size: 1499, +6416 silly install resolved noattachment: false, +6416 silly install resolved key: 'number-is-nan/-/number-is-nan-1.0.0.tgz', +6416 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/number-is-nan/download/number-is-nan-1.0.0.tgz' }, +6416 silly install resolved maintainers: [ [Object] ], +6416 silly install resolved directories: {}, +6416 silly install resolved publish_time: 1432155150474, +6416 silly install resolved _cnpm_publish_time: 1432155150474, +6416 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/number-is-nan/download/number-is-nan-1.0.0.tgz', +6416 silly install resolved readme: 'ERROR: No README data found!' } ] +6417 info install number-is-nan@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +6418 info installOne number-is-nan@1.0.0 +6419 verbose installOne of number-is-nan to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at not in flight; installing +6420 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6421 silly gunzTarPerm extractEntry index.js +6422 silly gunzTarPerm extractEntry test.js +6423 silly gunzTarPerm extractEntry inherits.js +6424 silly gunzTarPerm extractEntry inherits_browser.js +6425 silly gunzTarPerm extractEntry readme.md +6426 verbose tar unpack /home/ruanyf/.tnpm/extend-shallow/2.0.1/package.tgz +6427 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +6428 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow is being purged +6429 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +6430 silly gunzTarPerm extractEntry .npmignore +6431 silly gunzTarPerm extractEntry README.md +6432 verbose rebuildBundles [ 'escape-string-regexp', 'object-assign' ] +6433 info install figures@1.7.0 +6434 silly gunzTarPerm extractEntry .travis.yml +6435 silly gunzTarPerm extractEntry license.md +6436 silly gunzTarPerm extractEntry LICENSE +6437 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ] +6438 silly gunzTarPerm extractEntry index.js +6439 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ] +6440 silly gunzTarPerm extractEntry browser.js +6441 silly gunzTarPerm extractEntry node.js +6442 silly gunzTarPerm extractEntry test.js +6443 silly gunzTarPerm extractEntry float.patch +6444 silly gunzTarPerm modes [ '755', '644' ] +6445 verbose lock using /home/ruanyf/.tnpm/_locks/exit-hook-5ff6422de8a65eae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook +6446 verbose lock using /home/ruanyf/.tnpm/_locks/onetime-41a4238185ea7660.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime +6447 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex is being purged from base /home/ruanyf/npm-global +6448 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex +6449 verbose lock using /home/ruanyf/.tnpm/_locks/number-is-nan-d87d7a71abbd4b8e.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan +6450 verbose lock using /home/ruanyf/.tnpm/_locks/number-is-nan-4e0947818a28c513.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan +6451 silly gunzTarPerm extractEntry once.js +6452 silly install write writing exit-hook 1.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook +6453 silly install write writing onetime 1.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime +6454 info linkStuff gulp-sourcemaps@1.6.0 +6455 silly linkStuff gulp-sourcemaps@1.6.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +6456 silly linkStuff gulp-sourcemaps@1.6.0 is part of a global install +6457 silly linkStuff gulp-sourcemaps@1.6.0 is installed into a global node_modules +6458 info linkStuff clone@1.0.2 +6459 silly linkStuff clone@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules as its parent node_modules +6460 silly linkStuff clone@1.0.2 is part of a global install +6461 silly linkStuff clone@1.0.2 is installed into a global node_modules +6462 info postinstall figures@1.7.0 +6463 verbose tar unpack /home/ruanyf/.tnpm/ansi-regex/2.0.0/package.tgz +6464 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex +6465 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex is being purged +6466 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex +6467 silly cache afterAdd is-glob@2.0.1 +6468 verbose afterAdd /home/ruanyf/.tnpm/is-glob/2.0.1/package/package.json not in flight; writing +6469 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6470 silly cache afterAdd is-glob@2.0.1 +6471 verbose afterAdd /home/ruanyf/.tnpm/is-glob/2.0.1/package/package.json already in flight; not writing +6472 http fetch 200 http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz +6473 http 304 http://registry.npm.alibaba-inc.com/filename-regex +6474 verbose headers { server: 'Tengine', +6474 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6474 verbose headers connection: 'keep-alive', +6474 verbose headers etag: '"1cc2-3O1TIUt9NHHbzRkx7ThNsw"', +6474 verbose headers 'x-readtime': '16' } +6475 silly get cb [ 304, +6475 silly get { server: 'Tengine', +6475 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6475 silly get connection: 'keep-alive', +6475 silly get etag: '"1cc2-3O1TIUt9NHHbzRkx7ThNsw"', +6475 silly get 'x-readtime': '16' } ] +6476 verbose etag http://registry.npm.alibaba-inc.com/filename-regex from cache +6477 verbose get saving filename-regex to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/filename-regex/.cache.json +6478 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6479 http 304 http://registry.npm.alibaba-inc.com/is-extglob +6480 verbose headers { server: 'Tengine', +6480 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6480 verbose headers connection: 'keep-alive', +6480 verbose headers etag: '"fa3-nsT25tkbXMNQ/HoUIdcx8w"', +6480 verbose headers 'x-readtime': '18' } +6481 silly get cb [ 304, +6481 silly get { server: 'Tengine', +6481 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6481 silly get connection: 'keep-alive', +6481 silly get etag: '"fa3-nsT25tkbXMNQ/HoUIdcx8w"', +6481 silly get 'x-readtime': '18' } ] +6482 verbose etag http://registry.npm.alibaba-inc.com/is-extglob from cache +6483 verbose get saving is-extglob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-extglob/.cache.json +6484 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6485 silly install write writing number-is-nan 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan +6486 silly install write writing number-is-nan 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan +6487 silly addNameRange number 2 { name: 'minimatch', +6487 silly addNameRange range: '>=2.0.0 <3.0.0||>=3.0.0 <4.0.0', +6487 silly addNameRange hasData: true } +6488 silly addNameRange versions [ 'minimatch', +6488 silly addNameRange [ '3.0.0', +6488 silly addNameRange '2.0.10', +6488 silly addNameRange '2.0.9', +6488 silly addNameRange '2.0.8', +6488 silly addNameRange '2.0.7', +6488 silly addNameRange '2.0.6', +6488 silly addNameRange '2.0.5', +6488 silly addNameRange '2.0.4', +6488 silly addNameRange '2.0.3', +6488 silly addNameRange '2.0.2', +6488 silly addNameRange '2.0.1', +6488 silly addNameRange '2.0.0', +6488 silly addNameRange '1.0.0', +6488 silly addNameRange '0.4.0', +6488 silly addNameRange '0.3.0', +6488 silly addNameRange '0.2.14', +6488 silly addNameRange '0.2.13', +6488 silly addNameRange '0.2.12', +6488 silly addNameRange '0.2.11', +6488 silly addNameRange '0.2.10', +6488 silly addNameRange '0.2.9', +6488 silly addNameRange '0.2.8', +6488 silly addNameRange '0.2.7', +6488 silly addNameRange '0.2.6', +6488 silly addNameRange '0.2.5', +6488 silly addNameRange '0.2.4', +6488 silly addNameRange '0.2.3', +6488 silly addNameRange '0.2.2', +6488 silly addNameRange '0.2.0', +6488 silly addNameRange '0.1.5', +6488 silly addNameRange '0.1.4', +6488 silly addNameRange '0.1.3', +6488 silly addNameRange '0.1.2', +6488 silly addNameRange '0.1.1', +6488 silly addNameRange '0.0.5', +6488 silly addNameRange '0.0.4', +6488 silly addNameRange '0.0.2', +6488 silly addNameRange '0.0.1' ] ] +6489 silly addNamed minimatch@3.0.0 +6490 verbose addNamed "3.0.0" is a plain semver version for minimatch +6491 verbose afterAdd /home/ruanyf/.tnpm/path-is-absolute/1.0.0/package/package.json written +6492 silly gunzTarPerm modes [ '755', '644' ] +6493 http 304 http://registry.npm.alibaba-inc.com/normalize-path +6494 verbose headers { server: 'Tengine', +6494 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6494 verbose headers connection: 'keep-alive', +6494 verbose headers etag: '"435c-EGI/vTL3T/qutoMalkIGUg"', +6494 verbose headers 'x-readtime': '20' } +6495 silly get cb [ 304, +6495 silly get { server: 'Tengine', +6495 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6495 silly get connection: 'keep-alive', +6495 silly get etag: '"435c-EGI/vTL3T/qutoMalkIGUg"', +6495 silly get 'x-readtime': '20' } ] +6496 verbose etag http://registry.npm.alibaba-inc.com/normalize-path from cache +6497 verbose get saving normalize-path to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/normalize-path/.cache.json +6498 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6499 silly install resolved [] +6500 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend +6501 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend +6502 silly gunzTarPerm extractEntry package.json +6503 silly gunzTarPerm extractEntry package.json +6504 http 200 http://registry.npm.alibaba-inc.com/minimist +6505 verbose headers { server: 'Tengine', +6505 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6505 verbose headers 'content-type': 'application/json; charset=utf-8', +6505 verbose headers 'transfer-encoding': 'chunked', +6505 verbose headers connection: 'keep-alive', +6505 verbose headers vary: 'Accept-Encoding', +6505 verbose headers 'x-readtime': '62', +6505 verbose headers 'content-encoding': 'gzip' } +6506 silly get cb [ 200, +6506 silly get { server: 'Tengine', +6506 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6506 silly get 'content-type': 'application/json; charset=utf-8', +6506 silly get 'transfer-encoding': 'chunked', +6506 silly get connection: 'keep-alive', +6506 silly get vary: 'Accept-Encoding', +6506 silly get 'x-readtime': '62', +6506 silly get 'content-encoding': 'gzip' } ] +6507 verbose get saving minimist to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/minimist/.cache.json +6508 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6509 verbose linkBins gulp-sourcemaps@1.6.0 +6510 verbose linkMans gulp-sourcemaps@1.6.0 +6511 verbose rebuildBundles gulp-sourcemaps@1.6.0 +6512 verbose linkBins clone@1.0.2 +6513 verbose linkMans clone@1.0.2 +6514 verbose rebuildBundles clone@1.0.2 +6515 verbose unlock done using /home/ruanyf/.tnpm/_locks/figures-3c89e277294fa2ae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures +6516 silly gunzTarPerm extractEntry package.json +6517 verbose rebuildBundles [ 'convert-source-map' ] +6518 info install gulp-sourcemaps@1.6.0 +6519 info install clone@1.0.2 +6520 silly fetchAndShaCheck shasum db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a +6521 http 304 http://registry.npm.alibaba-inc.com/regex-cache +6522 verbose headers { server: 'Tengine', +6522 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6522 verbose headers connection: 'keep-alive', +6522 verbose headers etag: '"4e4a-X+jWDoi4IAiPwZpa7T/QbQ"', +6522 verbose headers 'x-readtime': '33' } +6523 silly get cb [ 304, +6523 silly get { server: 'Tengine', +6523 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6523 silly get connection: 'keep-alive', +6523 silly get etag: '"4e4a-X+jWDoi4IAiPwZpa7T/QbQ"', +6523 silly get 'x-readtime': '33' } ] +6524 verbose etag http://registry.npm.alibaba-inc.com/regex-cache from cache +6525 verbose get saving regex-cache to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/regex-cache/.cache.json +6526 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6527 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook +6528 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime +6529 verbose afterAdd /home/ruanyf/.tnpm/is-glob/2.0.1/package/package.json written +6530 silly install resolved [ { name: 'is-glob', +6530 silly install resolved description: 'Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet', +6530 silly install resolved version: '2.0.1', +6530 silly install resolved homepage: 'https://github.com/jonschlinkert/is-glob', +6530 silly install resolved author: +6530 silly install resolved { name: 'Jon Schlinkert', +6530 silly install resolved url: 'https://github.com/jonschlinkert' }, +6530 silly install resolved repository: +6530 silly install resolved { type: 'git', +6530 silly install resolved url: 'git+https://github.com/jonschlinkert/is-glob.git' }, +6530 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-glob/issues' }, +6530 silly install resolved license: 'MIT', +6530 silly install resolved files: [ 'index.js' ], +6530 silly install resolved main: 'index.js', +6530 silly install resolved engines: { node: '>=0.10.0' }, +6530 silly install resolved scripts: { test: 'mocha' }, +6530 silly install resolved dependencies: { 'is-extglob': '^1.0.0' }, +6530 silly install resolved devDependencies: { mocha: '*' }, +6530 silly install resolved keywords: +6530 silly install resolved [ 'bash', +6530 silly install resolved 'braces', +6530 silly install resolved 'check', +6530 silly install resolved 'exec', +6530 silly install resolved 'extglob', +6530 silly install resolved 'expression', +6530 silly install resolved 'glob', +6530 silly install resolved 'globbing', +6530 silly install resolved 'globstar', +6530 silly install resolved 'match', +6530 silly install resolved 'matches', +6530 silly install resolved 'pattern', +6530 silly install resolved 'regex', +6530 silly install resolved 'regular', +6530 silly install resolved 'string', +6530 silly install resolved 'test' ], +6530 silly install resolved verb: { related: [Object] }, +6530 silly install resolved gitHead: 'd7db1b2dd559b3d5a73f89dbe72d9e9f4d6587d7', +6530 silly install resolved _id: 'is-glob@2.0.1', +6530 silly install resolved _shasum: 'd096f926a3ded5600f3fdfd91198cb0888c2d863', +6530 silly install resolved _from: 'is-glob@>=2.0.0 <3.0.0', +6530 silly install resolved _npmVersion: '2.10.1', +6530 silly install resolved _nodeVersion: '0.12.4', +6530 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6530 silly install resolved maintainers: [ [Object], [Object] ], +6530 silly install resolved dist: +6530 silly install resolved { shasum: 'd096f926a3ded5600f3fdfd91198cb0888c2d863', +6530 silly install resolved size: 2485, +6530 silly install resolved noattachment: false, +6530 silly install resolved key: 'is-glob/-/is-glob-2.0.1.tgz', +6530 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-glob/download/is-glob-2.0.1.tgz' }, +6530 silly install resolved directories: {}, +6530 silly install resolved publish_time: 1443760481446, +6530 silly install resolved _cnpm_publish_time: 1443760481446, +6530 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-glob/download/is-glob-2.0.1.tgz', +6530 silly install resolved readme: 'ERROR: No README data found!' } ] +6531 info install is-glob@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +6532 info installOne is-glob@2.0.1 +6533 verbose installOne of is-glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent not in flight; installing +6534 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6535 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan +6536 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan +6537 silly gunzTarPerm extractEntry .travis.yml +6538 silly gunzTarPerm extractEntry Makefile +6539 silly gunzTarPerm extractEntry LICENCE +6540 silly gunzTarPerm modified mode [ 'LICENCE', 436, 420 ] +6541 silly gunzTarPerm extractEntry immutable.js +6542 silly gunzTarPerm modified mode [ 'immutable.js', 436, 420 ] +6543 info postinstall gulp-sourcemaps@1.6.0 +6544 silly gunzTarPerm extractEntry filter.js +6545 silly gunzTarPerm extractEntry bindAll.js +6546 info postinstall clone@1.0.2 +6547 silly gunzTarPerm extractEntry dist/rx.all.compat.js +6548 silly gunzTarPerm extractEntry package.json +6549 silly gunzTarPerm extractEntry .npmignore +6550 silly gunzTarPerm extractEntry LICENSE +6551 silly gunzTarPerm extractEntry index.js +6552 silly gunzTarPerm extractEntry license +6553 http 304 http://registry.npm.alibaba-inc.com/array-unique +6554 verbose headers { server: 'Tengine', +6554 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6554 verbose headers connection: 'keep-alive', +6554 verbose headers etag: '"1ab0-dJwkoq1CcSTiCogvIc6FuA"', +6554 verbose headers 'x-readtime': '22' } +6555 silly get cb [ 304, +6555 silly get { server: 'Tengine', +6555 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6555 silly get connection: 'keep-alive', +6555 silly get etag: '"1ab0-dJwkoq1CcSTiCogvIc6FuA"', +6555 silly get 'x-readtime': '22' } ] +6556 verbose etag http://registry.npm.alibaba-inc.com/array-unique from cache +6557 verbose get saving array-unique to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/array-unique/.cache.json +6558 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6559 http 304 http://registry.npm.alibaba-inc.com/parse-glob +6560 verbose headers { server: 'Tengine', +6560 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6560 verbose headers connection: 'keep-alive', +6560 verbose headers etag: '"6527-9OP9+cTgIU5LGQHZhMXZFw"', +6560 verbose headers 'x-readtime': '41' } +6561 silly get cb [ 304, +6561 silly get { server: 'Tengine', +6561 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6561 silly get connection: 'keep-alive', +6561 silly get etag: '"6527-9OP9+cTgIU5LGQHZhMXZFw"', +6561 silly get 'x-readtime': '41' } ] +6562 verbose etag http://registry.npm.alibaba-inc.com/parse-glob from cache +6563 verbose get saving parse-glob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/parse-glob/.cache.json +6564 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6565 http 304 http://registry.npm.alibaba-inc.com/extglob +6566 verbose headers { server: 'Tengine', +6566 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6566 verbose headers connection: 'keep-alive', +6566 verbose headers etag: '"2d7e-EfWk2y1UCSFw7QWPoNzxQw"', +6566 verbose headers 'x-readtime': '27' } +6567 silly get cb [ 304, +6567 silly get { server: 'Tengine', +6567 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6567 silly get connection: 'keep-alive', +6567 silly get etag: '"2d7e-EfWk2y1UCSFw7QWPoNzxQw"', +6567 silly get 'x-readtime': '27' } ] +6568 verbose etag http://registry.npm.alibaba-inc.com/extglob from cache +6569 verbose get saving extglob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/extglob/.cache.json +6570 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6571 http 304 http://registry.npm.alibaba-inc.com/object.omit +6572 verbose headers { server: 'Tengine', +6572 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6572 verbose headers connection: 'keep-alive', +6572 verbose headers etag: '"25da-gV9QjFaw2CKGhu8B16l6MQ"', +6572 verbose headers 'x-readtime': '38' } +6573 silly get cb [ 304, +6573 silly get { server: 'Tengine', +6573 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6573 silly get connection: 'keep-alive', +6573 silly get etag: '"25da-gV9QjFaw2CKGhu8B16l6MQ"', +6573 silly get 'x-readtime': '38' } ] +6574 verbose etag http://registry.npm.alibaba-inc.com/object.omit from cache +6575 verbose get saving object.omit to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/object.omit/.cache.json +6576 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6577 silly gunzTarPerm extractEntry test.js +6578 silly cache afterAdd minimatch@3.0.0 +6579 verbose afterAdd /home/ruanyf/.tnpm/minimatch/3.0.0/package/package.json not in flight; writing +6580 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6581 silly gunzTarPerm extractEntry lib/util.js +6582 info linkStuff extend@3.0.0 +6583 silly linkStuff extend@3.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules +6584 silly linkStuff extend@3.0.0 is part of a global install +6585 silly linkStuff extend@3.0.0 is installed into a global node_modules +6586 silly gunzTarPerm extractEntry LICENSE +6587 silly gunzTarPerm extractEntry duplex.js +6588 verbose lock using /home/ruanyf/.tnpm/_locks/is-glob-28c6371c3d64b787.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +6589 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz not in flight; adding +6590 verbose addTmpTarball already have metadata; skipping unpack for inflight@1.0.5 +6591 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6592 silly gunzTarPerm extractEntry readme.md +6593 silly gunzTarPerm extractEntry History.md +6594 silly gunzTarPerm extractEntry README.md +6595 silly gunzTarPerm extractEntry LICENSE +6596 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook is being purged from base /home/ruanyf/npm-global +6597 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook +6598 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime is being purged from base /home/ruanyf/npm-global +6599 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime +6600 silly install write writing is-glob 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +6601 http 304 http://registry.npm.alibaba-inc.com/braces +6602 verbose headers { server: 'Tengine', +6602 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6602 verbose headers connection: 'keep-alive', +6602 verbose headers etag: '"a2f4-qKOTW/UiD6Z2FCBPz08ArA"', +6602 verbose headers 'x-readtime': '39' } +6603 silly get cb [ 304, +6603 silly get { server: 'Tengine', +6603 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6603 silly get connection: 'keep-alive', +6603 silly get etag: '"a2f4-qKOTW/UiD6Z2FCBPz08ArA"', +6603 silly get 'x-readtime': '39' } ] +6604 verbose etag http://registry.npm.alibaba-inc.com/braces from cache +6605 verbose get saving braces to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/braces/.cache.json +6606 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6607 silly addNameRange number 2 { name: 'filename-regex', +6607 silly addNameRange range: '>=2.0.0 <3.0.0', +6607 silly addNameRange hasData: true } +6608 silly addNameRange versions [ 'filename-regex', [ '2.0.0', '1.0.0', '0.2.0', '0.1.0' ] ] +6609 silly addNamed filename-regex@2.0.0 +6610 verbose addNamed "2.0.0" is a plain semver version for filename-regex +6611 silly addNameRange number 2 { name: 'is-extglob', range: '>=1.0.0 <2.0.0', hasData: true } +6612 silly addNameRange versions [ 'is-extglob', [ '1.0.0' ] ] +6613 silly addNamed is-extglob@1.0.0 +6614 verbose addNamed "1.0.0" is a plain semver version for is-extglob +6615 http 200 http://registry.npm.alibaba-inc.com/kind-of +6616 verbose headers { server: 'Tengine', +6616 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6616 verbose headers 'content-type': 'application/json; charset=utf-8', +6616 verbose headers 'transfer-encoding': 'chunked', +6616 verbose headers connection: 'keep-alive', +6616 verbose headers vary: 'Accept-Encoding', +6616 verbose headers 'x-readtime': '34', +6616 verbose headers 'content-encoding': 'gzip' } +6617 silly get cb [ 200, +6617 silly get { server: 'Tengine', +6617 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6617 silly get 'content-type': 'application/json; charset=utf-8', +6617 silly get 'transfer-encoding': 'chunked', +6617 silly get connection: 'keep-alive', +6617 silly get vary: 'Accept-Encoding', +6617 silly get 'x-readtime': '34', +6617 silly get 'content-encoding': 'gzip' } ] +6618 verbose get saving kind-of to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/kind-of/.cache.json +6619 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6620 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan is being purged from base /home/ruanyf/npm-global +6621 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan +6622 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan is being purged from base /home/ruanyf/npm-global +6623 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan +6624 verbose tar unpack /home/ruanyf/.tnpm/exit-hook/1.1.1/package.tgz +6625 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook +6626 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook is being purged +6627 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook +6628 verbose tar unpack /home/ruanyf/.tnpm/onetime/1.1.0/package.tgz +6629 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime +6630 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime is being purged +6631 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime +6632 verbose unlock done using /home/ruanyf/.tnpm/_locks/gulp-sourcemaps-afad1a1c8bfcfaed.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps +6633 verbose unlock done using /home/ruanyf/.tnpm/_locks/clone-9e12a0eea285225b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone +6634 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl +6635 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl +6636 verbose tar unpack /home/ruanyf/.tnpm/number-is-nan/1.0.0/package.tgz +6637 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan +6638 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan is being purged +6639 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan +6640 verbose tar unpack /home/ruanyf/.tnpm/number-is-nan/1.0.0/package.tgz +6641 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan +6642 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan is being purged +6643 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan +6644 silly addNameRange number 2 { name: 'normalize-path', +6644 silly addNameRange range: '>=2.0.1 <3.0.0', +6644 silly addNameRange hasData: true } +6645 silly addNameRange versions [ 'normalize-path', +6645 silly addNameRange [ '2.0.1', +6645 silly addNameRange '2.0.0', +6645 silly addNameRange '1.0.0', +6645 silly addNameRange '0.3.0', +6645 silly addNameRange '0.2.1', +6645 silly addNameRange '0.2.0', +6645 silly addNameRange '0.1.1', +6645 silly addNameRange '0.1.0' ] ] +6646 silly addNamed normalize-path@2.0.1 +6647 verbose addNamed "2.0.1" is a plain semver version for normalize-path +6648 verbose linkBins extend@3.0.0 +6649 verbose linkMans extend@3.0.0 +6650 verbose rebuildBundles extend@3.0.0 +6651 silly gunzTarPerm modes [ '755', '644' ] +6652 silly gunzTarPerm modes [ '755', '644' ] +6653 silly gunzTarPerm extractEntry index.js +6654 silly gunzTarPerm extractEntry license +6655 http 200 http://registry.npm.alibaba-inc.com/arr-diff +6656 verbose headers { server: 'Tengine', +6656 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6656 verbose headers 'content-type': 'application/json; charset=utf-8', +6656 verbose headers 'transfer-encoding': 'chunked', +6656 verbose headers connection: 'keep-alive', +6656 verbose headers vary: 'Accept-Encoding', +6656 verbose headers 'x-readtime': '30', +6656 verbose headers 'content-encoding': 'gzip' } +6657 silly get cb [ 200, +6657 silly get { server: 'Tengine', +6657 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6657 silly get 'content-type': 'application/json; charset=utf-8', +6657 silly get 'transfer-encoding': 'chunked', +6657 silly get connection: 'keep-alive', +6657 silly get vary: 'Accept-Encoding', +6657 silly get 'x-readtime': '30', +6657 silly get 'content-encoding': 'gzip' } ] +6658 verbose get saving arr-diff to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/arr-diff/.cache.json +6659 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6660 silly gunzTarPerm modes [ '755', '644' ] +6661 silly mapToRegistry name minimist +6662 silly mapToRegistry using default registry +6663 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +6664 silly mapToRegistry data Result { +6664 silly mapToRegistry raw: 'minimist', +6664 silly mapToRegistry scope: null, +6664 silly mapToRegistry name: 'minimist', +6664 silly mapToRegistry rawSpec: '', +6664 silly mapToRegistry spec: 'latest', +6664 silly mapToRegistry type: 'tag' } +6665 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/minimist +6666 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz not in flight; adding +6667 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz', +6667 verbose addRemoteTarball '857fcabfc3397d2625b8228262e86aa7a011b05d' ] +6668 silly gunzTarPerm modes [ '755', '644' ] +6669 info install extend@3.0.0 +6670 verbose afterAdd /home/ruanyf/.tnpm/minimatch/3.0.0/package/package.json written +6671 silly addNameRange number 2 { name: 'regex-cache', range: '>=0.4.2 <0.5.0', hasData: true } +6672 silly addNameRange versions [ 'regex-cache', +6672 silly addNameRange [ '0.4.3', +6672 silly addNameRange '0.4.2', +6672 silly addNameRange '0.4.1', +6672 silly addNameRange '0.3.0', +6672 silly addNameRange '0.2.1', +6672 silly addNameRange '0.2.0', +6672 silly addNameRange '0.1.1', +6672 silly addNameRange '0.1.0' ] ] +6673 silly addNamed regex-cache@0.4.3 +6674 verbose addNamed "0.4.3" is a plain semver version for regex-cache +6675 http 304 http://registry.npm.alibaba-inc.com/expand-brackets +6676 verbose headers { server: 'Tengine', +6676 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', +6676 verbose headers connection: 'keep-alive', +6676 verbose headers etag: '"3811-i89Oisf4IICjDuHsqn/zcg"', +6676 verbose headers 'x-readtime': '50' } +6677 silly get cb [ 304, +6677 silly get { server: 'Tengine', +6677 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', +6677 silly get connection: 'keep-alive', +6677 silly get etag: '"3811-i89Oisf4IICjDuHsqn/zcg"', +6677 silly get 'x-readtime': '50' } ] +6678 verbose etag http://registry.npm.alibaba-inc.com/expand-brackets from cache +6679 verbose get saving expand-brackets to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/expand-brackets/.cache.json +6680 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6681 info postinstall extend@3.0.0 +6682 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +6683 info retry fetch attempt 1 at 上午9:12:30 +6684 info attempt registry request try #1 at 上午9:12:30 +6685 http fetch GET http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz +6686 silly gunzTarPerm extractEntry mutable.js +6687 silly gunzTarPerm modified mode [ 'mutable.js', 436, 420 ] +6688 silly gunzTarPerm extractEntry test.js +6689 silly gunzTarPerm modified mode [ 'test.js', 436, 420 ] +6690 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise/package.json +6691 info linkStuff vinyl@1.1.1 +6692 silly linkStuff vinyl@1.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +6693 silly linkStuff vinyl@1.1.1 is part of a global install +6694 silly linkStuff vinyl@1.1.1 is installed into a global node_modules +6695 silly addNameRange number 2 { name: 'array-unique', range: '>=0.2.1 <0.3.0', hasData: true } +6696 silly addNameRange versions [ 'array-unique', [ '0.2.1', '0.2.0', '0.1.1' ] ] +6697 silly addNamed array-unique@0.2.1 +6698 verbose addNamed "0.2.1" is a plain semver version for array-unique +6699 silly addNameRange number 2 { name: 'extglob', range: '>=0.3.1 <0.4.0', hasData: true } +6700 silly addNameRange versions [ 'extglob', [ '0.3.2', '0.3.1', '0.3.0', '0.2.0', '0.1.0' ] ] +6701 silly addNamed extglob@0.3.2 +6702 verbose addNamed "0.3.2" is a plain semver version for extglob +6703 silly addNameRange number 2 { name: 'parse-glob', range: '>=3.0.4 <4.0.0', hasData: true } +6704 silly addNameRange versions [ 'parse-glob', +6704 silly addNameRange [ '3.0.4', +6704 silly addNameRange '3.0.3', +6704 silly addNameRange '3.0.2', +6704 silly addNameRange '3.0.1', +6704 silly addNameRange '3.0.0', +6704 silly addNameRange '2.1.1', +6704 silly addNameRange '2.1.0', +6704 silly addNameRange '2.0.1', +6704 silly addNameRange '2.0.0', +6704 silly addNameRange '1.2.0', +6704 silly addNameRange '1.1.0', +6704 silly addNameRange '1.0.2', +6704 silly addNameRange '1.0.1', +6704 silly addNameRange '1.0.0' ] ] +6705 silly addNamed parse-glob@3.0.4 +6706 verbose addNamed "3.0.4" is a plain semver version for parse-glob +6707 silly addNameRange number 2 { name: 'object.omit', range: '>=2.0.0 <3.0.0', hasData: true } +6708 silly addNameRange versions [ 'object.omit', [ '2.0.0', '1.1.0', '0.2.1', '0.2.0' ] ] +6709 silly addNamed object.omit@2.0.0 +6710 verbose addNamed "2.0.0" is a plain semver version for object.omit +6711 silly cache afterAdd filename-regex@2.0.0 +6712 verbose afterAdd /home/ruanyf/.tnpm/filename-regex/2.0.0/package/package.json not in flight; writing +6713 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6714 silly cache afterAdd is-extglob@1.0.0 +6715 verbose afterAdd /home/ruanyf/.tnpm/is-extglob/1.0.0/package/package.json not in flight; writing +6716 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6717 silly gunzTarPerm extractEntry component.json +6718 silly gunzTarPerm extractEntry writable.js +6719 silly gunzTarPerm extractEntry passthrough.js +6720 silly gunzTarPerm extractEntry package.json +6721 silly gunzTarPerm extractEntry find.js +6722 silly gunzTarPerm extractEntry bind.js +6723 silly gunzTarPerm extractEntry index.js +6724 silly gunzTarPerm extractEntry .travis.yml +6725 silly gunzTarPerm extractEntry readme.md +6726 silly gunzTarPerm extractEntry package.json +6727 silly gunzTarPerm extractEntry package.json +6728 silly cache afterAdd normalize-path@2.0.1 +6729 verbose afterAdd /home/ruanyf/.tnpm/normalize-path/2.0.1/package/package.json not in flight; writing +6730 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6731 verbose unlock done using /home/ruanyf/.tnpm/_locks/extend-c4c45b992dfc6b94.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend +6732 silly gunzTarPerm extractEntry package.json +6733 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob is being purged from base /home/ruanyf/npm-global +6734 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +6735 silly addNameRange number 2 { name: 'braces', range: '>=1.8.2 <2.0.0', hasData: true } +6736 silly addNameRange versions [ 'braces', +6736 silly addNameRange [ '1.8.4', +6736 silly addNameRange '1.8.3', +6736 silly addNameRange '1.8.2', +6736 silly addNameRange '1.8.1', +6736 silly addNameRange '1.8.0', +6736 silly addNameRange '1.7.0', +6736 silly addNameRange '1.6.0', +6736 silly addNameRange '1.5.1', +6736 silly addNameRange '1.5.0', +6736 silly addNameRange '1.4.0', +6736 silly addNameRange '1.3.0', +6736 silly addNameRange '1.2.0', +6736 silly addNameRange '1.1.0', +6736 silly addNameRange '1.0.0', +6736 silly addNameRange '0.1.5', +6736 silly addNameRange '0.1.4', +6736 silly addNameRange '0.1.2', +6736 silly addNameRange '0.1.1', +6736 silly addNameRange '0.1.0' ] ] +6737 silly addNamed braces@1.8.4 +6738 verbose addNamed "1.8.4" is a plain semver version for braces +6739 silly addNameRange number 2 { name: 'kind-of', range: '>=3.0.2 <4.0.0', hasData: true } +6740 silly addNameRange versions [ 'kind-of', +6740 silly addNameRange [ '3.0.3', +6740 silly addNameRange '3.0.2', +6740 silly addNameRange '3.0.1', +6740 silly addNameRange '3.0.0', +6740 silly addNameRange '2.0.1', +6740 silly addNameRange '2.0.0', +6740 silly addNameRange '1.1.0', +6740 silly addNameRange '1.0.1', +6740 silly addNameRange '1.0.0', +6740 silly addNameRange '0.1.2', +6740 silly addNameRange '0.1.1', +6740 silly addNameRange '0.1.0' ] ] +6741 silly addNamed kind-of@3.0.3 +6742 verbose addNamed "3.0.3" is a plain semver version for kind-of +6743 silly gunzTarPerm extractEntry index.js +6744 verbose linkBins vinyl@1.1.1 +6745 verbose linkMans vinyl@1.1.1 +6746 verbose rebuildBundles vinyl@1.1.1 +6747 verbose tar unpack /home/ruanyf/.tnpm/is-glob/2.0.1/package.tgz +6748 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +6749 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob is being purged +6750 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +6751 info preinstall is-promise@2.1.0 +6752 verbose rebuildBundles [ 'clone', 'clone-stats', 'replace-ext' ] +6753 info install vinyl@1.1.1 +6754 silly gunzTarPerm modes [ '755', '644' ] +6755 silly cache afterAdd regex-cache@0.4.3 +6756 verbose afterAdd /home/ruanyf/.tnpm/regex-cache/0.4.3/package/package.json not in flight; writing +6757 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6758 silly addNameRange number 2 { name: 'arr-diff', range: '>=2.0.0 <3.0.0', hasData: true } +6759 silly addNameRange versions [ 'arr-diff', +6759 silly addNameRange [ '3.0.0', +6759 silly addNameRange '2.0.0', +6759 silly addNameRange '1.1.0', +6759 silly addNameRange '1.0.1', +6759 silly addNameRange '1.0.0', +6759 silly addNameRange '0.2.2', +6759 silly addNameRange '0.2.1', +6759 silly addNameRange '0.2.0', +6759 silly addNameRange '0.1.1', +6759 silly addNameRange '0.1.0' ] ] +6760 silly addNamed arr-diff@2.0.0 +6761 verbose addNamed "2.0.0" is a plain semver version for arr-diff +6762 silly gunzTarPerm extractEntry index.js +6763 silly gunzTarPerm extractEntry readme.md +6764 silly gunzTarPerm extractEntry readme.md +6765 verbose afterAdd /home/ruanyf/.tnpm/is-extglob/1.0.0/package/package.json written +6766 verbose afterAdd /home/ruanyf/.tnpm/filename-regex/2.0.0/package/package.json written +6767 silly gunzTarPerm extractEntry index.js +6768 silly gunzTarPerm extractEntry license +6769 silly gunzTarPerm extractEntry index.js +6770 silly gunzTarPerm extractEntry license +6771 silly gunzTarPerm extractEntry index.js +6772 silly gunzTarPerm extractEntry license +6773 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise/package.json +6774 info postinstall vinyl@1.1.1 +6775 silly addNameRange number 2 { name: 'expand-brackets', +6775 silly addNameRange range: '>=0.1.4 <0.2.0', +6775 silly addNameRange hasData: true } +6776 silly addNameRange versions [ 'expand-brackets', +6776 silly addNameRange [ '0.1.5', '0.1.4', '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] +6777 silly addNamed expand-brackets@0.1.5 +6778 verbose addNamed "0.1.5" is a plain semver version for expand-brackets +6779 silly cache afterAdd array-unique@0.2.1 +6780 verbose afterAdd /home/ruanyf/.tnpm/array-unique/0.2.1/package/package.json not in flight; writing +6781 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6782 silly cache afterAdd inflight@1.0.5 +6783 verbose afterAdd /home/ruanyf/.tnpm/inflight/1.0.5/package/package.json not in flight; writing +6784 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6785 silly cache afterAdd extglob@0.3.2 +6786 verbose afterAdd /home/ruanyf/.tnpm/extglob/0.3.2/package/package.json not in flight; writing +6787 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6788 silly cache afterAdd parse-glob@3.0.4 +6789 verbose afterAdd /home/ruanyf/.tnpm/parse-glob/3.0.4/package/package.json not in flight; writing +6790 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6791 verbose afterAdd /home/ruanyf/.tnpm/normalize-path/2.0.1/package/package.json written +6792 silly cache afterAdd object.omit@2.0.0 +6793 verbose afterAdd /home/ruanyf/.tnpm/object.omit/2.0.0/package/package.json not in flight; writing +6794 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6795 silly cache afterAdd kind-of@3.0.3 +6796 verbose afterAdd /home/ruanyf/.tnpm/kind-of/3.0.3/package/package.json not in flight; writing +6797 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6798 silly cache afterAdd braces@1.8.4 +6799 verbose afterAdd /home/ruanyf/.tnpm/braces/1.8.4/package/package.json not in flight; writing +6800 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6801 silly gunzTarPerm extractEntry .jshintrc +6802 silly gunzTarPerm modified mode [ '.jshintrc', 436, 420 ] +6803 silly gunzTarPerm extractEntry Makefile +6804 silly gunzTarPerm modified mode [ 'Makefile', 436, 420 ] +6805 verbose unlock done using /home/ruanyf/.tnpm/_locks/vinyl-aefe3850b22bfbad.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl +6806 http fetch 200 http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz +6807 silly gunzTarPerm extractEntry example/key_cmp.js +6808 silly gunzTarPerm extractEntry example/nested.js +6809 silly gunzTarPerm extractEntry package.json +6810 verbose afterAdd /home/ruanyf/.tnpm/regex-cache/0.4.3/package/package.json written +6811 silly gunzTarPerm extractEntry readable.js +6812 silly gunzTarPerm extractEntry transform.js +6813 silly gunzTarPerm extractEntry findIndex.js +6814 silly gunzTarPerm extractEntry before.js +6815 silly cache afterAdd arr-diff@2.0.0 +6816 verbose afterAdd /home/ruanyf/.tnpm/arr-diff/2.0.0/package/package.json not in flight; writing +6817 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6818 verbose afterAdd /home/ruanyf/.tnpm/inflight/1.0.5/package/package.json written +6819 silly install resolved [ { name: 'once', +6819 silly install resolved version: '1.3.3', +6819 silly install resolved description: 'Run a function exactly one time', +6819 silly install resolved main: 'once.js', +6819 silly install resolved directories: { test: 'test' }, +6819 silly install resolved dependencies: { wrappy: '1' }, +6819 silly install resolved devDependencies: { tap: '^1.2.0' }, +6819 silly install resolved scripts: { test: 'tap test/*.js' }, +6819 silly install resolved files: [ 'once.js' ], +6819 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/once.git' }, +6819 silly install resolved keywords: [ 'once', 'function', 'one', 'single' ], +6819 silly install resolved author: +6819 silly install resolved { name: 'Isaac Z. Schlueter', +6819 silly install resolved email: 'i@izs.me', +6819 silly install resolved url: 'http://blog.izs.me/' }, +6819 silly install resolved license: 'ISC', +6819 silly install resolved gitHead: '2ad558657e17fafd24803217ba854762842e4178', +6819 silly install resolved bugs: { url: 'https://github.com/isaacs/once/issues' }, +6819 silly install resolved homepage: 'https://github.com/isaacs/once#readme', +6819 silly install resolved _id: 'once@1.3.3', +6819 silly install resolved _shasum: 'b2e261557ce4c314ec8304f3fa82663e4297ca20', +6819 silly install resolved _from: 'once@>=1.3.0 <2.0.0', +6819 silly install resolved _npmVersion: '3.3.2', +6819 silly install resolved _nodeVersion: '4.0.0', +6819 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +6819 silly install resolved dist: +6819 silly install resolved { shasum: 'b2e261557ce4c314ec8304f3fa82663e4297ca20', +6819 silly install resolved size: 1573, +6819 silly install resolved noattachment: false, +6819 silly install resolved key: 'once/-/once-1.3.3.tgz', +6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/once/download/once-1.3.3.tgz' }, +6819 silly install resolved maintainers: [ [Object] ], +6819 silly install resolved publish_time: 1448055914765, +6819 silly install resolved _cnpm_publish_time: 1448055914765, +6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/once/download/once-1.3.3.tgz', +6819 silly install resolved readme: 'ERROR: No README data found!' }, +6819 silly install resolved { name: 'inherits', +6819 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', +6819 silly install resolved version: '2.0.1', +6819 silly install resolved keywords: +6819 silly install resolved [ 'inheritance', +6819 silly install resolved 'class', +6819 silly install resolved 'klass', +6819 silly install resolved 'oop', +6819 silly install resolved 'object-oriented', +6819 silly install resolved 'inherits', +6819 silly install resolved 'browser', +6819 silly install resolved 'browserify' ], +6819 silly install resolved main: './inherits.js', +6819 silly install resolved browser: './inherits_browser.js', +6819 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, +6819 silly install resolved license: 'ISC', +6819 silly install resolved scripts: { test: 'node test' }, +6819 silly install resolved readmeFilename: 'README.md', +6819 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, +6819 silly install resolved _id: 'inherits@2.0.1', +6819 silly install resolved dist: +6819 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +6819 silly install resolved size: 2122, +6819 silly install resolved noattachment: false, +6819 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', +6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, +6819 silly install resolved _from: 'inherits@>=2.0.0 <3.0.0', +6819 silly install resolved _npmVersion: '1.3.8', +6819 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +6819 silly install resolved maintainers: [ [Object] ], +6819 silly install resolved directories: {}, +6819 silly install resolved publish_time: 1376950220463, +6819 silly install resolved _cnpm_publish_time: 1376950220463, +6819 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', +6819 silly install resolved readme: 'ERROR: No README data found!', +6819 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' }, +6819 silly install resolved { name: 'path-is-absolute', +6819 silly install resolved version: '1.0.0', +6819 silly install resolved description: 'Node.js 0.12 path.isAbsolute() ponyfill', +6819 silly install resolved license: 'MIT', +6819 silly install resolved repository: +6819 silly install resolved { type: 'git', +6819 silly install resolved url: 'git+https://github.com/sindresorhus/path-is-absolute.git' }, +6819 silly install resolved author: +6819 silly install resolved { name: 'Sindre Sorhus', +6819 silly install resolved email: 'sindresorhus@gmail.com', +6819 silly install resolved url: 'sindresorhus.com' }, +6819 silly install resolved engines: { node: '>=0.10.0' }, +6819 silly install resolved scripts: { test: 'node test.js' }, +6819 silly install resolved files: [ 'index.js' ], +6819 silly install resolved keywords: +6819 silly install resolved [ 'path', +6819 silly install resolved 'paths', +6819 silly install resolved 'file', +6819 silly install resolved 'dir', +6819 silly install resolved 'absolute', +6819 silly install resolved 'isabsolute', +6819 silly install resolved 'is-absolute', +6819 silly install resolved 'built-in', +6819 silly install resolved 'util', +6819 silly install resolved 'utils', +6819 silly install resolved 'core', +6819 silly install resolved 'ponyfill', +6819 silly install resolved 'polyfill', +6819 silly install resolved 'shim', +6819 silly install resolved 'is', +6819 silly install resolved 'detect', +6819 silly install resolved 'check' ], +6819 silly install resolved gitHead: '7a76a0c9f2263192beedbe0a820e4d0baee5b7a1', +6819 silly install resolved bugs: { url: 'https://github.com/sindresorhus/path-is-absolute/issues' }, +6819 silly install resolved homepage: 'https://github.com/sindresorhus/path-is-absolute', +6819 silly install resolved _id: 'path-is-absolute@1.0.0', +6819 silly install resolved _shasum: '263dada66ab3f2fb10bf7f9d24dd8f3e570ef912', +6819 silly install resolved _from: 'path-is-absolute@>=1.0.0 <2.0.0', +6819 silly install resolved _npmVersion: '2.5.1', +6819 silly install resolved _nodeVersion: '0.12.0', +6819 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, +6819 silly install resolved maintainers: [ [Object] ], +6819 silly install resolved dist: +6819 silly install resolved { shasum: '263dada66ab3f2fb10bf7f9d24dd8f3e570ef912', +6819 silly install resolved size: 1846, +6819 silly install resolved noattachment: false, +6819 silly install resolved key: 'path-is-absolute/-/path-is-absolute-1.0.0.tgz', +6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/path-is-absolute/download/path-is-absolute-1.0.0.tgz' }, +6819 silly install resolved directories: {}, +6819 silly install resolved publish_time: 1424142704044, +6819 silly install resolved _cnpm_publish_time: 1424142704044, +6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/path-is-absolute/download/path-is-absolute-1.0.0.tgz', +6819 silly install resolved readme: 'ERROR: No README data found!' }, +6819 silly install resolved { author: +6819 silly install resolved { name: 'Isaac Z. Schlueter', +6819 silly install resolved email: 'i@izs.me', +6819 silly install resolved url: 'http://blog.izs.me' }, +6819 silly install resolved name: 'minimatch', +6819 silly install resolved description: 'a glob matcher in javascript', +6819 silly install resolved version: '3.0.0', +6819 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/minimatch.git' }, +6819 silly install resolved main: 'minimatch.js', +6819 silly install resolved scripts: +6819 silly install resolved { posttest: 'standard minimatch.js test/*.js', +6819 silly install resolved test: 'tap test/*.js' }, +6819 silly install resolved engines: { node: '*' }, +6819 silly install resolved dependencies: { 'brace-expansion': '^1.0.0' }, +6819 silly install resolved devDependencies: { standard: '^3.7.2', tap: '^1.2.0' }, +6819 silly install resolved license: 'ISC', +6819 silly install resolved files: [ 'minimatch.js' ], +6819 silly install resolved gitHead: '270dbea567f0af6918cb18103e98c612aa717a20', +6819 silly install resolved bugs: { url: 'https://github.com/isaacs/minimatch/issues' }, +6819 silly install resolved homepage: 'https://github.com/isaacs/minimatch#readme', +6819 silly install resolved _id: 'minimatch@3.0.0', +6819 silly install resolved _shasum: '5236157a51e4f004c177fb3c527ff7dd78f0ef83', +6819 silly install resolved _from: 'minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0', +6819 silly install resolved _npmVersion: '3.3.2', +6819 silly install resolved _nodeVersion: '4.0.0', +6819 silly install resolved _npmUser: { name: 'isaacs', email: 'isaacs@npmjs.com' }, +6819 silly install resolved dist: +6819 silly install resolved { shasum: '5236157a51e4f004c177fb3c527ff7dd78f0ef83', +6819 silly install resolved size: 11354, +6819 silly install resolved noattachment: false, +6819 silly install resolved key: 'minimatch/-/minimatch-3.0.0.tgz', +6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/minimatch/download/minimatch-3.0.0.tgz' }, +6819 silly install resolved maintainers: [ [Object] ], +6819 silly install resolved directories: {}, +6819 silly install resolved publish_time: 1443377939997, +6819 silly install resolved _cnpm_publish_time: 1443377939997, +6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/minimatch/download/minimatch-3.0.0.tgz', +6819 silly install resolved readme: 'ERROR: No README data found!' }, +6819 silly install resolved { name: 'inflight', +6819 silly install resolved version: '1.0.5', +6819 silly install resolved description: 'Add callbacks to requests in flight to avoid async duplication', +6819 silly install resolved main: 'inflight.js', +6819 silly install resolved files: [ 'inflight.js' ], +6819 silly install resolved dependencies: { once: '^1.3.0', wrappy: '1' }, +6819 silly install resolved devDependencies: { tap: '^1.2.0' }, +6819 silly install resolved scripts: { test: 'tap test.js' }, +6819 silly install resolved repository: { type: 'git', url: 'git+https://github.com/npm/inflight.git' }, +6819 silly install resolved author: +6819 silly install resolved { name: 'Isaac Z. Schlueter', +6819 silly install resolved email: 'i@izs.me', +6819 silly install resolved url: 'http://blog.izs.me/' }, +6819 silly install resolved bugs: { url: 'https://github.com/isaacs/inflight/issues' }, +6819 silly install resolved homepage: 'https://github.com/isaacs/inflight', +6819 silly install resolved license: 'ISC', +6819 silly install resolved gitHead: '559e37b4f6327fca797fe8d7fe8ed6d9cae08821', +6819 silly install resolved _id: 'inflight@1.0.5', +6819 silly install resolved _shasum: 'db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a', +6819 silly install resolved _from: 'inflight@>=1.0.4 <2.0.0', +6819 silly install resolved _npmVersion: '3.9.1', +6819 silly install resolved _nodeVersion: '5.10.1', +6819 silly install resolved _npmUser: { name: 'zkat', email: 'kat@sykosomatic.org' }, +6819 silly install resolved dist: +6819 silly install resolved { shasum: 'db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a', +6819 silly install resolved size: 1802, +6819 silly install resolved noattachment: false, +6819 silly install resolved key: 'inflight/-/inflight-1.0.5.tgz', +6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz' }, +6819 silly install resolved maintainers: [ [Object], [Object], [Object], [Object] ], +6819 silly install resolved _npmOperationalInternal: +6819 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +6819 silly install resolved tmp: 'tmp/inflight-1.0.5.tgz_1463529611443_0.00041943578980863094' }, +6819 silly install resolved directories: {}, +6819 silly install resolved publish_time: 1463529612031, +6819 silly install resolved _cnpm_publish_time: 1463529612031, +6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz' } ] +6820 info install once@1.3.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +6821 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +6822 info install path-is-absolute@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +6823 info install minimatch@3.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +6824 info install inflight@1.0.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +6825 info installOne once@1.3.3 +6826 verbose installOne of once to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing +6827 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6828 info installOne inherits@2.0.1 +6829 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing +6830 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6831 info installOne path-is-absolute@1.0.0 +6832 verbose installOne of path-is-absolute to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing +6833 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6834 info installOne minimatch@3.0.0 +6835 verbose installOne of minimatch to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing +6836 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6837 info installOne inflight@1.0.5 +6838 verbose installOne of inflight to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing +6839 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6840 verbose afterAdd /home/ruanyf/.tnpm/array-unique/0.2.1/package/package.json written +6841 verbose afterAdd /home/ruanyf/.tnpm/extglob/0.3.2/package/package.json written +6842 verbose afterAdd /home/ruanyf/.tnpm/parse-glob/3.0.4/package/package.json written +6843 verbose afterAdd /home/ruanyf/.tnpm/object.omit/2.0.0/package/package.json written +6844 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise/package.json +6845 silly cache afterAdd expand-brackets@0.1.5 +6846 verbose afterAdd /home/ruanyf/.tnpm/expand-brackets/0.1.5/package/package.json not in flight; writing +6847 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6848 silly fetchAndShaCheck shasum 857fcabfc3397d2625b8228262e86aa7a011b05d +6849 silly gunzTarPerm extractEntry README.md +6850 silly gunzTarPerm extractEntry LICENSE +6851 verbose lock using /home/ruanyf/.tnpm/_locks/once-3b39f43119512bf7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +6852 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-5272b9fa3dc7f017.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits +6853 verbose lock using /home/ruanyf/.tnpm/_locks/path-is-absolute-ff20d4dad5e47d08.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute +6854 verbose lock using /home/ruanyf/.tnpm/_locks/minimatch-57daa14adac5f015.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +6855 verbose lock using /home/ruanyf/.tnpm/_locks/inflight-a854246701206d7f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +6856 verbose afterAdd /home/ruanyf/.tnpm/kind-of/3.0.3/package/package.json written +6857 verbose afterAdd /home/ruanyf/.tnpm/braces/1.8.4/package/package.json written +6858 silly install write writing once 1.3.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +6859 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits +6860 silly install write writing path-is-absolute 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute +6861 silly install write writing minimatch 3.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +6862 silly install write writing inflight 1.0.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +6863 silly gunzTarPerm extractEntry readme.md +6864 silly gunzTarPerm extractEntry readme.md +6865 silly gunzTarPerm extractEntry readme.md +6866 verbose afterAdd /home/ruanyf/.tnpm/arr-diff/2.0.0/package/package.json written +6867 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz not in flight; adding +6868 verbose addTmpTarball already have metadata; skipping unpack for minimist@0.0.8 +6869 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +6870 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims/package.json +6871 verbose afterAdd /home/ruanyf/.tnpm/expand-brackets/0.1.5/package/package.json written +6872 silly install resolved [ { name: 'is-glob', +6872 silly install resolved description: 'Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet', +6872 silly install resolved version: '2.0.1', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/is-glob', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/is-glob.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-glob/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: { test: 'mocha' }, +6872 silly install resolved dependencies: { 'is-extglob': '^1.0.0' }, +6872 silly install resolved devDependencies: { mocha: '*' }, +6872 silly install resolved keywords: +6872 silly install resolved [ 'bash', +6872 silly install resolved 'braces', +6872 silly install resolved 'check', +6872 silly install resolved 'exec', +6872 silly install resolved 'extglob', +6872 silly install resolved 'expression', +6872 silly install resolved 'glob', +6872 silly install resolved 'globbing', +6872 silly install resolved 'globstar', +6872 silly install resolved 'match', +6872 silly install resolved 'matches', +6872 silly install resolved 'pattern', +6872 silly install resolved 'regex', +6872 silly install resolved 'regular', +6872 silly install resolved 'string', +6872 silly install resolved 'test' ], +6872 silly install resolved verb: { related: [Object] }, +6872 silly install resolved gitHead: 'd7db1b2dd559b3d5a73f89dbe72d9e9f4d6587d7', +6872 silly install resolved _id: 'is-glob@2.0.1', +6872 silly install resolved _shasum: 'd096f926a3ded5600f3fdfd91198cb0888c2d863', +6872 silly install resolved _from: 'is-glob@>=2.0.0 <3.0.0', +6872 silly install resolved _npmVersion: '2.10.1', +6872 silly install resolved _nodeVersion: '0.12.4', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object], [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: 'd096f926a3ded5600f3fdfd91198cb0888c2d863', +6872 silly install resolved size: 2485, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'is-glob/-/is-glob-2.0.1.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-glob/download/is-glob-2.0.1.tgz' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1443760481446, +6872 silly install resolved _cnpm_publish_time: 1443760481446, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-glob/download/is-glob-2.0.1.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'is-extglob', +6872 silly install resolved description: 'Returns true if a string has an extglob.', +6872 silly install resolved version: '1.0.0', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/is-extglob', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/is-extglob.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-extglob/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: +6872 silly install resolved { test: 'mocha', +6872 silly install resolved prepublish: 'browserify -o browser.js -e index.js' }, +6872 silly install resolved devDependencies: { mocha: '*', should: '*' }, +6872 silly install resolved keywords: +6872 silly install resolved [ 'bash', +6872 silly install resolved 'braces', +6872 silly install resolved 'check', +6872 silly install resolved 'exec', +6872 silly install resolved 'extglob', +6872 silly install resolved 'expression', +6872 silly install resolved 'glob', +6872 silly install resolved 'globbing', +6872 silly install resolved 'globstar', +6872 silly install resolved 'match', +6872 silly install resolved 'matches', +6872 silly install resolved 'pattern', +6872 silly install resolved 'regex', +6872 silly install resolved 'regular', +6872 silly install resolved 'string', +6872 silly install resolved 'test' ], +6872 silly install resolved _id: 'is-extglob@1.0.0', +6872 silly install resolved _shasum: 'ac468177c4943405a092fc8f29760c6ffc6206c0', +6872 silly install resolved _from: 'is-extglob@>=1.0.0 <2.0.0', +6872 silly install resolved _npmVersion: '2.5.1', +6872 silly install resolved _nodeVersion: '0.12.0', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: 'ac468177c4943405a092fc8f29760c6ffc6206c0', +6872 silly install resolved size: 2063, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'is-extglob/-/is-extglob-1.0.0.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-1.0.0.tgz' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1425675623847, +6872 silly install resolved _cnpm_publish_time: 1425675623847, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-1.0.0.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'filename-regex', +6872 silly install resolved description: 'Regular expression for matching file names, with or without extension.', +6872 silly install resolved version: '2.0.0', +6872 silly install resolved homepage: 'https://github.com/regexps/filename-regex', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git://github.com/regexps/filename-regex.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/regexps/filename-regex/issues' }, +6872 silly install resolved license: +6872 silly install resolved { type: 'MIT', +6872 silly install resolved url: 'https://github.com/regexps/filename-regex/blob/master/LICENSE-MIT' }, +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved scripts: { test: 'mocha -R spec' }, +6872 silly install resolved keywords: +6872 silly install resolved [ 'basename', +6872 silly install resolved 'regular expression', +6872 silly install resolved 'file', +6872 silly install resolved 'filename', +6872 silly install resolved 'filepath', +6872 silly install resolved 'match', +6872 silly install resolved 'name', +6872 silly install resolved 'path', +6872 silly install resolved 'regex', +6872 silly install resolved 'regexp' ], +6872 silly install resolved gitHead: 'aa0f2933322d38cf547ff4c8ced882fbd8422866', +6872 silly install resolved _id: 'filename-regex@2.0.0', +6872 silly install resolved _shasum: '996e3e80479b98b9897f15a8a58b3d084e926775', +6872 silly install resolved _from: 'filename-regex@>=2.0.0 <3.0.0', +6872 silly install resolved _npmVersion: '1.4.28', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: '996e3e80479b98b9897f15a8a58b3d084e926775', +6872 silly install resolved size: 1055, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'filename-regex/-/filename-regex-2.0.0.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/filename-regex/download/filename-regex-2.0.0.tgz' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1422107333313, +6872 silly install resolved _cnpm_publish_time: 1422107333313, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/filename-regex/download/filename-regex-2.0.0.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'normalize-path', +6872 silly install resolved description: 'Normalize file path slashes to be unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes.', +6872 silly install resolved version: '2.0.1', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/normalize-path', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/normalize-path.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/normalize-path/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: { test: 'mocha' }, +6872 silly install resolved devDependencies: { benchmarked: '^0.1.1', minimist: '^1.2.0', mocha: '*' }, +6872 silly install resolved keywords: +6872 silly install resolved [ 'backslash', +6872 silly install resolved 'file', +6872 silly install resolved 'filepath', +6872 silly install resolved 'fix', +6872 silly install resolved 'forward', +6872 silly install resolved 'fp', +6872 silly install resolved 'fs', +6872 silly install resolved 'normalize', +6872 silly install resolved 'path', +6872 silly install resolved 'slash', +6872 silly install resolved 'slashes', +6872 silly install resolved 'trailing', +6872 silly install resolved 'unix', +6872 silly install resolved 'urix' ], +6872 silly install resolved verb: { related: [Object] }, +6872 silly install resolved gitHead: 'ca536e0e8755d3ed04f3ba4d21cc9e122e0f749f', +6872 silly install resolved _id: 'normalize-path@2.0.1', +6872 silly install resolved _shasum: '47886ac1662760d4261b7d979d241709d3ce3f7a', +6872 silly install resolved _from: 'normalize-path@>=2.0.1 <3.0.0', +6872 silly install resolved _npmVersion: '3.3.6', +6872 silly install resolved _nodeVersion: '5.0.0', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object], [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: '47886ac1662760d4261b7d979d241709d3ce3f7a', +6872 silly install resolved size: 2540, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'normalize-path/-/normalize-path-2.0.1.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/normalize-path/download/normalize-path-2.0.1.tgz' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1447763545098, +6872 silly install resolved _cnpm_publish_time: 1447763545098, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/normalize-path/download/normalize-path-2.0.1.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'regex-cache', +6872 silly install resolved description: 'Memoize the results of a call to the RegExp constructor, avoiding repetitious runtime compilation of the same string and options, resulting in suprising performance improvements.', +6872 silly install resolved version: '0.4.3', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/regex-cache', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/regex-cache.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/regex-cache/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: { test: 'mocha', benchmarks: 'node benchmark' }, +6872 silly install resolved dependencies: { 'is-equal-shallow': '^0.1.3', 'is-primitive': '^2.0.0' }, +6872 silly install resolved devDependencies: +6872 silly install resolved { benchmarked: '^0.1.5', +6872 silly install resolved chalk: '^1.1.3', +6872 silly install resolved 'gulp-format-md': '^0.1.7', +6872 silly install resolved micromatch: '^2.3.7', +6872 silly install resolved should: '^8.3.0' }, +6872 silly install resolved keywords: +6872 silly install resolved [ 'cache', +6872 silly install resolved 'expression', +6872 silly install resolved 'regex', +6872 silly install resolved 'regexp', +6872 silly install resolved 'regular', +6872 silly install resolved 'regular expression', +6872 silly install resolved 'store', +6872 silly install resolved 'to-regex' ], +6872 silly install resolved verb: +6872 silly install resolved { run: true, +6872 silly install resolved toc: false, +6872 silly install resolved layout: 'default', +6872 silly install resolved tasks: [Object], +6872 silly install resolved plugins: [Object], +6872 silly install resolved reflinks: [Object], +6872 silly install resolved lint: [Object] }, +6872 silly install resolved gitHead: '06ce46bda29a19064a968bd5d2d5596440be05ca', +6872 silly install resolved _id: 'regex-cache@0.4.3', +6872 silly install resolved _shasum: '9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145', +6872 silly install resolved _from: 'regex-cache@>=0.4.2 <0.5.0', +6872 silly install resolved _npmVersion: '3.6.0', +6872 silly install resolved _nodeVersion: '5.5.0', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object], [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: '9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145', +6872 silly install resolved size: 3674, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'regex-cache/-/regex-cache-0.4.3.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/regex-cache/download/regex-cache-0.4.3.tgz' }, +6872 silly install resolved _npmOperationalInternal: +6872 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +6872 silly install resolved tmp: 'tmp/regex-cache-0.4.3.tgz_1459536604904_0.22530420310795307' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1459536607156, +6872 silly install resolved _cnpm_publish_time: 1459536607156, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/regex-cache/download/regex-cache-0.4.3.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'array-unique', +6872 silly install resolved description: 'Return an array free of duplicate values. Fastest ES5 implementation.', +6872 silly install resolved version: '0.2.1', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/array-unique', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git://github.com/jonschlinkert/array-unique.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/array-unique/issues' }, +6872 silly install resolved license: +6872 silly install resolved { type: 'MIT', +6872 silly install resolved url: 'https://github.com/jonschlinkert/array-unique/blob/master/LICENSE' }, +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: { test: 'mocha' }, +6872 silly install resolved devDependencies: +6872 silly install resolved { 'array-uniq': '^1.0.2', +6872 silly install resolved benchmarked: '^0.1.3', +6872 silly install resolved mocha: '*', +6872 silly install resolved should: '*' }, +6872 silly install resolved gitHead: '36fde8e586fb7cf880b8b3aa6515df889e64ed85', +6872 silly install resolved _id: 'array-unique@0.2.1', +6872 silly install resolved _shasum: 'a1d97ccafcbc2625cc70fadceb36a50c58b01a53', +6872 silly install resolved _from: 'array-unique@>=0.2.1 <0.3.0', +6872 silly install resolved _npmVersion: '2.7.1', +6872 silly install resolved _nodeVersion: '1.6.2', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: 'a1d97ccafcbc2625cc70fadceb36a50c58b01a53', +6872 silly install resolved size: 2131, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'array-unique/-/array-unique-0.2.1.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/array-unique/download/array-unique-0.2.1.tgz' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1427255229823, +6872 silly install resolved _cnpm_publish_time: 1427255229823, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/array-unique/download/array-unique-0.2.1.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'extglob', +6872 silly install resolved description: 'Convert extended globs to regex-compatible strings. Add (almost) the expressive power of regular expressions to glob patterns.', +6872 silly install resolved version: '0.3.2', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/extglob', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git://github.com/jonschlinkert/extglob.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/extglob/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: { test: 'mocha' }, +6872 silly install resolved dependencies: { 'is-extglob': '^1.0.0' }, +6872 silly install resolved devDependencies: +6872 silly install resolved { 'ansi-green': '^0.1.1', +6872 silly install resolved micromatch: '^2.1.6', +6872 silly install resolved minimatch: '^2.0.1', +6872 silly install resolved minimist: '^1.1.0', +6872 silly install resolved mocha: '*', +6872 silly install resolved should: '*', +6872 silly install resolved 'success-symbol': '^0.1.0' }, +6872 silly install resolved keywords: [ 'bash', 'extended', 'extglob', 'glob', 'ksh', 'match', 'wildcard' ], +6872 silly install resolved verb: { related: [Object] }, +6872 silly install resolved gitHead: '8c3f38bbd9e0afaf31a87e411c0d15532434ef41', +6872 silly install resolved _id: 'extglob@0.3.2', +6872 silly install resolved _shasum: '2e18ff3d2f49ab2765cec9023f011daa8d8349a1', +6872 silly install resolved _from: 'extglob@>=0.3.1 <0.4.0', +6872 silly install resolved _npmVersion: '3.3.12', +6872 silly install resolved _nodeVersion: '5.3.0', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: '2e18ff3d2f49ab2765cec9023f011daa8d8349a1', +6872 silly install resolved size: 3902, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'extglob/-/extglob-0.3.2.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/extglob/download/extglob-0.3.2.tgz' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1453279498021, +6872 silly install resolved _cnpm_publish_time: 1453279498021, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/extglob/download/extglob-0.3.2.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'parse-glob', +6872 silly install resolved description: 'Parse a glob pattern into an object of tokens.', +6872 silly install resolved version: '3.0.4', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/parse-glob', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/parse-glob.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/parse-glob/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: +6872 silly install resolved { test: 'mocha', +6872 silly install resolved prepublish: 'browserify -o browser.js -e index.js' }, +6872 silly install resolved dependencies: +6872 silly install resolved { 'glob-base': '^0.3.0', +6872 silly install resolved 'is-dotfile': '^1.0.0', +6872 silly install resolved 'is-extglob': '^1.0.0', +6872 silly install resolved 'is-glob': '^2.0.0' }, +6872 silly install resolved devDependencies: { browserify: '^9.0.3', lodash: '^3.3.1', mocha: '*' }, +6872 silly install resolved keywords: +6872 silly install resolved [ 'glob', +6872 silly install resolved 'match', +6872 silly install resolved 'bash', +6872 silly install resolved 'expand', +6872 silly install resolved 'expansion', +6872 silly install resolved 'expression', +6872 silly install resolved 'file', +6872 silly install resolved 'files', +6872 silly install resolved 'filter', +6872 silly install resolved 'find', +6872 silly install resolved 'glob', +6872 silly install resolved 'globbing', +6872 silly install resolved 'globs', +6872 silly install resolved 'globstar', +6872 silly install resolved 'match', +6872 silly install resolved 'matcher', +6872 silly install resolved 'matches', +6872 silly install resolved 'matching', +6872 silly install resolved 'path', +6872 silly install resolved 'pattern', +6872 silly install resolved 'patterns', +6872 silly install resolved 'regex', +6872 silly install resolved 'regexp', +6872 silly install resolved 'regular', +6872 silly install resolved 'shell', +6872 silly install resolved 'wildcard' ], +6872 silly install resolved gitHead: '9bfccb63acdeb3b1ed62035b3adef0e5081d8fc6', +6872 silly install resolved _id: 'parse-glob@3.0.4', +6872 silly install resolved _shasum: 'b2c376cfb11f35513badd173ef0bb6e3a388391c', +6872 silly install resolved _from: 'parse-glob@>=3.0.4 <4.0.0', +6872 silly install resolved _npmVersion: '2.10.1', +6872 silly install resolved _nodeVersion: '0.12.4', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: 'b2c376cfb11f35513badd173ef0bb6e3a388391c', +6872 silly install resolved size: 3991, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'parse-glob/-/parse-glob-3.0.4.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/parse-glob/download/parse-glob-3.0.4.tgz' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1442935106837, +6872 silly install resolved _cnpm_publish_time: 1442935106837, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/parse-glob/download/parse-glob-3.0.4.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'object.omit', +6872 silly install resolved description: 'Return a copy of an object excluding the given key, or array of keys. Also accepts an optional filter function as the last argument.', +6872 silly install resolved version: '2.0.0', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/object.omit', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/object.omit.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/object.omit/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: { test: 'mocha' }, +6872 silly install resolved dependencies: { 'for-own': '^0.1.3', 'is-extendable': '^0.1.1' }, +6872 silly install resolved devDependencies: { mocha: '*', should: '*' }, +6872 silly install resolved verb: { related: [Object] }, +6872 silly install resolved keywords: +6872 silly install resolved [ 'clear', +6872 silly install resolved 'delete', +6872 silly install resolved 'key', +6872 silly install resolved 'value', +6872 silly install resolved 'object', +6872 silly install resolved 'omit', +6872 silly install resolved 'property', +6872 silly install resolved 'remove' ], +6872 silly install resolved gitHead: '6e222f2cf39634faa26f642b06af4eb2050b5e75', +6872 silly install resolved _id: 'object.omit@2.0.0', +6872 silly install resolved _shasum: '868597333d54e60662940bb458605dd6ae12fe94', +6872 silly install resolved _from: 'object.omit@>=2.0.0 <3.0.0', +6872 silly install resolved _npmVersion: '2.10.1', +6872 silly install resolved _nodeVersion: '0.12.4', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: '868597333d54e60662940bb458605dd6ae12fe94', +6872 silly install resolved size: 2550, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'object.omit/-/object.omit-2.0.0.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/object.omit/download/object.omit-2.0.0.tgz' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1437545977141, +6872 silly install resolved _cnpm_publish_time: 1437545977141, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/object.omit/download/object.omit-2.0.0.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'kind-of', +6872 silly install resolved description: 'Get the native type of a value.', +6872 silly install resolved version: '3.0.3', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/kind-of', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/kind-of.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/kind-of/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: +6872 silly install resolved { test: 'mocha', +6872 silly install resolved prepublish: 'browserify -o browser.js -e index.js -s index --bare' }, +6872 silly install resolved dependencies: { 'is-buffer': '^1.0.2' }, +6872 silly install resolved devDependencies: +6872 silly install resolved { 'ansi-bold': '^0.1.1', +6872 silly install resolved benchmarked: '^0.1.3', +6872 silly install resolved browserify: '^11.0.1', +6872 silly install resolved glob: '^4.3.5', +6872 silly install resolved 'gulp-format-md': '^0.1.9', +6872 silly install resolved mocha: '*', +6872 silly install resolved should: '*', +6872 silly install resolved 'type-of': '^2.0.1', +6872 silly install resolved typeof: '^1.0.0' }, +6872 silly install resolved keywords: +6872 silly install resolved [ 'arguments', +6872 silly install resolved 'array', +6872 silly install resolved 'boolean', +6872 silly install resolved 'check', +6872 silly install resolved 'date', +6872 silly install resolved 'function', +6872 silly install resolved 'is', +6872 silly install resolved 'is-type', +6872 silly install resolved 'is-type-of', +6872 silly install resolved 'kind', +6872 silly install resolved 'kind-of', +6872 silly install resolved 'number', +6872 silly install resolved 'object', +6872 silly install resolved 'regexp', +6872 silly install resolved 'string', +6872 silly install resolved 'test', +6872 silly install resolved 'type', +6872 silly install resolved 'type-of', +6872 silly install resolved 'typeof', +6872 silly install resolved 'types' ], +6872 silly install resolved verb: +6872 silly install resolved { related: [Object], +6872 silly install resolved toc: false, +6872 silly install resolved layout: 'default', +6872 silly install resolved tasks: [Object], +6872 silly install resolved plugins: [Object], +6872 silly install resolved lint: [Object], +6872 silly install resolved reflinks: [Object] }, +6872 silly install resolved gitHead: 'c1023c4839a91abd580a4e71fd0763f7fc2ad3f4', +6872 silly install resolved _id: 'kind-of@3.0.3', +6872 silly install resolved _shasum: 'c61608747d815b0362556db3276362a7a38aded3', +6872 silly install resolved _from: 'kind-of@>=3.0.2 <4.0.0', +6872 silly install resolved _npmVersion: '3.6.0', +6872 silly install resolved _nodeVersion: '5.5.0', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object], [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: 'c61608747d815b0362556db3276362a7a38aded3', +6872 silly install resolved size: 4399, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'kind-of/-/kind-of-3.0.3.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.0.3.tgz' }, +6872 silly install resolved _npmOperationalInternal: +6872 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +6872 silly install resolved tmp: 'tmp/kind-of-3.0.3.tgz_1462262974577_0.29414567071944475' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1462262976971, +6872 silly install resolved _cnpm_publish_time: 1462262976971, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.0.3.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'braces', +6872 silly install resolved description: 'Fastest brace expansion for node.js, with the most complete support for the Bash 4.3 braces specification.', +6872 silly install resolved version: '1.8.4', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/braces', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/braces.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/braces/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: { test: 'mocha' }, +6872 silly install resolved dependencies: +6872 silly install resolved { 'expand-range': '^1.8.1', +6872 silly install resolved preserve: '^0.2.0', +6872 silly install resolved 'repeat-element': '^1.1.2' }, +6872 silly install resolved devDependencies: +6872 silly install resolved { benchmarked: '^0.1.5', +6872 silly install resolved 'brace-expansion': '^1.1.3', +6872 silly install resolved chalk: '^1.1.3', +6872 silly install resolved 'gulp-format-md': '^0.1.8', +6872 silly install resolved minimatch: '^3.0.0', +6872 silly install resolved minimist: '^1.2.0', +6872 silly install resolved mocha: '^2.4.5', +6872 silly install resolved should: '^8.3.1' }, +6872 silly install resolved keywords: +6872 silly install resolved [ 'alpha', +6872 silly install resolved 'alphabetical', +6872 silly install resolved 'bash', +6872 silly install resolved 'brace', +6872 silly install resolved 'expand', +6872 silly install resolved 'expansion', +6872 silly install resolved 'filepath', +6872 silly install resolved 'fill', +6872 silly install resolved 'fs', +6872 silly install resolved 'glob', +6872 silly install resolved 'globbing', +6872 silly install resolved 'letter', +6872 silly install resolved 'match', +6872 silly install resolved 'matches', +6872 silly install resolved 'matching', +6872 silly install resolved 'number', +6872 silly install resolved 'numerical', +6872 silly install resolved 'path', +6872 silly install resolved 'range', +6872 silly install resolved 'ranges', +6872 silly install resolved 'sh' ], +6872 silly install resolved verb: +6872 silly install resolved { plugins: [Object], +6872 silly install resolved reflinks: [Object], +6872 silly install resolved toc: false, +6872 silly install resolved layout: 'default', +6872 silly install resolved lint: [Object], +6872 silly install resolved tasks: [Object], +6872 silly install resolved related: [Object] }, +6872 silly install resolved gitHead: 'de218311bfb9d3c72531beafec67c6572b5e9c18', +6872 silly install resolved _id: 'braces@1.8.4', +6872 silly install resolved _shasum: '75e2d6456d48b06dbb5205ed63442a3bfc5eefce', +6872 silly install resolved _from: 'braces@>=1.8.2 <2.0.0', +6872 silly install resolved _npmVersion: '3.6.0', +6872 silly install resolved _nodeVersion: '5.5.0', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object], [Object], [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: '75e2d6456d48b06dbb5205ed63442a3bfc5eefce', +6872 silly install resolved size: 6001, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'braces/-/braces-1.8.4.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/braces/download/braces-1.8.4.tgz' }, +6872 silly install resolved _npmOperationalInternal: +6872 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +6872 silly install resolved tmp: 'tmp/braces-1.8.4.tgz_1461140683394_0.9431159163359553' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1461140685636, +6872 silly install resolved _cnpm_publish_time: 1461140685636, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/braces/download/braces-1.8.4.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'arr-diff', +6872 silly install resolved description: 'Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.', +6872 silly install resolved version: '2.0.0', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/arr-diff', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/arr-diff.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/arr-diff/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: { test: 'mocha' }, +6872 silly install resolved dependencies: { 'arr-flatten': '^1.0.1' }, +6872 silly install resolved devDependencies: +6872 silly install resolved { 'array-differ': '^1.0.0', +6872 silly install resolved 'array-slice': '^0.2.3', +6872 silly install resolved benchmarked: '^0.1.4', +6872 silly install resolved chalk: '^1.1.1', +6872 silly install resolved mocha: '*', +6872 silly install resolved should: '*' }, +6872 silly install resolved keywords: [ 'arr', 'array', 'diff', 'differ', 'difference' ], +6872 silly install resolved verb: { related: [Object] }, +6872 silly install resolved gitHead: 'b89f54eb88ca51afd0e0ea6be9a4a63e5ccecf27', +6872 silly install resolved _id: 'arr-diff@2.0.0', +6872 silly install resolved _shasum: '8f3b827f955a8bd669697e4a4256ac3ceae356cf', +6872 silly install resolved _from: 'arr-diff@>=2.0.0 <3.0.0', +6872 silly install resolved _npmVersion: '3.3.6', +6872 silly install resolved _nodeVersion: '5.0.0', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object], [Object], [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: '8f3b827f955a8bd669697e4a4256ac3ceae356cf', +6872 silly install resolved size: 2431, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'arr-diff/-/arr-diff-2.0.0.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/arr-diff/download/arr-diff-2.0.0.tgz' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1449375974109, +6872 silly install resolved _cnpm_publish_time: 1449375974109, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/arr-diff/download/arr-diff-2.0.0.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' }, +6872 silly install resolved { name: 'expand-brackets', +6872 silly install resolved description: 'Expand POSIX bracket expressions (character classes) in glob patterns.', +6872 silly install resolved version: '0.1.5', +6872 silly install resolved homepage: 'https://github.com/jonschlinkert/expand-brackets', +6872 silly install resolved author: +6872 silly install resolved { name: 'Jon Schlinkert', +6872 silly install resolved url: 'https://github.com/jonschlinkert' }, +6872 silly install resolved repository: +6872 silly install resolved { type: 'git', +6872 silly install resolved url: 'git+https://github.com/jonschlinkert/expand-brackets.git' }, +6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/expand-brackets/issues' }, +6872 silly install resolved license: 'MIT', +6872 silly install resolved files: [ 'index.js' ], +6872 silly install resolved main: 'index.js', +6872 silly install resolved engines: { node: '>=0.10.0' }, +6872 silly install resolved scripts: { test: 'mocha' }, +6872 silly install resolved dependencies: { 'is-posix-bracket': '^0.1.0' }, +6872 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.7', mocha: '^2.2.5', should: '^7.0.2' }, +6872 silly install resolved keywords: [ 'bracket', 'character class', 'expression', 'posix' ], +6872 silly install resolved verb: +6872 silly install resolved { run: true, +6872 silly install resolved toc: false, +6872 silly install resolved layout: 'default', +6872 silly install resolved tasks: [Object], +6872 silly install resolved plugins: [Object], +6872 silly install resolved related: [Object], +6872 silly install resolved reflinks: [Object], +6872 silly install resolved lint: [Object] }, +6872 silly install resolved gitHead: '1b07fda8ee8b6426d95e6539785b74c57e9ee542', +6872 silly install resolved _id: 'expand-brackets@0.1.5', +6872 silly install resolved _shasum: 'df07284e342a807cd733ac5af72411e581d1177b', +6872 silly install resolved _from: 'expand-brackets@>=0.1.4 <0.2.0', +6872 silly install resolved _npmVersion: '3.6.0', +6872 silly install resolved _nodeVersion: '5.5.0', +6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +6872 silly install resolved maintainers: [ [Object], [Object], [Object] ], +6872 silly install resolved dist: +6872 silly install resolved { shasum: 'df07284e342a807cd733ac5af72411e581d1177b', +6872 silly install resolved size: 3659, +6872 silly install resolved noattachment: false, +6872 silly install resolved key: 'expand-brackets/-/expand-brackets-0.1.5.tgz', +6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/expand-brackets/download/expand-brackets-0.1.5.tgz' }, +6872 silly install resolved _npmOperationalInternal: +6872 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +6872 silly install resolved tmp: 'tmp/expand-brackets-0.1.5.tgz_1459554506001_0.9547659594099969' }, +6872 silly install resolved directories: {}, +6872 silly install resolved publish_time: 1459554508244, +6872 silly install resolved _cnpm_publish_time: 1459554508244, +6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/expand-brackets/download/expand-brackets-0.1.5.tgz', +6872 silly install resolved readme: 'ERROR: No README data found!' } ] +6873 info install is-glob@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6874 info install is-extglob@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6875 info install filename-regex@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6876 info install normalize-path@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6877 info install regex-cache@0.4.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6878 info install array-unique@0.2.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6879 info install extglob@0.3.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6880 info install parse-glob@3.0.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6881 info install object.omit@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6882 info install kind-of@3.0.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6883 info install braces@1.8.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6884 info install arr-diff@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6885 info install expand-brackets@0.1.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +6886 info installOne is-glob@2.0.1 +6887 verbose installOne of is-glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6888 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6889 info installOne is-extglob@1.0.0 +6890 verbose installOne of is-extglob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6891 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6892 info installOne filename-regex@2.0.0 +6893 verbose installOne of filename-regex to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6894 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6895 info installOne normalize-path@2.0.1 +6896 verbose installOne of normalize-path to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6897 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6898 info installOne regex-cache@0.4.3 +6899 verbose installOne of regex-cache to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6900 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6901 info installOne array-unique@0.2.1 +6902 verbose installOne of array-unique to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6903 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6904 info installOne extglob@0.3.2 +6905 verbose installOne of extglob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6906 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6907 info installOne parse-glob@3.0.4 +6908 verbose installOne of parse-glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6909 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6910 info installOne object.omit@2.0.0 +6911 verbose installOne of object.omit to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6912 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6913 info installOne kind-of@3.0.3 +6914 verbose installOne of kind-of to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6915 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6916 info installOne braces@1.8.4 +6917 verbose installOne of braces to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6918 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6919 info installOne arr-diff@2.0.0 +6920 verbose installOne of arr-diff to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6921 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6922 info installOne expand-brackets@0.1.5 +6923 verbose installOne of expand-brackets to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing +6924 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +6925 silly install resolved [] +6926 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise +6927 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise +6928 silly gunzTarPerm extractEntry example/str.js +6929 silly gunzTarPerm extractEntry example/value_cmp.js +6930 silly gunzTarPerm extractEntry lib/_stream_duplex.js +6931 silly gunzTarPerm extractEntry lib/_stream_passthrough.js +6932 silly gunzTarPerm extractEntry findKey.js +6933 silly gunzTarPerm extractEntry attempt.js +6934 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +6935 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits +6936 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute +6937 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +6938 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +6939 verbose lock using /home/ruanyf/.tnpm/_locks/is-glob-471d4436f01dafa7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob +6940 verbose lock using /home/ruanyf/.tnpm/_locks/is-extglob-82e285b1f8e6e677.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob +6941 verbose lock using /home/ruanyf/.tnpm/_locks/filename-regex-4d7ec169971d8203.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex +6942 verbose lock using /home/ruanyf/.tnpm/_locks/normalize-path-a6a45378975aa8fb.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path +6943 verbose lock using /home/ruanyf/.tnpm/_locks/regex-cache-d532aad21fcda594.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +6944 verbose lock using /home/ruanyf/.tnpm/_locks/array-unique-563063201a1b39e1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique +6945 verbose lock using /home/ruanyf/.tnpm/_locks/extglob-ce4a0e7242960176.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob +6946 verbose lock using /home/ruanyf/.tnpm/_locks/kind-of-89c7d16b0f8411bd.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +6947 verbose lock using /home/ruanyf/.tnpm/_locks/parse-glob-6752b9eef668ad41.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +6948 verbose lock using /home/ruanyf/.tnpm/_locks/object-omit-35dbc341880dbc51.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +6949 verbose lock using /home/ruanyf/.tnpm/_locks/braces-097842f0c137e8be.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +6950 verbose lock using /home/ruanyf/.tnpm/_locks/arr-diff-2732b6abfce275e8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +6951 verbose lock using /home/ruanyf/.tnpm/_locks/expand-brackets-2c87c72b7dba14b4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +6952 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/package.json +6953 silly install write writing is-glob 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob +6954 silly install write writing is-extglob 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob +6955 silly install write writing filename-regex 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex +6956 silly install write writing normalize-path 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path +6957 silly install write writing regex-cache 0.4.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +6958 silly install write writing array-unique 0.2.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique +6959 silly install write writing extglob 0.3.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob +6960 silly install write writing kind-of 3.0.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +6961 silly install write writing parse-glob 3.0.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +6962 silly install write writing object.omit 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +6963 silly install write writing braces 1.8.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +6964 silly install write writing arr-diff 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +6965 silly install write writing expand-brackets 0.1.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +6966 info preinstall buffer-shims@1.0.0 +6967 silly gunzTarPerm extractEntry dist/rx.lite.extras.compat.js +6968 silly gunzTarPerm extractEntry index.js +6969 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once is being purged from base /home/ruanyf/npm-global +6970 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +6971 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits is being purged from base /home/ruanyf/npm-global +6972 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits +6973 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute is being purged from base /home/ruanyf/npm-global +6974 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute +6975 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch is being purged from base /home/ruanyf/npm-global +6976 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +6977 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight is being purged from base /home/ruanyf/npm-global +6978 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +6979 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims/package.json +6980 info linkStuff is-promise@2.1.0 +6981 silly linkStuff is-promise@2.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules as its parent node_modules +6982 silly linkStuff is-promise@2.1.0 is part of a global install +6983 silly linkStuff is-promise@2.1.0 is installed into a global node_modules +6984 verbose tar unpack /home/ruanyf/.tnpm/once/1.3.3/package.tgz +6985 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +6986 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once is being purged +6987 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +6988 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz +6989 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits +6990 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits is being purged +6991 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits +6992 verbose tar unpack /home/ruanyf/.tnpm/path-is-absolute/1.0.0/package.tgz +6993 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute +6994 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute is being purged +6995 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute +6996 verbose tar unpack /home/ruanyf/.tnpm/minimatch/3.0.0/package.tgz +6997 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +6998 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch is being purged +6999 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +7000 verbose tar unpack /home/ruanyf/.tnpm/inflight/1.0.5/package.tgz +7001 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +7002 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight is being purged +7003 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +7004 info preinstall once@1.3.3 +7005 silly gunzTarPerm modes [ '755', '644' ] +7006 silly gunzTarPerm modes [ '755', '644' ] +7007 silly gunzTarPerm modes [ '755', '644' ] +7008 silly gunzTarPerm modes [ '755', '644' ] +7009 silly gunzTarPerm modes [ '755', '644' ] +7010 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob +7011 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob +7012 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex +7013 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path +7014 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +7015 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique +7016 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob +7017 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +7018 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +7019 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +7020 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +7021 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +7022 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +7023 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder/package.json +7024 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/package.json +7025 verbose linkBins is-promise@2.1.0 +7026 verbose linkMans is-promise@2.1.0 +7027 verbose rebuildBundles is-promise@2.1.0 +7028 silly gunzTarPerm extractEntry lib/_stream_readable.js +7029 info install is-promise@2.1.0 +7030 silly gunzTarPerm extractEntry readme.markdown +7031 silly gunzTarPerm extractEntry test/cmp.js +7032 silly gunzTarPerm extractEntry test/nested.js +7033 silly gunzTarPerm extractEntry test/replacer.js +7034 silly gunzTarPerm extractEntry test/space.js +7035 silly gunzTarPerm extractEntry test/str.js +7036 silly gunzTarPerm extractEntry test/to-json.js +7037 silly gunzTarPerm extractEntry findLast.js +7038 silly gunzTarPerm extractEntry at.js +7039 silly gunzTarPerm extractEntry dist/rx.aggregates.min.js +7040 silly gunzTarPerm extractEntry dist/rx.lite.compat.min.js +7041 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob is being purged from base /home/ruanyf/npm-global +7042 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob +7043 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob is being purged from base /home/ruanyf/npm-global +7044 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob +7045 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex is being purged from base /home/ruanyf/npm-global +7046 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex +7047 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path is being purged from base /home/ruanyf/npm-global +7048 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path +7049 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache is being purged from base /home/ruanyf/npm-global +7050 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +7051 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique is being purged from base /home/ruanyf/npm-global +7052 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique +7053 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob is being purged from base /home/ruanyf/npm-global +7054 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob +7055 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of is being purged from base /home/ruanyf/npm-global +7056 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +7057 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob is being purged from base /home/ruanyf/npm-global +7058 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +7059 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit is being purged from base /home/ruanyf/npm-global +7060 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +7061 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces is being purged from base /home/ruanyf/npm-global +7062 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +7063 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff is being purged from base /home/ruanyf/npm-global +7064 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +7065 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets is being purged from base /home/ruanyf/npm-global +7066 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +7067 info postinstall is-promise@2.1.0 +7068 silly gunzTarPerm extractEntry package.json +7069 verbose tar unpack /home/ruanyf/.tnpm/is-extglob/1.0.0/package.tgz +7070 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob +7071 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob is being purged +7072 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob +7073 verbose tar unpack /home/ruanyf/.tnpm/is-glob/2.0.1/package.tgz +7074 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob +7075 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob is being purged +7076 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob +7077 verbose tar unpack /home/ruanyf/.tnpm/filename-regex/2.0.0/package.tgz +7078 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex +7079 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex is being purged +7080 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex +7081 verbose tar unpack /home/ruanyf/.tnpm/normalize-path/2.0.1/package.tgz +7082 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path +7083 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path is being purged +7084 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path +7085 verbose tar unpack /home/ruanyf/.tnpm/regex-cache/0.4.3/package.tgz +7086 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +7087 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache is being purged +7088 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +7089 verbose tar unpack /home/ruanyf/.tnpm/array-unique/0.2.1/package.tgz +7090 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique +7091 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique is being purged +7092 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique +7093 verbose tar unpack /home/ruanyf/.tnpm/extglob/0.3.2/package.tgz +7094 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob +7095 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob is being purged +7096 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob +7097 verbose tar unpack /home/ruanyf/.tnpm/kind-of/3.0.3/package.tgz +7098 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +7099 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of is being purged +7100 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +7101 verbose tar unpack /home/ruanyf/.tnpm/parse-glob/3.0.4/package.tgz +7102 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +7103 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob is being purged +7104 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +7105 verbose tar unpack /home/ruanyf/.tnpm/object.omit/2.0.0/package.tgz +7106 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +7107 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit is being purged +7108 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +7109 verbose tar unpack /home/ruanyf/.tnpm/braces/1.8.4/package.tgz +7110 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +7111 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces is being purged +7112 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +7113 verbose tar unpack /home/ruanyf/.tnpm/arr-diff/2.0.0/package.tgz +7114 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +7115 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff is being purged +7116 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +7117 verbose tar unpack /home/ruanyf/.tnpm/expand-brackets/0.1.5/package.tgz +7118 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +7119 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets is being purged +7120 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +7121 info preinstall string_decoder@0.10.31 +7122 silly gunzTarPerm extractEntry package.json +7123 silly gunzTarPerm extractEntry package.json +7124 silly gunzTarPerm extractEntry package.json +7125 silly gunzTarPerm extractEntry package.json +7126 silly gunzTarPerm extractEntry dist/rx.coincidence.min.js +7127 silly gunzTarPerm modes [ '755', '644' ] +7128 silly gunzTarPerm modes [ '755', '644' ] +7129 silly gunzTarPerm modes [ '755', '644' ] +7130 silly gunzTarPerm modes [ '755', '644' ] +7131 silly gunzTarPerm modes [ '755', '644' ] +7132 silly gunzTarPerm modes [ '755', '644' ] +7133 silly gunzTarPerm modes [ '755', '644' ] +7134 silly gunzTarPerm modes [ '755', '644' ] +7135 silly gunzTarPerm modes [ '755', '644' ] +7136 silly gunzTarPerm modes [ '755', '644' ] +7137 silly gunzTarPerm modes [ '755', '644' ] +7138 silly gunzTarPerm modes [ '755', '644' ] +7139 silly gunzTarPerm modes [ '755', '644' ] +7140 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder/package.json +7141 silly prepareForInstallMany adding wrappy@1 from once dependencies +7142 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/package.json +7143 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-promise-42edfdb63885d862.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise +7144 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +7145 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +7146 silly cache afterAdd minimist@0.0.8 +7147 verbose afterAdd /home/ruanyf/.tnpm/minimist/0.0.8/package/package.json not in flight; writing +7148 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +7149 silly gunzTarPerm extractEntry README.md +7150 silly gunzTarPerm extractEntry LICENSE +7151 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits/package.json +7152 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims/package.json +7153 silly gunzTarPerm extractEntry README.md +7154 silly gunzTarPerm extractEntry LICENSE +7155 silly gunzTarPerm extractEntry README.md +7156 silly gunzTarPerm extractEntry LICENSE +7157 silly gunzTarPerm extractEntry index.js +7158 silly gunzTarPerm extractEntry license +7159 silly gunzTarPerm extractEntry README.md +7160 silly gunzTarPerm extractEntry LICENSE +7161 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args/package.json +7162 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate/package.json +7163 silly gunzTarPerm extractEntry lib/_stream_transform.js +7164 silly gunzTarPerm extractEntry lib/_stream_writable.js +7165 silly gunzTarPerm extractEntry package.json +7166 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream/package.json +7167 silly gunzTarPerm extractEntry package.json +7168 silly gunzTarPerm extractEntry package.json +7169 silly gunzTarPerm extractEntry package.json +7170 silly gunzTarPerm extractEntry package.json +7171 silly gunzTarPerm modified mode [ 'package.json', 448, 484 ] +7172 silly gunzTarPerm extractEntry package.json +7173 silly gunzTarPerm extractEntry package.json +7174 silly gunzTarPerm extractEntry package.json +7175 silly gunzTarPerm extractEntry package.json +7176 silly gunzTarPerm extractEntry package.json +7177 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is/package.json +7178 silly gunzTarPerm extractEntry package.json +7179 silly gunzTarPerm extractEntry package.json +7180 silly gunzTarPerm extractEntry package.json +7181 info linkStuff run-async@2.2.0 +7182 silly linkStuff run-async@2.2.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +7183 silly linkStuff run-async@2.2.0 is part of a global install +7184 silly linkStuff run-async@2.2.0 is installed into a global node_modules +7185 silly gunzTarPerm extractEntry findLastIndex.js +7186 silly gunzTarPerm extractEntry assignWith.js +7187 verbose afterAdd /home/ruanyf/.tnpm/minimist/0.0.8/package/package.json written +7188 silly install resolved [ { name: 'minimist', +7188 silly install resolved version: '0.0.8', +7188 silly install resolved description: 'parse argument options', +7188 silly install resolved main: 'index.js', +7188 silly install resolved devDependencies: { tape: '~1.0.4', tap: '~0.4.0' }, +7188 silly install resolved scripts: { test: 'tap test/*.js' }, +7188 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, +7188 silly install resolved repository: { type: 'git', url: 'git://github.com/substack/minimist.git' }, +7188 silly install resolved homepage: 'https://github.com/substack/minimist', +7188 silly install resolved keywords: [ 'argv', 'getopt', 'parser', 'optimist' ], +7188 silly install resolved author: +7188 silly install resolved { name: 'James Halliday', +7188 silly install resolved email: 'mail@substack.net', +7188 silly install resolved url: 'http://substack.net' }, +7188 silly install resolved license: 'MIT', +7188 silly install resolved bugs: { url: 'https://github.com/substack/minimist/issues' }, +7188 silly install resolved _id: 'minimist@0.0.8', +7188 silly install resolved dist: +7188 silly install resolved { shasum: '857fcabfc3397d2625b8228262e86aa7a011b05d', +7188 silly install resolved size: 5990, +7188 silly install resolved noattachment: false, +7188 silly install resolved key: '/minimist/-/minimist-0.0.8.tgz', +7188 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz' }, +7188 silly install resolved _from: 'minimist@0.0.8', +7188 silly install resolved _npmVersion: '1.4.3', +7188 silly install resolved _npmUser: { name: 'substack', email: 'mail@substack.net' }, +7188 silly install resolved maintainers: [ [Object] ], +7188 silly install resolved directories: {}, +7188 silly install resolved publish_time: 1392958009997, +7188 silly install resolved _cnpm_publish_time: 1392958009997, +7188 silly install resolved _shasum: '857fcabfc3397d2625b8228262e86aa7a011b05d', +7188 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz' } ] +7189 info install minimist@0.0.8 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp +7190 info installOne minimist@0.0.8 +7191 verbose installOne of minimist to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp not in flight; installing +7192 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +7193 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder/package.json +7194 info preinstall inherits@2.0.1 +7195 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/package.json +7196 info preinstall process-nextick-args@1.0.7 +7197 info preinstall util-deprecate@1.0.2 +7198 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook/package.json +7199 silly cache add args [ 'wrappy@1', null ] +7200 verbose cache add spec wrappy@1 +7201 silly cache add parsed spec Result { +7201 silly cache add raw: 'wrappy@1', +7201 silly cache add scope: null, +7201 silly cache add name: 'wrappy', +7201 silly cache add rawSpec: '1', +7201 silly cache add spec: '>=1.0.0 <2.0.0', +7201 silly cache add type: 'range' } +7202 silly addNamed wrappy@>=1.0.0 <2.0.0 +7203 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for wrappy +7204 silly addNameRange { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: false } +7205 silly mapToRegistry name wrappy +7206 silly mapToRegistry using default registry +7207 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7208 silly mapToRegistry data Result { +7208 silly mapToRegistry raw: 'wrappy', +7208 silly mapToRegistry scope: null, +7208 silly mapToRegistry name: 'wrappy', +7208 silly mapToRegistry rawSpec: '', +7208 silly mapToRegistry spec: 'latest', +7208 silly mapToRegistry type: 'tag' } +7209 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy +7210 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/wrappy not in flight; fetching +7211 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json +7212 silly gunzTarPerm extractEntry dist/rx.virtualtime.min.js +7213 silly gunzTarPerm extractEntry dist/rx.coincidence.map +7214 verbose lock using /home/ruanyf/.tnpm/_locks/minimist-1e6dfe47780040db.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist +7215 silly gunzTarPerm extractEntry README.md +7216 silly gunzTarPerm extractEntry LICENSE +7217 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits/package.json +7218 verbose linkBins run-async@2.2.0 +7219 verbose linkMans run-async@2.2.0 +7220 verbose rebuildBundles run-async@2.2.0 +7221 info preinstall is-stream@1.1.0 +7222 silly install write writing minimist 0.0.8 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist +7223 silly gunzTarPerm extractEntry README.md +7224 silly gunzTarPerm extractEntry LICENSE +7225 silly gunzTarPerm extractEntry README.md +7226 silly gunzTarPerm extractEntry index.js +7227 silly gunzTarPerm extractEntry README.md +7228 silly gunzTarPerm extractEntry LICENSE +7229 silly gunzTarPerm extractEntry README.md +7230 silly gunzTarPerm modified mode [ 'README.md', 448, 484 ] +7231 silly gunzTarPerm extractEntry LICENSE +7232 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] +7233 silly gunzTarPerm extractEntry README.md +7234 silly gunzTarPerm extractEntry LICENSE +7235 silly gunzTarPerm extractEntry README.md +7236 silly gunzTarPerm extractEntry LICENSE +7237 silly gunzTarPerm extractEntry README.md +7238 silly gunzTarPerm extractEntry LICENSE +7239 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args/package.json +7240 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate/package.json +7241 silly gunzTarPerm extractEntry README.md +7242 silly gunzTarPerm extractEntry LICENSE +7243 silly gunzTarPerm extractEntry README.md +7244 silly gunzTarPerm extractEntry LICENSE +7245 silly gunzTarPerm extractEntry README.md +7246 silly gunzTarPerm extractEntry LICENSE +7247 info preinstall core-util-is@1.0.2 +7248 silly gunzTarPerm extractEntry README.md +7249 silly gunzTarPerm extractEntry LICENSE +7250 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] +7251 silly gunzTarPerm extractEntry README.md +7252 silly gunzTarPerm extractEntry LICENSE +7253 verbose rebuildBundles [ 'is-promise' ] +7254 info install run-async@2.2.0 +7255 info preinstall extend-shallow@2.0.1 +7256 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream/package.json +7257 silly gunzTarPerm extractEntry inherits.js +7258 silly gunzTarPerm extractEntry inherits_browser.js +7259 silly gunzTarPerm extractEntry once.js +7260 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is/package.json +7261 info preinstall exit-hook@1.1.1 +7262 info postinstall run-async@2.2.0 +7263 info preinstall ansi-regex@2.0.0 +7264 silly gunzTarPerm extractEntry inflight.js +7265 silly gunzTarPerm extractEntry readme.md +7266 silly gunzTarPerm extractEntry minimatch.js +7267 silly install resolved [] +7268 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder +7269 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder +7270 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/package.json +7271 verbose request uri http://registry.npm.alibaba-inc.com/wrappy +7272 verbose request no auth needed +7273 info attempt registry request try #1 at 上午9:12:31 +7274 verbose etag "d8c-dhvaJLlwy4LsMgLfXdXTpw" +7275 http request GET http://registry.npm.alibaba-inc.com/wrappy +7276 silly install resolved [] +7277 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims +7278 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims +7279 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook/package.json +7280 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json +7281 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist +7282 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits/package.json +7283 verbose unlock done using /home/ruanyf/.tnpm/_locks/run-async-d947f04ab284015f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async +7284 silly gunzTarPerm extractEntry findLastKey.js +7285 silly gunzTarPerm extractEntry assignInWith.js +7286 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args/package.json +7287 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate/package.json +7288 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream/package.json +7289 silly gunzTarPerm extractEntry dist/rx.lite.compat.map +7290 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist is being purged from base /home/ruanyf/npm-global +7291 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist +7292 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json +7293 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan/package.json +7294 silly gunzTarPerm extractEntry index.js +7295 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray/package.json +7296 info linkStuff string_decoder@0.10.31 +7297 silly linkStuff string_decoder@0.10.31 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules +7298 silly linkStuff string_decoder@0.10.31 is part of a global install +7299 silly linkStuff string_decoder@0.10.31 is installed into a global node_modules +7300 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is/package.json +7301 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime/package.json +7302 verbose tar unpack /home/ruanyf/.tnpm/minimist/0.0.8/package.tgz +7303 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist +7304 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist is being purged +7305 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist +7306 silly gunzTarPerm extractEntry index.js +7307 silly gunzTarPerm extractEntry index.js +7308 silly gunzTarPerm extractEntry index.js +7309 silly gunzTarPerm modified mode [ 'index.js', 448, 484 ] +7310 silly gunzTarPerm extractEntry index.js +7311 silly gunzTarPerm extractEntry index.js +7312 silly gunzTarPerm extractEntry index.js +7313 silly gunzTarPerm extractEntry index.js +7314 silly gunzTarPerm extractEntry index.js +7315 silly gunzTarPerm extractEntry index.js +7316 silly gunzTarPerm extractEntry index.js +7317 silly prepareForInstallMany adding is-extendable@^0.1.0 from extend-shallow dependencies +7318 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/package.json +7319 silly gunzTarPerm extractEntry index.js +7320 silly gunzTarPerm modes [ '755', '644' ] +7321 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook/package.json +7322 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json +7323 silly gunzTarPerm extractEntry test.js +7324 silly install resolved [] +7325 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits +7326 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits +7327 verbose linkBins string_decoder@0.10.31 +7328 verbose linkMans string_decoder@0.10.31 +7329 verbose rebuildBundles string_decoder@0.10.31 +7330 info preinstall number-is-nan@1.0.0 +7331 info preinstall number-is-nan@1.0.0 +7332 info preinstall isarray@1.0.0 +7333 silly install resolved [] +7334 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args +7335 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args +7336 silly install resolved [] +7337 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate +7338 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate +7339 info install string_decoder@0.10.31 +7340 info preinstall onetime@1.1.0 +7341 silly install resolved [] +7342 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream +7343 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream +7344 silly gunzTarPerm extractEntry dist/rx.joinpatterns.map +7345 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json +7346 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan/package.json +7347 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray/package.json +7348 info linkStuff buffer-shims@1.0.0 +7349 silly linkStuff buffer-shims@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules +7350 silly linkStuff buffer-shims@1.0.0 is part of a global install +7351 silly linkStuff buffer-shims@1.0.0 is installed into a global node_modules +7352 info postinstall string_decoder@0.10.31 +7353 silly install resolved [] +7354 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is +7355 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is +7356 http 200 http://registry.npm.alibaba-inc.com/wrappy +7357 verbose headers { server: 'Tengine', +7357 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +7357 verbose headers 'content-type': 'application/json; charset=utf-8', +7357 verbose headers 'transfer-encoding': 'chunked', +7357 verbose headers connection: 'keep-alive', +7357 verbose headers vary: 'Accept-Encoding', +7357 verbose headers 'x-readtime': '18', +7357 verbose headers 'content-encoding': 'gzip' } +7358 silly get cb [ 200, +7358 silly get { server: 'Tengine', +7358 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +7358 silly get 'content-type': 'application/json; charset=utf-8', +7358 silly get 'transfer-encoding': 'chunked', +7358 silly get connection: 'keep-alive', +7358 silly get vary: 'Accept-Encoding', +7358 silly get 'x-readtime': '18', +7358 silly get 'content-encoding': 'gzip' } ] +7359 verbose get saving wrappy to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/wrappy/.cache.json +7360 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +7361 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime/package.json +7362 silly gunzTarPerm extractEntry first.js +7363 silly gunzTarPerm extractEntry assignIn.js +7364 silly gunzTarPerm extractEntry package.json +7365 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/package.json +7366 info linkStuff inherits@2.0.1 +7367 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules +7368 silly linkStuff inherits@2.0.1 is part of a global install +7369 silly linkStuff inherits@2.0.1 is installed into a global node_modules +7370 silly install resolved [] +7371 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook +7372 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook +7373 silly install resolved [] +7374 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex +7375 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex +7376 silly gunzTarPerm extractEntry dist/rx.experimental.map +7377 silly gunzTarPerm extractEntry dist/rx.lite.extras.map +7378 info linkStuff process-nextick-args@1.0.7 +7379 silly linkStuff process-nextick-args@1.0.7 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules +7380 silly linkStuff process-nextick-args@1.0.7 is part of a global install +7381 silly linkStuff process-nextick-args@1.0.7 is installed into a global node_modules +7382 info linkStuff util-deprecate@1.0.2 +7383 silly linkStuff util-deprecate@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules +7384 silly linkStuff util-deprecate@1.0.2 is part of a global install +7385 silly linkStuff util-deprecate@1.0.2 is installed into a global node_modules +7386 verbose linkBins buffer-shims@1.0.0 +7387 verbose linkMans buffer-shims@1.0.0 +7388 verbose rebuildBundles buffer-shims@1.0.0 +7389 verbose unlock done using /home/ruanyf/.tnpm/_locks/string-decoder-41a36a35d7546451.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder +7390 silly cache add args [ 'is-extendable@^0.1.0', null ] +7391 verbose cache add spec is-extendable@^0.1.0 +7392 silly cache add parsed spec Result { +7392 silly cache add raw: 'is-extendable@^0.1.0', +7392 silly cache add scope: null, +7392 silly cache add name: 'is-extendable', +7392 silly cache add rawSpec: '^0.1.0', +7392 silly cache add spec: '>=0.1.0 <0.2.0', +7392 silly cache add type: 'range' } +7393 silly addNamed is-extendable@>=0.1.0 <0.2.0 +7394 verbose addNamed ">=0.1.0 <0.2.0" is a valid semver range for is-extendable +7395 silly addNameRange { name: 'is-extendable', +7395 silly addNameRange range: '>=0.1.0 <0.2.0', +7395 silly addNameRange hasData: false } +7396 silly mapToRegistry name is-extendable +7397 silly mapToRegistry using default registry +7398 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7399 silly mapToRegistry data Result { +7399 silly mapToRegistry raw: 'is-extendable', +7399 silly mapToRegistry scope: null, +7399 silly mapToRegistry name: 'is-extendable', +7399 silly mapToRegistry rawSpec: '', +7399 silly mapToRegistry spec: 'latest', +7399 silly mapToRegistry type: 'tag' } +7400 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-extendable +7401 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-extendable not in flight; fetching +7402 info install buffer-shims@1.0.0 +7403 info linkStuff is-stream@1.1.0 +7404 silly linkStuff is-stream@1.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules as its parent node_modules +7405 silly linkStuff is-stream@1.1.0 is part of a global install +7406 silly linkStuff is-stream@1.1.0 is installed into a global node_modules +7407 silly gunzTarPerm extractEntry dist/rx.aggregates.map +7408 silly gunzTarPerm extractEntry LICENSE +7409 silly gunzTarPerm extractEntry index.js +7410 verbose linkBins inherits@2.0.1 +7411 verbose linkMans inherits@2.0.1 +7412 verbose rebuildBundles inherits@2.0.1 +7413 info linkStuff core-util-is@1.0.2 +7414 silly linkStuff core-util-is@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules +7415 silly linkStuff core-util-is@1.0.2 is part of a global install +7416 silly linkStuff core-util-is@1.0.2 is installed into a global node_modules +7417 info preinstall is-glob@2.0.1 +7418 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json +7419 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan/package.json +7420 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray/package.json +7421 verbose linkBins process-nextick-args@1.0.7 +7422 verbose linkMans process-nextick-args@1.0.7 +7423 verbose rebuildBundles process-nextick-args@1.0.7 +7424 verbose linkBins util-deprecate@1.0.2 +7425 verbose linkMans util-deprecate@1.0.2 +7426 verbose rebuildBundles util-deprecate@1.0.2 +7427 info postinstall buffer-shims@1.0.0 +7428 info install inherits@2.0.1 +7429 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime/package.json +7430 info install process-nextick-args@1.0.7 +7431 info install util-deprecate@1.0.2 +7432 silly gunzTarPerm extractEntry dist/rx.core.map +7433 info linkStuff exit-hook@1.1.1 +7434 silly linkStuff exit-hook@1.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules as its parent node_modules +7435 silly linkStuff exit-hook@1.1.1 is part of a global install +7436 silly linkStuff exit-hook@1.1.1 is installed into a global node_modules +7437 info linkStuff ansi-regex@2.0.0 +7438 silly linkStuff ansi-regex@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules as its parent node_modules +7439 silly linkStuff ansi-regex@2.0.0 is part of a global install +7440 silly linkStuff ansi-regex@2.0.0 is installed into a global node_modules +7441 verbose linkBins is-stream@1.1.0 +7442 verbose linkMans is-stream@1.1.0 +7443 verbose rebuildBundles is-stream@1.1.0 +7444 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/package.json +7445 info postinstall inherits@2.0.1 +7446 verbose linkBins core-util-is@1.0.2 +7447 verbose linkMans core-util-is@1.0.2 +7448 verbose rebuildBundles core-util-is@1.0.2 +7449 verbose request uri http://registry.npm.alibaba-inc.com/is-extendable +7450 verbose request no auth needed +7451 info attempt registry request try #1 at 上午9:12:31 +7452 verbose etag "1970-rjLiSPAKa9Z7yg+LVbBT7Q" +7453 http request GET http://registry.npm.alibaba-inc.com/is-extendable +7454 silly addNameRange number 2 { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: true } +7455 silly addNameRange versions [ 'wrappy', [ '1.0.2', '1.0.1', '1.0.0' ] ] +7456 silly addNamed wrappy@1.0.2 +7457 verbose addNamed "1.0.2" is a plain semver version for wrappy +7458 info install is-stream@1.1.0 +7459 info postinstall process-nextick-args@1.0.7 +7460 info postinstall util-deprecate@1.0.2 +7461 verbose unlock done using /home/ruanyf/.tnpm/_locks/buffer-shims-8211e13276fdb335.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims +7462 info install core-util-is@1.0.2 +7463 silly mapToRegistry name wrappy +7464 silly mapToRegistry using default registry +7465 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7466 silly mapToRegistry data Result { +7466 silly mapToRegistry raw: 'wrappy', +7466 silly mapToRegistry scope: null, +7466 silly mapToRegistry name: 'wrappy', +7466 silly mapToRegistry rawSpec: '', +7466 silly mapToRegistry spec: 'latest', +7466 silly mapToRegistry type: 'tag' } +7467 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy +7468 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz not in flight; adding +7469 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz', +7469 verbose addRemoteTarball 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f' ] +7470 silly gunzTarPerm extractEntry flatMap.js +7471 silly gunzTarPerm extractEntry assign.js +7472 verbose linkBins exit-hook@1.1.1 +7473 verbose linkMans exit-hook@1.1.1 +7474 verbose rebuildBundles exit-hook@1.1.1 +7475 verbose linkBins ansi-regex@2.0.0 +7476 verbose linkMans ansi-regex@2.0.0 +7477 verbose rebuildBundles ansi-regex@2.0.0 +7478 info postinstall is-stream@1.1.0 +7479 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-f6ef6acc91466ebe.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits +7480 info postinstall core-util-is@1.0.2 +7481 info install exit-hook@1.1.1 +7482 info install ansi-regex@2.0.0 +7483 silly install resolved [] +7484 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan +7485 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan +7486 silly install resolved [] +7487 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan +7488 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan +7489 silly install resolved [] +7490 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray +7491 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray +7492 verbose unlock done using /home/ruanyf/.tnpm/_locks/process-nextick-args-53c0069f7053538d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args +7493 verbose unlock done using /home/ruanyf/.tnpm/_locks/util-deprecate-b30e99e036e007f1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate +7494 info retry fetch attempt 1 at 上午9:12:31 +7495 info attempt registry request try #1 at 上午9:12:31 +7496 http fetch GET http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz +7497 silly install resolved [] +7498 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime +7499 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime +7500 info postinstall exit-hook@1.1.1 +7501 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend/package.json +7502 info postinstall ansi-regex@2.0.0 +7503 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-stream-bcdd8d548190a97a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream +7504 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +7505 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +7506 silly prepareForInstallMany adding is-extglob@^1.0.0 from is-glob dependencies +7507 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/package.json +7508 silly gunzTarPerm extractEntry .travis.yml +7509 silly gunzTarPerm extractEntry example/parse.js +7510 verbose unlock done using /home/ruanyf/.tnpm/_locks/core-util-is-fd2215fcc21f4f15.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is +7511 silly gunzTarPerm extractEntry dist/rx.lite.map +7512 silly gunzTarPerm extractEntry dist/rx.core.binding.map +7513 verbose unlock done using /home/ruanyf/.tnpm/_locks/exit-hook-5ff6422de8a65eae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook +7514 verbose unlock done using /home/ruanyf/.tnpm/_locks/ansi-regex-9bff194e757db787.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex +7515 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +7516 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +7517 info linkStuff number-is-nan@1.0.0 +7518 silly linkStuff number-is-nan@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules as its parent node_modules +7519 silly linkStuff number-is-nan@1.0.0 is part of a global install +7520 silly linkStuff number-is-nan@1.0.0 is installed into a global node_modules +7521 info linkStuff number-is-nan@1.0.0 +7522 silly linkStuff number-is-nan@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules as its parent node_modules +7523 silly linkStuff number-is-nan@1.0.0 is part of a global install +7524 silly linkStuff number-is-nan@1.0.0 is installed into a global node_modules +7525 info linkStuff isarray@1.0.0 +7526 silly linkStuff isarray@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules +7527 silly linkStuff isarray@1.0.0 is part of a global install +7528 silly linkStuff isarray@1.0.0 is installed into a global node_modules +7529 info preinstall xtend@4.0.1 +7530 info linkStuff onetime@1.1.0 +7531 silly linkStuff onetime@1.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules as its parent node_modules +7532 silly linkStuff onetime@1.1.0 is part of a global install +7533 silly linkStuff onetime@1.1.0 is installed into a global node_modules +7534 silly gunzTarPerm extractEntry flatMapDeep.js +7535 silly gunzTarPerm extractEntry ary.js +7536 silly gunzTarPerm extractEntry dist/rx.map +7537 http 304 http://registry.npm.alibaba-inc.com/is-extendable +7538 verbose headers { server: 'Tengine', +7538 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +7538 verbose headers connection: 'keep-alive', +7538 verbose headers etag: '"1970-rjLiSPAKa9Z7yg+LVbBT7Q"', +7538 verbose headers 'x-readtime': '13' } +7539 silly get cb [ 304, +7539 silly get { server: 'Tengine', +7539 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +7539 silly get connection: 'keep-alive', +7539 silly get etag: '"1970-rjLiSPAKa9Z7yg+LVbBT7Q"', +7539 silly get 'x-readtime': '13' } ] +7540 verbose etag http://registry.npm.alibaba-inc.com/is-extendable from cache +7541 verbose get saving is-extendable to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-extendable/.cache.json +7542 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +7543 info linkStuff ordered-read-streams@0.3.0 +7544 silly linkStuff ordered-read-streams@0.3.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules +7545 silly linkStuff ordered-read-streams@0.3.0 is part of a global install +7546 silly linkStuff ordered-read-streams@0.3.0 is installed into a global node_modules +7547 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex/package.json +7548 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend/package.json +7549 verbose linkBins number-is-nan@1.0.0 +7550 verbose linkMans number-is-nan@1.0.0 +7551 verbose rebuildBundles number-is-nan@1.0.0 +7552 verbose linkBins number-is-nan@1.0.0 +7553 verbose linkMans number-is-nan@1.0.0 +7554 verbose rebuildBundles number-is-nan@1.0.0 +7555 verbose linkBins isarray@1.0.0 +7556 verbose linkMans isarray@1.0.0 +7557 verbose rebuildBundles isarray@1.0.0 +7558 verbose linkBins onetime@1.1.0 +7559 verbose linkMans onetime@1.1.0 +7560 verbose rebuildBundles onetime@1.1.0 +7561 info install number-is-nan@1.0.0 +7562 info install number-is-nan@1.0.0 +7563 info install isarray@1.0.0 +7564 silly cache add args [ 'is-extglob@^1.0.0', null ] +7565 verbose cache add spec is-extglob@^1.0.0 +7566 silly cache add parsed spec Result { +7566 silly cache add raw: 'is-extglob@^1.0.0', +7566 silly cache add scope: null, +7566 silly cache add name: 'is-extglob', +7566 silly cache add rawSpec: '^1.0.0', +7566 silly cache add spec: '>=1.0.0 <2.0.0', +7566 silly cache add type: 'range' } +7567 silly addNamed is-extglob@>=1.0.0 <2.0.0 +7568 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for is-extglob +7569 silly addNameRange { name: 'is-extglob', range: '>=1.0.0 <2.0.0', hasData: false } +7570 silly mapToRegistry name is-extglob +7571 silly mapToRegistry using default registry +7572 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7573 silly mapToRegistry data Result { +7573 silly mapToRegistry raw: 'is-extglob', +7573 silly mapToRegistry scope: null, +7573 silly mapToRegistry name: 'is-extglob', +7573 silly mapToRegistry rawSpec: '', +7573 silly mapToRegistry spec: 'latest', +7573 silly mapToRegistry type: 'tag' } +7574 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-extglob +7575 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-extglob not in flight; fetching +7576 info linkStuff has-ansi@2.0.0 +7577 silly linkStuff has-ansi@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules as its parent node_modules +7578 silly linkStuff has-ansi@2.0.0 is part of a global install +7579 silly linkStuff has-ansi@2.0.0 is installed into a global node_modules +7580 info install onetime@1.1.0 +7581 verbose linkBins ordered-read-streams@0.3.0 +7582 verbose linkMans ordered-read-streams@0.3.0 +7583 verbose rebuildBundles ordered-read-streams@0.3.0 +7584 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/package.json +7585 verbose rebuildBundles [ 'is-stream' ] +7586 info install ordered-read-streams@0.3.0 +7587 info postinstall number-is-nan@1.0.0 +7588 silly gunzTarPerm extractEntry readme.markdown +7589 silly gunzTarPerm extractEntry test/dash.js +7590 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute/package.json +7591 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/package.json +7592 info postinstall number-is-nan@1.0.0 +7593 info preinstall filename-regex@2.0.0 +7594 info postinstall isarray@1.0.0 +7595 info postinstall onetime@1.1.0 +7596 http fetch 200 http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz +7597 verbose linkBins has-ansi@2.0.0 +7598 verbose linkMans has-ansi@2.0.0 +7599 verbose rebuildBundles has-ansi@2.0.0 +7600 info postinstall ordered-read-streams@0.3.0 +7601 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/package.json +7602 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex/package.json +7603 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend/package.json +7604 verbose rebuildBundles [ 'ansi-regex' ] +7605 info install has-ansi@2.0.0 +7606 verbose unlock done using /home/ruanyf/.tnpm/_locks/number-is-nan-d87d7a71abbd4b8e.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan +7607 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +7608 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +7609 info preinstall once@1.3.3 +7610 verbose unlock done using /home/ruanyf/.tnpm/_locks/number-is-nan-4e0947818a28c513.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan +7611 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +7612 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +7613 verbose unlock done using /home/ruanyf/.tnpm/_locks/isarray-3f8fc3c76d274bae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray +7614 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +7615 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +7616 verbose get http://registry.npm.alibaba-inc.com/is-extglob not expired, no request +7617 silly addNameRange number 2 { name: 'is-extglob', range: '>=1.0.0 <2.0.0', hasData: true } +7618 silly addNameRange versions [ 'is-extglob', [ '1.0.0' ] ] +7619 silly addNamed is-extglob@1.0.0 +7620 verbose addNamed "1.0.0" is a plain semver version for is-extglob +7621 silly addNameRange number 2 { name: 'is-extendable', range: '>=0.1.0 <0.2.0', hasData: true } +7622 silly addNameRange versions [ 'is-extendable', [ '0.1.1', '0.1.0' ] ] +7623 silly addNamed is-extendable@0.1.1 +7624 verbose addNamed "0.1.1" is a plain semver version for is-extendable +7625 verbose unlock done using /home/ruanyf/.tnpm/_locks/onetime-41a4238185ea7660.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime +7626 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +7627 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +7628 silly gunzTarPerm extractEntry flatMapDepth.js +7629 silly gunzTarPerm extractEntry array.js +7630 silly gunzTarPerm extractEntry dist/rx.compat.map +7631 info preinstall path-is-absolute@1.0.0 +7632 info preinstall inflight@1.0.5 +7633 info postinstall has-ansi@2.0.0 +7634 verbose unlock done using /home/ruanyf/.tnpm/_locks/ordered-read-streams-c4c8dc9fe775af65.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams +7635 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/package.json +7636 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob/package.json +7637 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob/package.json +7638 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path/package.json +7639 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique/package.json +7640 silly fetchAndShaCheck shasum b5243d8f3ec1aa35f1364605bc0d1036e30ab69f +7641 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute/package.json +7642 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/package.json +7643 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/package.json +7644 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob/package.json +7645 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/package.json +7646 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/package.json +7647 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/package.json +7648 info preinstall minimatch@3.0.0 +7649 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/package.json +7650 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/package.json +7651 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/package.json +7652 verbose unlock done using /home/ruanyf/.tnpm/_locks/has-ansi-add0ceae132370e9.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi +7653 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +7654 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +7655 info linkStuff is-fullwidth-code-point@1.0.0 +7656 silly linkStuff is-fullwidth-code-point@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules as its parent node_modules +7657 silly linkStuff is-fullwidth-code-point@1.0.0 is part of a global install +7658 silly linkStuff is-fullwidth-code-point@1.0.0 is installed into a global node_modules +7659 info linkStuff code-point-at@1.0.0 +7660 silly linkStuff code-point-at@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules as its parent node_modules +7661 silly linkStuff code-point-at@1.0.0 is part of a global install +7662 silly linkStuff code-point-at@1.0.0 is installed into a global node_modules +7663 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex/package.json +7664 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/package.json +7665 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz not in flight; adding +7666 verbose addTmpTarball already have metadata; skipping unpack for wrappy@1.0.2 +7667 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +7668 silly install resolved [] +7669 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend +7670 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend +7671 info linkStuff restore-cursor@1.0.1 +7672 silly linkStuff restore-cursor@1.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules as its parent node_modules +7673 silly linkStuff restore-cursor@1.0.1 is part of a global install +7674 silly linkStuff restore-cursor@1.0.1 is installed into a global node_modules +7675 silly gunzTarPerm extractEntry test/default_bool.js +7676 silly gunzTarPerm extractEntry test/dotted.js +7677 silly gunzTarPerm extractEntry test/long.js +7678 silly gunzTarPerm extractEntry test/parse.js +7679 silly gunzTarPerm extractEntry test/parse_modified.js +7680 silly gunzTarPerm extractEntry test/short.js +7681 silly gunzTarPerm extractEntry test/whitespace.js +7682 info preinstall is-glob@2.0.1 +7683 info preinstall is-extglob@1.0.0 +7684 info preinstall normalize-path@2.0.1 +7685 info preinstall array-unique@0.2.1 +7686 silly cache afterAdd is-extglob@1.0.0 +7687 verbose afterAdd /home/ruanyf/.tnpm/is-extglob/1.0.0/package/package.json not in flight; writing +7688 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +7689 silly cache afterAdd is-extendable@0.1.1 +7690 verbose afterAdd /home/ruanyf/.tnpm/is-extendable/0.1.1/package/package.json not in flight; writing +7691 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +7692 info preinstall regex-cache@0.4.3 +7693 info preinstall extglob@0.3.2 +7694 info preinstall kind-of@3.0.3 +7695 info preinstall parse-glob@3.0.4 +7696 info preinstall object.omit@2.0.0 +7697 info preinstall arr-diff@2.0.0 +7698 info preinstall expand-brackets@0.1.5 +7699 info preinstall braces@1.8.4 +7700 verbose linkBins is-fullwidth-code-point@1.0.0 +7701 verbose linkMans is-fullwidth-code-point@1.0.0 +7702 verbose rebuildBundles is-fullwidth-code-point@1.0.0 +7703 silly prepareForInstallMany adding wrappy@1 from once dependencies +7704 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/package.json +7705 verbose linkBins code-point-at@1.0.0 +7706 verbose linkMans code-point-at@1.0.0 +7707 verbose rebuildBundles code-point-at@1.0.0 +7708 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob/package.json +7709 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob/package.json +7710 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path/package.json +7711 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique/package.json +7712 verbose linkBins restore-cursor@1.0.1 +7713 verbose linkMans restore-cursor@1.0.1 +7714 verbose rebuildBundles restore-cursor@1.0.1 +7715 silly gunzTarPerm extractEntry flatten.js +7716 silly gunzTarPerm extractEntry after.js +7717 verbose rebuildBundles [ 'number-is-nan' ] +7718 info install is-fullwidth-code-point@1.0.0 +7719 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute/package.json +7720 verbose rebuildBundles [ 'number-is-nan' ] +7721 info install code-point-at@1.0.0 +7722 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/package.json +7723 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob/package.json +7724 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/package.json +7725 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/package.json +7726 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/package.json +7727 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/package.json +7728 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/package.json +7729 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/package.json +7730 verbose rebuildBundles [ 'exit-hook', 'onetime' ] +7731 info install restore-cursor@1.0.1 +7732 info linkStuff chalk@1.1.3 +7733 silly linkStuff chalk@1.1.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +7734 silly linkStuff chalk@1.1.3 is part of a global install +7735 silly linkStuff chalk@1.1.3 is installed into a global node_modules +7736 info linkStuff readable-stream@2.1.4 +7737 silly linkStuff readable-stream@2.1.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +7738 silly linkStuff readable-stream@2.1.4 is part of a global install +7739 silly linkStuff readable-stream@2.1.4 is installed into a global node_modules +7740 info linkStuff xtend@4.0.1 +7741 silly linkStuff xtend@4.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules as its parent node_modules +7742 silly linkStuff xtend@4.0.1 is part of a global install +7743 silly linkStuff xtend@4.0.1 is installed into a global node_modules +7744 info postinstall is-fullwidth-code-point@1.0.0 +7745 silly gunzTarPerm extractEntry dist/rx.lite.extras.compat.map +7746 info postinstall code-point-at@1.0.0 +7747 silly install resolved [] +7748 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex +7749 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex +7750 silly prepareForInstallMany adding brace-expansion@^1.0.0 from minimatch dependencies +7751 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/package.json +7752 verbose afterAdd /home/ruanyf/.tnpm/is-extglob/1.0.0/package/package.json written +7753 silly install resolved [ { name: 'is-extglob', +7753 silly install resolved description: 'Returns true if a string has an extglob.', +7753 silly install resolved version: '1.0.0', +7753 silly install resolved homepage: 'https://github.com/jonschlinkert/is-extglob', +7753 silly install resolved author: +7753 silly install resolved { name: 'Jon Schlinkert', +7753 silly install resolved url: 'https://github.com/jonschlinkert' }, +7753 silly install resolved repository: +7753 silly install resolved { type: 'git', +7753 silly install resolved url: 'git+https://github.com/jonschlinkert/is-extglob.git' }, +7753 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-extglob/issues' }, +7753 silly install resolved license: 'MIT', +7753 silly install resolved files: [ 'index.js' ], +7753 silly install resolved main: 'index.js', +7753 silly install resolved engines: { node: '>=0.10.0' }, +7753 silly install resolved scripts: +7753 silly install resolved { test: 'mocha', +7753 silly install resolved prepublish: 'browserify -o browser.js -e index.js' }, +7753 silly install resolved devDependencies: { mocha: '*', should: '*' }, +7753 silly install resolved keywords: +7753 silly install resolved [ 'bash', +7753 silly install resolved 'braces', +7753 silly install resolved 'check', +7753 silly install resolved 'exec', +7753 silly install resolved 'extglob', +7753 silly install resolved 'expression', +7753 silly install resolved 'glob', +7753 silly install resolved 'globbing', +7753 silly install resolved 'globstar', +7753 silly install resolved 'match', +7753 silly install resolved 'matches', +7753 silly install resolved 'pattern', +7753 silly install resolved 'regex', +7753 silly install resolved 'regular', +7753 silly install resolved 'string', +7753 silly install resolved 'test' ], +7753 silly install resolved _id: 'is-extglob@1.0.0', +7753 silly install resolved _shasum: 'ac468177c4943405a092fc8f29760c6ffc6206c0', +7753 silly install resolved _from: 'is-extglob@>=1.0.0 <2.0.0', +7753 silly install resolved _npmVersion: '2.5.1', +7753 silly install resolved _nodeVersion: '0.12.0', +7753 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +7753 silly install resolved maintainers: [ [Object] ], +7753 silly install resolved dist: +7753 silly install resolved { shasum: 'ac468177c4943405a092fc8f29760c6ffc6206c0', +7753 silly install resolved size: 2063, +7753 silly install resolved noattachment: false, +7753 silly install resolved key: 'is-extglob/-/is-extglob-1.0.0.tgz', +7753 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-1.0.0.tgz' }, +7753 silly install resolved directories: {}, +7753 silly install resolved publish_time: 1425675623847, +7753 silly install resolved _cnpm_publish_time: 1425675623847, +7753 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-1.0.0.tgz', +7753 silly install resolved readme: 'ERROR: No README data found!' } ] +7754 info install is-extglob@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +7755 info installOne is-extglob@1.0.0 +7756 verbose installOne of is-extglob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob not in flight; installing +7757 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +7758 info postinstall restore-cursor@1.0.1 +7759 verbose afterAdd /home/ruanyf/.tnpm/is-extendable/0.1.1/package/package.json written +7760 silly install resolved [ { name: 'is-extendable', +7760 silly install resolved description: 'Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. "can the value have keys?"', +7760 silly install resolved version: '0.1.1', +7760 silly install resolved homepage: 'https://github.com/jonschlinkert/is-extendable', +7760 silly install resolved author: +7760 silly install resolved { name: 'Jon Schlinkert', +7760 silly install resolved url: 'https://github.com/jonschlinkert' }, +7760 silly install resolved repository: +7760 silly install resolved { type: 'git', +7760 silly install resolved url: 'git+https://github.com/jonschlinkert/is-extendable.git' }, +7760 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-extendable/issues' }, +7760 silly install resolved license: 'MIT', +7760 silly install resolved files: [ 'index.js' ], +7760 silly install resolved main: 'index.js', +7760 silly install resolved engines: { node: '>=0.10.0' }, +7760 silly install resolved scripts: { test: 'mocha' }, +7760 silly install resolved devDependencies: { mocha: '*' }, +7760 silly install resolved keywords: +7760 silly install resolved [ 'array', +7760 silly install resolved 'assign', +7760 silly install resolved 'check', +7760 silly install resolved 'date', +7760 silly install resolved 'extend', +7760 silly install resolved 'extensible', +7760 silly install resolved 'function', +7760 silly install resolved 'is', +7760 silly install resolved 'object', +7760 silly install resolved 'regex', +7760 silly install resolved 'test' ], +7760 silly install resolved verbiage: { related: [Object] }, +7760 silly install resolved gitHead: 'c36a0732e6a76931c6f66c5931d1f3e54fa44380', +7760 silly install resolved _id: 'is-extendable@0.1.1', +7760 silly install resolved _shasum: '62b110e289a471418e3ec36a617d472e301dfc89', +7760 silly install resolved _from: 'is-extendable@>=0.1.0 <0.2.0', +7760 silly install resolved _npmVersion: '2.10.1', +7760 silly install resolved _nodeVersion: '0.12.4', +7760 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +7760 silly install resolved maintainers: [ [Object] ], +7760 silly install resolved dist: +7760 silly install resolved { shasum: '62b110e289a471418e3ec36a617d472e301dfc89', +7760 silly install resolved size: 2381, +7760 silly install resolved noattachment: false, +7760 silly install resolved key: 'is-extendable/-/is-extendable-0.1.1.tgz', +7760 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz' }, +7760 silly install resolved directories: {}, +7760 silly install resolved publish_time: 1436050211330, +7760 silly install resolved _cnpm_publish_time: 1436050211330, +7760 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz', +7760 silly install resolved readme: 'ERROR: No README data found!' } ] +7761 info install is-extendable@0.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +7762 info installOne is-extendable@0.1.1 +7763 verbose installOne of is-extendable to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow not in flight; installing +7764 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +7765 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits/package.json +7766 verbose linkBins chalk@1.1.3 +7767 verbose linkMans chalk@1.1.3 +7768 verbose rebuildBundles chalk@1.1.3 +7769 verbose linkBins readable-stream@2.1.4 +7770 verbose linkMans readable-stream@2.1.4 +7771 verbose rebuildBundles readable-stream@2.1.4 +7772 verbose lock using /home/ruanyf/.tnpm/_locks/is-extglob-098a2ff027ee316f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob +7773 verbose linkBins xtend@4.0.1 +7774 verbose linkMans xtend@4.0.1 +7775 verbose rebuildBundles xtend@4.0.1 +7776 verbose rebuildBundles [ 'ansi-styles', +7776 verbose rebuildBundles 'escape-string-regexp', +7776 verbose rebuildBundles 'has-ansi', +7776 verbose rebuildBundles 'supports-color' ] +7777 info install chalk@1.1.3 +7778 verbose lock using /home/ruanyf/.tnpm/_locks/is-extendable-8a9f54846740efdd.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable +7779 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-fullwidth-code-point-8af8b37bbc384528.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point +7780 silly prepareForInstallMany adding wrappy@1 from inflight dependencies +7781 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/package.json +7782 verbose unlock done using /home/ruanyf/.tnpm/_locks/code-point-at-d5ee80b89d077134.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at +7783 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +7784 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +7785 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob/package.json +7786 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob/package.json +7787 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path/package.json +7788 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique/package.json +7789 verbose rebuildBundles [ 'buffer-shims', +7789 verbose rebuildBundles 'core-util-is', +7789 verbose rebuildBundles 'inherits', +7789 verbose rebuildBundles 'isarray', +7789 verbose rebuildBundles 'process-nextick-args', +7789 verbose rebuildBundles 'string_decoder', +7789 verbose rebuildBundles 'util-deprecate' ] +7790 info install readable-stream@2.1.4 +7791 silly install write writing is-extglob 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob +7792 info install xtend@4.0.1 +7793 verbose unlock done using /home/ruanyf/.tnpm/_locks/restore-cursor-adaa1e73f0b61457.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor +7794 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +7795 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +7796 silly install write writing is-extendable 0.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable +7797 silly install resolved [] +7798 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute +7799 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute +7800 silly gunzTarPerm extractEntry dist/rx.sorting.map +7801 silly prepareForInstallMany adding is-equal-shallow@^0.1.3 from regex-cache dependencies +7802 silly prepareForInstallMany adding is-primitive@^2.0.0 from regex-cache dependencies +7803 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/package.json +7804 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob/package.json +7805 silly prepareForInstallMany adding is-buffer@^1.0.2 from kind-of dependencies +7806 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/package.json +7807 silly cache add args [ 'wrappy@1', null ] +7808 verbose cache add spec wrappy@1 +7809 silly cache add parsed spec Result { +7809 silly cache add raw: 'wrappy@1', +7809 silly cache add scope: null, +7809 silly cache add name: 'wrappy', +7809 silly cache add rawSpec: '1', +7809 silly cache add spec: '>=1.0.0 <2.0.0', +7809 silly cache add type: 'range' } +7810 silly addNamed wrappy@>=1.0.0 <2.0.0 +7811 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for wrappy +7812 silly addNameRange { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: false } +7813 silly mapToRegistry name wrappy +7814 silly mapToRegistry using default registry +7815 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7816 silly mapToRegistry data Result { +7816 silly mapToRegistry raw: 'wrappy', +7816 silly mapToRegistry scope: null, +7816 silly mapToRegistry name: 'wrappy', +7816 silly mapToRegistry rawSpec: '', +7816 silly mapToRegistry spec: 'latest', +7816 silly mapToRegistry type: 'tag' } +7817 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy +7818 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/wrappy not in flight; fetching +7819 silly prepareForInstallMany adding glob-base@^0.3.0 from parse-glob dependencies +7820 silly prepareForInstallMany adding is-dotfile@^1.0.0 from parse-glob dependencies +7821 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/package.json +7822 silly prepareForInstallMany adding arr-flatten@^1.0.1 from arr-diff dependencies +7823 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/package.json +7824 silly prepareForInstallMany adding is-posix-bracket@^0.1.0 from expand-brackets dependencies +7825 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/package.json +7826 silly prepareForInstallMany adding for-own@^0.1.3 from object.omit dependencies +7827 silly prepareForInstallMany adding is-extendable@^0.1.1 from object.omit dependencies +7828 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/package.json +7829 silly prepareForInstallMany adding expand-range@^1.8.1 from braces dependencies +7830 silly prepareForInstallMany adding preserve@^0.2.0 from braces dependencies +7831 silly prepareForInstallMany adding repeat-element@^1.1.2 from braces dependencies +7832 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/package.json +7833 info postinstall chalk@1.1.3 +7834 info preinstall inherits@2.0.1 +7835 info linkStuff filename-regex@2.0.0 +7836 silly linkStuff filename-regex@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +7837 silly linkStuff filename-regex@2.0.0 is part of a global install +7838 silly linkStuff filename-regex@2.0.0 is installed into a global node_modules +7839 info postinstall readable-stream@2.1.4 +7840 info postinstall xtend@4.0.1 +7841 silly gunzTarPerm extractEntry dist/rx.binding.map +7842 silly gunzTarPerm extractEntry flattenDeep.js +7843 silly gunzTarPerm extractEntry add.js +7844 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits/package.json +7845 verbose unlock done using /home/ruanyf/.tnpm/_locks/chalk-c288fdd6e70f8cf3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk +7846 info linkStuff string-width@1.0.1 +7847 silly linkStuff string-width@1.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +7848 silly linkStuff string-width@1.0.1 is part of a global install +7849 silly linkStuff string-width@1.0.1 is installed into a global node_modules +7850 silly gunzTarPerm extractEntry dist/rx.backpressure.map +7851 verbose linkBins filename-regex@2.0.0 +7852 verbose linkMans filename-regex@2.0.0 +7853 verbose rebuildBundles filename-regex@2.0.0 +7854 silly cache add args [ 'brace-expansion@^1.0.0', null ] +7855 verbose cache add spec brace-expansion@^1.0.0 +7856 silly cache add parsed spec Result { +7856 silly cache add raw: 'brace-expansion@^1.0.0', +7856 silly cache add scope: null, +7856 silly cache add name: 'brace-expansion', +7856 silly cache add rawSpec: '^1.0.0', +7856 silly cache add spec: '>=1.0.0 <2.0.0', +7856 silly cache add type: 'range' } +7857 silly addNamed brace-expansion@>=1.0.0 <2.0.0 +7858 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for brace-expansion +7859 silly addNameRange { name: 'brace-expansion', +7859 silly addNameRange range: '>=1.0.0 <2.0.0', +7859 silly addNameRange hasData: false } +7860 silly mapToRegistry name brace-expansion +7861 silly mapToRegistry using default registry +7862 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7863 silly mapToRegistry data Result { +7863 silly mapToRegistry raw: 'brace-expansion', +7863 silly mapToRegistry scope: null, +7863 silly mapToRegistry name: 'brace-expansion', +7863 silly mapToRegistry rawSpec: '', +7863 silly mapToRegistry spec: 'latest', +7863 silly mapToRegistry type: 'tag' } +7864 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/brace-expansion +7865 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/brace-expansion not in flight; fetching +7866 silly cache afterAdd wrappy@1.0.2 +7867 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json not in flight; writing +7868 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +7869 verbose unlock done using /home/ruanyf/.tnpm/_locks/readable-stream-afb976fc9072960d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream +7870 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob +7871 verbose unlock done using /home/ruanyf/.tnpm/_locks/xtend-0b3d1bcac6730436.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend +7872 info linkStuff cli-cursor@1.0.2 +7873 silly linkStuff cli-cursor@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +7874 silly linkStuff cli-cursor@1.0.2 is part of a global install +7875 silly linkStuff cli-cursor@1.0.2 is installed into a global node_modules +7876 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable +7877 info linkStuff path-is-absolute@1.0.0 +7878 silly linkStuff path-is-absolute@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules +7879 silly linkStuff path-is-absolute@1.0.0 is part of a global install +7880 silly linkStuff path-is-absolute@1.0.0 is installed into a global node_modules +7881 silly install resolved [] +7882 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob +7883 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob +7884 silly install resolved [] +7885 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob +7886 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob +7887 silly install resolved [] +7888 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path +7889 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path +7890 silly install resolved [] +7891 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique +7892 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique +7893 info install filename-regex@2.0.0 +7894 verbose get http://registry.npm.alibaba-inc.com/wrappy not expired, no request +7895 silly addNameRange number 2 { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: true } +7896 silly addNameRange versions [ 'wrappy', [ '1.0.2', '1.0.1', '1.0.0' ] ] +7897 silly addNamed wrappy@1.0.2 +7898 verbose addNamed "1.0.2" is a plain semver version for wrappy +7899 silly gunzTarPerm extractEntry dist/rx.testing.map +7900 silly install resolved [] +7901 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob +7902 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob +7903 verbose linkBins string-width@1.0.1 +7904 verbose linkMans string-width@1.0.1 +7905 verbose rebuildBundles string-width@1.0.1 +7906 info postinstall filename-regex@2.0.0 +7907 silly cache add args [ 'is-equal-shallow@^0.1.3', null ] +7908 verbose cache add spec is-equal-shallow@^0.1.3 +7909 silly cache add parsed spec Result { +7909 silly cache add raw: 'is-equal-shallow@^0.1.3', +7909 silly cache add scope: null, +7909 silly cache add name: 'is-equal-shallow', +7909 silly cache add rawSpec: '^0.1.3', +7909 silly cache add spec: '>=0.1.3 <0.2.0', +7909 silly cache add type: 'range' } +7910 silly addNamed is-equal-shallow@>=0.1.3 <0.2.0 +7911 verbose addNamed ">=0.1.3 <0.2.0" is a valid semver range for is-equal-shallow +7912 silly addNameRange { name: 'is-equal-shallow', +7912 silly addNameRange range: '>=0.1.3 <0.2.0', +7912 silly addNameRange hasData: false } +7913 silly mapToRegistry name is-equal-shallow +7914 silly mapToRegistry using default registry +7915 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7916 silly mapToRegistry data Result { +7916 silly mapToRegistry raw: 'is-equal-shallow', +7916 silly mapToRegistry scope: null, +7916 silly mapToRegistry name: 'is-equal-shallow', +7916 silly mapToRegistry rawSpec: '', +7916 silly mapToRegistry spec: 'latest', +7916 silly mapToRegistry type: 'tag' } +7917 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-equal-shallow +7918 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-equal-shallow not in flight; fetching +7919 silly cache add args [ 'is-buffer@^1.0.2', null ] +7920 verbose cache add spec is-buffer@^1.0.2 +7921 silly cache add parsed spec Result { +7921 silly cache add raw: 'is-buffer@^1.0.2', +7921 silly cache add scope: null, +7921 silly cache add name: 'is-buffer', +7921 silly cache add rawSpec: '^1.0.2', +7921 silly cache add spec: '>=1.0.2 <2.0.0', +7921 silly cache add type: 'range' } +7922 silly addNamed is-buffer@>=1.0.2 <2.0.0 +7923 verbose addNamed ">=1.0.2 <2.0.0" is a valid semver range for is-buffer +7924 silly addNameRange { name: 'is-buffer', range: '>=1.0.2 <2.0.0', hasData: false } +7925 silly mapToRegistry name is-buffer +7926 silly mapToRegistry using default registry +7927 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7928 silly mapToRegistry data Result { +7928 silly mapToRegistry raw: 'is-buffer', +7928 silly mapToRegistry scope: null, +7928 silly mapToRegistry name: 'is-buffer', +7928 silly mapToRegistry rawSpec: '', +7928 silly mapToRegistry spec: 'latest', +7928 silly mapToRegistry type: 'tag' } +7929 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-buffer +7930 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-buffer not in flight; fetching +7931 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob is being purged from base /home/ruanyf/npm-global +7932 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob +7933 verbose linkBins cli-cursor@1.0.2 +7934 verbose linkMans cli-cursor@1.0.2 +7935 verbose rebuildBundles cli-cursor@1.0.2 +7936 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable is being purged from base /home/ruanyf/npm-global +7937 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable +7938 verbose linkBins path-is-absolute@1.0.0 +7939 verbose linkMans path-is-absolute@1.0.0 +7940 verbose rebuildBundles path-is-absolute@1.0.0 +7941 verbose rebuildBundles [ 'code-point-at', 'is-fullwidth-code-point' ] +7942 info install string-width@1.0.1 +7943 silly gunzTarPerm extractEntry dist/rx.async.map +7944 silly cache add args [ 'is-primitive@^2.0.0', null ] +7945 verbose cache add spec is-primitive@^2.0.0 +7946 silly cache add args [ 'is-dotfile@^1.0.0', null ] +7947 verbose cache add spec is-dotfile@^1.0.0 +7948 silly cache add args [ 'is-extendable@^0.1.1', null ] +7949 verbose cache add spec is-extendable@^0.1.1 +7950 silly cache add args [ 'expand-range@^1.8.1', null ] +7951 verbose cache add spec expand-range@^1.8.1 +7952 silly cache add parsed spec Result { +7952 silly cache add raw: 'is-primitive@^2.0.0', +7952 silly cache add scope: null, +7952 silly cache add name: 'is-primitive', +7952 silly cache add rawSpec: '^2.0.0', +7952 silly cache add spec: '>=2.0.0 <3.0.0', +7952 silly cache add type: 'range' } +7953 silly addNamed is-primitive@>=2.0.0 <3.0.0 +7954 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for is-primitive +7955 silly addNameRange { name: 'is-primitive', range: '>=2.0.0 <3.0.0', hasData: false } +7956 silly mapToRegistry name is-primitive +7957 silly mapToRegistry using default registry +7958 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7959 silly mapToRegistry data Result { +7959 silly mapToRegistry raw: 'is-primitive', +7959 silly mapToRegistry scope: null, +7959 silly mapToRegistry name: 'is-primitive', +7959 silly mapToRegistry rawSpec: '', +7959 silly mapToRegistry spec: 'latest', +7959 silly mapToRegistry type: 'tag' } +7960 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-primitive +7961 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-primitive not in flight; fetching +7962 silly cache add parsed spec Result { +7962 silly cache add raw: 'is-dotfile@^1.0.0', +7962 silly cache add scope: null, +7962 silly cache add name: 'is-dotfile', +7962 silly cache add rawSpec: '^1.0.0', +7962 silly cache add spec: '>=1.0.0 <2.0.0', +7962 silly cache add type: 'range' } +7963 silly addNamed is-dotfile@>=1.0.0 <2.0.0 +7964 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for is-dotfile +7965 silly addNameRange { name: 'is-dotfile', range: '>=1.0.0 <2.0.0', hasData: false } +7966 silly mapToRegistry name is-dotfile +7967 silly mapToRegistry using default registry +7968 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7969 silly mapToRegistry data Result { +7969 silly mapToRegistry raw: 'is-dotfile', +7969 silly mapToRegistry scope: null, +7969 silly mapToRegistry name: 'is-dotfile', +7969 silly mapToRegistry rawSpec: '', +7969 silly mapToRegistry spec: 'latest', +7969 silly mapToRegistry type: 'tag' } +7970 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-dotfile +7971 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-dotfile not in flight; fetching +7972 silly cache add parsed spec Result { +7972 silly cache add raw: 'is-extendable@^0.1.1', +7972 silly cache add scope: null, +7972 silly cache add name: 'is-extendable', +7972 silly cache add rawSpec: '^0.1.1', +7972 silly cache add spec: '>=0.1.1 <0.2.0', +7972 silly cache add type: 'range' } +7973 silly addNamed is-extendable@>=0.1.1 <0.2.0 +7974 verbose addNamed ">=0.1.1 <0.2.0" is a valid semver range for is-extendable +7975 silly addNameRange { name: 'is-extendable', +7975 silly addNameRange range: '>=0.1.1 <0.2.0', +7975 silly addNameRange hasData: false } +7976 silly mapToRegistry name is-extendable +7977 silly mapToRegistry using default registry +7978 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7979 silly mapToRegistry data Result { +7979 silly mapToRegistry raw: 'is-extendable', +7979 silly mapToRegistry scope: null, +7979 silly mapToRegistry name: 'is-extendable', +7979 silly mapToRegistry rawSpec: '', +7979 silly mapToRegistry spec: 'latest', +7979 silly mapToRegistry type: 'tag' } +7980 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-extendable +7981 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-extendable not in flight; fetching +7982 silly cache add parsed spec Result { +7982 silly cache add raw: 'expand-range@^1.8.1', +7982 silly cache add scope: null, +7982 silly cache add name: 'expand-range', +7982 silly cache add rawSpec: '^1.8.1', +7982 silly cache add spec: '>=1.8.1 <2.0.0', +7982 silly cache add type: 'range' } +7983 silly addNamed expand-range@>=1.8.1 <2.0.0 +7984 verbose addNamed ">=1.8.1 <2.0.0" is a valid semver range for expand-range +7985 silly addNameRange { name: 'expand-range', range: '>=1.8.1 <2.0.0', hasData: false } +7986 silly mapToRegistry name expand-range +7987 silly mapToRegistry using default registry +7988 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +7989 silly mapToRegistry data Result { +7989 silly mapToRegistry raw: 'expand-range', +7989 silly mapToRegistry scope: null, +7989 silly mapToRegistry name: 'expand-range', +7989 silly mapToRegistry rawSpec: '', +7989 silly mapToRegistry spec: 'latest', +7989 silly mapToRegistry type: 'tag' } +7990 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/expand-range +7991 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/expand-range not in flight; fetching +7992 silly cache add args [ 'arr-flatten@^1.0.1', null ] +7993 verbose cache add spec arr-flatten@^1.0.1 +7994 silly cache add args [ 'is-posix-bracket@^0.1.0', null ] +7995 verbose cache add spec is-posix-bracket@^0.1.0 +7996 silly cache add parsed spec Result { +7996 silly cache add raw: 'arr-flatten@^1.0.1', +7996 silly cache add scope: null, +7996 silly cache add name: 'arr-flatten', +7996 silly cache add rawSpec: '^1.0.1', +7996 silly cache add spec: '>=1.0.1 <2.0.0', +7996 silly cache add type: 'range' } +7997 silly addNamed arr-flatten@>=1.0.1 <2.0.0 +7998 verbose addNamed ">=1.0.1 <2.0.0" is a valid semver range for arr-flatten +7999 silly addNameRange { name: 'arr-flatten', range: '>=1.0.1 <2.0.0', hasData: false } +8000 silly mapToRegistry name arr-flatten +8001 silly mapToRegistry using default registry +8002 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8003 silly mapToRegistry data Result { +8003 silly mapToRegistry raw: 'arr-flatten', +8003 silly mapToRegistry scope: null, +8003 silly mapToRegistry name: 'arr-flatten', +8003 silly mapToRegistry rawSpec: '', +8003 silly mapToRegistry spec: 'latest', +8003 silly mapToRegistry type: 'tag' } +8004 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/arr-flatten +8005 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/arr-flatten not in flight; fetching +8006 silly cache add parsed spec Result { +8006 silly cache add raw: 'is-posix-bracket@^0.1.0', +8006 silly cache add scope: null, +8006 silly cache add name: 'is-posix-bracket', +8006 silly cache add rawSpec: '^0.1.0', +8006 silly cache add spec: '>=0.1.0 <0.2.0', +8006 silly cache add type: 'range' } +8007 silly addNamed is-posix-bracket@>=0.1.0 <0.2.0 +8008 verbose addNamed ">=0.1.0 <0.2.0" is a valid semver range for is-posix-bracket +8009 silly addNameRange { name: 'is-posix-bracket', +8009 silly addNameRange range: '>=0.1.0 <0.2.0', +8009 silly addNameRange hasData: false } +8010 silly mapToRegistry name is-posix-bracket +8011 silly mapToRegistry using default registry +8012 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8013 silly mapToRegistry data Result { +8013 silly mapToRegistry raw: 'is-posix-bracket', +8013 silly mapToRegistry scope: null, +8013 silly mapToRegistry name: 'is-posix-bracket', +8013 silly mapToRegistry rawSpec: '', +8013 silly mapToRegistry spec: 'latest', +8013 silly mapToRegistry type: 'tag' } +8014 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-posix-bracket +8015 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-posix-bracket not in flight; fetching +8016 silly cache add args [ 'glob-base@^0.3.0', null ] +8017 verbose cache add spec glob-base@^0.3.0 +8018 silly cache add args [ 'for-own@^0.1.3', null ] +8019 verbose cache add spec for-own@^0.1.3 +8020 silly cache add parsed spec Result { +8020 silly cache add raw: 'glob-base@^0.3.0', +8020 silly cache add scope: null, +8020 silly cache add name: 'glob-base', +8020 silly cache add rawSpec: '^0.3.0', +8020 silly cache add spec: '>=0.3.0 <0.4.0', +8020 silly cache add type: 'range' } +8021 silly addNamed glob-base@>=0.3.0 <0.4.0 +8022 verbose addNamed ">=0.3.0 <0.4.0" is a valid semver range for glob-base +8023 silly addNameRange { name: 'glob-base', range: '>=0.3.0 <0.4.0', hasData: false } +8024 silly mapToRegistry name glob-base +8025 silly mapToRegistry using default registry +8026 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8027 silly mapToRegistry data Result { +8027 silly mapToRegistry raw: 'glob-base', +8027 silly mapToRegistry scope: null, +8027 silly mapToRegistry name: 'glob-base', +8027 silly mapToRegistry rawSpec: '', +8027 silly mapToRegistry spec: 'latest', +8027 silly mapToRegistry type: 'tag' } +8028 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/glob-base +8029 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/glob-base not in flight; fetching +8030 silly cache add parsed spec Result { +8030 silly cache add raw: 'for-own@^0.1.3', +8030 silly cache add scope: null, +8030 silly cache add name: 'for-own', +8030 silly cache add rawSpec: '^0.1.3', +8030 silly cache add spec: '>=0.1.3 <0.2.0', +8030 silly cache add type: 'range' } +8031 silly addNamed for-own@>=0.1.3 <0.2.0 +8032 verbose addNamed ">=0.1.3 <0.2.0" is a valid semver range for for-own +8033 silly addNameRange { name: 'for-own', range: '>=0.1.3 <0.2.0', hasData: false } +8034 silly mapToRegistry name for-own +8035 silly mapToRegistry using default registry +8036 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8037 silly mapToRegistry data Result { +8037 silly mapToRegistry raw: 'for-own', +8037 silly mapToRegistry scope: null, +8037 silly mapToRegistry name: 'for-own', +8037 silly mapToRegistry rawSpec: '', +8037 silly mapToRegistry spec: 'latest', +8037 silly mapToRegistry type: 'tag' } +8038 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/for-own +8039 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/for-own not in flight; fetching +8040 silly cache add args [ 'preserve@^0.2.0', null ] +8041 verbose cache add spec preserve@^0.2.0 +8042 silly cache add parsed spec Result { +8042 silly cache add raw: 'preserve@^0.2.0', +8042 silly cache add scope: null, +8042 silly cache add name: 'preserve', +8042 silly cache add rawSpec: '^0.2.0', +8042 silly cache add spec: '>=0.2.0 <0.3.0', +8042 silly cache add type: 'range' } +8043 silly addNamed preserve@>=0.2.0 <0.3.0 +8044 verbose addNamed ">=0.2.0 <0.3.0" is a valid semver range for preserve +8045 silly addNameRange { name: 'preserve', range: '>=0.2.0 <0.3.0', hasData: false } +8046 silly mapToRegistry name preserve +8047 silly mapToRegistry using default registry +8048 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8049 silly mapToRegistry data Result { +8049 silly mapToRegistry raw: 'preserve', +8049 silly mapToRegistry scope: null, +8049 silly mapToRegistry name: 'preserve', +8049 silly mapToRegistry rawSpec: '', +8049 silly mapToRegistry spec: 'latest', +8049 silly mapToRegistry type: 'tag' } +8050 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/preserve +8051 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/preserve not in flight; fetching +8052 silly cache add args [ 'repeat-element@^1.1.2', null ] +8053 verbose cache add spec repeat-element@^1.1.2 +8054 silly cache add parsed spec Result { +8054 silly cache add raw: 'repeat-element@^1.1.2', +8054 silly cache add scope: null, +8054 silly cache add name: 'repeat-element', +8054 silly cache add rawSpec: '^1.1.2', +8054 silly cache add spec: '>=1.1.2 <2.0.0', +8054 silly cache add type: 'range' } +8055 silly addNamed repeat-element@>=1.1.2 <2.0.0 +8056 verbose addNamed ">=1.1.2 <2.0.0" is a valid semver range for repeat-element +8057 silly addNameRange { name: 'repeat-element', +8057 silly addNameRange range: '>=1.1.2 <2.0.0', +8057 silly addNameRange hasData: false } +8058 silly mapToRegistry name repeat-element +8059 silly mapToRegistry using default registry +8060 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8061 silly mapToRegistry data Result { +8061 silly mapToRegistry raw: 'repeat-element', +8061 silly mapToRegistry scope: null, +8061 silly mapToRegistry name: 'repeat-element', +8061 silly mapToRegistry rawSpec: '', +8061 silly mapToRegistry spec: 'latest', +8061 silly mapToRegistry type: 'tag' } +8062 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/repeat-element +8063 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/repeat-element not in flight; fetching +8064 verbose tar unpack /home/ruanyf/.tnpm/is-extglob/1.0.0/package.tgz +8065 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob +8066 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob is being purged +8067 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob +8068 verbose rebuildBundles [ 'restore-cursor' ] +8069 info install cli-cursor@1.0.2 +8070 verbose tar unpack /home/ruanyf/.tnpm/is-extendable/0.1.1/package.tgz +8071 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable +8072 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable is being purged +8073 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable +8074 info install path-is-absolute@1.0.0 +8075 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits/package.json +8076 silly mapToRegistry name wrappy +8077 silly mapToRegistry using default registry +8078 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8079 silly mapToRegistry data Result { +8079 silly mapToRegistry raw: 'wrappy', +8079 silly mapToRegistry scope: null, +8079 silly mapToRegistry name: 'wrappy', +8079 silly mapToRegistry rawSpec: '', +8079 silly mapToRegistry spec: 'latest', +8079 silly mapToRegistry type: 'tag' } +8080 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy +8081 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz not in flight; adding +8082 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz', +8082 verbose addRemoteTarball 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f' ] +8083 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json written +8084 silly install resolved [ { name: 'wrappy', +8084 silly install resolved version: '1.0.2', +8084 silly install resolved description: 'Callback wrapping utility', +8084 silly install resolved main: 'wrappy.js', +8084 silly install resolved files: [ 'wrappy.js' ], +8084 silly install resolved directories: { test: 'test' }, +8084 silly install resolved dependencies: {}, +8084 silly install resolved devDependencies: { tap: '^2.3.1' }, +8084 silly install resolved scripts: { test: 'tap --coverage test/*.js' }, +8084 silly install resolved repository: { type: 'git', url: 'git+https://github.com/npm/wrappy.git' }, +8084 silly install resolved author: +8084 silly install resolved { name: 'Isaac Z. Schlueter', +8084 silly install resolved email: 'i@izs.me', +8084 silly install resolved url: 'http://blog.izs.me/' }, +8084 silly install resolved license: 'ISC', +8084 silly install resolved bugs: { url: 'https://github.com/npm/wrappy/issues' }, +8084 silly install resolved homepage: 'https://github.com/npm/wrappy', +8084 silly install resolved gitHead: '71d91b6dc5bdeac37e218c2cf03f9ab55b60d214', +8084 silly install resolved _id: 'wrappy@1.0.2', +8084 silly install resolved _shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', +8084 silly install resolved _from: 'wrappy@>=1.0.0 <2.0.0', +8084 silly install resolved _npmVersion: '3.9.1', +8084 silly install resolved _nodeVersion: '5.10.1', +8084 silly install resolved _npmUser: { name: 'zkat', email: 'kat@sykosomatic.org' }, +8084 silly install resolved dist: +8084 silly install resolved { shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', +8084 silly install resolved size: 1676, +8084 silly install resolved noattachment: false, +8084 silly install resolved key: 'wrappy/-/wrappy-1.0.2.tgz', +8084 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' }, +8084 silly install resolved maintainers: [ [Object], [Object] ], +8084 silly install resolved _npmOperationalInternal: +8084 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +8084 silly install resolved tmp: 'tmp/wrappy-1.0.2.tgz_1463527848281_0.037129373755306005' }, +8084 silly install resolved publish_time: 1463527852415, +8084 silly install resolved _cnpm_publish_time: 1463527852415, +8084 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' } ] +8085 info install wrappy@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +8086 info installOne wrappy@1.0.2 +8087 verbose installOne of wrappy to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once not in flight; installing +8088 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8089 verbose request uri http://registry.npm.alibaba-inc.com/brace-expansion +8090 verbose request no auth needed +8091 info attempt registry request try #1 at 上午9:12:31 +8092 verbose etag "43f2-rM3o5Rcx0EEH0MhAKn91aA" +8093 http request GET http://registry.npm.alibaba-inc.com/brace-expansion +8094 silly gunzTarPerm modes [ '755', '644' ] +8095 silly gunzTarPerm modes [ '755', '644' ] +8096 info linkStuff is-glob@2.0.1 +8097 silly linkStuff is-glob@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +8098 silly linkStuff is-glob@2.0.1 is part of a global install +8099 silly linkStuff is-glob@2.0.1 is installed into a global node_modules +8100 info postinstall string-width@1.0.1 +8101 info linkStuff is-extglob@1.0.0 +8102 silly linkStuff is-extglob@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +8103 silly linkStuff is-extglob@1.0.0 is part of a global install +8104 silly linkStuff is-extglob@1.0.0 is installed into a global node_modules +8105 silly gunzTarPerm extractEntry dist/rx.async.compat.map +8106 info linkStuff normalize-path@2.0.1 +8107 silly linkStuff normalize-path@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +8108 silly linkStuff normalize-path@2.0.1 is part of a global install +8109 silly linkStuff normalize-path@2.0.1 is installed into a global node_modules +8110 info linkStuff array-unique@0.2.1 +8111 silly linkStuff array-unique@0.2.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +8112 silly linkStuff array-unique@0.2.1 is part of a global install +8113 silly linkStuff array-unique@0.2.1 is installed into a global node_modules +8114 verbose unlock done using /home/ruanyf/.tnpm/_locks/filename-regex-4d7ec169971d8203.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex +8115 info postinstall cli-cursor@1.0.2 +8116 info postinstall path-is-absolute@1.0.0 +8117 info linkStuff extglob@0.3.2 +8118 silly linkStuff extglob@0.3.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +8119 silly linkStuff extglob@0.3.2 is part of a global install +8120 silly linkStuff extglob@0.3.2 is installed into a global node_modules +8121 info retry fetch attempt 1 at 上午9:12:31 +8122 info attempt registry request try #1 at 上午9:12:31 +8123 http fetch GET http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz +8124 silly cache add args [ 'wrappy@1', null ] +8125 verbose cache add spec wrappy@1 +8126 silly cache add parsed spec Result { +8126 silly cache add raw: 'wrappy@1', +8126 silly cache add scope: null, +8126 silly cache add name: 'wrappy', +8126 silly cache add rawSpec: '1', +8126 silly cache add spec: '>=1.0.0 <2.0.0', +8126 silly cache add type: 'range' } +8127 silly addNamed wrappy@>=1.0.0 <2.0.0 +8128 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for wrappy +8129 silly addNameRange { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: false } +8130 silly mapToRegistry name wrappy +8131 silly mapToRegistry using default registry +8132 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8133 silly mapToRegistry data Result { +8133 silly mapToRegistry raw: 'wrappy', +8133 silly mapToRegistry scope: null, +8133 silly mapToRegistry name: 'wrappy', +8133 silly mapToRegistry rawSpec: '', +8133 silly mapToRegistry spec: 'latest', +8133 silly mapToRegistry type: 'tag' } +8134 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy +8135 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/wrappy not in flight; fetching +8136 verbose lock using /home/ruanyf/.tnpm/_locks/wrappy-16d4012a4a7813b9.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy +8137 silly gunzTarPerm extractEntry flattenDepth.js +8138 silly gunzTarPerm extractEntry _wrapperClone.js +8139 silly gunzTarPerm extractEntry dist/rx.time.map +8140 verbose request uri http://registry.npm.alibaba-inc.com/is-equal-shallow +8141 verbose request no auth needed +8142 info attempt registry request try #1 at 上午9:12:31 +8143 verbose etag "276f-j58UXudIyUp1QfsFWOVc9A" +8144 http request GET http://registry.npm.alibaba-inc.com/is-equal-shallow +8145 silly install write writing wrappy 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy +8146 verbose request uri http://registry.npm.alibaba-inc.com/is-buffer +8147 verbose request no auth needed +8148 info attempt registry request try #1 at 上午9:12:31 +8149 verbose etag "32a6-iC7hACETSTHpy6SK0H7Tqw" +8150 http request GET http://registry.npm.alibaba-inc.com/is-buffer +8151 verbose linkBins is-glob@2.0.1 +8152 verbose linkMans is-glob@2.0.1 +8153 verbose rebuildBundles is-glob@2.0.1 +8154 verbose linkBins is-extglob@1.0.0 +8155 verbose linkMans is-extglob@1.0.0 +8156 verbose rebuildBundles is-extglob@1.0.0 +8157 verbose linkBins normalize-path@2.0.1 +8158 verbose linkMans normalize-path@2.0.1 +8159 verbose rebuildBundles normalize-path@2.0.1 +8160 verbose unlock done using /home/ruanyf/.tnpm/_locks/string-width-569431eadb6883c4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width +8161 verbose linkBins array-unique@0.2.1 +8162 verbose linkMans array-unique@0.2.1 +8163 verbose rebuildBundles array-unique@0.2.1 +8164 verbose get http://registry.npm.alibaba-inc.com/is-extendable not expired, no request +8165 silly addNameRange number 2 { name: 'is-extendable', range: '>=0.1.1 <0.2.0', hasData: true } +8166 silly addNameRange versions [ 'is-extendable', [ '0.1.1', '0.1.0' ] ] +8167 silly addNamed is-extendable@0.1.1 +8168 verbose addNamed "0.1.1" is a plain semver version for is-extendable +8169 verbose request uri http://registry.npm.alibaba-inc.com/is-dotfile +8170 verbose request no auth needed +8171 info attempt registry request try #1 at 上午9:12:31 +8172 verbose etag "264d-i8+nwIw0XQ0+JGxT3x3nqg" +8173 http request GET http://registry.npm.alibaba-inc.com/is-dotfile +8174 verbose request uri http://registry.npm.alibaba-inc.com/is-primitive +8175 verbose request no auth needed +8176 info attempt registry request try #1 at 上午9:12:31 +8177 verbose etag "17a1-4WmUiza6g6ACL8B4X+r8yQ" +8178 http request GET http://registry.npm.alibaba-inc.com/is-primitive +8179 verbose request uri http://registry.npm.alibaba-inc.com/arr-flatten +8180 verbose request no auth needed +8181 info attempt registry request try #1 at 上午9:12:31 +8182 verbose etag "289f-pyxzsieSsNLBGChEzkiXug" +8183 http request GET http://registry.npm.alibaba-inc.com/arr-flatten +8184 verbose request uri http://registry.npm.alibaba-inc.com/expand-range +8185 verbose request no auth needed +8186 info attempt registry request try #1 at 上午9:12:31 +8187 http request GET http://registry.npm.alibaba-inc.com/expand-range +8188 verbose request uri http://registry.npm.alibaba-inc.com/is-posix-bracket +8189 verbose request no auth needed +8190 info attempt registry request try #1 at 上午9:12:31 +8191 verbose etag "1cf5-7JxmlUX/RHfd/5f6TUoa+A" +8192 http request GET http://registry.npm.alibaba-inc.com/is-posix-bracket +8193 verbose request uri http://registry.npm.alibaba-inc.com/for-own +8194 verbose request no auth needed +8195 info attempt registry request try #1 at 上午9:12:31 +8196 verbose etag "27f8-R4Q5eVAvr0SqBvH4RHqlEw" +8197 http request GET http://registry.npm.alibaba-inc.com/for-own +8198 verbose request uri http://registry.npm.alibaba-inc.com/glob-base +8199 verbose request no auth needed +8200 info attempt registry request try #1 at 上午9:12:31 +8201 verbose etag "2ed3-kyY40XvfwhG+QCrrxs5FTQ" +8202 http request GET http://registry.npm.alibaba-inc.com/glob-base +8203 verbose request uri http://registry.npm.alibaba-inc.com/preserve +8204 verbose request no auth needed +8205 info attempt registry request try #1 at 上午9:12:31 +8206 verbose etag "28c3-M4vJGgXuyYs2fBsc1Jog8w" +8207 http request GET http://registry.npm.alibaba-inc.com/preserve +8208 verbose request uri http://registry.npm.alibaba-inc.com/repeat-element +8209 verbose request no auth needed +8210 info attempt registry request try #1 at 上午9:12:31 +8211 verbose etag "1f34-s+bsVDmPJ9vJiS+ux2HfzA" +8212 http request GET http://registry.npm.alibaba-inc.com/repeat-element +8213 verbose unlock done using /home/ruanyf/.tnpm/_locks/cli-cursor-6c4949ad4093ce24.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor +8214 verbose unlock done using /home/ruanyf/.tnpm/_locks/path-is-absolute-ff20d4dad5e47d08.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute +8215 info install is-glob@2.0.1 +8216 info install is-extglob@1.0.0 +8217 info install normalize-path@2.0.1 +8218 info install array-unique@0.2.1 +8219 verbose linkBins extglob@0.3.2 +8220 verbose linkMans extglob@0.3.2 +8221 verbose rebuildBundles extglob@0.3.2 +8222 silly gunzTarPerm extractEntry package.json +8223 silly install resolved [] +8224 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits +8225 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits +8226 silly gunzTarPerm extractEntry package.json +8227 silly gunzTarPerm extractEntry dist/rx.all.map +8228 info install extglob@0.3.2 +8229 info postinstall is-glob@2.0.1 +8230 info postinstall is-extglob@1.0.0 +8231 info postinstall normalize-path@2.0.1 +8232 info postinstall array-unique@0.2.1 +8233 verbose get http://registry.npm.alibaba-inc.com/wrappy not expired, no request +8234 silly addNameRange number 2 { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: true } +8235 silly addNameRange versions [ 'wrappy', [ '1.0.2', '1.0.1', '1.0.0' ] ] +8236 silly addNamed wrappy@1.0.2 +8237 verbose addNamed "1.0.2" is a plain semver version for wrappy +8238 info postinstall extglob@0.3.2 +8239 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy +8240 silly gunzTarPerm extractEntry README.md +8241 silly gunzTarPerm extractEntry LICENSE +8242 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-glob-471d4436f01dafa7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob +8243 silly gunzTarPerm extractEntry README.md +8244 silly gunzTarPerm extractEntry LICENSE +8245 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-extglob-82e285b1f8e6e677.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob +8246 verbose unlock done using /home/ruanyf/.tnpm/_locks/normalize-path-a6a45378975aa8fb.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path +8247 verbose unlock done using /home/ruanyf/.tnpm/_locks/array-unique-563063201a1b39e1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique +8248 silly cache afterAdd is-extendable@0.1.1 +8249 verbose afterAdd /home/ruanyf/.tnpm/is-extendable/0.1.1/package/package.json not in flight; writing +8250 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8251 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/package.json +8252 info linkStuff inherits@2.0.1 +8253 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules +8254 silly linkStuff inherits@2.0.1 is part of a global install +8255 silly linkStuff inherits@2.0.1 is installed into a global node_modules +8256 verbose unlock done using /home/ruanyf/.tnpm/_locks/extglob-ce4a0e7242960176.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob +8257 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy is being purged from base /home/ruanyf/npm-global +8258 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy +8259 silly gunzTarPerm extractEntry flip.js +8260 silly gunzTarPerm extractEntry _unescapeHtmlChar.js +8261 verbose tar unpack /home/ruanyf/.tnpm/wrappy/1.0.2/package.tgz +8262 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy +8263 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy is being purged +8264 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy +8265 silly cache afterAdd wrappy@1.0.2 +8266 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json not in flight; writing +8267 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8268 silly gunzTarPerm modes [ '755', '644' ] +8269 verbose linkBins inherits@2.0.1 +8270 verbose linkMans inherits@2.0.1 +8271 verbose rebuildBundles inherits@2.0.1 +8272 info preinstall readable-stream@1.0.34 +8273 info install inherits@2.0.1 +8274 http 304 http://registry.npm.alibaba-inc.com/brace-expansion +8275 verbose headers { server: 'Tengine', +8275 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8275 verbose headers connection: 'keep-alive', +8275 verbose headers etag: '"43f2-rM3o5Rcx0EEH0MhAKn91aA"', +8275 verbose headers 'x-readtime': '23' } +8276 silly get cb [ 304, +8276 silly get { server: 'Tengine', +8276 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8276 silly get connection: 'keep-alive', +8276 silly get etag: '"43f2-rM3o5Rcx0EEH0MhAKn91aA"', +8276 silly get 'x-readtime': '23' } ] +8277 verbose etag http://registry.npm.alibaba-inc.com/brace-expansion from cache +8278 verbose get saving brace-expansion to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/brace-expansion/.cache.json +8279 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8280 verbose afterAdd /home/ruanyf/.tnpm/is-extendable/0.1.1/package/package.json written +8281 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/package.json +8282 info postinstall inherits@2.0.1 +8283 http fetch 200 http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz +8284 silly gunzTarPerm extractEntry package.json +8285 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json written +8286 silly install resolved [ { name: 'wrappy', +8286 silly install resolved version: '1.0.2', +8286 silly install resolved description: 'Callback wrapping utility', +8286 silly install resolved main: 'wrappy.js', +8286 silly install resolved files: [ 'wrappy.js' ], +8286 silly install resolved directories: { test: 'test' }, +8286 silly install resolved dependencies: {}, +8286 silly install resolved devDependencies: { tap: '^2.3.1' }, +8286 silly install resolved scripts: { test: 'tap --coverage test/*.js' }, +8286 silly install resolved repository: { type: 'git', url: 'git+https://github.com/npm/wrappy.git' }, +8286 silly install resolved author: +8286 silly install resolved { name: 'Isaac Z. Schlueter', +8286 silly install resolved email: 'i@izs.me', +8286 silly install resolved url: 'http://blog.izs.me/' }, +8286 silly install resolved license: 'ISC', +8286 silly install resolved bugs: { url: 'https://github.com/npm/wrappy/issues' }, +8286 silly install resolved homepage: 'https://github.com/npm/wrappy', +8286 silly install resolved gitHead: '71d91b6dc5bdeac37e218c2cf03f9ab55b60d214', +8286 silly install resolved _id: 'wrappy@1.0.2', +8286 silly install resolved _shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', +8286 silly install resolved _from: 'wrappy@>=1.0.0 <2.0.0', +8286 silly install resolved _npmVersion: '3.9.1', +8286 silly install resolved _nodeVersion: '5.10.1', +8286 silly install resolved _npmUser: { name: 'zkat', email: 'kat@sykosomatic.org' }, +8286 silly install resolved dist: +8286 silly install resolved { shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', +8286 silly install resolved size: 1676, +8286 silly install resolved noattachment: false, +8286 silly install resolved key: 'wrappy/-/wrappy-1.0.2.tgz', +8286 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' }, +8286 silly install resolved maintainers: [ [Object], [Object] ], +8286 silly install resolved _npmOperationalInternal: +8286 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +8286 silly install resolved tmp: 'tmp/wrappy-1.0.2.tgz_1463527848281_0.037129373755306005' }, +8286 silly install resolved publish_time: 1463527852415, +8286 silly install resolved _cnpm_publish_time: 1463527852415, +8286 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz', +8286 silly install resolved readme: 'ERROR: No README data found!' } ] +8287 info install wrappy@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +8288 info installOne wrappy@1.0.2 +8289 verbose installOne of wrappy to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight not in flight; installing +8290 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8291 silly gunzTarPerm extractEntry index.js +8292 http 304 http://registry.npm.alibaba-inc.com/is-equal-shallow +8293 verbose headers { server: 'Tengine', +8293 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8293 verbose headers connection: 'keep-alive', +8293 verbose headers etag: '"276f-j58UXudIyUp1QfsFWOVc9A"', +8293 verbose headers 'x-readtime': '20' } +8294 silly get cb [ 304, +8294 silly get { server: 'Tengine', +8294 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8294 silly get connection: 'keep-alive', +8294 silly get etag: '"276f-j58UXudIyUp1QfsFWOVc9A"', +8294 silly get 'x-readtime': '20' } ] +8295 verbose etag http://registry.npm.alibaba-inc.com/is-equal-shallow from cache +8296 verbose get saving is-equal-shallow to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-equal-shallow/.cache.json +8297 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8298 http 304 http://registry.npm.alibaba-inc.com/is-dotfile +8299 verbose headers { server: 'Tengine', +8299 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8299 verbose headers connection: 'keep-alive', +8299 verbose headers etag: '"264d-i8+nwIw0XQ0+JGxT3x3nqg"', +8299 verbose headers 'x-readtime': '17' } +8300 silly get cb [ 304, +8300 silly get { server: 'Tengine', +8300 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8300 silly get connection: 'keep-alive', +8300 silly get etag: '"264d-i8+nwIw0XQ0+JGxT3x3nqg"', +8300 silly get 'x-readtime': '17' } ] +8301 verbose etag http://registry.npm.alibaba-inc.com/is-dotfile from cache +8302 verbose get saving is-dotfile to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-dotfile/.cache.json +8303 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8304 http 304 http://registry.npm.alibaba-inc.com/is-primitive +8305 verbose headers { server: 'Tengine', +8305 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8305 verbose headers connection: 'keep-alive', +8305 verbose headers etag: '"17a1-4WmUiza6g6ACL8B4X+r8yQ"', +8305 verbose headers 'x-readtime': '15' } +8306 silly get cb [ 304, +8306 silly get { server: 'Tengine', +8306 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8306 silly get connection: 'keep-alive', +8306 silly get etag: '"17a1-4WmUiza6g6ACL8B4X+r8yQ"', +8306 silly get 'x-readtime': '15' } ] +8307 verbose etag http://registry.npm.alibaba-inc.com/is-primitive from cache +8308 verbose get saving is-primitive to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-primitive/.cache.json +8309 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8310 silly gunzTarPerm extractEntry index.js +8311 silly gunzTarPerm extractEntry floor.js +8312 silly gunzTarPerm extractEntry _toSource.js +8313 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-5272b9fa3dc7f017.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits +8314 http 304 http://registry.npm.alibaba-inc.com/preserve +8315 verbose headers { server: 'Tengine', +8315 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8315 verbose headers connection: 'keep-alive', +8315 verbose headers etag: '"28c3-M4vJGgXuyYs2fBsc1Jog8w"', +8315 verbose headers 'x-readtime': '16' } +8316 silly get cb [ 304, +8316 silly get { server: 'Tengine', +8316 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8316 silly get connection: 'keep-alive', +8316 silly get etag: '"28c3-M4vJGgXuyYs2fBsc1Jog8w"', +8316 silly get 'x-readtime': '16' } ] +8317 verbose etag http://registry.npm.alibaba-inc.com/preserve from cache +8318 verbose get saving preserve to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/preserve/.cache.json +8319 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8320 http 304 http://registry.npm.alibaba-inc.com/arr-flatten +8321 verbose headers { server: 'Tengine', +8321 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8321 verbose headers connection: 'keep-alive', +8321 verbose headers etag: '"289f-pyxzsieSsNLBGChEzkiXug"', +8321 verbose headers 'x-readtime': '20' } +8322 silly get cb [ 304, +8322 silly get { server: 'Tengine', +8322 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8322 silly get connection: 'keep-alive', +8322 silly get etag: '"289f-pyxzsieSsNLBGChEzkiXug"', +8322 silly get 'x-readtime': '20' } ] +8323 verbose etag http://registry.npm.alibaba-inc.com/arr-flatten from cache +8324 verbose get saving arr-flatten to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/arr-flatten/.cache.json +8325 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8326 http 304 http://registry.npm.alibaba-inc.com/glob-base +8327 verbose headers { server: 'Tengine', +8327 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8327 verbose headers connection: 'keep-alive', +8327 verbose headers etag: '"2ed3-kyY40XvfwhG+QCrrxs5FTQ"', +8327 verbose headers 'x-readtime': '19' } +8328 silly get cb [ 304, +8328 silly get { server: 'Tengine', +8328 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8328 silly get connection: 'keep-alive', +8328 silly get etag: '"2ed3-kyY40XvfwhG+QCrrxs5FTQ"', +8328 silly get 'x-readtime': '19' } ] +8329 verbose etag http://registry.npm.alibaba-inc.com/glob-base from cache +8330 verbose get saving glob-base to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/glob-base/.cache.json +8331 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8332 verbose lock using /home/ruanyf/.tnpm/_locks/wrappy-b27925cc34dcc2fb.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy +8333 http 304 http://registry.npm.alibaba-inc.com/for-own +8334 verbose headers { server: 'Tengine', +8334 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8334 verbose headers connection: 'keep-alive', +8334 verbose headers etag: '"27f8-R4Q5eVAvr0SqBvH4RHqlEw"', +8334 verbose headers 'x-readtime': '20' } +8335 silly get cb [ 304, +8335 silly get { server: 'Tengine', +8335 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8335 silly get connection: 'keep-alive', +8335 silly get etag: '"27f8-R4Q5eVAvr0SqBvH4RHqlEw"', +8335 silly get 'x-readtime': '20' } ] +8336 verbose etag http://registry.npm.alibaba-inc.com/for-own from cache +8337 verbose get saving for-own to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/for-own/.cache.json +8338 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8339 http 304 http://registry.npm.alibaba-inc.com/is-posix-bracket +8340 verbose headers { server: 'Tengine', +8340 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8340 verbose headers connection: 'keep-alive', +8340 verbose headers etag: '"1cf5-7JxmlUX/RHfd/5f6TUoa+A"', +8340 verbose headers 'x-readtime': '22' } +8341 silly get cb [ 304, +8341 silly get { server: 'Tengine', +8341 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8341 silly get connection: 'keep-alive', +8341 silly get etag: '"1cf5-7JxmlUX/RHfd/5f6TUoa+A"', +8341 silly get 'x-readtime': '22' } ] +8342 verbose etag http://registry.npm.alibaba-inc.com/is-posix-bracket from cache +8343 verbose get saving is-posix-bracket to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-posix-bracket/.cache.json +8344 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8345 silly fetchAndShaCheck shasum b5243d8f3ec1aa35f1364605bc0d1036e30ab69f +8346 silly install write writing wrappy 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy +8347 silly gunzTarPerm extractEntry dist/rx.all.compat.map +8348 http 304 http://registry.npm.alibaba-inc.com/is-buffer +8349 verbose headers { server: 'Tengine', +8349 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8349 verbose headers connection: 'keep-alive', +8349 verbose headers etag: '"32a6-iC7hACETSTHpy6SK0H7Tqw"', +8349 verbose headers 'x-readtime': '22' } +8350 silly get cb [ 304, +8350 silly get { server: 'Tengine', +8350 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8350 silly get connection: 'keep-alive', +8350 silly get etag: '"32a6-iC7hACETSTHpy6SK0H7Tqw"', +8350 silly get 'x-readtime': '22' } ] +8351 verbose etag http://registry.npm.alibaba-inc.com/is-buffer from cache +8352 verbose get saving is-buffer to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-buffer/.cache.json +8353 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8354 silly gunzTarPerm extractEntry README.md +8355 silly gunzTarPerm extractEntry LICENSE +8356 silly prepareForInstallMany adding core-util-is@~1.0.0 from readable-stream dependencies +8357 silly prepareForInstallMany adding isarray@0.0.1 from readable-stream dependencies +8358 silly prepareForInstallMany adding string_decoder@~0.10.x from readable-stream dependencies +8359 silly prepareForInstallMany adding inherits@~2.0.1 from readable-stream dependencies +8360 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/package.json +8361 http 304 http://registry.npm.alibaba-inc.com/repeat-element +8362 verbose headers { server: 'Tengine', +8362 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8362 verbose headers connection: 'keep-alive', +8362 verbose headers etag: '"1f34-s+bsVDmPJ9vJiS+ux2HfzA"', +8362 verbose headers 'x-readtime': '23' } +8363 silly get cb [ 304, +8363 silly get { server: 'Tengine', +8363 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8363 silly get connection: 'keep-alive', +8363 silly get etag: '"1f34-s+bsVDmPJ9vJiS+ux2HfzA"', +8363 silly get 'x-readtime': '23' } ] +8364 verbose etag http://registry.npm.alibaba-inc.com/repeat-element from cache +8365 verbose get saving repeat-element to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/repeat-element/.cache.json +8366 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8367 silly addNameRange number 2 { name: 'brace-expansion', +8367 silly addNameRange range: '>=1.0.0 <2.0.0', +8367 silly addNameRange hasData: true } +8368 silly addNameRange versions [ 'brace-expansion', +8368 silly addNameRange [ '1.1.4', +8368 silly addNameRange '1.1.3', +8368 silly addNameRange '1.1.2', +8368 silly addNameRange '1.1.1', +8368 silly addNameRange '1.1.0', +8368 silly addNameRange '1.0.1', +8368 silly addNameRange '1.0.0', +8368 silly addNameRange '0.0.0' ] ] +8369 silly addNamed brace-expansion@1.1.4 +8370 verbose addNamed "1.1.4" is a plain semver version for brace-expansion +8371 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz not in flight; adding +8372 verbose addTmpTarball already have metadata; skipping unpack for wrappy@1.0.2 +8373 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8374 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy +8375 silly addNameRange number 2 { name: 'is-dotfile', range: '>=1.0.0 <2.0.0', hasData: true } +8376 silly addNameRange versions [ 'is-dotfile', +8376 silly addNameRange [ '1.0.2', '1.0.1', '1.0.0', '0.1.1', '0.1.0' ] ] +8377 silly addNamed is-dotfile@1.0.2 +8378 verbose addNamed "1.0.2" is a plain semver version for is-dotfile +8379 silly addNameRange number 2 { name: 'is-equal-shallow', +8379 silly addNameRange range: '>=0.1.3 <0.2.0', +8379 silly addNameRange hasData: true } +8380 silly addNameRange versions [ 'is-equal-shallow', [ '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] +8381 silly addNamed is-equal-shallow@0.1.3 +8382 verbose addNamed "0.1.3" is a plain semver version for is-equal-shallow +8383 silly addNameRange number 2 { name: 'is-primitive', range: '>=2.0.0 <3.0.0', hasData: true } +8384 silly addNameRange versions [ 'is-primitive', [ '2.0.0', '1.0.0', '0.1.0' ] ] +8385 silly addNamed is-primitive@2.0.0 +8386 verbose addNamed "2.0.0" is a plain semver version for is-primitive +8387 http 200 http://registry.npm.alibaba-inc.com/expand-range +8388 verbose headers { server: 'Tengine', +8388 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8388 verbose headers 'content-type': 'application/json; charset=utf-8', +8388 verbose headers 'transfer-encoding': 'chunked', +8388 verbose headers connection: 'keep-alive', +8388 verbose headers vary: 'Accept-Encoding', +8388 verbose headers 'x-readtime': '27', +8388 verbose headers 'content-encoding': 'gzip' } +8389 silly get cb [ 200, +8389 silly get { server: 'Tengine', +8389 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8389 silly get 'content-type': 'application/json; charset=utf-8', +8389 silly get 'transfer-encoding': 'chunked', +8389 silly get connection: 'keep-alive', +8389 silly get vary: 'Accept-Encoding', +8389 silly get 'x-readtime': '27', +8389 silly get 'content-encoding': 'gzip' } ] +8390 verbose get saving expand-range to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/expand-range/.cache.json +8391 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8392 silly addNameRange number 2 { name: 'arr-flatten', range: '>=1.0.1 <2.0.0', hasData: true } +8393 silly addNameRange versions [ 'arr-flatten', +8393 silly addNameRange [ '1.0.1', '1.0.0', '0.2.1', '0.2.0', '0.1.0' ] ] +8394 silly addNamed arr-flatten@1.0.1 +8395 verbose addNamed "1.0.1" is a plain semver version for arr-flatten +8396 silly addNameRange number 2 { name: 'glob-base', range: '>=0.3.0 <0.4.0', hasData: true } +8397 silly addNameRange versions [ 'glob-base', [ '0.3.0', '0.2.0', '0.1.1', '0.1.0' ] ] +8398 silly addNamed glob-base@0.3.0 +8399 verbose addNamed "0.3.0" is a plain semver version for glob-base +8400 silly addNameRange number 2 { name: 'preserve', range: '>=0.2.0 <0.3.0', hasData: true } +8401 silly addNameRange versions [ 'preserve', [ '0.2.0', '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] +8402 silly addNamed preserve@0.2.0 +8403 verbose addNamed "0.2.0" is a plain semver version for preserve +8404 silly gunzTarPerm extractEntry flow.js +8405 silly gunzTarPerm extractEntry _toKey.js +8406 silly addNameRange number 2 { name: 'for-own', range: '>=0.1.3 <0.2.0', hasData: true } +8407 silly addNameRange versions [ 'for-own', [ '0.1.4', '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] +8408 silly addNamed for-own@0.1.4 +8409 verbose addNamed "0.1.4" is a plain semver version for for-own +8410 silly addNameRange number 2 { name: 'is-posix-bracket', +8410 silly addNameRange range: '>=0.1.0 <0.2.0', +8410 silly addNameRange hasData: true } +8411 silly addNameRange versions [ 'is-posix-bracket', [ '0.1.1', '0.1.0' ] ] +8412 silly addNamed is-posix-bracket@0.1.1 +8413 verbose addNamed "0.1.1" is a plain semver version for is-posix-bracket +8414 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy is being purged from base /home/ruanyf/npm-global +8415 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy +8416 silly cache afterAdd brace-expansion@1.1.4 +8417 verbose afterAdd /home/ruanyf/.tnpm/brace-expansion/1.1.4/package/package.json not in flight; writing +8418 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8419 silly cache add args [ 'inherits@~2.0.1', null ] +8420 verbose cache add spec inherits@~2.0.1 +8421 silly cache add parsed spec Result { +8421 silly cache add raw: 'inherits@~2.0.1', +8421 silly cache add scope: null, +8421 silly cache add name: 'inherits', +8421 silly cache add rawSpec: '~2.0.1', +8421 silly cache add spec: '>=2.0.1 <2.1.0', +8421 silly cache add type: 'range' } +8422 silly addNamed inherits@>=2.0.1 <2.1.0 +8423 verbose addNamed ">=2.0.1 <2.1.0" is a valid semver range for inherits +8424 silly addNameRange { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: false } +8425 silly mapToRegistry name inherits +8426 silly mapToRegistry using default registry +8427 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8428 silly mapToRegistry data Result { +8428 silly mapToRegistry raw: 'inherits', +8428 silly mapToRegistry scope: null, +8428 silly mapToRegistry name: 'inherits', +8428 silly mapToRegistry rawSpec: '', +8428 silly mapToRegistry spec: 'latest', +8428 silly mapToRegistry type: 'tag' } +8429 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits +8430 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching +8431 silly addNameRange number 2 { name: 'is-buffer', range: '>=1.0.2 <2.0.0', hasData: true } +8432 silly addNameRange versions [ 'is-buffer', +8432 silly addNameRange [ '1.1.3', '1.1.2', '1.1.1', '1.1.0', '1.0.2', '1.0.1', '1.0.0' ] ] +8433 silly addNamed is-buffer@1.1.3 +8434 verbose addNamed "1.1.3" is a plain semver version for is-buffer +8435 verbose tar unpack /home/ruanyf/.tnpm/wrappy/1.0.2/package.tgz +8436 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy +8437 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy is being purged +8438 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy +8439 silly cache add args [ 'core-util-is@~1.0.0', null ] +8440 verbose cache add spec core-util-is@~1.0.0 +8441 silly cache add parsed spec Result { +8441 silly cache add raw: 'core-util-is@~1.0.0', +8441 silly cache add scope: null, +8441 silly cache add name: 'core-util-is', +8441 silly cache add rawSpec: '~1.0.0', +8441 silly cache add spec: '>=1.0.0 <1.1.0', +8441 silly cache add type: 'range' } +8442 silly addNamed core-util-is@>=1.0.0 <1.1.0 +8443 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for core-util-is +8444 silly addNameRange { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: false } +8445 silly mapToRegistry name core-util-is +8446 silly mapToRegistry using default registry +8447 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8448 silly mapToRegistry data Result { +8448 silly mapToRegistry raw: 'core-util-is', +8448 silly mapToRegistry scope: null, +8448 silly mapToRegistry name: 'core-util-is', +8448 silly mapToRegistry rawSpec: '', +8448 silly mapToRegistry spec: 'latest', +8448 silly mapToRegistry type: 'tag' } +8449 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/core-util-is +8450 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/core-util-is not in flight; fetching +8451 silly cache add args [ 'isarray@0.0.1', null ] +8452 verbose cache add spec isarray@0.0.1 +8453 silly cache add parsed spec Result { +8453 silly cache add raw: 'isarray@0.0.1', +8453 silly cache add scope: null, +8453 silly cache add name: 'isarray', +8453 silly cache add rawSpec: '0.0.1', +8453 silly cache add spec: '0.0.1', +8453 silly cache add type: 'version' } +8454 silly addNamed isarray@0.0.1 +8455 verbose addNamed "0.0.1" is a plain semver version for isarray +8456 silly mapToRegistry name isarray +8457 silly mapToRegistry using default registry +8458 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8459 silly mapToRegistry data Result { +8459 silly mapToRegistry raw: 'isarray', +8459 silly mapToRegistry scope: null, +8459 silly mapToRegistry name: 'isarray', +8459 silly mapToRegistry rawSpec: '', +8459 silly mapToRegistry spec: 'latest', +8459 silly mapToRegistry type: 'tag' } +8460 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isarray +8461 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/isarray not in flight; fetching +8462 silly addNameRange number 2 { name: 'repeat-element', +8462 silly addNameRange range: '>=1.1.2 <2.0.0', +8462 silly addNameRange hasData: true } +8463 silly addNameRange versions [ 'repeat-element', [ '1.1.2', '1.1.1', '1.1.0', '1.0.0' ] ] +8464 silly addNamed repeat-element@1.1.2 +8465 verbose addNamed "1.1.2" is a plain semver version for repeat-element +8466 silly gunzTarPerm modes [ '755', '644' ] +8467 silly gunzTarPerm extractEntry wrappy.js +8468 silly cache add args [ 'string_decoder@~0.10.x', null ] +8469 verbose cache add spec string_decoder@~0.10.x +8470 silly cache add parsed spec Result { +8470 silly cache add raw: 'string_decoder@~0.10.x', +8470 silly cache add scope: null, +8470 silly cache add name: 'string_decoder', +8470 silly cache add rawSpec: '~0.10.x', +8470 silly cache add spec: '>=0.10.0 <0.11.0', +8470 silly cache add type: 'range' } +8471 silly addNamed string_decoder@>=0.10.0 <0.11.0 +8472 verbose addNamed ">=0.10.0 <0.11.0" is a valid semver range for string_decoder +8473 silly addNameRange { name: 'string_decoder', +8473 silly addNameRange range: '>=0.10.0 <0.11.0', +8473 silly addNameRange hasData: false } +8474 silly mapToRegistry name string_decoder +8475 silly mapToRegistry using default registry +8476 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8477 silly mapToRegistry data Result { +8477 silly mapToRegistry raw: 'string_decoder', +8477 silly mapToRegistry scope: null, +8477 silly mapToRegistry name: 'string_decoder', +8477 silly mapToRegistry rawSpec: '', +8477 silly mapToRegistry spec: 'latest', +8477 silly mapToRegistry type: 'tag' } +8478 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/string_decoder +8479 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/string_decoder not in flight; fetching +8480 silly cache afterAdd is-dotfile@1.0.2 +8481 verbose afterAdd /home/ruanyf/.tnpm/is-dotfile/1.0.2/package/package.json not in flight; writing +8482 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8483 silly cache afterAdd is-equal-shallow@0.1.3 +8484 verbose afterAdd /home/ruanyf/.tnpm/is-equal-shallow/0.1.3/package/package.json not in flight; writing +8485 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8486 silly cache afterAdd is-primitive@2.0.0 +8487 verbose afterAdd /home/ruanyf/.tnpm/is-primitive/2.0.0/package/package.json not in flight; writing +8488 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8489 silly cache afterAdd glob-base@0.3.0 +8490 verbose afterAdd /home/ruanyf/.tnpm/glob-base/0.3.0/package/package.json not in flight; writing +8491 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8492 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/package.json +8493 verbose afterAdd /home/ruanyf/.tnpm/brace-expansion/1.1.4/package/package.json written +8494 silly install resolved [ { name: 'brace-expansion', +8494 silly install resolved description: 'Brace expansion as known from sh/bash', +8494 silly install resolved version: '1.1.4', +8494 silly install resolved repository: +8494 silly install resolved { type: 'git', +8494 silly install resolved url: 'git://github.com/juliangruber/brace-expansion.git' }, +8494 silly install resolved homepage: 'https://github.com/juliangruber/brace-expansion', +8494 silly install resolved main: 'index.js', +8494 silly install resolved scripts: { test: 'tape test/*.js', gentest: 'bash test/generate.sh' }, +8494 silly install resolved dependencies: { 'balanced-match': '^0.4.1', 'concat-map': '0.0.1' }, +8494 silly install resolved devDependencies: { tape: '4.5.1' }, +8494 silly install resolved keywords: [], +8494 silly install resolved author: +8494 silly install resolved { name: 'Julian Gruber', +8494 silly install resolved email: 'mail@juliangruber.com', +8494 silly install resolved url: 'http://juliangruber.com' }, +8494 silly install resolved license: 'MIT', +8494 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, +8494 silly install resolved gitHead: '1660b75d0bf03b022e7888b576cd5a4080692c1d', +8494 silly install resolved bugs: { url: 'https://github.com/juliangruber/brace-expansion/issues' }, +8494 silly install resolved _id: 'brace-expansion@1.1.4', +8494 silly install resolved _shasum: '464a204c77f482c085c2a36c456bbfbafb67a127', +8494 silly install resolved _from: 'brace-expansion@>=1.0.0 <2.0.0', +8494 silly install resolved _npmVersion: '3.8.6', +8494 silly install resolved _nodeVersion: '6.0.0', +8494 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, +8494 silly install resolved dist: +8494 silly install resolved { shasum: '464a204c77f482c085c2a36c456bbfbafb67a127', +8494 silly install resolved size: 3915, +8494 silly install resolved noattachment: false, +8494 silly install resolved key: 'brace-expansion/-/brace-expansion-1.1.4.tgz', +8494 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/brace-expansion/download/brace-expansion-1.1.4.tgz' }, +8494 silly install resolved maintainers: [ [Object], [Object] ], +8494 silly install resolved _npmOperationalInternal: +8494 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +8494 silly install resolved tmp: 'tmp/brace-expansion-1.1.4.tgz_1462130058897_0.14984136167913675' }, +8494 silly install resolved directories: {}, +8494 silly install resolved publish_time: 1462130061252, +8494 silly install resolved _cnpm_publish_time: 1462130061252, +8494 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/brace-expansion/download/brace-expansion-1.1.4.tgz', +8494 silly install resolved readme: 'ERROR: No README data found!' } ] +8495 info install brace-expansion@1.1.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +8496 info installOne brace-expansion@1.1.4 +8497 verbose installOne of brace-expansion to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch not in flight; installing +8498 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8499 silly cache afterAdd arr-flatten@1.0.1 +8500 verbose afterAdd /home/ruanyf/.tnpm/arr-flatten/1.0.1/package/package.json not in flight; writing +8501 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8502 silly cache afterAdd for-own@0.1.4 +8503 verbose afterAdd /home/ruanyf/.tnpm/for-own/0.1.4/package/package.json not in flight; writing +8504 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8505 silly cache afterAdd preserve@0.2.0 +8506 verbose afterAdd /home/ruanyf/.tnpm/preserve/0.2.0/package/package.json not in flight; writing +8507 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8508 verbose get http://registry.npm.alibaba-inc.com/inherits not expired, no request +8509 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: true } +8510 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] +8511 silly addNamed inherits@2.0.1 +8512 verbose addNamed "2.0.1" is a plain semver version for inherits +8513 silly addNameRange number 2 { name: 'expand-range', range: '>=1.8.1 <2.0.0', hasData: true } +8514 silly addNameRange versions [ 'expand-range', +8514 silly addNameRange [ '1.8.2', +8514 silly addNameRange '1.8.1', +8514 silly addNameRange '1.8.0', +8514 silly addNameRange '1.7.0', +8514 silly addNameRange '1.6.0', +8514 silly addNameRange '1.5.0', +8514 silly addNameRange '1.4.0', +8514 silly addNameRange '1.2.0', +8514 silly addNameRange '1.1.0', +8514 silly addNameRange '1.0.0', +8514 silly addNameRange '0.3.1', +8514 silly addNameRange '0.3.0', +8514 silly addNameRange '0.2.1', +8514 silly addNameRange '0.2.0', +8514 silly addNameRange '0.1.1', +8514 silly addNameRange '0.1.0' ] ] +8515 silly addNamed expand-range@1.8.2 +8516 verbose addNamed "1.8.2" is a plain semver version for expand-range +8517 verbose get http://registry.npm.alibaba-inc.com/core-util-is not expired, no request +8518 silly addNameRange number 2 { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: true } +8519 silly addNameRange versions [ 'core-util-is', [ '1.0.2', '1.0.1', '1.0.0' ] ] +8520 silly addNamed core-util-is@1.0.2 +8521 verbose addNamed "1.0.2" is a plain semver version for core-util-is +8522 verbose get http://registry.npm.alibaba-inc.com/isarray not expired, no request +8523 silly cache afterAdd is-posix-bracket@0.1.1 +8524 verbose afterAdd /home/ruanyf/.tnpm/is-posix-bracket/0.1.1/package/package.json not in flight; writing +8525 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8526 silly cache afterAdd is-buffer@1.1.3 +8527 verbose afterAdd /home/ruanyf/.tnpm/is-buffer/1.1.3/package/package.json not in flight; writing +8528 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8529 silly gunzTarPerm extractEntry package.json +8530 silly gunzTarPerm extractEntry flowRight.js +8531 silly gunzTarPerm extractEntry _stringToPath.js +8532 verbose lock using /home/ruanyf/.tnpm/_locks/brace-expansion-96a64109b5c596e2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +8533 verbose get http://registry.npm.alibaba-inc.com/string_decoder not expired, no request +8534 silly addNameRange number 2 { name: 'string_decoder', +8534 silly addNameRange range: '>=0.10.0 <0.11.0', +8534 silly addNameRange hasData: true } +8535 silly addNameRange versions [ 'string_decoder', +8535 silly addNameRange [ '0.10.31', +8535 silly addNameRange '0.10.25-1', +8535 silly addNameRange '0.11.10-1', +8535 silly addNameRange '0.10.25', +8535 silly addNameRange '0.11.10', +8535 silly addNameRange '0.10.24', +8535 silly addNameRange '0.0.1', +8535 silly addNameRange '0.0.0' ] ] +8536 silly addNamed string_decoder@0.10.31 +8537 verbose addNamed "0.10.31" is a plain semver version for string_decoder +8538 silly cache afterAdd repeat-element@1.1.2 +8539 verbose afterAdd /home/ruanyf/.tnpm/repeat-element/1.1.2/package/package.json not in flight; writing +8540 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8541 silly install write writing brace-expansion 1.1.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +8542 verbose afterAdd /home/ruanyf/.tnpm/is-dotfile/1.0.2/package/package.json written +8543 silly gunzTarPerm extractEntry dist/rx.virtualtime.map +8544 verbose afterAdd /home/ruanyf/.tnpm/is-equal-shallow/0.1.3/package/package.json written +8545 verbose afterAdd /home/ruanyf/.tnpm/is-primitive/2.0.0/package/package.json written +8546 silly install resolved [ { name: 'is-equal-shallow', +8546 silly install resolved description: 'Does a shallow comparison of two objects, returning false if the keys or values differ.', +8546 silly install resolved version: '0.1.3', +8546 silly install resolved homepage: 'https://github.com/jonschlinkert/is-equal-shallow', +8546 silly install resolved author: +8546 silly install resolved { name: 'Jon Schlinkert', +8546 silly install resolved url: 'https://github.com/jonschlinkert' }, +8546 silly install resolved repository: +8546 silly install resolved { type: 'git', +8546 silly install resolved url: 'git://github.com/jonschlinkert/is-equal-shallow.git' }, +8546 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-equal-shallow/issues' }, +8546 silly install resolved license: 'MIT', +8546 silly install resolved files: [ 'index.js' ], +8546 silly install resolved main: 'index.js', +8546 silly install resolved engines: { node: '>=0.10.0' }, +8546 silly install resolved scripts: { test: 'mocha' }, +8546 silly install resolved dependencies: { 'is-primitive': '^2.0.0' }, +8546 silly install resolved devDependencies: { mocha: '*', should: '*' }, +8546 silly install resolved keywords: +8546 silly install resolved [ 'compare', +8546 silly install resolved 'comparison', +8546 silly install resolved 'equal', +8546 silly install resolved 'equals', +8546 silly install resolved 'is', +8546 silly install resolved 'is-equal', +8546 silly install resolved 'key', +8546 silly install resolved 'object', +8546 silly install resolved 'same', +8546 silly install resolved 'shallow', +8546 silly install resolved 'value' ], +8546 silly install resolved verbiage: { related: [Object] }, +8546 silly install resolved gitHead: 'dceb47dd9c9c21066958116e3b54b3c8c251ee4a', +8546 silly install resolved _id: 'is-equal-shallow@0.1.3', +8546 silly install resolved _shasum: '2238098fc221de0bcfa5d9eac4c45d638aa1c534', +8546 silly install resolved _from: 'is-equal-shallow@>=0.1.3 <0.2.0', +8546 silly install resolved _npmVersion: '2.10.1', +8546 silly install resolved _nodeVersion: '0.12.4', +8546 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8546 silly install resolved maintainers: [ [Object], [Object] ], +8546 silly install resolved dist: +8546 silly install resolved { shasum: '2238098fc221de0bcfa5d9eac4c45d638aa1c534', +8546 silly install resolved size: 2471, +8546 silly install resolved noattachment: false, +8546 silly install resolved key: 'is-equal-shallow/-/is-equal-shallow-0.1.3.tgz', +8546 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz' }, +8546 silly install resolved directories: {}, +8546 silly install resolved publish_time: 1435030807950, +8546 silly install resolved _cnpm_publish_time: 1435030807950, +8546 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz', +8546 silly install resolved readme: 'ERROR: No README data found!' }, +8546 silly install resolved { name: 'is-primitive', +8546 silly install resolved description: 'Returns `true` if the value is a primitive. ', +8546 silly install resolved version: '2.0.0', +8546 silly install resolved homepage: 'https://github.com/jonschlinkert/is-primitive', +8546 silly install resolved author: +8546 silly install resolved { name: 'Jon Schlinkert', +8546 silly install resolved url: 'https://github.com/jonschlinkert' }, +8546 silly install resolved repository: +8546 silly install resolved { type: 'git', +8546 silly install resolved url: 'git://github.com/jonschlinkert/is-primitive.git' }, +8546 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-primitive/issues' }, +8546 silly install resolved license: +8546 silly install resolved { type: 'MIT', +8546 silly install resolved url: 'https://github.com/jonschlinkert/is-primitive/blob/master/LICENSE' }, +8546 silly install resolved files: [ 'index.js' ], +8546 silly install resolved main: 'index.js', +8546 silly install resolved engines: { node: '>=0.10.0' }, +8546 silly install resolved scripts: { test: 'mocha' }, +8546 silly install resolved devDependencies: { mocha: '*', should: '^4.0.4' }, +8546 silly install resolved keywords: +8546 silly install resolved [ 'boolean', +8546 silly install resolved 'check', +8546 silly install resolved 'number', +8546 silly install resolved 'primitive', +8546 silly install resolved 'string', +8546 silly install resolved 'symbol', +8546 silly install resolved 'type', +8546 silly install resolved 'typeof', +8546 silly install resolved 'util' ], +8546 silly install resolved gitHead: 'c512b7c95fb049aa9b1f039ddc0670611b66cce2', +8546 silly install resolved _id: 'is-primitive@2.0.0', +8546 silly install resolved _shasum: '207bab91638499c07b2adf240a41a87210034575', +8546 silly install resolved _from: 'is-primitive@>=2.0.0 <3.0.0', +8546 silly install resolved _npmVersion: '2.5.1', +8546 silly install resolved _nodeVersion: '0.12.0', +8546 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8546 silly install resolved maintainers: [ [Object] ], +8546 silly install resolved dist: +8546 silly install resolved { shasum: '207bab91638499c07b2adf240a41a87210034575', +8546 silly install resolved size: 1738, +8546 silly install resolved noattachment: false, +8546 silly install resolved key: 'is-primitive/-/is-primitive-2.0.0.tgz', +8546 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-primitive/download/is-primitive-2.0.0.tgz' }, +8546 silly install resolved directories: {}, +8546 silly install resolved publish_time: 1426564841319, +8546 silly install resolved _cnpm_publish_time: 1426564841319, +8546 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-primitive/download/is-primitive-2.0.0.tgz', +8546 silly install resolved readme: 'ERROR: No README data found!' } ] +8547 info install is-equal-shallow@0.1.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +8548 info install is-primitive@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +8549 info installOne is-equal-shallow@0.1.3 +8550 verbose installOne of is-equal-shallow to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache not in flight; installing +8551 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8552 info installOne is-primitive@2.0.0 +8553 verbose installOne of is-primitive to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache not in flight; installing +8554 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8555 info preinstall json-stable-stringify@1.0.1 +8556 verbose afterAdd /home/ruanyf/.tnpm/glob-base/0.3.0/package/package.json written +8557 silly install resolved [ { name: 'is-dotfile', +8557 silly install resolved description: 'Return true if a file path is (or has) a dotfile. Returns false if the path is a dot directory.', +8557 silly install resolved version: '1.0.2', +8557 silly install resolved homepage: 'https://github.com/jonschlinkert/is-dotfile', +8557 silly install resolved author: +8557 silly install resolved { name: 'Jon Schlinkert', +8557 silly install resolved url: 'https://github.com/jonschlinkert' }, +8557 silly install resolved repository: +8557 silly install resolved { type: 'git', +8557 silly install resolved url: 'git+https://github.com/jonschlinkert/is-dotfile.git' }, +8557 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-dotfile/issues' }, +8557 silly install resolved license: 'MIT', +8557 silly install resolved files: [ 'index.js' ], +8557 silly install resolved main: 'index.js', +8557 silly install resolved engines: { node: '>=0.10.0' }, +8557 silly install resolved scripts: { test: 'mocha' }, +8557 silly install resolved devDependencies: { benchmarked: '^0.1.3', 'dotfile-regex': '^0.1.2', mocha: '*' }, +8557 silly install resolved keywords: +8557 silly install resolved [ 'detect', +8557 silly install resolved 'dot', +8557 silly install resolved 'dotfile', +8557 silly install resolved 'expression', +8557 silly install resolved 'file', +8557 silly install resolved 'filepath', +8557 silly install resolved 'find', +8557 silly install resolved 'fs', +8557 silly install resolved 'is', +8557 silly install resolved 'match', +8557 silly install resolved 'path', +8557 silly install resolved 'regex', +8557 silly install resolved 'regexp', +8557 silly install resolved 'regular' ], +8557 silly install resolved verb: { related: [Object] }, +8557 silly install resolved gitHead: 'df258600b0afa6403a2a840f2ec486c9d350492f', +8557 silly install resolved _id: 'is-dotfile@1.0.2', +8557 silly install resolved _shasum: '2c132383f39199f8edc268ca01b9b007d205cc4d', +8557 silly install resolved _from: 'is-dotfile@>=1.0.0 <2.0.0', +8557 silly install resolved _npmVersion: '2.14.7', +8557 silly install resolved _nodeVersion: '4.2.1', +8557 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8557 silly install resolved maintainers: [ [Object] ], +8557 silly install resolved dist: +8557 silly install resolved { shasum: '2c132383f39199f8edc268ca01b9b007d205cc4d', +8557 silly install resolved size: 2081, +8557 silly install resolved noattachment: false, +8557 silly install resolved key: 'is-dotfile/-/is-dotfile-1.0.2.tgz', +8557 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-dotfile/download/is-dotfile-1.0.2.tgz' }, +8557 silly install resolved directories: {}, +8557 silly install resolved publish_time: 1445317071926, +8557 silly install resolved _cnpm_publish_time: 1445317071926, +8557 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-dotfile/download/is-dotfile-1.0.2.tgz', +8557 silly install resolved readme: 'ERROR: No README data found!' }, +8557 silly install resolved { name: 'glob-base', +8557 silly install resolved description: 'Returns an object with the (non-glob) base path and the actual pattern.', +8557 silly install resolved version: '0.3.0', +8557 silly install resolved homepage: 'https://github.com/jonschlinkert/glob-base', +8557 silly install resolved author: +8557 silly install resolved { name: 'Jon Schlinkert', +8557 silly install resolved url: 'https://github.com/jonschlinkert' }, +8557 silly install resolved repository: +8557 silly install resolved { type: 'git', +8557 silly install resolved url: 'git://github.com/jonschlinkert/glob-base.git' }, +8557 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/glob-base/issues' }, +8557 silly install resolved license: +8557 silly install resolved { type: 'MIT', +8557 silly install resolved url: 'https://github.com/jonschlinkert/glob-base/blob/master/LICENSE' }, +8557 silly install resolved files: [ 'index.js' ], +8557 silly install resolved main: 'index.js', +8557 silly install resolved engines: { node: '>=0.10.0' }, +8557 silly install resolved scripts: { test: 'mocha' }, +8557 silly install resolved dependencies: { 'glob-parent': '^2.0.0', 'is-glob': '^2.0.0' }, +8557 silly install resolved devDependencies: { mocha: '*', should: '^5.1.0' }, +8557 silly install resolved keywords: +8557 silly install resolved [ 'base', +8557 silly install resolved 'directory', +8557 silly install resolved 'dirname', +8557 silly install resolved 'expression', +8557 silly install resolved 'glob', +8557 silly install resolved 'parent', +8557 silly install resolved 'path', +8557 silly install resolved 'pattern', +8557 silly install resolved 'regex', +8557 silly install resolved 'regular', +8557 silly install resolved 'root' ], +8557 silly install resolved gitHead: 'adbc0ab07ec8a85f76ffd1b54dd41cdb9d1d0b83', +8557 silly install resolved _id: 'glob-base@0.3.0', +8557 silly install resolved _shasum: 'dbb164f6221b1c0b1ccf82aea328b497df0ea3c4', +8557 silly install resolved _from: 'glob-base@>=0.3.0 <0.4.0', +8557 silly install resolved _npmVersion: '2.11.3', +8557 silly install resolved _nodeVersion: '0.12.7', +8557 silly install resolved _npmUser: { name: 'es128', email: 'elan.shanker+npm@gmail.com' }, +8557 silly install resolved dist: +8557 silly install resolved { shasum: 'dbb164f6221b1c0b1ccf82aea328b497df0ea3c4', +8557 silly install resolved size: 2844, +8557 silly install resolved noattachment: false, +8557 silly install resolved key: 'glob-base/-/glob-base-0.3.0.tgz', +8557 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/glob-base/download/glob-base-0.3.0.tgz' }, +8557 silly install resolved maintainers: [ [Object], [Object], [Object] ], +8557 silly install resolved directories: {}, +8557 silly install resolved publish_time: 1442930297830, +8557 silly install resolved _cnpm_publish_time: 1442930297830, +8557 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/glob-base/download/glob-base-0.3.0.tgz', +8557 silly install resolved readme: 'ERROR: No README data found!' } ] +8558 info install is-dotfile@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +8559 info install glob-base@0.3.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +8560 info installOne is-dotfile@1.0.2 +8561 verbose installOne of is-dotfile to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob not in flight; installing +8562 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8563 info installOne glob-base@0.3.0 +8564 verbose installOne of glob-base to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob not in flight; installing +8565 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8566 verbose afterAdd /home/ruanyf/.tnpm/for-own/0.1.4/package/package.json written +8567 silly install resolved [ { name: 'is-extendable', +8567 silly install resolved description: 'Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. "can the value have keys?"', +8567 silly install resolved version: '0.1.1', +8567 silly install resolved homepage: 'https://github.com/jonschlinkert/is-extendable', +8567 silly install resolved author: +8567 silly install resolved { name: 'Jon Schlinkert', +8567 silly install resolved url: 'https://github.com/jonschlinkert' }, +8567 silly install resolved repository: +8567 silly install resolved { type: 'git', +8567 silly install resolved url: 'git+https://github.com/jonschlinkert/is-extendable.git' }, +8567 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-extendable/issues' }, +8567 silly install resolved license: 'MIT', +8567 silly install resolved files: [ 'index.js' ], +8567 silly install resolved main: 'index.js', +8567 silly install resolved engines: { node: '>=0.10.0' }, +8567 silly install resolved scripts: { test: 'mocha' }, +8567 silly install resolved devDependencies: { mocha: '*' }, +8567 silly install resolved keywords: +8567 silly install resolved [ 'array', +8567 silly install resolved 'assign', +8567 silly install resolved 'check', +8567 silly install resolved 'date', +8567 silly install resolved 'extend', +8567 silly install resolved 'extensible', +8567 silly install resolved 'function', +8567 silly install resolved 'is', +8567 silly install resolved 'object', +8567 silly install resolved 'regex', +8567 silly install resolved 'test' ], +8567 silly install resolved verbiage: { related: [Object] }, +8567 silly install resolved gitHead: 'c36a0732e6a76931c6f66c5931d1f3e54fa44380', +8567 silly install resolved _id: 'is-extendable@0.1.1', +8567 silly install resolved _shasum: '62b110e289a471418e3ec36a617d472e301dfc89', +8567 silly install resolved _from: 'is-extendable@>=0.1.1 <0.2.0', +8567 silly install resolved _npmVersion: '2.10.1', +8567 silly install resolved _nodeVersion: '0.12.4', +8567 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8567 silly install resolved maintainers: [ [Object] ], +8567 silly install resolved dist: +8567 silly install resolved { shasum: '62b110e289a471418e3ec36a617d472e301dfc89', +8567 silly install resolved size: 2381, +8567 silly install resolved noattachment: false, +8567 silly install resolved key: 'is-extendable/-/is-extendable-0.1.1.tgz', +8567 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz' }, +8567 silly install resolved directories: {}, +8567 silly install resolved publish_time: 1436050211330, +8567 silly install resolved _cnpm_publish_time: 1436050211330, +8567 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz', +8567 silly install resolved readme: 'ERROR: No README data found!' }, +8567 silly install resolved { name: 'for-own', +8567 silly install resolved description: 'Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js.', +8567 silly install resolved version: '0.1.4', +8567 silly install resolved homepage: 'https://github.com/jonschlinkert/for-own', +8567 silly install resolved author: +8567 silly install resolved { name: 'Jon Schlinkert', +8567 silly install resolved url: 'https://github.com/jonschlinkert' }, +8567 silly install resolved repository: +8567 silly install resolved { type: 'git', +8567 silly install resolved url: 'git+https://github.com/jonschlinkert/for-own.git' }, +8567 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/for-own/issues' }, +8567 silly install resolved license: 'MIT', +8567 silly install resolved files: [ 'index.js' ], +8567 silly install resolved main: 'index.js', +8567 silly install resolved engines: { node: '>=0.10.0' }, +8567 silly install resolved scripts: { test: 'mocha' }, +8567 silly install resolved dependencies: { 'for-in': '^0.1.5' }, +8567 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.7', mocha: '^2.4.5' }, +8567 silly install resolved keywords: +8567 silly install resolved [ 'for-in', +8567 silly install resolved 'for-own', +8567 silly install resolved 'has', +8567 silly install resolved 'has-own', +8567 silly install resolved 'hasOwn', +8567 silly install resolved 'key', +8567 silly install resolved 'keys', +8567 silly install resolved 'object', +8567 silly install resolved 'own', +8567 silly install resolved 'value' ], +8567 silly install resolved verb: +8567 silly install resolved { run: true, +8567 silly install resolved toc: false, +8567 silly install resolved layout: 'default', +8567 silly install resolved tasks: [Object], +8567 silly install resolved plugins: [Object], +8567 silly install resolved reflinks: [Object], +8567 silly install resolved lint: [Object] }, +8567 silly install resolved gitHead: '475607dc923dcc399c1bfdbecc0df4b957eb3779', +8567 silly install resolved _id: 'for-own@0.1.4', +8567 silly install resolved _shasum: '0149b41a39088c7515f51ebe1c1386d45f935072', +8567 silly install resolved _from: 'for-own@>=0.1.3 <0.2.0', +8567 silly install resolved _npmVersion: '3.6.0', +8567 silly install resolved _nodeVersion: '5.5.0', +8567 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8567 silly install resolved maintainers: [ [Object], [Object] ], +8567 silly install resolved dist: +8567 silly install resolved { shasum: '0149b41a39088c7515f51ebe1c1386d45f935072', +8567 silly install resolved size: 1934, +8567 silly install resolved noattachment: false, +8567 silly install resolved key: 'for-own/-/for-own-0.1.4.tgz', +8567 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/for-own/download/for-own-0.1.4.tgz' }, +8567 silly install resolved _npmOperationalInternal: +8567 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +8567 silly install resolved tmp: 'tmp/for-own-0.1.4.tgz_1459091314670_0.658134751021862' }, +8567 silly install resolved directories: {}, +8567 silly install resolved publish_time: 1459091315595, +8567 silly install resolved _cnpm_publish_time: 1459091315595, +8567 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/for-own/download/for-own-0.1.4.tgz', +8567 silly install resolved readme: 'ERROR: No README data found!' } ] +8568 info install is-extendable@0.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +8569 info install for-own@0.1.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +8570 info installOne is-extendable@0.1.1 +8571 verbose installOne of is-extendable to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit not in flight; installing +8572 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8573 info installOne for-own@0.1.4 +8574 verbose installOne of for-own to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit not in flight; installing +8575 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8576 verbose afterAdd /home/ruanyf/.tnpm/arr-flatten/1.0.1/package/package.json written +8577 silly install resolved [ { name: 'arr-flatten', +8577 silly install resolved description: 'Recursively flatten an array or arrays. This is the fastest implementation of array flatten.', +8577 silly install resolved version: '1.0.1', +8577 silly install resolved homepage: 'https://github.com/jonschlinkert/arr-flatten', +8577 silly install resolved author: +8577 silly install resolved { name: 'Jon Schlinkert', +8577 silly install resolved url: 'https://github.com/jonschlinkert' }, +8577 silly install resolved repository: +8577 silly install resolved { type: 'git', +8577 silly install resolved url: 'git://github.com/jonschlinkert/arr-flatten.git' }, +8577 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/arr-flatten/issues' }, +8577 silly install resolved license: +8577 silly install resolved { type: 'MIT', +8577 silly install resolved url: 'https://github.com/jonschlinkert/arr-flatten/blob/master/LICENSE' }, +8577 silly install resolved files: [ 'index.js' ], +8577 silly install resolved main: 'index.js', +8577 silly install resolved engines: { node: '>=0.10.0' }, +8577 silly install resolved scripts: { test: 'mocha', benchmarks: 'node benchmark' }, +8577 silly install resolved devDependencies: +8577 silly install resolved { 'array-flatten': '^1.0.2', +8577 silly install resolved 'array-slice': '^0.2.2', +8577 silly install resolved benchmarked: '^0.1.3', +8577 silly install resolved chalk: '^0.5.1', +8577 silly install resolved glob: '^4.3.5', +8577 silly install resolved 'kind-of': '^1.0.0' }, +8577 silly install resolved keywords: +8577 silly install resolved [ 'arr', +8577 silly install resolved 'array', +8577 silly install resolved 'elements', +8577 silly install resolved 'flat', +8577 silly install resolved 'flatten', +8577 silly install resolved 'nested', +8577 silly install resolved 'recurse', +8577 silly install resolved 'recursive', +8577 silly install resolved 'recursively' ], +8577 silly install resolved gitHead: '7b3706eaa0093d8f5ba65af8ed590b6fcb3fe7cf', +8577 silly install resolved _id: 'arr-flatten@1.0.1', +8577 silly install resolved _shasum: 'e5ffe54d45e19f32f216e91eb99c8ce892bb604b', +8577 silly install resolved _from: 'arr-flatten@>=1.0.1 <2.0.0', +8577 silly install resolved _npmVersion: '2.5.1', +8577 silly install resolved _nodeVersion: '0.12.0', +8577 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8577 silly install resolved maintainers: [ [Object] ], +8577 silly install resolved dist: +8577 silly install resolved { shasum: 'e5ffe54d45e19f32f216e91eb99c8ce892bb604b', +8577 silly install resolved size: 2165, +8577 silly install resolved noattachment: false, +8577 silly install resolved key: 'arr-flatten/-/arr-flatten-1.0.1.tgz', +8577 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/arr-flatten/download/arr-flatten-1.0.1.tgz' }, +8577 silly install resolved directories: {}, +8577 silly install resolved publish_time: 1426048109728, +8577 silly install resolved _cnpm_publish_time: 1426048109728, +8577 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/arr-flatten/download/arr-flatten-1.0.1.tgz', +8577 silly install resolved readme: 'ERROR: No README data found!' } ] +8578 info install arr-flatten@1.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +8579 info installOne arr-flatten@1.0.1 +8580 verbose installOne of arr-flatten to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff not in flight; installing +8581 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8582 verbose afterAdd /home/ruanyf/.tnpm/preserve/0.2.0/package/package.json written +8583 silly cache afterAdd wrappy@1.0.2 +8584 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json not in flight; writing +8585 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8586 verbose lock using /home/ruanyf/.tnpm/_locks/is-equal-shallow-b545d286f24ccae2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow +8587 verbose lock using /home/ruanyf/.tnpm/_locks/is-primitive-91229470b2bab84d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive +8588 silly gunzTarPerm extractEntry README.md +8589 silly gunzTarPerm extractEntry LICENSE +8590 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/package.json +8591 silly cache afterAdd inherits@2.0.1 +8592 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing +8593 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8594 silly install write writing is-equal-shallow 0.1.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow +8595 verbose afterAdd /home/ruanyf/.tnpm/is-posix-bracket/0.1.1/package/package.json written +8596 silly install resolved [ { name: 'is-posix-bracket', +8596 silly install resolved description: 'Returns true if the given string is a POSIX bracket expression (POSIX character class).', +8596 silly install resolved version: '0.1.1', +8596 silly install resolved homepage: 'https://github.com/jonschlinkert/is-posix-bracket', +8596 silly install resolved author: +8596 silly install resolved { name: 'Jon Schlinkert', +8596 silly install resolved url: 'https://github.com/jonschlinkert' }, +8596 silly install resolved repository: +8596 silly install resolved { type: 'git', +8596 silly install resolved url: 'git+https://github.com/jonschlinkert/is-posix-bracket.git' }, +8596 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-posix-bracket/issues' }, +8596 silly install resolved license: 'MIT', +8596 silly install resolved files: [ 'index.js' ], +8596 silly install resolved main: 'index.js', +8596 silly install resolved engines: { node: '>=0.10.0' }, +8596 silly install resolved scripts: { test: 'mocha' }, +8596 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.7', mocha: '^2.4.5' }, +8596 silly install resolved keywords: +8596 silly install resolved [ 'braces', +8596 silly install resolved 'brackets', +8596 silly install resolved 'character', +8596 silly install resolved 'character-class', +8596 silly install resolved 'class', +8596 silly install resolved 'expression', +8596 silly install resolved 'posix', +8596 silly install resolved 'regex', +8596 silly install resolved 'regexp', +8596 silly install resolved 'regular' ], +8596 silly install resolved verb: +8596 silly install resolved { run: true, +8596 silly install resolved toc: false, +8596 silly install resolved layout: 'default', +8596 silly install resolved tasks: [Object], +8596 silly install resolved plugins: [Object], +8596 silly install resolved related: [Object], +8596 silly install resolved reflinks: [Object], +8596 silly install resolved lint: [Object] }, +8596 silly install resolved gitHead: '43972556cfdbb681a15072da75c97952c4e4deba', +8596 silly install resolved _id: 'is-posix-bracket@0.1.1', +8596 silly install resolved _shasum: '3334dc79774368e92f016e6fbc0a88f5cd6e6bc4', +8596 silly install resolved _from: 'is-posix-bracket@>=0.1.0 <0.2.0', +8596 silly install resolved _npmVersion: '3.6.0', +8596 silly install resolved _nodeVersion: '5.5.0', +8596 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8596 silly install resolved maintainers: [ [Object] ], +8596 silly install resolved dist: +8596 silly install resolved { shasum: '3334dc79774368e92f016e6fbc0a88f5cd6e6bc4', +8596 silly install resolved size: 2418, +8596 silly install resolved noattachment: false, +8596 silly install resolved key: 'is-posix-bracket/-/is-posix-bracket-0.1.1.tgz', +8596 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz' }, +8596 silly install resolved _npmOperationalInternal: +8596 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +8596 silly install resolved tmp: 'tmp/is-posix-bracket-0.1.1.tgz_1459834297811_0.5273812564555556' }, +8596 silly install resolved directories: {}, +8596 silly install resolved publish_time: 1459834300077, +8596 silly install resolved _cnpm_publish_time: 1459834300077, +8596 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz', +8596 silly install resolved readme: 'ERROR: No README data found!' } ] +8597 info install is-posix-bracket@0.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +8598 info installOne is-posix-bracket@0.1.1 +8599 verbose installOne of is-posix-bracket to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets not in flight; installing +8600 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8601 silly install write writing is-primitive 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive +8602 verbose lock using /home/ruanyf/.tnpm/_locks/is-dotfile-871e3c8783db0ccc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile +8603 verbose lock using /home/ruanyf/.tnpm/_locks/glob-base-3cceb05ef8de5584.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base +8604 verbose afterAdd /home/ruanyf/.tnpm/is-buffer/1.1.3/package/package.json written +8605 silly install resolved [ { name: 'is-buffer', +8605 silly install resolved description: 'Determine if an object is Buffer', +8605 silly install resolved version: '1.1.3', +8605 silly install resolved author: +8605 silly install resolved { name: 'Feross Aboukhadijeh', +8605 silly install resolved email: 'feross@feross.org', +8605 silly install resolved url: 'http://feross.org/' }, +8605 silly install resolved bugs: { url: 'https://github.com/feross/is-buffer/issues' }, +8605 silly install resolved dependencies: {}, +8605 silly install resolved devDependencies: { standard: '^6.0.5', tape: '^4.0.0', zuul: '^3.0.0' }, +8605 silly install resolved engines: { node: '>=0.12' }, +8605 silly install resolved keywords: +8605 silly install resolved [ 'buffer', +8605 silly install resolved 'buffers', +8605 silly install resolved 'type', +8605 silly install resolved 'core buffer', +8605 silly install resolved 'browser buffer', +8605 silly install resolved 'browserify', +8605 silly install resolved 'typed array', +8605 silly install resolved 'uint32array', +8605 silly install resolved 'int16array', +8605 silly install resolved 'int32array', +8605 silly install resolved 'float32array', +8605 silly install resolved 'float64array', +8605 silly install resolved 'browser', +8605 silly install resolved 'arraybuffer', +8605 silly install resolved 'dataview' ], +8605 silly install resolved license: 'MIT', +8605 silly install resolved main: 'index.js', +8605 silly install resolved repository: { type: 'git', url: 'git://github.com/feross/is-buffer.git' }, +8605 silly install resolved scripts: +8605 silly install resolved { test: 'standard && npm run test-node && npm run test-browser', +8605 silly install resolved 'test-browser': 'zuul -- test/*.js', +8605 silly install resolved 'test-browser-local': 'zuul --local -- test/*.js', +8605 silly install resolved 'test-node': 'tape test/*.js' }, +8605 silly install resolved testling: { files: 'test/*.js' }, +8605 silly install resolved gitHead: 'dfd658d887e6b63254b89d22af1a755a39313455', +8605 silly install resolved homepage: 'https://github.com/feross/is-buffer', +8605 silly install resolved _id: 'is-buffer@1.1.3', +8605 silly install resolved _shasum: 'db897fc3f7aca2d50de94b6c8c2896a4771627af', +8605 silly install resolved _from: 'is-buffer@>=1.0.2 <2.0.0', +8605 silly install resolved _npmVersion: '2.14.12', +8605 silly install resolved _nodeVersion: '4.3.2', +8605 silly install resolved _npmUser: { name: 'feross', email: 'feross@feross.org' }, +8605 silly install resolved dist: +8605 silly install resolved { shasum: 'db897fc3f7aca2d50de94b6c8c2896a4771627af', +8605 silly install resolved size: 2695, +8605 silly install resolved noattachment: false, +8605 silly install resolved key: 'is-buffer/-/is-buffer-1.1.3.tgz', +8605 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-1.1.3.tgz' }, +8605 silly install resolved maintainers: [ [Object] ], +8605 silly install resolved _npmOperationalInternal: +8605 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +8605 silly install resolved tmp: 'tmp/is-buffer-1.1.3.tgz_1457390977775_0.6384289276320487' }, +8605 silly install resolved directories: {}, +8605 silly install resolved publish_time: 1457390979950, +8605 silly install resolved _cnpm_publish_time: 1457390979950, +8605 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-1.1.3.tgz', +8605 silly install resolved readme: 'ERROR: No README data found!' } ] +8606 info install is-buffer@1.1.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +8607 info installOne is-buffer@1.1.3 +8608 verbose installOne of is-buffer to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of not in flight; installing +8609 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8610 silly cache afterAdd expand-range@1.8.2 +8611 verbose afterAdd /home/ruanyf/.tnpm/expand-range/1.8.2/package/package.json not in flight; writing +8612 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8613 verbose lock using /home/ruanyf/.tnpm/_locks/is-extendable-dc6cd5e49afbbd3c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable +8614 verbose lock using /home/ruanyf/.tnpm/_locks/for-own-951323b794acd7c8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +8615 verbose lock using /home/ruanyf/.tnpm/_locks/arr-flatten-5843d795098330a6.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten +8616 silly cache afterAdd core-util-is@1.0.2 +8617 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json not in flight; writing +8618 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8619 silly cache afterAdd isarray@0.0.1 +8620 verbose afterAdd /home/ruanyf/.tnpm/isarray/0.0.1/package/package.json not in flight; writing +8621 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8622 silly install write writing is-dotfile 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile +8623 silly install write writing glob-base 0.3.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base +8624 verbose afterAdd /home/ruanyf/.tnpm/repeat-element/1.1.2/package/package.json written +8625 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +8626 silly install write writing is-extendable 0.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable +8627 silly install write writing for-own 0.1.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +8628 silly install write writing arr-flatten 1.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten +8629 silly cache afterAdd string_decoder@0.10.31 +8630 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json not in flight; writing +8631 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8632 verbose lock using /home/ruanyf/.tnpm/_locks/is-posix-bracket-0e681d581ef83e10.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket +8633 silly gunzTarPerm extractEntry dist/rx.core.testing.map +8634 silly gunzTarPerm extractEntry license.txt +8635 silly gunzTarPerm extractEntry readme.md +8636 verbose lock using /home/ruanyf/.tnpm/_locks/is-buffer-0b5329785adce74e.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer +8637 silly install write writing is-posix-bracket 0.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket +8638 silly install write writing is-buffer 1.1.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer +8639 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json written +8640 silly install resolved [ { name: 'wrappy', +8640 silly install resolved version: '1.0.2', +8640 silly install resolved description: 'Callback wrapping utility', +8640 silly install resolved main: 'wrappy.js', +8640 silly install resolved files: [ 'wrappy.js' ], +8640 silly install resolved directories: { test: 'test' }, +8640 silly install resolved dependencies: {}, +8640 silly install resolved devDependencies: { tap: '^2.3.1' }, +8640 silly install resolved scripts: { test: 'tap --coverage test/*.js' }, +8640 silly install resolved repository: { type: 'git', url: 'git+https://github.com/npm/wrappy.git' }, +8640 silly install resolved author: +8640 silly install resolved { name: 'Isaac Z. Schlueter', +8640 silly install resolved email: 'i@izs.me', +8640 silly install resolved url: 'http://blog.izs.me/' }, +8640 silly install resolved license: 'ISC', +8640 silly install resolved bugs: { url: 'https://github.com/npm/wrappy/issues' }, +8640 silly install resolved homepage: 'https://github.com/npm/wrappy', +8640 silly install resolved gitHead: '71d91b6dc5bdeac37e218c2cf03f9ab55b60d214', +8640 silly install resolved _id: 'wrappy@1.0.2', +8640 silly install resolved _shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', +8640 silly install resolved _from: 'wrappy@>=1.0.0 <2.0.0', +8640 silly install resolved _npmVersion: '3.9.1', +8640 silly install resolved _nodeVersion: '5.10.1', +8640 silly install resolved _npmUser: { name: 'zkat', email: 'kat@sykosomatic.org' }, +8640 silly install resolved dist: +8640 silly install resolved { shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', +8640 silly install resolved size: 1676, +8640 silly install resolved noattachment: false, +8640 silly install resolved key: 'wrappy/-/wrappy-1.0.2.tgz', +8640 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' }, +8640 silly install resolved maintainers: [ [Object], [Object] ], +8640 silly install resolved _npmOperationalInternal: +8640 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +8640 silly install resolved tmp: 'tmp/wrappy-1.0.2.tgz_1463527848281_0.037129373755306005' }, +8640 silly install resolved publish_time: 1463527852415, +8640 silly install resolved _cnpm_publish_time: 1463527852415, +8640 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' } ] +8641 info install wrappy@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +8642 info installOne wrappy@1.0.2 +8643 verbose installOne of wrappy to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once not in flight; installing +8644 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8645 silly gunzTarPerm extractEntry forEach.js +8646 silly gunzTarPerm extractEntry _stringToArray.js +8647 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion is being purged from base /home/ruanyf/npm-global +8648 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +8649 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written +8650 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow +8651 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive +8652 verbose afterAdd /home/ruanyf/.tnpm/expand-range/1.8.2/package/package.json written +8653 silly install resolved [ { name: 'preserve', +8653 silly install resolved description: 'Temporarily substitute tokens in the given `string` with placeholders, then put them back after transforming the string.', +8653 silly install resolved version: '0.2.0', +8653 silly install resolved homepage: 'https://github.com/jonschlinkert/preserve', +8653 silly install resolved author: +8653 silly install resolved { name: 'Jon Schlinkert', +8653 silly install resolved url: 'https://github.com/jonschlinkert' }, +8653 silly install resolved repository: +8653 silly install resolved { type: 'git', +8653 silly install resolved url: 'git://github.com/jonschlinkert/preserve.git' }, +8653 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/preserve/issues' }, +8653 silly install resolved license: +8653 silly install resolved { type: 'MIT', +8653 silly install resolved url: 'https://github.com/jonschlinkert/preserve/blob/master/LICENSE-MIT' }, +8653 silly install resolved main: 'index.js', +8653 silly install resolved engines: { node: '>=0.10.0' }, +8653 silly install resolved scripts: { test: 'mocha -R spec' }, +8653 silly install resolved devDependencies: +8653 silly install resolved { benchmarked: '^0.1.3', +8653 silly install resolved chalk: '^0.5.1', +8653 silly install resolved 'js-beautify': '^1.5.4', +8653 silly install resolved mocha: '*', +8653 silly install resolved should: '*' }, +8653 silly install resolved keywords: +8653 silly install resolved [ 'escape', +8653 silly install resolved 'format', +8653 silly install resolved 'placeholder', +8653 silly install resolved 'placeholders', +8653 silly install resolved 'prettify', +8653 silly install resolved 'regex', +8653 silly install resolved 'replace', +8653 silly install resolved 'template', +8653 silly install resolved 'templates', +8653 silly install resolved 'token', +8653 silly install resolved 'tokens' ], +8653 silly install resolved gitHead: '1bf405d35e4aea06a2ee83db2d34dc54abc0a1f9', +8653 silly install resolved _id: 'preserve@0.2.0', +8653 silly install resolved _shasum: '815ed1f6ebc65926f865b310c0713bcb3315ce4b', +8653 silly install resolved _from: 'preserve@>=0.2.0 <0.3.0', +8653 silly install resolved _npmVersion: '1.4.23', +8653 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8653 silly install resolved maintainers: [ [Object] ], +8653 silly install resolved dist: +8653 silly install resolved { shasum: '815ed1f6ebc65926f865b310c0713bcb3315ce4b', +8653 silly install resolved size: 3719, +8653 silly install resolved noattachment: false, +8653 silly install resolved key: 'preserve/-/preserve-0.2.0.tgz', +8653 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/preserve/download/preserve-0.2.0.tgz' }, +8653 silly install resolved directories: {}, +8653 silly install resolved publish_time: 1420928978220, +8653 silly install resolved _cnpm_publish_time: 1420928978220, +8653 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/preserve/download/preserve-0.2.0.tgz', +8653 silly install resolved readme: 'ERROR: No README data found!' }, +8653 silly install resolved { name: 'repeat-element', +8653 silly install resolved description: 'Create an array by repeating the given value n times.', +8653 silly install resolved version: '1.1.2', +8653 silly install resolved homepage: 'https://github.com/jonschlinkert/repeat-element', +8653 silly install resolved author: +8653 silly install resolved { name: 'Jon Schlinkert', +8653 silly install resolved url: 'https://github.com/jonschlinkert' }, +8653 silly install resolved repository: +8653 silly install resolved { type: 'git', +8653 silly install resolved url: 'git://github.com/jonschlinkert/repeat-element.git' }, +8653 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/repeat-element/issues' }, +8653 silly install resolved license: +8653 silly install resolved { type: 'MIT', +8653 silly install resolved url: 'https://github.com/jonschlinkert/repeat-element/blob/master/LICENSE' }, +8653 silly install resolved main: 'index.js', +8653 silly install resolved engines: { node: '>=0.10.0' }, +8653 silly install resolved scripts: { test: 'mocha' }, +8653 silly install resolved files: [ 'index.js' ], +8653 silly install resolved keywords: [ 'array', 'element', 'repeat', 'string' ], +8653 silly install resolved devDependencies: +8653 silly install resolved { benchmarked: '^0.1.4', +8653 silly install resolved chalk: '^1.0.0', +8653 silly install resolved glob: '^5.0.5', +8653 silly install resolved minimist: '^1.1.1', +8653 silly install resolved mocha: '^2.2.4' }, +8653 silly install resolved gitHead: '7a6b21d58eafcc44fc8de133c70a8398ee9fdd8d', +8653 silly install resolved _id: 'repeat-element@1.1.2', +8653 silly install resolved _shasum: 'ef089a178d1483baae4d93eb98b4f9e4e11d990a', +8653 silly install resolved _from: 'repeat-element@>=1.1.2 <2.0.0', +8653 silly install resolved _npmVersion: '2.5.1', +8653 silly install resolved _nodeVersion: '0.12.0', +8653 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8653 silly install resolved maintainers: [ [Object] ], +8653 silly install resolved dist: +8653 silly install resolved { shasum: 'ef089a178d1483baae4d93eb98b4f9e4e11d990a', +8653 silly install resolved size: 1872, +8653 silly install resolved noattachment: false, +8653 silly install resolved key: 'repeat-element/-/repeat-element-1.1.2.tgz', +8653 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/repeat-element/download/repeat-element-1.1.2.tgz' }, +8653 silly install resolved directories: {}, +8653 silly install resolved publish_time: 1430968773716, +8653 silly install resolved _cnpm_publish_time: 1430968773716, +8653 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/repeat-element/download/repeat-element-1.1.2.tgz', +8653 silly install resolved readme: 'ERROR: No README data found!' }, +8653 silly install resolved { name: 'expand-range', +8653 silly install resolved description: 'Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See the benchmarks. Used by micromatch.', +8653 silly install resolved version: '1.8.2', +8653 silly install resolved homepage: 'https://github.com/jonschlinkert/expand-range', +8653 silly install resolved author: +8653 silly install resolved { name: 'Jon Schlinkert', +8653 silly install resolved url: 'https://github.com/jonschlinkert' }, +8653 silly install resolved repository: +8653 silly install resolved { type: 'git', +8653 silly install resolved url: 'git+https://github.com/jonschlinkert/expand-range.git' }, +8653 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/expand-range/issues' }, +8653 silly install resolved license: 'MIT', +8653 silly install resolved files: [ 'index.js' ], +8653 silly install resolved main: 'index.js', +8653 silly install resolved engines: { node: '>=0.10.0' }, +8653 silly install resolved scripts: { test: 'mocha' }, +8653 silly install resolved dependencies: { 'fill-range': '^2.1.0' }, +8653 silly install resolved devDependencies: +8653 silly install resolved { benchmarked: '^0.2.4', +8653 silly install resolved 'brace-expansion': '^1.1.4', +8653 silly install resolved glob: '^7.0.3', +8653 silly install resolved 'gulp-format-md': '^0.1.9', +8653 silly install resolved minimatch: '^3.0.0', +8653 silly install resolved mocha: '^2.4.5' }, +8653 silly install resolved keywords: +8653 silly install resolved [ 'alpha', +8653 silly install resolved 'alphabetical', +8653 silly install resolved 'bash', +8653 silly install resolved 'brace', +8653 silly install resolved 'expand', +8653 silly install resolved 'expansion', +8653 silly install resolved 'glob', +8653 silly install resolved 'match', +8653 silly install resolved 'matches', +8653 silly install resolved 'matching', +8653 silly install resolved 'number', +8653 silly install resolved 'numerical', +8653 silly install resolved 'range', +8653 silly install resolved 'ranges', +8653 silly install resolved 'sh' ], +8653 silly install resolved verb: +8653 silly install resolved { plugins: [Object], +8653 silly install resolved reflinks: [Object], +8653 silly install resolved toc: false, +8653 silly install resolved layout: 'default', +8653 silly install resolved lint: [Object], +8653 silly install resolved tasks: [Object], +8653 silly install resolved related: [Object] }, +8653 silly install resolved gitHead: '4c873af0870df8382bafc66a93d5c89e3aad3d4d', +8653 silly install resolved _id: 'expand-range@1.8.2', +8653 silly install resolved _shasum: 'a299effd335fe2721ebae8e257ec79644fc85337', +8653 silly install resolved _from: 'expand-range@>=1.8.1 <2.0.0', +8653 silly install resolved _npmVersion: '3.6.0', +8653 silly install resolved _nodeVersion: '5.5.0', +8653 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +8653 silly install resolved maintainers: [ [Object], [Object] ], +8653 silly install resolved dist: +8653 silly install resolved { shasum: 'a299effd335fe2721ebae8e257ec79644fc85337', +8653 silly install resolved size: 3248, +8653 silly install resolved noattachment: false, +8653 silly install resolved key: 'expand-range/-/expand-range-1.8.2.tgz', +8653 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/expand-range/download/expand-range-1.8.2.tgz' }, +8653 silly install resolved _npmOperationalInternal: +8653 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +8653 silly install resolved tmp: 'tmp/expand-range-1.8.2.tgz_1462440434873_0.7174076174851507' }, +8653 silly install resolved directories: {}, +8653 silly install resolved publish_time: 1462440436202, +8653 silly install resolved _cnpm_publish_time: 1462440436202, +8653 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/expand-range/download/expand-range-1.8.2.tgz', +8653 silly install resolved readme: 'ERROR: No README data found!' } ] +8654 info install preserve@0.2.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +8655 info install repeat-element@1.1.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +8656 info install expand-range@1.8.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +8657 info installOne preserve@0.2.0 +8658 verbose installOne of preserve to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces not in flight; installing +8659 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8660 info installOne repeat-element@1.1.2 +8661 verbose installOne of repeat-element to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces not in flight; installing +8662 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8663 info installOne expand-range@1.8.2 +8664 verbose installOne of expand-range to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces not in flight; installing +8665 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8666 silly prepareForInstallMany adding jsonify@~0.0.0 from json-stable-stringify dependencies +8667 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/package.json +8668 verbose tar unpack /home/ruanyf/.tnpm/brace-expansion/1.1.4/package.tgz +8669 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +8670 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion is being purged +8671 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +8672 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json written +8673 verbose lock using /home/ruanyf/.tnpm/_locks/wrappy-c9261d4ddef521b1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy +8674 silly gunzTarPerm extractEntry ts/rx.core.testing.es6.d.ts +8675 verbose afterAdd /home/ruanyf/.tnpm/isarray/0.0.1/package/package.json written +8676 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile +8677 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base +8678 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable +8679 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten +8680 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +8681 silly gunzTarPerm modes [ '755', '644' ] +8682 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json written +8683 silly install resolved [ { name: 'inherits', +8683 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', +8683 silly install resolved version: '2.0.1', +8683 silly install resolved keywords: +8683 silly install resolved [ 'inheritance', +8683 silly install resolved 'class', +8683 silly install resolved 'klass', +8683 silly install resolved 'oop', +8683 silly install resolved 'object-oriented', +8683 silly install resolved 'inherits', +8683 silly install resolved 'browser', +8683 silly install resolved 'browserify' ], +8683 silly install resolved main: './inherits.js', +8683 silly install resolved browser: './inherits_browser.js', +8683 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, +8683 silly install resolved license: 'ISC', +8683 silly install resolved scripts: { test: 'node test' }, +8683 silly install resolved readmeFilename: 'README.md', +8683 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, +8683 silly install resolved _id: 'inherits@2.0.1', +8683 silly install resolved dist: +8683 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +8683 silly install resolved size: 2122, +8683 silly install resolved noattachment: false, +8683 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', +8683 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, +8683 silly install resolved _from: 'inherits@>=2.0.1 <2.1.0', +8683 silly install resolved _npmVersion: '1.3.8', +8683 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +8683 silly install resolved maintainers: [ [Object] ], +8683 silly install resolved directories: {}, +8683 silly install resolved publish_time: 1376950220463, +8683 silly install resolved _cnpm_publish_time: 1376950220463, +8683 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', +8683 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', +8683 silly install resolved readme: 'ERROR: No README data found!', +8683 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' }, +8683 silly install resolved { name: 'core-util-is', +8683 silly install resolved version: '1.0.2', +8683 silly install resolved description: 'The `util.is*` functions introduced in Node v0.12.', +8683 silly install resolved main: 'lib/util.js', +8683 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/core-util-is.git' }, +8683 silly install resolved keywords: +8683 silly install resolved [ 'util', +8683 silly install resolved 'isBuffer', +8683 silly install resolved 'isArray', +8683 silly install resolved 'isNumber', +8683 silly install resolved 'isString', +8683 silly install resolved 'isRegExp', +8683 silly install resolved 'isThis', +8683 silly install resolved 'isThat', +8683 silly install resolved 'polyfill' ], +8683 silly install resolved author: +8683 silly install resolved { name: 'Isaac Z. Schlueter', +8683 silly install resolved email: 'i@izs.me', +8683 silly install resolved url: 'http://blog.izs.me/' }, +8683 silly install resolved license: 'MIT', +8683 silly install resolved bugs: { url: 'https://github.com/isaacs/core-util-is/issues' }, +8683 silly install resolved scripts: { test: 'tap test.js' }, +8683 silly install resolved devDependencies: { tap: '^2.3.0' }, +8683 silly install resolved gitHead: 'a177da234df5638b363ddc15fa324619a38577c8', +8683 silly install resolved homepage: 'https://github.com/isaacs/core-util-is#readme', +8683 silly install resolved _id: 'core-util-is@1.0.2', +8683 silly install resolved _shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', +8683 silly install resolved _from: 'core-util-is@>=1.0.0 <1.1.0', +8683 silly install resolved _npmVersion: '3.3.2', +8683 silly install resolved _nodeVersion: '4.0.0', +8683 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, +8683 silly install resolved dist: +8683 silly install resolved { shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', +8683 silly install resolved size: 7016, +8683 silly install resolved noattachment: false, +8683 silly install resolved key: 'core-util-is/-/core-util-is-1.0.2.tgz', +8683 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz' }, +8683 silly install resolved maintainers: [ [Object] ], +8683 silly install resolved directories: {}, +8683 silly install resolved publish_time: 1447979853081, +8683 silly install resolved _cnpm_publish_time: 1447979853081, +8683 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz', +8683 silly install resolved readme: 'ERROR: No README data found!' }, +8683 silly install resolved { name: 'isarray', +8683 silly install resolved description: 'Array#isArray for older browsers', +8683 silly install resolved version: '0.0.1', +8683 silly install resolved repository: +8683 silly install resolved { type: 'git', +8683 silly install resolved url: 'git://github.com/juliangruber/isarray.git' }, +8683 silly install resolved homepage: 'https://github.com/juliangruber/isarray', +8683 silly install resolved main: 'index.js', +8683 silly install resolved scripts: { test: 'tap test/*.js' }, +8683 silly install resolved dependencies: {}, +8683 silly install resolved devDependencies: { tap: '*' }, +8683 silly install resolved keywords: [ 'browser', 'isarray', 'array' ], +8683 silly install resolved author: +8683 silly install resolved { name: 'Julian Gruber', +8683 silly install resolved email: 'mail@juliangruber.com', +8683 silly install resolved url: 'http://juliangruber.com' }, +8683 silly install resolved license: 'MIT', +8683 silly install resolved readmeFilename: 'README.md', +8683 silly install resolved _id: 'isarray@0.0.1', +8683 silly install resolved dist: +8683 silly install resolved { shasum: '8a18acfca9a8f4177e09abfc6038939b05d1eedf', +8683 silly install resolved size: 2742, +8683 silly install resolved noattachment: false, +8683 silly install resolved key: '/isarray/-/isarray-0.0.1.tgz', +8683 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-0.0.1.tgz' }, +8683 silly install resolved _from: 'isarray@0.0.1', +8683 silly install resolved _npmVersion: '1.2.18', +8683 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, +8683 silly install resolved maintainers: [ [Object] ], +8683 silly install resolved directories: {}, +8683 silly install resolved publish_time: 1369676435695, +8683 silly install resolved _cnpm_publish_time: 1369676435695, +8683 silly install resolved _shasum: '8a18acfca9a8f4177e09abfc6038939b05d1eedf', +8683 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-0.0.1.tgz', +8683 silly install resolved bugs: { url: 'https://github.com/juliangruber/isarray/issues' }, +8683 silly install resolved readme: 'ERROR: No README data found!' }, +8683 silly install resolved { name: 'string_decoder', +8683 silly install resolved version: '0.10.31', +8683 silly install resolved description: 'The string_decoder module from Node core', +8683 silly install resolved main: 'index.js', +8683 silly install resolved dependencies: {}, +8683 silly install resolved devDependencies: { tap: '~0.4.8' }, +8683 silly install resolved scripts: { test: 'tap test/simple/*.js' }, +8683 silly install resolved repository: +8683 silly install resolved { type: 'git', +8683 silly install resolved url: 'git://github.com/rvagg/string_decoder.git' }, +8683 silly install resolved homepage: 'https://github.com/rvagg/string_decoder', +8683 silly install resolved keywords: [ 'string', 'decoder', 'browser', 'browserify' ], +8683 silly install resolved license: 'MIT', +8683 silly install resolved gitHead: 'd46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0', +8683 silly install resolved bugs: { url: 'https://github.com/rvagg/string_decoder/issues' }, +8683 silly install resolved _id: 'string_decoder@0.10.31', +8683 silly install resolved _shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', +8683 silly install resolved _from: 'string_decoder@>=0.10.0 <0.11.0', +8683 silly install resolved _npmVersion: '1.4.23', +8683 silly install resolved _npmUser: { name: 'rvagg', email: 'rod@vagg.org' }, +8683 silly install resolved maintainers: [ [Object], [Object] ], +8683 silly install resolved dist: +8683 silly install resolved { shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', +8683 silly install resolved size: 3608, +8683 silly install resolved noattachment: false, +8683 silly install resolved key: 'string_decoder/-/string_decoder-0.10.31.tgz', +8683 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz' }, +8683 silly install resolved directories: {}, +8683 silly install resolved publish_time: 1408767919329, +8683 silly install resolved _cnpm_publish_time: 1408767919329, +8683 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz', +8683 silly install resolved readme: 'ERROR: No README data found!' } ] +8684 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +8685 info install core-util-is@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +8686 info install isarray@0.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +8687 info install string_decoder@0.10.31 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +8688 info installOne inherits@2.0.1 +8689 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream not in flight; installing +8690 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8691 info installOne core-util-is@1.0.2 +8692 verbose installOne of core-util-is to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream not in flight; installing +8693 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8694 info installOne isarray@0.0.1 +8695 verbose installOne of isarray to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream not in flight; installing +8696 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8697 info installOne string_decoder@0.10.31 +8698 verbose installOne of string_decoder to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream not in flight; installing +8699 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +8700 silly install write writing wrappy 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy +8701 verbose lock using /home/ruanyf/.tnpm/_locks/repeat-element-8d83f2b2fa7e54b8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element +8702 verbose lock using /home/ruanyf/.tnpm/_locks/preserve-abe6a87d818305a7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve +8703 verbose lock using /home/ruanyf/.tnpm/_locks/expand-range-05d02f12f4c3112f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +8704 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow is being purged from base /home/ruanyf/npm-global +8705 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow +8706 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive is being purged from base /home/ruanyf/npm-global +8707 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive +8708 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket +8709 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer +8710 silly gunzTarPerm extractEntry wrappy.js +8711 silly install write writing repeat-element 1.1.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element +8712 silly install write writing preserve 0.2.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve +8713 silly install write writing expand-range 1.8.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +8714 verbose tar unpack /home/ruanyf/.tnpm/is-equal-shallow/0.1.3/package.tgz +8715 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow +8716 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow is being purged +8717 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow +8718 verbose tar unpack /home/ruanyf/.tnpm/is-primitive/2.0.0/package.tgz +8719 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive +8720 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive is being purged +8721 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive +8722 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-5a7dd83756dcfc24.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits +8723 verbose lock using /home/ruanyf/.tnpm/_locks/core-util-is-58fb48764c4f40d2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +8724 verbose lock using /home/ruanyf/.tnpm/_locks/isarray-a517a962b3b79674.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray +8725 verbose lock using /home/ruanyf/.tnpm/_locks/string-decoder-002153e92ecbe9ee.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +8726 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile is being purged from base /home/ruanyf/npm-global +8727 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile +8728 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base is being purged from base /home/ruanyf/npm-global +8729 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base +8730 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable is being purged from base /home/ruanyf/npm-global +8731 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable +8732 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten is being purged from base /home/ruanyf/npm-global +8733 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten +8734 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own is being purged from base /home/ruanyf/npm-global +8735 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +8736 silly gunzTarPerm modes [ '755', '644' ] +8737 silly gunzTarPerm modes [ '755', '644' ] +8738 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits +8739 silly install write writing core-util-is 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +8740 silly install write writing isarray 0.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray +8741 silly install write writing string_decoder 0.10.31 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +8742 verbose tar unpack /home/ruanyf/.tnpm/is-dotfile/1.0.2/package.tgz +8743 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile +8744 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile is being purged +8745 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile +8746 verbose tar unpack /home/ruanyf/.tnpm/glob-base/0.3.0/package.tgz +8747 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base +8748 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base is being purged +8749 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base +8750 verbose tar unpack /home/ruanyf/.tnpm/is-extendable/0.1.1/package.tgz +8751 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable +8752 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable is being purged +8753 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable +8754 verbose tar unpack /home/ruanyf/.tnpm/arr-flatten/1.0.1/package.tgz +8755 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten +8756 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten is being purged +8757 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten +8758 verbose tar unpack /home/ruanyf/.tnpm/for-own/0.1.4/package.tgz +8759 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +8760 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own is being purged +8761 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +8762 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket is being purged from base /home/ruanyf/npm-global +8763 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket +8764 silly gunzTarPerm modes [ '755', '644' ] +8765 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer is being purged from base /home/ruanyf/npm-global +8766 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer +8767 silly gunzTarPerm modes [ '755', '644' ] +8768 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob/package.json +8769 silly gunzTarPerm modes [ '755', '644' ] +8770 silly gunzTarPerm modes [ '755', '644' ] +8771 silly gunzTarPerm modes [ '755', '644' ] +8772 silly gunzTarPerm extractEntry package.json +8773 verbose tar unpack /home/ruanyf/.tnpm/is-posix-bracket/0.1.1/package.tgz +8774 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket +8775 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket is being purged +8776 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket +8777 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy +8778 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable/package.json +8779 verbose tar unpack /home/ruanyf/.tnpm/is-buffer/1.1.3/package.tgz +8780 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer +8781 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer is being purged +8782 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer +8783 silly cache add args [ 'jsonify@~0.0.0', null ] +8784 verbose cache add spec jsonify@~0.0.0 +8785 silly cache add parsed spec Result { +8785 silly cache add raw: 'jsonify@~0.0.0', +8785 silly cache add scope: null, +8785 silly cache add name: 'jsonify', +8785 silly cache add rawSpec: '~0.0.0', +8785 silly cache add spec: '>=0.0.0 <0.1.0', +8785 silly cache add type: 'range' } +8786 silly addNamed jsonify@>=0.0.0 <0.1.0 +8787 verbose addNamed ">=0.0.0 <0.1.0" is a valid semver range for jsonify +8788 silly addNameRange { name: 'jsonify', range: '>=0.0.0 <0.1.0', hasData: false } +8789 silly mapToRegistry name jsonify +8790 silly mapToRegistry using default registry +8791 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +8792 silly mapToRegistry data Result { +8792 silly mapToRegistry raw: 'jsonify', +8792 silly mapToRegistry scope: null, +8792 silly mapToRegistry name: 'jsonify', +8792 silly mapToRegistry rawSpec: '', +8792 silly mapToRegistry spec: 'latest', +8792 silly mapToRegistry type: 'tag' } +8793 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/jsonify +8794 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/jsonify not in flight; fetching +8795 silly gunzTarPerm modes [ '755', '644' ] +8796 silly gunzTarPerm modes [ '755', '644' ] +8797 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element +8798 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve +8799 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +8800 silly gunzTarPerm extractEntry forEachRight.js +8801 silly gunzTarPerm extractEntry _stringSize.js +8802 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +8803 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray +8804 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits +8805 silly gunzTarPerm extractEntry package.json +8806 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy is being purged from base /home/ruanyf/npm-global +8807 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy +8808 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +8809 silly gunzTarPerm extractEntry ts/core/internal/bindcallback.ts +8810 silly gunzTarPerm modified mode [ 'ts/core/internal/bindcallback.ts', 384, 420 ] +8811 silly gunzTarPerm extractEntry ts/core/internal/errors.ts +8812 silly gunzTarPerm modified mode [ 'ts/core/internal/errors.ts', 384, 420 ] +8813 info preinstall is-extglob@1.0.0 +8814 silly gunzTarPerm extractEntry .npmignore +8815 silly gunzTarPerm extractEntry README.md +8816 silly gunzTarPerm extractEntry package.json +8817 verbose tar unpack /home/ruanyf/.tnpm/wrappy/1.0.2/package.tgz +8818 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy +8819 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy is being purged +8820 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy +8821 info preinstall is-extendable@0.1.1 +8822 silly gunzTarPerm extractEntry package.json +8823 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element is being purged from base /home/ruanyf/npm-global +8824 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element +8825 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve is being purged from base /home/ruanyf/npm-global +8826 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve +8827 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range is being purged from base /home/ruanyf/npm-global +8828 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +8829 silly gunzTarPerm extractEntry package.json +8830 silly gunzTarPerm extractEntry package.json +8831 silly gunzTarPerm modified mode [ 'package.json', 448, 484 ] +8832 silly gunzTarPerm modes [ '755', '644' ] +8833 silly gunzTarPerm extractEntry package.json +8834 verbose tar unpack /home/ruanyf/.tnpm/repeat-element/1.1.2/package.tgz +8835 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element +8836 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element is being purged +8837 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element +8838 verbose tar unpack /home/ruanyf/.tnpm/preserve/0.2.0/package.tgz +8839 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve +8840 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve is being purged +8841 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve +8842 verbose tar unpack /home/ruanyf/.tnpm/expand-range/1.8.2/package.tgz +8843 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +8844 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range is being purged +8845 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +8846 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob/package.json +8847 silly gunzTarPerm extractEntry package.json +8848 verbose request uri http://registry.npm.alibaba-inc.com/jsonify +8849 verbose request no auth needed +8850 info attempt registry request try #1 at 上午9:12:31 +8851 verbose etag "5bd-/uvMSpkBpJZr/I3dulbZog" +8852 http request GET http://registry.npm.alibaba-inc.com/jsonify +8853 silly gunzTarPerm extractEntry package.json +8854 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is is being purged from base /home/ruanyf/npm-global +8855 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +8856 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray is being purged from base /home/ruanyf/npm-global +8857 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray +8858 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits is being purged from base /home/ruanyf/npm-global +8859 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits +8860 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder is being purged from base /home/ruanyf/npm-global +8861 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +8862 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable/package.json +8863 silly gunzTarPerm extractEntry package.json +8864 silly gunzTarPerm modes [ '755', '644' ] +8865 silly gunzTarPerm modes [ '755', '644' ] +8866 silly gunzTarPerm modes [ '755', '644' ] +8867 verbose tar unpack /home/ruanyf/.tnpm/core-util-is/1.0.2/package.tgz +8868 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +8869 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is is being purged +8870 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +8871 verbose tar unpack /home/ruanyf/.tnpm/isarray/0.0.1/package.tgz +8872 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray +8873 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray is being purged +8874 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray +8875 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz +8876 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits +8877 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits is being purged +8878 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits +8879 silly gunzTarPerm extractEntry README.md +8880 silly gunzTarPerm extractEntry LICENSE +8881 verbose tar unpack /home/ruanyf/.tnpm/string_decoder/0.10.31/package.tgz +8882 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +8883 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder is being purged +8884 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +8885 silly gunzTarPerm modes [ '755', '644' ] +8886 silly gunzTarPerm modes [ '755', '644' ] +8887 silly gunzTarPerm modes [ '755', '644' ] +8888 silly gunzTarPerm extractEntry README.md +8889 silly gunzTarPerm extractEntry LICENSE +8890 silly gunzTarPerm modes [ '755', '644' ] +8891 silly gunzTarPerm extractEntry README.md +8892 silly gunzTarPerm extractEntry LICENSE +8893 silly gunzTarPerm extractEntry README.md +8894 silly gunzTarPerm extractEntry LICENSE +8895 silly gunzTarPerm extractEntry README.md +8896 silly gunzTarPerm modified mode [ 'README.md', 448, 484 ] +8897 silly gunzTarPerm extractEntry LICENSE +8898 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] +8899 silly gunzTarPerm extractEntry README.md +8900 silly gunzTarPerm extractEntry LICENSE +8901 silly gunzTarPerm extractEntry README.md +8902 silly gunzTarPerm extractEntry LICENSE +8903 silly gunzTarPerm extractEntry README.md +8904 silly gunzTarPerm extractEntry LICENSE +8905 silly gunzTarPerm extractEntry package.json +8906 silly gunzTarPerm extractEntry README.md +8907 silly gunzTarPerm extractEntry LICENSE +8908 silly gunzTarPerm extractEntry forIn.js +8909 silly gunzTarPerm extractEntry _stackSet.js +8910 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob/package.json +8911 silly gunzTarPerm extractEntry package.json +8912 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable/package.json +8913 silly gunzTarPerm extractEntry ts/core/internal/isequal.ts +8914 silly gunzTarPerm modified mode [ 'ts/core/internal/isequal.ts', 384, 420 ] +8915 silly gunzTarPerm extractEntry ts/core/internal/priorityqueue.ts +8916 silly gunzTarPerm modified mode [ 'ts/core/internal/priorityqueue.ts', 384, 420 ] +8917 silly gunzTarPerm extractEntry package.json +8918 silly gunzTarPerm extractEntry package.json +8919 silly gunzTarPerm extractEntry example.js +8920 silly gunzTarPerm extractEntry index.js +8921 silly gunzTarPerm extractEntry package.json +8922 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy/package.json +8923 silly gunzTarPerm extractEntry README.md +8924 silly gunzTarPerm extractEntry LICENSE +8925 silly gunzTarPerm extractEntry package.json +8926 silly gunzTarPerm extractEntry package.json +8927 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] +8928 silly gunzTarPerm extractEntry package.json +8929 silly gunzTarPerm extractEntry README.md +8930 silly gunzTarPerm extractEntry LICENSE +8931 silly gunzTarPerm extractEntry index.js +8932 silly gunzTarPerm extractEntry README.md +8933 silly gunzTarPerm extractEntry LICENSE +8934 silly gunzTarPerm extractEntry .npmignore +8935 silly gunzTarPerm extractEntry README.md +8936 silly gunzTarPerm extractEntry index.js +8937 silly gunzTarPerm extractEntry README.md +8938 silly gunzTarPerm extractEntry LICENSE +8939 silly gunzTarPerm extractEntry index.js +8940 info preinstall wrappy@1.0.2 +8941 silly install resolved [] +8942 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob +8943 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob +8944 silly gunzTarPerm extractEntry index.js +8945 silly gunzTarPerm extractEntry index.js +8946 silly gunzTarPerm modified mode [ 'index.js', 448, 484 ] +8947 silly gunzTarPerm extractEntry README.md +8948 silly gunzTarPerm extractEntry LICENSE +8949 silly gunzTarPerm extractEntry .npmignore +8950 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] +8951 silly gunzTarPerm extractEntry README.md +8952 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] +8953 silly install resolved [] +8954 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable +8955 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable +8956 silly gunzTarPerm extractEntry README.md +8957 silly gunzTarPerm extractEntry index.js +8958 silly gunzTarPerm extractEntry index.js +8959 silly gunzTarPerm extractEntry index.js +8960 silly gunzTarPerm extractEntry index.js +8961 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy/package.json +8962 silly gunzTarPerm extractEntry index.js +8963 silly gunzTarPerm extractEntry .travis.yml +8964 http 304 http://registry.npm.alibaba-inc.com/jsonify +8965 verbose headers { server: 'Tengine', +8965 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +8965 verbose headers connection: 'keep-alive', +8965 verbose headers etag: '"5bd-/uvMSpkBpJZr/I3dulbZog"', +8965 verbose headers 'x-readtime': '14' } +8966 silly get cb [ 304, +8966 silly get { server: 'Tengine', +8966 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +8966 silly get connection: 'keep-alive', +8966 silly get etag: '"5bd-/uvMSpkBpJZr/I3dulbZog"', +8966 silly get 'x-readtime': '14' } ] +8967 verbose etag http://registry.npm.alibaba-inc.com/jsonify from cache +8968 verbose get saving jsonify to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/jsonify/.cache.json +8969 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +8970 silly gunzTarPerm extractEntry forInRight.js +8971 silly gunzTarPerm extractEntry _stackHas.js +8972 silly gunzTarPerm extractEntry ts/core/internal/util.ts +8973 silly gunzTarPerm modified mode [ 'ts/core/internal/util.ts', 384, 420 ] +8974 silly gunzTarPerm extractEntry ts/core/abstractobserver.ts +8975 silly gunzTarPerm modified mode [ 'ts/core/abstractobserver.ts', 384, 420 ] +8976 silly gunzTarPerm extractEntry ts/core/anonymousobserver.ts +8977 silly gunzTarPerm modified mode [ 'ts/core/anonymousobserver.ts', 384, 420 ] +8978 info linkStuff is-extglob@1.0.0 +8979 silly linkStuff is-extglob@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules as its parent node_modules +8980 silly linkStuff is-extglob@1.0.0 is part of a global install +8981 silly linkStuff is-extglob@1.0.0 is installed into a global node_modules +8982 silly gunzTarPerm extractEntry wrappy.js +8983 info linkStuff is-extendable@0.1.1 +8984 silly linkStuff is-extendable@0.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules as its parent node_modules +8985 silly linkStuff is-extendable@0.1.1 is part of a global install +8986 silly linkStuff is-extendable@0.1.1 is installed into a global node_modules +8987 silly gunzTarPerm extractEntry ts/core/backpressure/controlled.ts +8988 silly gunzTarPerm modified mode [ 'ts/core/backpressure/controlled.ts', 384, 420 ] +8989 silly gunzTarPerm extractEntry index.js +8990 verbose linkBins is-extglob@1.0.0 +8991 verbose linkMans is-extglob@1.0.0 +8992 verbose rebuildBundles is-extglob@1.0.0 +8993 silly gunzTarPerm extractEntry index.js +8994 silly gunzTarPerm extractEntry LICENSE +8995 silly gunzTarPerm extractEntry index.js +8996 silly gunzTarPerm extractEntry test.js +8997 silly gunzTarPerm extractEntry float.patch +8998 silly gunzTarPerm extractEntry inherits.js +8999 silly gunzTarPerm extractEntry inherits_browser.js +9000 verbose linkBins is-extendable@0.1.1 +9001 verbose linkMans is-extendable@0.1.1 +9002 verbose rebuildBundles is-extendable@0.1.1 +9003 info install is-extglob@1.0.0 +9004 silly gunzTarPerm extractEntry LICENSE +9005 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ] +9006 silly gunzTarPerm extractEntry index.js +9007 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ] +9008 info install is-extendable@0.1.1 +9009 silly gunzTarPerm extractEntry build/build.js +9010 silly gunzTarPerm extractEntry component.json +9011 silly addNameRange number 2 { name: 'jsonify', range: '>=0.0.0 <0.1.0', hasData: true } +9012 silly addNameRange versions [ 'jsonify', [ '0.0.0' ] ] +9013 silly addNamed jsonify@0.0.0 +9014 verbose addNamed "0.0.0" is a plain semver version for jsonify +9015 silly gunzTarPerm extractEntry .zuul.yml +9016 silly gunzTarPerm extractEntry test/basic.js +9017 silly gunzTarPerm extractEntry forOwn.js +9018 silly gunzTarPerm extractEntry _stackGet.js +9019 info postinstall is-extglob@1.0.0 +9020 info postinstall is-extendable@0.1.1 +9021 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy/package.json +9022 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +9023 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-extglob-098a2ff027ee316f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob +9024 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +9025 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +9026 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist/package.json +9027 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-extendable-8a9f54846740efdd.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable +9028 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +9029 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +9030 silly gunzTarPerm extractEntry ts/core/backpressure/pausable.ts +9031 silly gunzTarPerm modified mode [ 'ts/core/backpressure/pausable.ts', 384, 420 ] +9032 silly gunzTarPerm extractEntry ts/core/backpressure/pausablebuffered.ts +9033 silly gunzTarPerm modified mode [ 'ts/core/backpressure/pausablebuffered.ts', 384, 420 ] +9034 silly cache afterAdd jsonify@0.0.0 +9035 verbose afterAdd /home/ruanyf/.tnpm/jsonify/0.0.0/package/package.json not in flight; writing +9036 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +9037 silly gunzTarPerm extractEntry lib/util.js +9038 silly gunzTarPerm extractEntry test.js +9039 silly gunzTarPerm extractEntry .gitattributes +9040 silly gunzTarPerm extractEntry test.js +9041 info preinstall wrappy@1.0.2 +9042 info preinstall minimist@0.0.8 +9043 info linkStuff is-glob@2.0.1 +9044 silly linkStuff is-glob@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules as its parent node_modules +9045 silly linkStuff is-glob@2.0.1 is part of a global install +9046 silly linkStuff is-glob@2.0.1 is installed into a global node_modules +9047 info linkStuff extend-shallow@2.0.1 +9048 silly linkStuff extend-shallow@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules as its parent node_modules +9049 silly linkStuff extend-shallow@2.0.1 is part of a global install +9050 silly linkStuff extend-shallow@2.0.1 is installed into a global node_modules +9051 silly gunzTarPerm extractEntry forOwnRight.js +9052 silly gunzTarPerm extractEntry _stackDelete.js +9053 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +9054 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist/package.json +9055 verbose afterAdd /home/ruanyf/.tnpm/jsonify/0.0.0/package/package.json written +9056 silly install resolved [ { name: 'jsonify', +9056 silly install resolved version: '0.0.0', +9056 silly install resolved description: 'JSON without touching any globals', +9056 silly install resolved main: 'index.js', +9056 silly install resolved directories: { lib: '.', test: 'test' }, +9056 silly install resolved devDependencies: { tap: '0.0.x', garbage: '0.0.x' }, +9056 silly install resolved scripts: { test: 'tap test' }, +9056 silly install resolved repository: { type: 'git', url: 'git://github.com/substack/jsonify.git' }, +9056 silly install resolved keywords: [ 'json', 'browser' ], +9056 silly install resolved author: { name: 'Douglas Crockford', url: 'http://crockford.com/' }, +9056 silly install resolved license: 'Public Domain', +9056 silly install resolved _id: 'jsonify@0.0.0', +9056 silly install resolved dependencies: {}, +9056 silly install resolved engines: { node: '*' }, +9056 silly install resolved _engineSupported: true, +9056 silly install resolved _npmVersion: '1.0.10', +9056 silly install resolved _nodeVersion: 'v0.5.0-pre', +9056 silly install resolved _defaultsLoaded: true, +9056 silly install resolved dist: +9056 silly install resolved { shasum: '2c74b6ee41d93ca51b7b5aaee8f503631d252a73', +9056 silly install resolved size: 4376, +9056 silly install resolved noattachment: false, +9056 silly install resolved key: '/jsonify/-/jsonify-0.0.0.tgz', +9056 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/jsonify/download/jsonify-0.0.0.tgz' }, +9056 silly install resolved maintainers: [ [Object] ], +9056 silly install resolved publish_time: 1313929344348, +9056 silly install resolved _cnpm_publish_time: 1313929344348, +9056 silly install resolved _shasum: '2c74b6ee41d93ca51b7b5aaee8f503631d252a73', +9056 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/jsonify/download/jsonify-0.0.0.tgz', +9056 silly install resolved _from: 'jsonify@>=0.0.0 <0.1.0', +9056 silly install resolved bugs: { url: 'https://github.com/substack/jsonify/issues' }, +9056 silly install resolved readme: 'ERROR: No README data found!', +9056 silly install resolved homepage: 'https://github.com/substack/jsonify#readme' } ] +9057 info install jsonify@0.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +9058 info installOne jsonify@0.0.0 +9059 verbose installOne of jsonify to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify not in flight; installing +9060 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +9061 verbose linkBins is-glob@2.0.1 +9062 verbose linkMans is-glob@2.0.1 +9063 verbose rebuildBundles is-glob@2.0.1 +9064 verbose linkBins extend-shallow@2.0.1 +9065 verbose linkMans extend-shallow@2.0.1 +9066 verbose rebuildBundles extend-shallow@2.0.1 +9067 verbose rebuildBundles [ 'is-extglob' ] +9068 info install is-glob@2.0.1 +9069 verbose lock using /home/ruanyf/.tnpm/_locks/jsonify-bc3e1f8c14080ee6.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify +9070 verbose rebuildBundles [ 'is-extendable' ] +9071 info install extend-shallow@2.0.1 +9072 silly install resolved [] +9073 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy +9074 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy +9075 silly gunzTarPerm extractEntry ts/core/backpressure/pauser.ts +9076 silly gunzTarPerm modified mode [ 'ts/core/backpressure/pauser.ts', 384, 420 ] +9077 silly gunzTarPerm extractEntry ts/core/backpressure/stopandwait.ts +9078 silly gunzTarPerm modified mode [ 'ts/core/backpressure/stopandwait.ts', 384, 420 ] +9079 silly install write writing jsonify 0.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify +9080 info postinstall is-glob@2.0.1 +9081 info postinstall extend-shallow@2.0.1 +9082 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +9083 silly gunzTarPerm extractEntry .verb.md +9084 silly gunzTarPerm extractEntry .travis.yml +9085 silly gunzTarPerm extractEntry zipObjectDeep.js +9086 silly gunzTarPerm extractEntry _stackClear.js +9087 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-glob-28c6371c3d64b787.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob +9088 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +9089 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +9090 verbose unlock done using /home/ruanyf/.tnpm/_locks/extend-shallow-c1525cdc47b1c1fa.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow +9091 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +9092 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +9093 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify +9094 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist/package.json +9095 silly install resolved [] +9096 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy +9097 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy +9098 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify is being purged from base /home/ruanyf/npm-global +9099 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify +9100 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive/package.json +9101 silly gunzTarPerm extractEntry ts/core/backpressure/windowed.ts +9102 silly gunzTarPerm modified mode [ 'ts/core/backpressure/windowed.ts', 384, 420 ] +9103 silly gunzTarPerm extractEntry ts/core/checkedobserver.ts +9104 silly gunzTarPerm modified mode [ 'ts/core/checkedobserver.ts', 384, 420 ] +9105 silly gunzTarPerm extractEntry ts/core/concurrency/scheduleperiodicrecursive.ts +9106 silly gunzTarPerm modified mode [ 'ts/core/concurrency/scheduleperiodicrecursive.ts', 384, 420 ] +9107 info linkStuff glob-parent@2.0.0 +9108 silly linkStuff glob-parent@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules +9109 silly linkStuff glob-parent@2.0.0 is part of a global install +9110 silly linkStuff glob-parent@2.0.0 is installed into a global node_modules +9111 verbose tar unpack /home/ruanyf/.tnpm/jsonify/0.0.0/package.tgz +9112 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify +9113 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify is being purged +9114 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify +9115 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow/package.json +9116 info linkStuff to-absolute-glob@0.1.1 +9117 silly linkStuff to-absolute-glob@0.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules +9118 silly linkStuff to-absolute-glob@0.1.1 is part of a global install +9119 silly linkStuff to-absolute-glob@0.1.1 is installed into a global node_modules +9120 info linkStuff wrappy@1.0.2 +9121 silly linkStuff wrappy@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules as its parent node_modules +9122 silly linkStuff wrappy@1.0.2 is part of a global install +9123 silly linkStuff wrappy@1.0.2 is installed into a global node_modules +9124 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile/package.json +9125 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable/package.json +9126 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten/package.json +9127 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/package.json +9128 silly gunzTarPerm modes [ '755', '644' ] +9129 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base/package.json +9130 silly gunzTarPerm extractEntry ts/core/concurrency/currentthreadscheduler.ts +9131 silly gunzTarPerm modified mode [ 'ts/core/concurrency/currentthreadscheduler.ts', 384, 420 ] +9132 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket/package.json +9133 silly gunzTarPerm extractEntry .jshintrc +9134 verbose linkBins glob-parent@2.0.0 +9135 verbose linkMans glob-parent@2.0.0 +9136 verbose rebuildBundles glob-parent@2.0.0 +9137 info preinstall is-primitive@2.0.0 +9138 verbose linkBins to-absolute-glob@0.1.1 +9139 verbose linkMans to-absolute-glob@0.1.1 +9140 verbose rebuildBundles to-absolute-glob@0.1.1 +9141 verbose linkBins wrappy@1.0.2 +9142 verbose linkMans wrappy@1.0.2 +9143 verbose rebuildBundles wrappy@1.0.2 +9144 silly gunzTarPerm extractEntry fp.js +9145 silly gunzTarPerm extractEntry _setToPairs.js +9146 info linkStuff wrappy@1.0.2 +9147 silly linkStuff wrappy@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules as its parent node_modules +9148 silly linkStuff wrappy@1.0.2 is part of a global install +9149 silly linkStuff wrappy@1.0.2 is installed into a global node_modules +9150 verbose rebuildBundles [ 'is-glob' ] +9151 info install glob-parent@2.0.0 +9152 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +9153 info preinstall is-equal-shallow@0.1.3 +9154 verbose rebuildBundles [ 'extend-shallow' ] +9155 info install to-absolute-glob@0.1.1 +9156 info install wrappy@1.0.2 +9157 info preinstall is-dotfile@1.0.2 +9158 info preinstall is-extendable@0.1.1 +9159 info preinstall arr-flatten@1.0.1 +9160 info preinstall for-own@0.1.4 +9161 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive/package.json +9162 info preinstall glob-base@0.3.0 +9163 info postinstall glob-parent@2.0.0 +9164 silly gunzTarPerm extractEntry index.js +9165 info preinstall is-posix-bracket@0.1.1 +9166 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow/package.json +9167 info postinstall to-absolute-glob@0.1.1 +9168 info postinstall wrappy@1.0.2 +9169 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile/package.json +9170 verbose linkBins wrappy@1.0.2 +9171 verbose linkMans wrappy@1.0.2 +9172 verbose rebuildBundles wrappy@1.0.2 +9173 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable/package.json +9174 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten/package.json +9175 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/package.json +9176 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +9177 info install wrappy@1.0.2 +9178 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base/package.json +9179 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element/package.json +9180 info preinstall brace-expansion@1.1.4 +9181 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket/package.json +9182 silly install resolved [] +9183 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist +9184 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist +9185 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/package.json +9186 verbose unlock done using /home/ruanyf/.tnpm/_locks/glob-parent-de91b99c284b0f17.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent +9187 verbose unlock done using /home/ruanyf/.tnpm/_locks/to-absolute-glob-a3e8296dd7adbf52.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob +9188 verbose unlock done using /home/ruanyf/.tnpm/_locks/wrappy-16d4012a4a7813b9.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy +9189 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +9190 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +9191 info postinstall wrappy@1.0.2 +9192 silly gunzTarPerm extractEntry package.json +9193 silly gunzTarPerm extractEntry README.markdown +9194 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +9195 silly gunzTarPerm extractEntry ts/core/concurrency/historicalscheduler.ts +9196 silly gunzTarPerm modified mode [ 'ts/core/concurrency/historicalscheduler.ts', 384, 420 ] +9197 silly gunzTarPerm extractEntry ts/core/concurrency/immediatescheduler.ts +9198 silly gunzTarPerm modified mode [ 'ts/core/concurrency/immediatescheduler.ts', 384, 420 ] +9199 silly gunzTarPerm extractEntry ts/core/concurrency/scheduleditem.ts +9200 silly gunzTarPerm modified mode [ 'ts/core/concurrency/scheduleditem.ts', 384, 420 ] +9201 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive/package.json +9202 info preinstall wrappy@1.0.2 +9203 info preinstall repeat-element@1.1.2 +9204 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow/package.json +9205 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile/package.json +9206 silly gunzTarPerm extractEntry ts/core/concurrency/defaultscheduler.ts +9207 silly gunzTarPerm extractEntry fromPairs.js +9208 silly gunzTarPerm extractEntry _setToArray.js +9209 verbose unlock done using /home/ruanyf/.tnpm/_locks/wrappy-b27925cc34dcc2fb.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy +9210 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +9211 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +9212 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable/package.json +9213 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten/package.json +9214 silly prepareForInstallMany adding for-in@^0.1.5 from for-own dependencies +9215 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/package.json +9216 info preinstall expand-range@1.8.2 +9217 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +9218 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base/package.json +9219 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element/package.json +9220 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket/package.json +9221 info linkStuff once@1.3.3 +9222 silly linkStuff once@1.3.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules as its parent node_modules +9223 silly linkStuff once@1.3.3 is part of a global install +9224 silly linkStuff once@1.3.3 is installed into a global node_modules +9225 silly gunzTarPerm extractEntry ts/core/concurrency/scheduler.periodic.ts +9226 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/package.json +9227 silly prepareForInstallMany adding balanced-match@^0.4.1 from brace-expansion dependencies +9228 silly prepareForInstallMany adding concat-map@0.0.1 from brace-expansion dependencies +9229 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +9230 silly gunzTarPerm extractEntry ts/core/concurrency/scheduler.recursive.ts +9231 silly install resolved [] +9232 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive +9233 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive +9234 verbose linkBins once@1.3.3 +9235 verbose linkMans once@1.3.3 +9236 verbose rebuildBundles once@1.3.3 +9237 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +9238 silly gunzTarPerm extractEntry test/stringify.js +9239 silly gunzTarPerm extractEntry test/parse.js +9240 silly install resolved [] +9241 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow +9242 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow +9243 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json +9244 verbose rebuildBundles [ 'wrappy' ] +9245 info install once@1.3.3 +9246 silly install resolved [] +9247 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile +9248 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile +9249 silly install resolved [] +9250 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable +9251 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable +9252 silly install resolved [] +9253 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten +9254 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten +9255 info linkStuff minimist@0.0.8 +9256 silly linkStuff minimist@0.0.8 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules as its parent node_modules +9257 silly linkStuff minimist@0.0.8 is part of a global install +9258 silly linkStuff minimist@0.0.8 is installed into a global node_modules +9259 silly install resolved [] +9260 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base +9261 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base +9262 silly cache add args [ 'for-in@^0.1.5', null ] +9263 verbose cache add spec for-in@^0.1.5 +9264 silly cache add parsed spec Result { +9264 silly cache add raw: 'for-in@^0.1.5', +9264 silly cache add scope: null, +9264 silly cache add name: 'for-in', +9264 silly cache add rawSpec: '^0.1.5', +9264 silly cache add spec: '>=0.1.5 <0.2.0', +9264 silly cache add type: 'range' } +9265 silly addNamed for-in@>=0.1.5 <0.2.0 +9266 verbose addNamed ">=0.1.5 <0.2.0" is a valid semver range for for-in +9267 silly addNameRange { name: 'for-in', range: '>=0.1.5 <0.2.0', hasData: false } +9268 silly mapToRegistry name for-in +9269 silly mapToRegistry using default registry +9270 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +9271 silly mapToRegistry data Result { +9271 silly mapToRegistry raw: 'for-in', +9271 silly mapToRegistry scope: null, +9271 silly mapToRegistry name: 'for-in', +9271 silly mapToRegistry rawSpec: '', +9271 silly mapToRegistry spec: 'latest', +9271 silly mapToRegistry type: 'tag' } +9272 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/for-in +9273 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/for-in not in flight; fetching +9274 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element/package.json +9275 silly install resolved [] +9276 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket +9277 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket +9278 info postinstall once@1.3.3 +9279 silly gunzTarPerm extractEntry function.js +9280 silly gunzTarPerm extractEntry _setData.js +9281 silly prepareForInstallMany adding fill-range@^2.1.0 from expand-range dependencies +9282 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/package.json +9283 info preinstall string_decoder@0.10.31 +9284 verbose linkBins minimist@0.0.8 +9285 verbose linkMans minimist@0.0.8 +9286 verbose rebuildBundles minimist@0.0.8 +9287 info linkStuff is-primitive@2.0.0 +9288 silly linkStuff is-primitive@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules as its parent node_modules +9289 silly linkStuff is-primitive@2.0.0 is part of a global install +9290 silly linkStuff is-primitive@2.0.0 is installed into a global node_modules +9291 info preinstall isarray@0.0.1 +9292 info linkStuff inflight@1.0.5 +9293 silly linkStuff inflight@1.0.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules +9294 silly linkStuff inflight@1.0.5 is part of a global install +9295 silly linkStuff inflight@1.0.5 is installed into a global node_modules +9296 info install minimist@0.0.8 +9297 silly cache add args [ 'balanced-match@^0.4.1', null ] +9298 verbose cache add spec balanced-match@^0.4.1 +9299 silly cache add args [ 'concat-map@0.0.1', null ] +9300 verbose cache add spec concat-map@0.0.1 +9301 silly cache add parsed spec Result { +9301 silly cache add raw: 'balanced-match@^0.4.1', +9301 silly cache add scope: null, +9301 silly cache add name: 'balanced-match', +9301 silly cache add rawSpec: '^0.4.1', +9301 silly cache add spec: '>=0.4.1 <0.5.0', +9301 silly cache add type: 'range' } +9302 silly addNamed balanced-match@>=0.4.1 <0.5.0 +9303 verbose addNamed ">=0.4.1 <0.5.0" is a valid semver range for balanced-match +9304 silly addNameRange { name: 'balanced-match', +9304 silly addNameRange range: '>=0.4.1 <0.5.0', +9304 silly addNameRange hasData: false } +9305 silly mapToRegistry name balanced-match +9306 silly mapToRegistry using default registry +9307 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +9308 silly mapToRegistry data Result { +9308 silly mapToRegistry raw: 'balanced-match', +9308 silly mapToRegistry scope: null, +9308 silly mapToRegistry name: 'balanced-match', +9308 silly mapToRegistry rawSpec: '', +9308 silly mapToRegistry spec: 'latest', +9308 silly mapToRegistry type: 'tag' } +9309 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/balanced-match +9310 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/balanced-match not in flight; fetching +9311 silly cache add parsed spec Result { +9311 silly cache add raw: 'concat-map@0.0.1', +9311 silly cache add scope: null, +9311 silly cache add name: 'concat-map', +9311 silly cache add rawSpec: '0.0.1', +9311 silly cache add spec: '0.0.1', +9311 silly cache add type: 'version' } +9312 silly addNamed concat-map@0.0.1 +9313 verbose addNamed "0.0.1" is a plain semver version for concat-map +9314 silly mapToRegistry name concat-map +9315 silly mapToRegistry using default registry +9316 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +9317 silly mapToRegistry data Result { +9317 silly mapToRegistry raw: 'concat-map', +9317 silly mapToRegistry scope: null, +9317 silly mapToRegistry name: 'concat-map', +9317 silly mapToRegistry rawSpec: '', +9317 silly mapToRegistry spec: 'latest', +9317 silly mapToRegistry type: 'tag' } +9318 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/concat-map +9319 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/concat-map not in flight; fetching +9320 info linkStuff is-equal-shallow@0.1.3 +9321 silly linkStuff is-equal-shallow@0.1.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules as its parent node_modules +9322 silly linkStuff is-equal-shallow@0.1.3 is part of a global install +9323 silly linkStuff is-equal-shallow@0.1.3 is installed into a global node_modules +9324 verbose unlock done using /home/ruanyf/.tnpm/_locks/once-80d6dab4b7675236.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once +9325 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +9326 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +9327 info linkStuff is-dotfile@1.0.2 +9328 silly linkStuff is-dotfile@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules as its parent node_modules +9329 silly linkStuff is-dotfile@1.0.2 is part of a global install +9330 silly linkStuff is-dotfile@1.0.2 is installed into a global node_modules +9331 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +9332 info linkStuff is-extendable@0.1.1 +9333 silly linkStuff is-extendable@0.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules as its parent node_modules +9334 silly linkStuff is-extendable@0.1.1 is part of a global install +9335 silly linkStuff is-extendable@0.1.1 is installed into a global node_modules +9336 info linkStuff arr-flatten@1.0.1 +9337 silly linkStuff arr-flatten@1.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules as its parent node_modules +9338 silly linkStuff arr-flatten@1.0.1 is part of a global install +9339 silly linkStuff arr-flatten@1.0.1 is installed into a global node_modules +9340 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json +9341 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +9342 info linkStuff glob-base@0.3.0 +9343 silly linkStuff glob-base@0.3.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules as its parent node_modules +9344 silly linkStuff glob-base@0.3.0 is part of a global install +9345 silly linkStuff glob-base@0.3.0 is installed into a global node_modules +9346 info postinstall minimist@0.0.8 +9347 info linkStuff is-posix-bracket@0.1.1 +9348 silly linkStuff is-posix-bracket@0.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules as its parent node_modules +9349 silly linkStuff is-posix-bracket@0.1.1 is part of a global install +9350 silly linkStuff is-posix-bracket@0.1.1 is installed into a global node_modules +9351 verbose linkBins is-primitive@2.0.0 +9352 verbose linkMans is-primitive@2.0.0 +9353 verbose rebuildBundles is-primitive@2.0.0 +9354 verbose request uri http://registry.npm.alibaba-inc.com/for-in +9355 verbose request no auth needed +9356 info attempt registry request try #1 at 上午9:12:31 +9357 verbose etag "3075-mefGpdj3Ty4NC4ojN/14YA" +9358 http request GET http://registry.npm.alibaba-inc.com/for-in +9359 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json +9360 verbose linkBins inflight@1.0.5 +9361 verbose linkMans inflight@1.0.5 +9362 verbose rebuildBundles inflight@1.0.5 +9363 silly gunzTarPerm extractEntry ts/core/concurrency/scheduler.ts +9364 silly gunzTarPerm extractEntry ts/core/concurrency/scheduler.wrappers.ts +9365 silly gunzTarPerm extractEntry ts/core/concurrency/virtualtimescheduler.ts +9366 silly install resolved [] +9367 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element +9368 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element +9369 info install is-primitive@2.0.0 +9370 verbose linkBins is-equal-shallow@0.1.3 +9371 verbose linkMans is-equal-shallow@0.1.3 +9372 verbose rebuildBundles is-equal-shallow@0.1.3 +9373 verbose rebuildBundles [ 'wrappy' ] +9374 info install inflight@1.0.5 +9375 verbose linkBins is-dotfile@1.0.2 +9376 verbose linkMans is-dotfile@1.0.2 +9377 verbose rebuildBundles is-dotfile@1.0.2 +9378 verbose linkBins is-extendable@0.1.1 +9379 verbose linkMans is-extendable@0.1.1 +9380 verbose rebuildBundles is-extendable@0.1.1 +9381 verbose linkBins arr-flatten@1.0.1 +9382 verbose linkMans arr-flatten@1.0.1 +9383 verbose rebuildBundles arr-flatten@1.0.1 +9384 silly gunzTarPerm extractEntry lib/stringify.js +9385 silly gunzTarPerm extractEntry lib/parse.js +9386 info install is-equal-shallow@0.1.3 +9387 info install is-dotfile@1.0.2 +9388 info install is-extendable@0.1.1 +9389 info install arr-flatten@1.0.1 +9390 verbose linkBins glob-base@0.3.0 +9391 verbose linkMans glob-base@0.3.0 +9392 verbose rebuildBundles glob-base@0.3.0 +9393 silly gunzTarPerm extractEntry ts/core/disposables/booleandisposable.ts +9394 silly gunzTarPerm modified mode [ 'ts/core/disposables/booleandisposable.ts', 384, 420 ] +9395 verbose unlock done using /home/ruanyf/.tnpm/_locks/minimist-1e6dfe47780040db.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist +9396 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp +9397 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp +9398 verbose request uri http://registry.npm.alibaba-inc.com/balanced-match +9399 verbose request no auth needed +9400 info attempt registry request try #1 at 上午9:12:31 +9401 verbose etag "3fb3-nvdkMbL0GDmUlamx2c8ZNw" +9402 http request GET http://registry.npm.alibaba-inc.com/balanced-match +9403 verbose request uri http://registry.npm.alibaba-inc.com/concat-map +9404 verbose request no auth needed +9405 info attempt registry request try #1 at 上午9:12:31 +9406 verbose etag "1080-/yUNculYgIx1ZYl8DASRag" +9407 http request GET http://registry.npm.alibaba-inc.com/concat-map +9408 verbose linkBins is-posix-bracket@0.1.1 +9409 verbose linkMans is-posix-bracket@0.1.1 +9410 verbose rebuildBundles is-posix-bracket@0.1.1 +9411 info postinstall is-primitive@2.0.0 +9412 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json +9413 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer/package.json +9414 info linkStuff end-of-stream@1.0.0 +9415 silly linkStuff end-of-stream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules as its parent node_modules +9416 silly linkStuff end-of-stream@1.0.0 is part of a global install +9417 silly linkStuff end-of-stream@1.0.0 is installed into a global node_modules +9418 info postinstall inflight@1.0.5 +9419 info install glob-base@0.3.0 +9420 silly cache add args [ 'fill-range@^2.1.0', null ] +9421 verbose cache add spec fill-range@^2.1.0 +9422 silly cache add parsed spec Result { +9422 silly cache add raw: 'fill-range@^2.1.0', +9422 silly cache add scope: null, +9422 silly cache add name: 'fill-range', +9422 silly cache add rawSpec: '^2.1.0', +9422 silly cache add spec: '>=2.1.0 <3.0.0', +9422 silly cache add type: 'range' } +9423 silly addNamed fill-range@>=2.1.0 <3.0.0 +9424 verbose addNamed ">=2.1.0 <3.0.0" is a valid semver range for fill-range +9425 silly addNameRange { name: 'fill-range', range: '>=2.1.0 <3.0.0', hasData: false } +9426 silly mapToRegistry name fill-range +9427 silly mapToRegistry using default registry +9428 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +9429 silly mapToRegistry data Result { +9429 silly mapToRegistry raw: 'fill-range', +9429 silly mapToRegistry scope: null, +9429 silly mapToRegistry name: 'fill-range', +9429 silly mapToRegistry rawSpec: '', +9429 silly mapToRegistry spec: 'latest', +9429 silly mapToRegistry type: 'tag' } +9430 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/fill-range +9431 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/fill-range not in flight; fetching +9432 info install is-posix-bracket@0.1.1 +9433 info postinstall is-equal-shallow@0.1.3 +9434 info preinstall inherits@2.0.1 +9435 info postinstall is-dotfile@1.0.2 +9436 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +9437 info postinstall is-extendable@0.1.1 +9438 silly gunzTarPerm extractEntry functions.js +9439 silly gunzTarPerm extractEntry _setCacheHas.js +9440 info postinstall arr-flatten@1.0.1 +9441 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json +9442 info postinstall glob-base@0.3.0 +9443 info linkStuff repeat-element@1.1.2 +9444 silly linkStuff repeat-element@1.1.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules as its parent node_modules +9445 silly linkStuff repeat-element@1.1.2 is part of a global install +9446 silly linkStuff repeat-element@1.1.2 is installed into a global node_modules +9447 info postinstall is-posix-bracket@0.1.1 +9448 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-primitive-91229470b2bab84d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive +9449 verbose linkBins end-of-stream@1.0.0 +9450 verbose linkMans end-of-stream@1.0.0 +9451 verbose rebuildBundles end-of-stream@1.0.0 +9452 verbose unlock done using /home/ruanyf/.tnpm/_locks/inflight-a854246701206d7f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight +9453 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json +9454 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-equal-shallow-b545d286f24ccae2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow +9455 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +9456 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +9457 info preinstall core-util-is@1.0.2 +9458 info preinstall is-buffer@1.1.3 +9459 verbose rebuildBundles [ 'once' ] +9460 info install end-of-stream@1.0.0 +9461 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-dotfile-871e3c8783db0ccc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile +9462 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-extendable-dc6cd5e49afbbd3c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable +9463 verbose unlock done using /home/ruanyf/.tnpm/_locks/arr-flatten-5843d795098330a6.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten +9464 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +9465 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +9466 verbose unlock done using /home/ruanyf/.tnpm/_locks/glob-base-3cceb05ef8de5584.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base +9467 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +9468 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +9469 info linkStuff mkdirp@0.5.1 +9470 silly linkStuff mkdirp@0.5.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +9471 silly linkStuff mkdirp@0.5.1 is part of a global install +9472 silly linkStuff mkdirp@0.5.1 is installed into a global node_modules +9473 verbose linkBins repeat-element@1.1.2 +9474 verbose linkMans repeat-element@1.1.2 +9475 verbose rebuildBundles repeat-element@1.1.2 +9476 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-posix-bracket-0e681d581ef83e10.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket +9477 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +9478 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +9479 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json +9480 verbose request uri http://registry.npm.alibaba-inc.com/fill-range +9481 verbose request no auth needed +9482 info attempt registry request try #1 at 上午9:12:31 +9483 verbose etag "a99c-d3MH08+FfF+ZyyhzFbLKtg" +9484 http request GET http://registry.npm.alibaba-inc.com/fill-range +9485 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer/package.json +9486 info postinstall end-of-stream@1.0.0 +9487 http 304 http://registry.npm.alibaba-inc.com/for-in +9488 verbose headers { server: 'Tengine', +9488 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +9488 verbose headers connection: 'keep-alive', +9488 verbose headers etag: '"3075-mefGpdj3Ty4NC4ojN/14YA"', +9488 verbose headers 'x-readtime': '22' } +9489 silly get cb [ 304, +9489 silly get { server: 'Tengine', +9489 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +9489 silly get connection: 'keep-alive', +9489 silly get etag: '"3075-mefGpdj3Ty4NC4ojN/14YA"', +9489 silly get 'x-readtime': '22' } ] +9490 verbose etag http://registry.npm.alibaba-inc.com/for-in from cache +9491 verbose get saving for-in to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/for-in/.cache.json +9492 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +9493 info install repeat-element@1.1.2 +9494 silly install resolved [] +9495 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy +9496 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy +9497 silly install resolved [] +9498 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +9499 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +9500 silly install resolved [] +9501 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray +9502 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray +9503 verbose linkBins mkdirp@0.5.1 +9504 verbose link bins [ { mkdirp: 'bin/cmd.js' }, +9504 verbose link bins '/home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/.bin', +9504 verbose link bins false ] +9505 verbose linkMans mkdirp@0.5.1 +9506 verbose rebuildBundles mkdirp@0.5.1 +9507 silly gunzTarPerm extractEntry ts/core/disposables/compositedisposable.ts +9508 silly gunzTarPerm modified mode [ 'ts/core/disposables/compositedisposable.ts', 384, 420 ] +9509 silly gunzTarPerm extractEntry ts/core/disposables/disposable.ts +9510 silly gunzTarPerm modified mode [ 'ts/core/disposables/disposable.ts', 384, 420 ] +9511 silly gunzTarPerm extractEntry ts/core/disposables/refcountdisposable.ts +9512 silly gunzTarPerm modified mode [ 'ts/core/disposables/refcountdisposable.ts', 384, 420 ] +9513 info postinstall repeat-element@1.1.2 +9514 info linkStuff regex-cache@0.4.3 +9515 silly linkStuff regex-cache@0.4.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +9516 silly linkStuff regex-cache@0.4.3 is part of a global install +9517 silly linkStuff regex-cache@0.4.3 is installed into a global node_modules +9518 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json +9519 verbose unlock done using /home/ruanyf/.tnpm/_locks/end-of-stream-202720a5c8d9dbba.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream +9520 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify +9521 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify +9522 http 304 http://registry.npm.alibaba-inc.com/concat-map +9523 verbose headers { server: 'Tengine', +9523 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +9523 verbose headers connection: 'keep-alive', +9523 verbose headers etag: '"1080-/yUNculYgIx1ZYl8DASRag"', +9523 verbose headers 'x-readtime': '17' } +9524 silly get cb [ 304, +9524 silly get { server: 'Tengine', +9524 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +9524 silly get connection: 'keep-alive', +9524 silly get etag: '"1080-/yUNculYgIx1ZYl8DASRag"', +9524 silly get 'x-readtime': '17' } ] +9525 verbose etag http://registry.npm.alibaba-inc.com/concat-map from cache +9526 verbose get saving concat-map to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/concat-map/.cache.json +9527 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +9528 info linkStuff arr-diff@2.0.0 +9529 silly linkStuff arr-diff@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +9530 silly linkStuff arr-diff@2.0.0 is part of a global install +9531 silly linkStuff arr-diff@2.0.0 is installed into a global node_modules +9532 silly gunzTarPerm extractEntry functionsIn.js +9533 silly gunzTarPerm extractEntry _setCacheAdd.js +9534 verbose rebuildBundles [ 'minimist' ] +9535 info linkStuff parse-glob@3.0.4 +9536 silly linkStuff parse-glob@3.0.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +9537 silly linkStuff parse-glob@3.0.4 is part of a global install +9538 silly linkStuff parse-glob@3.0.4 is installed into a global node_modules +9539 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/.bin/mkdirp is being purged +9540 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/.bin/mkdirp +9541 silly gunzTarPerm extractEntry ts/core/es5.ts +9542 silly gunzTarPerm modified mode [ 'ts/core/es5.ts', 384, 420 ] +9543 info linkStuff expand-brackets@0.1.5 +9544 silly linkStuff expand-brackets@0.1.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +9545 silly linkStuff expand-brackets@0.1.5 is part of a global install +9546 silly linkStuff expand-brackets@0.1.5 is installed into a global node_modules +9547 verbose unlock done using /home/ruanyf/.tnpm/_locks/repeat-element-8d83f2b2fa7e54b8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element +9548 verbose linkBins regex-cache@0.4.3 +9549 verbose linkMans regex-cache@0.4.3 +9550 verbose rebuildBundles regex-cache@0.4.3 +9551 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json +9552 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer/package.json +9553 info linkStuff string_decoder@0.10.31 +9554 silly linkStuff string_decoder@0.10.31 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +9555 silly linkStuff string_decoder@0.10.31 is part of a global install +9556 silly linkStuff string_decoder@0.10.31 is installed into a global node_modules +9557 http 304 http://registry.npm.alibaba-inc.com/balanced-match +9558 verbose headers { server: 'Tengine', +9558 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +9558 verbose headers connection: 'keep-alive', +9558 verbose headers etag: '"3fb3-nvdkMbL0GDmUlamx2c8ZNw"', +9558 verbose headers 'x-readtime': '30' } +9559 silly get cb [ 304, +9559 silly get { server: 'Tengine', +9559 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +9559 silly get connection: 'keep-alive', +9559 silly get etag: '"3fb3-nvdkMbL0GDmUlamx2c8ZNw"', +9559 silly get 'x-readtime': '30' } ] +9560 verbose etag http://registry.npm.alibaba-inc.com/balanced-match from cache +9561 verbose get saving balanced-match to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/balanced-match/.cache.json +9562 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +9563 verbose linkBins arr-diff@2.0.0 +9564 verbose linkMans arr-diff@2.0.0 +9565 verbose rebuildBundles arr-diff@2.0.0 +9566 verbose rebuildBundles [ 'is-equal-shallow', 'is-primitive' ] +9567 info install regex-cache@0.4.3 +9568 info linkStuff isarray@0.0.1 +9569 silly linkStuff isarray@0.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +9570 silly linkStuff isarray@0.0.1 is part of a global install +9571 silly linkStuff isarray@0.0.1 is installed into a global node_modules +9572 verbose rebuildBundles [ 'arr-flatten' ] +9573 info install arr-diff@2.0.0 +9574 verbose linkBins parse-glob@3.0.4 +9575 verbose linkMans parse-glob@3.0.4 +9576 verbose rebuildBundles parse-glob@3.0.4 +9577 verbose linkBins expand-brackets@0.1.5 +9578 verbose linkMans expand-brackets@0.1.5 +9579 verbose rebuildBundles expand-brackets@0.1.5 +9580 info linkStuff duplexify@3.4.3 +9581 silly linkStuff duplexify@3.4.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +9582 silly linkStuff duplexify@3.4.3 is part of a global install +9583 silly linkStuff duplexify@3.4.3 is installed into a global node_modules +9584 verbose rebuildBundles [ 'glob-base', 'is-dotfile' ] +9585 info install parse-glob@3.0.4 +9586 silly addNameRange number 2 { name: 'for-in', range: '>=0.1.5 <0.2.0', hasData: true } +9587 silly addNameRange versions [ 'for-in', +9587 silly addNameRange [ '0.1.5', '0.1.4', '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] +9588 silly addNamed for-in@0.1.5 +9589 verbose addNamed "0.1.5" is a plain semver version for for-in +9590 info install mkdirp@0.5.1 +9591 verbose rebuildBundles [ 'is-posix-bracket' ] +9592 info install expand-brackets@0.1.5 +9593 info postinstall regex-cache@0.4.3 +9594 silly install resolved [] +9595 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits +9596 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits +9597 verbose linkBins string_decoder@0.10.31 +9598 verbose linkMans string_decoder@0.10.31 +9599 verbose rebuildBundles string_decoder@0.10.31 +9600 info postinstall arr-diff@2.0.0 +9601 verbose linkBins isarray@0.0.1 +9602 verbose linkMans isarray@0.0.1 +9603 verbose rebuildBundles isarray@0.0.1 +9604 info install string_decoder@0.10.31 +9605 info postinstall parse-glob@3.0.4 +9606 info postinstall mkdirp@0.5.1 +9607 info postinstall expand-brackets@0.1.5 +9608 info install isarray@0.0.1 +9609 info linkStuff wrappy@1.0.2 +9610 silly linkStuff wrappy@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules as its parent node_modules +9611 silly linkStuff wrappy@1.0.2 is part of a global install +9612 silly linkStuff wrappy@1.0.2 is installed into a global node_modules +9613 verbose linkBins duplexify@3.4.3 +9614 verbose linkMans duplexify@3.4.3 +9615 verbose rebuildBundles duplexify@3.4.3 +9616 verbose unlock done using /home/ruanyf/.tnpm/_locks/regex-cache-d532aad21fcda594.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache +9617 silly install resolved [] +9618 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +9619 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +9620 silly install resolved [] +9621 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer +9622 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer +9623 verbose rebuildBundles [ 'end-of-stream', 'inherits' ] +9624 info install duplexify@3.4.3 +9625 info postinstall string_decoder@0.10.31 +9626 silly gunzTarPerm extractEntry get.js +9627 silly gunzTarPerm extractEntry _root.js +9628 verbose unlock done using /home/ruanyf/.tnpm/_locks/arr-diff-2732b6abfce275e8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff +9629 info postinstall isarray@0.0.1 +9630 verbose unlock done using /home/ruanyf/.tnpm/_locks/parse-glob-6752b9eef668ad41.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob +9631 silly gunzTarPerm extractEntry ts/core/es6-iterable.d.ts +9632 silly gunzTarPerm modified mode [ 'ts/core/es6-iterable.d.ts', 384, 420 ] +9633 silly gunzTarPerm extractEntry ts/core/es6-promise.d.ts +9634 silly gunzTarPerm modified mode [ 'ts/core/es6-promise.d.ts', 384, 420 ] +9635 verbose unlock done using /home/ruanyf/.tnpm/_locks/mkdirp-0b73b64c74bf3acc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp +9636 verbose unlock done using /home/ruanyf/.tnpm/_locks/expand-brackets-2c87c72b7dba14b4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets +9637 info linkStuff inherits@2.0.1 +9638 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +9639 silly linkStuff inherits@2.0.1 is part of a global install +9640 silly linkStuff inherits@2.0.1 is installed into a global node_modules +9641 verbose linkBins wrappy@1.0.2 +9642 verbose linkMans wrappy@1.0.2 +9643 verbose rebuildBundles wrappy@1.0.2 +9644 info postinstall duplexify@3.4.3 +9645 silly addNameRange number 2 { name: 'balanced-match', +9645 silly addNameRange range: '>=0.4.1 <0.5.0', +9645 silly addNameRange hasData: true } +9646 silly addNameRange versions [ 'balanced-match', +9646 silly addNameRange [ '0.4.1', +9646 silly addNameRange '0.4.0', +9646 silly addNameRange '0.3.0', +9646 silly addNameRange '0.2.1', +9646 silly addNameRange '0.2.0', +9646 silly addNameRange '0.1.0', +9646 silly addNameRange '0.0.1', +9646 silly addNameRange '0.0.0' ] ] +9647 silly addNamed balanced-match@0.4.1 +9648 verbose addNamed "0.4.1" is a plain semver version for balanced-match +9649 silly cache afterAdd for-in@0.1.5 +9650 verbose afterAdd /home/ruanyf/.tnpm/for-in/0.1.5/package/package.json not in flight; writing +9651 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +9652 info install wrappy@1.0.2 +9653 verbose unlock done using /home/ruanyf/.tnpm/_locks/string-decoder-002153e92ecbe9ee.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder +9654 verbose unlock done using /home/ruanyf/.tnpm/_locks/isarray-a517a962b3b79674.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray +9655 info linkStuff core-util-is@1.0.2 +9656 silly linkStuff core-util-is@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules +9657 silly linkStuff core-util-is@1.0.2 is part of a global install +9658 silly linkStuff core-util-is@1.0.2 is installed into a global node_modules +9659 info linkStuff is-buffer@1.1.3 +9660 silly linkStuff is-buffer@1.1.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules as its parent node_modules +9661 silly linkStuff is-buffer@1.1.3 is part of a global install +9662 silly linkStuff is-buffer@1.1.3 is installed into a global node_modules +9663 verbose linkBins inherits@2.0.1 +9664 verbose linkMans inherits@2.0.1 +9665 verbose rebuildBundles inherits@2.0.1 +9666 info postinstall wrappy@1.0.2 +9667 verbose unlock done using /home/ruanyf/.tnpm/_locks/duplexify-d3d9d0b0b0bc143d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify +9668 info install inherits@2.0.1 +9669 silly cache afterAdd concat-map@0.0.1 +9670 verbose afterAdd /home/ruanyf/.tnpm/concat-map/0.0.1/package/package.json not in flight; writing +9671 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +9672 verbose afterAdd /home/ruanyf/.tnpm/for-in/0.1.5/package/package.json written +9673 silly install resolved [ { name: 'for-in', +9673 silly install resolved description: 'Iterate over the own and inherited enumerable properties of an objecte, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js', +9673 silly install resolved version: '0.1.5', +9673 silly install resolved homepage: 'https://github.com/jonschlinkert/for-in', +9673 silly install resolved author: +9673 silly install resolved { name: 'Jon Schlinkert', +9673 silly install resolved url: 'https://github.com/jonschlinkert' }, +9673 silly install resolved repository: +9673 silly install resolved { type: 'git', +9673 silly install resolved url: 'git+https://github.com/jonschlinkert/for-in.git' }, +9673 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/for-in/issues' }, +9673 silly install resolved license: 'MIT', +9673 silly install resolved files: [ 'index.js' ], +9673 silly install resolved main: 'index.js', +9673 silly install resolved engines: { node: '>=0.10.0' }, +9673 silly install resolved scripts: { test: 'mocha' }, +9673 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.7', mocha: '^2.4.5', should: '^8.3.0' }, +9673 silly install resolved keywords: +9673 silly install resolved [ 'for-in', +9673 silly install resolved 'for-own', +9673 silly install resolved 'has', +9673 silly install resolved 'has-own', +9673 silly install resolved 'hasOwn', +9673 silly install resolved 'key', +9673 silly install resolved 'keys', +9673 silly install resolved 'object', +9673 silly install resolved 'own', +9673 silly install resolved 'value' ], +9673 silly install resolved verb: +9673 silly install resolved { run: true, +9673 silly install resolved toc: false, +9673 silly install resolved layout: 'default', +9673 silly install resolved tasks: [Object], +9673 silly install resolved plugins: [Object], +9673 silly install resolved reflinks: [Object], +9673 silly install resolved lint: [Object] }, +9673 silly install resolved gitHead: '5240e873e512aec30b0e0fe9790bd8f0e2136806', +9673 silly install resolved _id: 'for-in@0.1.5', +9673 silly install resolved _shasum: '007374e2b6d5c67420a1479bdb75a04872b738c4', +9673 silly install resolved _from: 'for-in@>=0.1.5 <0.2.0', +9673 silly install resolved _npmVersion: '3.6.0', +9673 silly install resolved _nodeVersion: '5.5.0', +9673 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +9673 silly install resolved maintainers: [ [Object], [Object] ], +9673 silly install resolved dist: +9673 silly install resolved { shasum: '007374e2b6d5c67420a1479bdb75a04872b738c4', +9673 silly install resolved size: 2131, +9673 silly install resolved noattachment: false, +9673 silly install resolved key: 'for-in/-/for-in-0.1.5.tgz', +9673 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/for-in/download/for-in-0.1.5.tgz' }, +9673 silly install resolved _npmOperationalInternal: +9673 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +9673 silly install resolved tmp: 'tmp/for-in-0.1.5.tgz_1459090695716_0.8974318646360189' }, +9673 silly install resolved directories: {}, +9673 silly install resolved publish_time: 1459090696722, +9673 silly install resolved _cnpm_publish_time: 1459090696722, +9673 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/for-in/download/for-in-0.1.5.tgz', +9673 silly install resolved readme: 'ERROR: No README data found!' } ] +9674 info install for-in@0.1.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +9675 info installOne for-in@0.1.5 +9676 verbose installOne of for-in to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own not in flight; installing +9677 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +9678 verbose linkBins core-util-is@1.0.2 +9679 verbose linkMans core-util-is@1.0.2 +9680 verbose rebuildBundles core-util-is@1.0.2 +9681 verbose linkBins is-buffer@1.1.3 +9682 verbose linkMans is-buffer@1.1.3 +9683 verbose rebuildBundles is-buffer@1.1.3 +9684 info postinstall inherits@2.0.1 +9685 verbose unlock done using /home/ruanyf/.tnpm/_locks/wrappy-c9261d4ddef521b1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy +9686 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +9687 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +9688 info install core-util-is@1.0.2 +9689 info install is-buffer@1.1.3 +9690 silly cache afterAdd balanced-match@0.4.1 +9691 verbose afterAdd /home/ruanyf/.tnpm/balanced-match/0.4.1/package/package.json not in flight; writing +9692 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +9693 silly gunzTarPerm extractEntry groupBy.js +9694 silly gunzTarPerm extractEntry _replaceHolders.js +9695 verbose lock using /home/ruanyf/.tnpm/_locks/for-in-fa6f3316a5c231bc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in +9696 silly install write writing for-in 0.1.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in +9697 silly gunzTarPerm extractEntry ts/core/es6.ts +9698 silly gunzTarPerm modified mode [ 'ts/core/es6.ts', 384, 420 ] +9699 silly gunzTarPerm extractEntry ts/core/anonymousobservable.ts +9700 silly gunzTarPerm modified mode [ 'ts/core/anonymousobservable.ts', 384, 420 ] +9701 info postinstall core-util-is@1.0.2 +9702 info postinstall is-buffer@1.1.3 +9703 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-5a7dd83756dcfc24.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits +9704 verbose afterAdd /home/ruanyf/.tnpm/concat-map/0.0.1/package/package.json written +9705 silly gunzTarPerm extractEntry ts/core/joins/pattern.ts +9706 silly gunzTarPerm modified mode [ 'ts/core/joins/pattern.ts', 384, 420 ] +9707 info linkStuff once@1.3.3 +9708 silly linkStuff once@1.3.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules +9709 silly linkStuff once@1.3.3 is part of a global install +9710 silly linkStuff once@1.3.3 is installed into a global node_modules +9711 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve/package.json +9712 verbose unlock done using /home/ruanyf/.tnpm/_locks/core-util-is-58fb48764c4f40d2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is +9713 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +9714 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +9715 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-buffer-0b5329785adce74e.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer +9716 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +9717 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +9718 verbose afterAdd /home/ruanyf/.tnpm/balanced-match/0.4.1/package/package.json written +9719 silly install resolved [ { name: 'concat-map', +9719 silly install resolved description: 'concatenative mapdashery', +9719 silly install resolved version: '0.0.1', +9719 silly install resolved repository: +9719 silly install resolved { type: 'git', +9719 silly install resolved url: 'git://github.com/substack/node-concat-map.git' }, +9719 silly install resolved main: 'index.js', +9719 silly install resolved keywords: [ 'concat', 'concatMap', 'map', 'functional', 'higher-order' ], +9719 silly install resolved directories: { example: 'example', test: 'test' }, +9719 silly install resolved scripts: { test: 'tape test/*.js' }, +9719 silly install resolved devDependencies: { tape: '~2.4.0' }, +9719 silly install resolved license: 'MIT', +9719 silly install resolved author: +9719 silly install resolved { name: 'James Halliday', +9719 silly install resolved email: 'mail@substack.net', +9719 silly install resolved url: 'http://substack.net' }, +9719 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, +9719 silly install resolved bugs: { url: 'https://github.com/substack/node-concat-map/issues' }, +9719 silly install resolved homepage: 'https://github.com/substack/node-concat-map', +9719 silly install resolved _id: 'concat-map@0.0.1', +9719 silly install resolved dist: +9719 silly install resolved { shasum: 'd8a96bd77fd68df7793a73036a3ba0d5405d477b', +9719 silly install resolved size: 2263, +9719 silly install resolved noattachment: false, +9719 silly install resolved key: 'concat-map/-/concat-map-0.0.1.tgz', +9719 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/concat-map/download/concat-map-0.0.1.tgz' }, +9719 silly install resolved _from: 'concat-map@0.0.1', +9719 silly install resolved _npmVersion: '1.3.21', +9719 silly install resolved _npmUser: { name: 'substack', email: 'mail@substack.net' }, +9719 silly install resolved maintainers: [ [Object] ], +9719 silly install resolved publish_time: 1391051195982, +9719 silly install resolved _cnpm_publish_time: 1391051195982, +9719 silly install resolved _shasum: 'd8a96bd77fd68df7793a73036a3ba0d5405d477b', +9719 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/concat-map/download/concat-map-0.0.1.tgz', +9719 silly install resolved readme: 'ERROR: No README data found!' }, +9719 silly install resolved { name: 'balanced-match', +9719 silly install resolved description: 'Match balanced character pairs, like "{" and "}"', +9719 silly install resolved version: '0.4.1', +9719 silly install resolved repository: +9719 silly install resolved { type: 'git', +9719 silly install resolved url: 'git://github.com/juliangruber/balanced-match.git' }, +9719 silly install resolved homepage: 'https://github.com/juliangruber/balanced-match', +9719 silly install resolved main: 'index.js', +9719 silly install resolved scripts: { test: 'make test' }, +9719 silly install resolved dependencies: {}, +9719 silly install resolved devDependencies: { tape: '~4.5.0' }, +9719 silly install resolved keywords: [ 'match', 'regexp', 'test', 'balanced', 'parse' ], +9719 silly install resolved author: +9719 silly install resolved { name: 'Julian Gruber', +9719 silly install resolved email: 'mail@juliangruber.com', +9719 silly install resolved url: 'http://juliangruber.com' }, +9719 silly install resolved license: 'MIT', +9719 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, +9719 silly install resolved gitHead: '7004b289baaaab6a832f4901735e29d37cc2a863', +9719 silly install resolved bugs: { url: 'https://github.com/juliangruber/balanced-match/issues' }, +9719 silly install resolved _id: 'balanced-match@0.4.1', +9719 silly install resolved _shasum: '19053e2e0748eadb379da6c09d455cf5e1039335', +9719 silly install resolved _from: 'balanced-match@>=0.4.1 <0.5.0', +9719 silly install resolved _npmVersion: '3.8.6', +9719 silly install resolved _nodeVersion: '6.0.0', +9719 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, +9719 silly install resolved dist: +9719 silly install resolved { shasum: '19053e2e0748eadb379da6c09d455cf5e1039335', +9719 silly install resolved size: 2549, +9719 silly install resolved noattachment: false, +9719 silly install resolved key: 'balanced-match/-/balanced-match-0.4.1.tgz', +9719 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/balanced-match/download/balanced-match-0.4.1.tgz' }, +9719 silly install resolved maintainers: [ [Object] ], +9719 silly install resolved _npmOperationalInternal: +9719 silly install resolved { host: 'packages-12-west.internal.npmjs.com', +9719 silly install resolved tmp: 'tmp/balanced-match-0.4.1.tgz_1462129663650_0.39764496590942144' }, +9719 silly install resolved directories: {}, +9719 silly install resolved publish_time: 1462129666040, +9719 silly install resolved _cnpm_publish_time: 1462129666040, +9719 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/balanced-match/download/balanced-match-0.4.1.tgz', +9719 silly install resolved readme: 'ERROR: No README data found!' } ] +9720 info install concat-map@0.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +9721 info install balanced-match@0.4.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +9722 info installOne concat-map@0.0.1 +9723 verbose installOne of concat-map to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion not in flight; installing +9724 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +9725 info installOne balanced-match@0.4.1 +9726 verbose installOne of balanced-match to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion not in flight; installing +9727 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +9728 silly gunzTarPerm extractEntry ts/core/joins/plan.ts +9729 silly gunzTarPerm modified mode [ 'ts/core/joins/plan.ts', 384, 420 ] +9730 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in +9731 verbose linkBins once@1.3.3 +9732 verbose linkMans once@1.3.3 +9733 verbose rebuildBundles once@1.3.3 +9734 verbose lock using /home/ruanyf/.tnpm/_locks/concat-map-f61c715bbee21c52.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map +9735 verbose lock using /home/ruanyf/.tnpm/_locks/balanced-match-bf5358bf311e0864.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match +9736 silly gunzTarPerm extractEntry ts/core/linq/connectableobservable.ts +9737 silly gunzTarPerm modified mode [ 'ts/core/linq/connectableobservable.ts', 384, 420 ] +9738 verbose rebuildBundles [ 'wrappy' ] +9739 info install once@1.3.3 +9740 silly install write writing concat-map 0.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map +9741 http 304 http://registry.npm.alibaba-inc.com/fill-range +9742 verbose headers { server: 'Tengine', +9742 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +9742 verbose headers connection: 'keep-alive', +9742 verbose headers etag: '"a99c-d3MH08+FfF+ZyyhzFbLKtg"', +9742 verbose headers 'x-readtime': '50' } +9743 silly get cb [ 304, +9743 silly get { server: 'Tengine', +9743 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +9743 silly get connection: 'keep-alive', +9743 silly get etag: '"a99c-d3MH08+FfF+ZyyhzFbLKtg"', +9743 silly get 'x-readtime': '50' } ] +9744 verbose etag http://registry.npm.alibaba-inc.com/fill-range from cache +9745 verbose get saving fill-range to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/fill-range/.cache.json +9746 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +9747 silly install write writing balanced-match 0.4.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match +9748 info preinstall preserve@0.2.0 +9749 silly gunzTarPerm extractEntry gt.js +9750 silly gunzTarPerm extractEntry _reorder.js +9751 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in is being purged from base /home/ruanyf/npm-global +9752 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in +9753 silly gunzTarPerm extractEntry ts/core/linq/groupedobservable.ts +9754 silly gunzTarPerm modified mode [ 'ts/core/linq/groupedobservable.ts', 384, 420 ] +9755 info linkStuff readable-stream@1.0.34 +9756 silly linkStuff readable-stream@1.0.34 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules as its parent node_modules +9757 silly linkStuff readable-stream@1.0.34 is part of a global install +9758 silly linkStuff readable-stream@1.0.34 is installed into a global node_modules +9759 info linkStuff kind-of@3.0.3 +9760 silly linkStuff kind-of@3.0.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +9761 silly linkStuff kind-of@3.0.3 is part of a global install +9762 silly linkStuff kind-of@3.0.3 is installed into a global node_modules +9763 info postinstall once@1.3.3 +9764 verbose tar unpack /home/ruanyf/.tnpm/for-in/0.1.5/package.tgz +9765 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in +9766 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in is being purged +9767 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in +9768 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve/package.json +9769 silly gunzTarPerm modes [ '755', '644' ] +9770 silly gunzTarPerm extractEntry ts/core/linq/observable/minby.ts +9771 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/minby.ts', 384, 420 ] +9772 verbose linkBins readable-stream@1.0.34 +9773 verbose linkMans readable-stream@1.0.34 +9774 verbose rebuildBundles readable-stream@1.0.34 +9775 verbose linkBins kind-of@3.0.3 +9776 verbose linkMans kind-of@3.0.3 +9777 verbose rebuildBundles kind-of@3.0.3 +9778 verbose unlock done using /home/ruanyf/.tnpm/_locks/once-3b39f43119512bf7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once +9779 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map +9780 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match +9781 verbose rebuildBundles [ 'core-util-is', 'inherits', 'isarray', 'string_decoder' ] +9782 info install readable-stream@1.0.34 +9783 silly gunzTarPerm extractEntry ts/core/linq/observable/amb.ts +9784 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/amb.ts', 384, 420 ] +9785 verbose rebuildBundles [ 'is-buffer' ] +9786 info install kind-of@3.0.3 +9787 info postinstall readable-stream@1.0.34 +9788 silly gunzTarPerm extractEntry ts/core/linq/observable/and.ts +9789 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/and.ts', 384, 420 ] +9790 info postinstall kind-of@3.0.3 +9791 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map is being purged from base /home/ruanyf/npm-global +9792 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map +9793 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match is being purged from base /home/ruanyf/npm-global +9794 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match +9795 silly gunzTarPerm extractEntry package.json +9796 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve/package.json +9797 silly addNameRange number 2 { name: 'fill-range', range: '>=2.1.0 <3.0.0', hasData: true } +9798 silly addNameRange versions [ 'fill-range', +9798 silly addNameRange [ '2.2.3', +9798 silly addNameRange '2.2.2', +9798 silly addNameRange '2.2.1', +9798 silly addNameRange '2.2.0', +9798 silly addNameRange '2.1.0', +9798 silly addNameRange '2.0.0', +9798 silly addNameRange '1.9.0', +9798 silly addNameRange '1.8.0', +9798 silly addNameRange '1.7.1', +9798 silly addNameRange '1.7.0', +9798 silly addNameRange '1.6.0', +9798 silly addNameRange '1.5.0', +9798 silly addNameRange '1.4.0', +9798 silly addNameRange '1.3.0', +9798 silly addNameRange '1.2.0', +9798 silly addNameRange '1.1.0', +9798 silly addNameRange '1.0.0', +9798 silly addNameRange '0.2.0', +9798 silly addNameRange '0.1.1', +9798 silly addNameRange '0.1.0' ] ] +9799 silly addNamed fill-range@2.2.3 +9800 verbose addNamed "2.2.3" is a plain semver version for fill-range +9801 verbose tar unpack /home/ruanyf/.tnpm/concat-map/0.0.1/package.tgz +9802 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map +9803 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map is being purged +9804 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map +9805 verbose tar unpack /home/ruanyf/.tnpm/balanced-match/0.4.1/package.tgz +9806 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match +9807 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match is being purged +9808 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match +9809 silly gunzTarPerm extractEntry ts/core/linq/observable/asobservable.ts +9810 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/asobservable.ts', 384, 420 ] +9811 silly gunzTarPerm extractEntry gte.js +9812 silly gunzTarPerm extractEntry _realNames.js +9813 silly gunzTarPerm modes [ '755', '644' ] +9814 silly gunzTarPerm modes [ '755', '644' ] +9815 verbose unlock done using /home/ruanyf/.tnpm/_locks/readable-stream-68221f11311704f0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream +9816 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +9817 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +9818 verbose unlock done using /home/ruanyf/.tnpm/_locks/kind-of-89c7d16b0f8411bd.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of +9819 silly gunzTarPerm extractEntry README.md +9820 silly gunzTarPerm extractEntry LICENSE +9821 silly install resolved [] +9822 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve +9823 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve +9824 silly cache afterAdd fill-range@2.2.3 +9825 verbose afterAdd /home/ruanyf/.tnpm/fill-range/2.2.3/package/package.json not in flight; writing +9826 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +9827 info linkStuff through2@0.6.5 +9828 silly linkStuff through2@0.6.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules +9829 silly linkStuff through2@0.6.5 is part of a global install +9830 silly linkStuff through2@0.6.5 is installed into a global node_modules +9831 silly gunzTarPerm extractEntry package.json +9832 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify/package.json +9833 silly gunzTarPerm extractEntry package.json +9834 verbose linkBins through2@0.6.5 +9835 verbose linkMans through2@0.6.5 +9836 verbose rebuildBundles through2@0.6.5 +9837 silly gunzTarPerm extractEntry ts/core/linq/observable/average.ts +9838 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/average.ts', 384, 420 ] +9839 silly gunzTarPerm extractEntry ts/core/linq/observable/buffer.ts +9840 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/buffer.ts', 384, 420 ] +9841 silly gunzTarPerm extractEntry has.js +9842 silly gunzTarPerm extractEntry _reInterpolate.js +9843 verbose rebuildBundles [ 'readable-stream', 'xtend' ] +9844 info install through2@0.6.5 +9845 silly gunzTarPerm extractEntry LICENSE +9846 silly gunzTarPerm extractEntry index.js +9847 info linkStuff preserve@0.2.0 +9848 silly linkStuff preserve@0.2.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules as its parent node_modules +9849 silly linkStuff preserve@0.2.0 is part of a global install +9850 silly linkStuff preserve@0.2.0 is installed into a global node_modules +9851 verbose afterAdd /home/ruanyf/.tnpm/fill-range/2.2.3/package/package.json written +9852 silly install resolved [ { name: 'fill-range', +9852 silly install resolved description: 'Fill in a range of numbers or letters, optionally passing an increment or multiplier to use.', +9852 silly install resolved version: '2.2.3', +9852 silly install resolved homepage: 'https://github.com/jonschlinkert/fill-range', +9852 silly install resolved author: +9852 silly install resolved { name: 'Jon Schlinkert', +9852 silly install resolved url: 'https://github.com/jonschlinkert' }, +9852 silly install resolved repository: +9852 silly install resolved { type: 'git', +9852 silly install resolved url: 'git+https://github.com/jonschlinkert/fill-range.git' }, +9852 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/fill-range/issues' }, +9852 silly install resolved license: 'MIT', +9852 silly install resolved files: [ 'index.js' ], +9852 silly install resolved main: 'index.js', +9852 silly install resolved engines: { node: '>=0.10.0' }, +9852 silly install resolved scripts: { test: 'mocha' }, +9852 silly install resolved dependencies: +9852 silly install resolved { 'is-number': '^2.1.0', +9852 silly install resolved isobject: '^2.0.0', +9852 silly install resolved randomatic: '^1.1.3', +9852 silly install resolved 'repeat-element': '^1.1.2', +9852 silly install resolved 'repeat-string': '^1.5.2' }, +9852 silly install resolved devDependencies: { benchmarked: '^0.1.3', chalk: '^0.5.1', should: '*' }, +9852 silly install resolved keywords: +9852 silly install resolved [ 'alpha', +9852 silly install resolved 'alphabetical', +9852 silly install resolved 'bash', +9852 silly install resolved 'brace', +9852 silly install resolved 'expand', +9852 silly install resolved 'expansion', +9852 silly install resolved 'glob', +9852 silly install resolved 'match', +9852 silly install resolved 'matches', +9852 silly install resolved 'matching', +9852 silly install resolved 'number', +9852 silly install resolved 'numerical', +9852 silly install resolved 'range', +9852 silly install resolved 'ranges', +9852 silly install resolved 'sh' ], +9852 silly install resolved verb: { related: [Object] }, +9852 silly install resolved gitHead: '6cb50d5c679d9e6d9e8ad97bb2efd63a8c8da610', +9852 silly install resolved _id: 'fill-range@2.2.3', +9852 silly install resolved _shasum: '50b77dfd7e469bc7492470963699fe7a8485a723', +9852 silly install resolved _from: 'fill-range@>=2.1.0 <3.0.0', +9852 silly install resolved _npmVersion: '3.3.6', +9852 silly install resolved _nodeVersion: '5.0.0', +9852 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +9852 silly install resolved maintainers: [ [Object], [Object], [Object], [Object] ], +9852 silly install resolved dist: +9852 silly install resolved { shasum: '50b77dfd7e469bc7492470963699fe7a8485a723', +9852 silly install resolved size: 6338, +9852 silly install resolved noattachment: false, +9852 silly install resolved key: 'fill-range/-/fill-range-2.2.3.tgz', +9852 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/fill-range/download/fill-range-2.2.3.tgz' }, +9852 silly install resolved directories: {}, +9852 silly install resolved publish_time: 1449440102623, +9852 silly install resolved _cnpm_publish_time: 1449440102623, +9852 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/fill-range/download/fill-range-2.2.3.tgz', +9852 silly install resolved readme: 'ERROR: No README data found!' } ] +9853 info install fill-range@2.2.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +9854 info installOne fill-range@2.2.3 +9855 verbose installOne of fill-range to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range not in flight; installing +9856 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +9857 info preinstall jsonify@0.0.0 +9858 silly gunzTarPerm extractEntry .npmignore +9859 silly gunzTarPerm extractEntry README.md +9860 silly gunzTarPerm extractEntry index.js +9861 info postinstall through2@0.6.5 +9862 verbose lock using /home/ruanyf/.tnpm/_locks/fill-range-211f70546d1bdea8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +9863 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify/package.json +9864 verbose linkBins preserve@0.2.0 +9865 verbose linkMans preserve@0.2.0 +9866 verbose rebuildBundles preserve@0.2.0 +9867 silly install write writing fill-range 2.2.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +9868 info install preserve@0.2.0 +9869 verbose unlock done using /home/ruanyf/.tnpm/_locks/through2-a3053459c9d64905.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 +9870 info postinstall preserve@0.2.0 +9871 silly gunzTarPerm extractEntry hasIn.js +9872 silly gunzTarPerm extractEntry _reHasComplexSymbol.js +9873 silly gunzTarPerm extractEntry ts/core/linq/observable/bufferwithcount.ts +9874 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/bufferwithcount.ts', 384, 420 ] +9875 silly gunzTarPerm extractEntry ts/core/linq/observable/bufferwithtime.ts +9876 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +9877 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify/package.json +9878 silly gunzTarPerm extractEntry .travis.yml +9879 silly gunzTarPerm extractEntry README.markdown +9880 verbose unlock done using /home/ruanyf/.tnpm/_locks/preserve-abe6a87d818305a7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve +9881 silly gunzTarPerm extractEntry index.js +9882 silly gunzTarPerm extractEntry LICENSE.md +9883 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range is being purged from base /home/ruanyf/npm-global +9884 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +9885 verbose tar unpack /home/ruanyf/.tnpm/fill-range/2.2.3/package.tgz +9886 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +9887 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range is being purged +9888 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +9889 silly gunzTarPerm modes [ '755', '644' ] +9890 silly install resolved [] +9891 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify +9892 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify +9893 silly gunzTarPerm extractEntry head.js +9894 silly gunzTarPerm extractEntry _reEvaluate.js +9895 silly gunzTarPerm extractEntry ts/core/linq/observable/bufferwithtimeorcount.ts +9896 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/bufferwithtimeorcount.ts', 384, 420 ] +9897 silly gunzTarPerm extractEntry ts/core/linq/observable/case.ts +9898 silly gunzTarPerm extractEntry example/map.js +9899 silly gunzTarPerm extractEntry test/map.js +9900 silly gunzTarPerm extractEntry package.json +9901 info linkStuff jsonify@0.0.0 +9902 silly linkStuff jsonify@0.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules as its parent node_modules +9903 silly linkStuff jsonify@0.0.0 is part of a global install +9904 silly linkStuff jsonify@0.0.0 is installed into a global node_modules +9905 verbose linkBins jsonify@0.0.0 +9906 verbose linkMans jsonify@0.0.0 +9907 verbose rebuildBundles jsonify@0.0.0 +9908 silly gunzTarPerm extractEntry README.md +9909 silly gunzTarPerm modified mode [ 'README.md', 448, 484 ] +9910 silly gunzTarPerm extractEntry LICENSE +9911 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] +9912 info install jsonify@0.0.0 +9913 info postinstall jsonify@0.0.0 +9914 silly gunzTarPerm extractEntry identity.js +9915 silly gunzTarPerm extractEntry _reEscape.js +9916 silly gunzTarPerm extractEntry ts/core/linq/observable/catch.ts +9917 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/catch.ts', 384, 420 ] +9918 silly gunzTarPerm extractEntry ts/core/linq/observable/catchproto.ts +9919 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/catchproto.ts', 384, 420 ] +9920 silly gunzTarPerm extractEntry ts/core/linq/observable/combinelatest.ts +9921 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/combinelatest.ts', 384, 420 ] +9922 silly gunzTarPerm extractEntry ts/core/linq/observable/combinelatestproto.ts +9923 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/combinelatestproto.ts', 384, 420 ] +9924 verbose unlock done using /home/ruanyf/.tnpm/_locks/jsonify-bc3e1f8c14080ee6.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify +9925 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +9926 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +9927 silly gunzTarPerm extractEntry ts/core/linq/observable/concat.ts +9928 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concat.ts', 384, 420 ] +9929 silly gunzTarPerm extractEntry ts/core/linq/observable/concatall.ts +9930 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concatall.ts', 384, 420 ] +9931 silly gunzTarPerm extractEntry index.js +9932 info linkStuff json-stable-stringify@1.0.1 +9933 silly linkStuff json-stable-stringify@1.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules as its parent node_modules +9934 silly linkStuff json-stable-stringify@1.0.1 is part of a global install +9935 silly linkStuff json-stable-stringify@1.0.1 is installed into a global node_modules +9936 silly gunzTarPerm extractEntry ts/core/linq/observable/concatmap.ts +9937 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concatmap.ts', 384, 420 ] +9938 silly gunzTarPerm extractEntry inRange.js +9939 silly gunzTarPerm extractEntry _parent.js +9940 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in/package.json +9941 silly gunzTarPerm extractEntry ts/core/linq/observable/concatmapobserver.ts +9942 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concatmapobserver.ts', 384, 420 ] +9943 verbose linkBins json-stable-stringify@1.0.1 +9944 verbose linkMans json-stable-stringify@1.0.1 +9945 verbose rebuildBundles json-stable-stringify@1.0.1 +9946 verbose rebuildBundles [ 'jsonify' ] +9947 info install json-stable-stringify@1.0.1 +9948 silly gunzTarPerm extractEntry ts/core/linq/observable/concatproto.ts +9949 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concatproto.ts', 384, 420 ] +9950 info preinstall for-in@0.1.5 +9951 info postinstall json-stable-stringify@1.0.1 +9952 silly gunzTarPerm extractEntry ts/core/linq/observable/count.ts +9953 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/count.ts', 384, 420 ] +9954 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in/package.json +9955 silly gunzTarPerm extractEntry ts/core/linq/observable/create.ts +9956 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/create.ts', 384, 420 ] +9957 verbose unlock done using /home/ruanyf/.tnpm/_locks/json-stable-stringify-37de4acd438df36d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify +9958 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +9959 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +9960 silly gunzTarPerm extractEntry includes.js +9961 silly gunzTarPerm extractEntry _nativeCreate.js +9962 silly gunzTarPerm extractEntry ts/core/linq/observable/debounce.ts +9963 silly gunzTarPerm extractEntry ts/core/linq/observable/defaultifempty.ts +9964 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/defaultifempty.ts', 384, 420 ] +9965 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in/package.json +9966 info linkStuff unique-stream@2.2.1 +9967 silly linkStuff unique-stream@2.2.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules +9968 silly linkStuff unique-stream@2.2.1 is part of a global install +9969 silly linkStuff unique-stream@2.2.1 is installed into a global node_modules +9970 silly gunzTarPerm extractEntry ts/core/linq/observable/defer.ts +9971 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/defer.ts', 384, 420 ] +9972 silly gunzTarPerm extractEntry ts/core/linq/observable/delay.ts +9973 verbose linkBins unique-stream@2.2.1 +9974 verbose linkMans unique-stream@2.2.1 +9975 verbose rebuildBundles unique-stream@2.2.1 +9976 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +9977 verbose rebuildBundles [ 'json-stable-stringify' ] +9978 info install unique-stream@2.2.1 +9979 silly gunzTarPerm extractEntry ts/core/linq/observable/delaysubscription.ts +9980 silly gunzTarPerm extractEntry index.js +9981 silly gunzTarPerm extractEntry _metaMap.js +9982 silly install resolved [] +9983 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in +9984 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in +9985 info postinstall unique-stream@2.2.1 +9986 silly gunzTarPerm extractEntry ts/core/linq/observable/dematerialize.ts +9987 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/dematerialize.ts', 384, 420 ] +9988 info preinstall balanced-match@0.4.1 +9989 silly gunzTarPerm extractEntry ts/core/linq/observable/distinct.ts +9990 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/distinct.ts', 384, 420 ] +9991 verbose unlock done using /home/ruanyf/.tnpm/_locks/unique-stream-cabed25d6b4ec536.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream +9992 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +9993 info linkStuff for-in@0.1.5 +9994 silly linkStuff for-in@0.1.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules as its parent node_modules +9995 silly linkStuff for-in@0.1.5 is part of a global install +9996 silly linkStuff for-in@0.1.5 is installed into a global node_modules +9997 silly gunzTarPerm extractEntry ts/core/linq/observable/distinctuntilchanged.ts +9998 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/distinctuntilchanged.ts', 384, 420 ] +9999 verbose linkBins for-in@0.1.5 +10000 verbose linkMans for-in@0.1.5 +10001 verbose rebuildBundles for-in@0.1.5 +10002 silly gunzTarPerm extractEntry ts/core/linq/observable/dowhile.ts +10003 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/dowhile.ts', 384, 420 ] +10004 silly gunzTarPerm extractEntry indexOf.js +10005 silly gunzTarPerm extractEntry _mergeDefaults.js +10006 info install for-in@0.1.5 +10007 silly gunzTarPerm extractEntry ts/core/linq/observable/elementat.ts +10008 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/elementat.ts', 384, 420 ] +10009 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +10010 info postinstall for-in@0.1.5 +10011 silly gunzTarPerm extractEntry ts/core/linq/observable/empty.ts +10012 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/package.json +10013 verbose unlock done using /home/ruanyf/.tnpm/_locks/for-in-fa6f3316a5c231bc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in +10014 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +10015 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +10016 silly gunzTarPerm extractEntry ts/core/linq/observable/every.ts +10017 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/every.ts', 384, 420 ] +10018 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +10019 silly install resolved [] +10020 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match +10021 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match +10022 silly gunzTarPerm extractEntry ts/core/linq/observable/expand.ts +10023 silly gunzTarPerm extractEntry initial.js +10024 silly gunzTarPerm extractEntry _mergeData.js +10025 info preinstall fill-range@2.2.3 +10026 silly gunzTarPerm extractEntry ts/core/linq/observable/filter.ts +10027 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/filter.ts', 384, 420 ] +10028 info linkStuff for-own@0.1.4 +10029 silly linkStuff for-own@0.1.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules as its parent node_modules +10030 silly linkStuff for-own@0.1.4 is part of a global install +10031 silly linkStuff for-own@0.1.4 is installed into a global node_modules +10032 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/package.json +10033 info preinstall concat-map@0.0.1 +10034 silly gunzTarPerm extractEntry ts/core/linq/observable/finally.ts +10035 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/finally.ts', 384, 420 ] +10036 info linkStuff balanced-match@0.4.1 +10037 silly linkStuff balanced-match@0.4.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules as its parent node_modules +10038 silly linkStuff balanced-match@0.4.1 is part of a global install +10039 silly linkStuff balanced-match@0.4.1 is installed into a global node_modules +10040 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +10041 verbose linkBins for-own@0.1.4 +10042 verbose linkMans for-own@0.1.4 +10043 verbose rebuildBundles for-own@0.1.4 +10044 silly gunzTarPerm extractEntry ts/core/linq/observable/find.ts +10045 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/find.ts', 384, 420 ] +10046 verbose rebuildBundles [ 'for-in' ] +10047 info install for-own@0.1.4 +10048 verbose linkBins balanced-match@0.4.1 +10049 verbose linkMans balanced-match@0.4.1 +10050 verbose rebuildBundles balanced-match@0.4.1 +10051 info install balanced-match@0.4.1 +10052 silly gunzTarPerm extractEntry ts/core/linq/observable/findindex.ts +10053 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/findindex.ts', 384, 420 ] +10054 info postinstall for-own@0.1.4 +10055 silly prepareForInstallMany adding is-number@^2.1.0 from fill-range dependencies +10056 silly prepareForInstallMany adding isobject@^2.0.0 from fill-range dependencies +10057 silly prepareForInstallMany adding randomatic@^1.1.3 from fill-range dependencies +10058 silly prepareForInstallMany adding repeat-string@^1.5.2 from fill-range dependencies +10059 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/package.json +10060 silly gunzTarPerm extractEntry intersection.js +10061 silly gunzTarPerm extractEntry _matchesStrictComparable.js +10062 info postinstall balanced-match@0.4.1 +10063 silly gunzTarPerm extractEntry ts/core/linq/observable/first.ts +10064 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/first.ts', 384, 420 ] +10065 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +10066 verbose unlock done using /home/ruanyf/.tnpm/_locks/for-own-951323b794acd7c8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own +10067 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +10068 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +10069 verbose unlock done using /home/ruanyf/.tnpm/_locks/balanced-match-bf5358bf311e0864.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match +10070 silly cache add args [ 'is-number@^2.1.0', null ] +10071 verbose cache add spec is-number@^2.1.0 +10072 silly cache add args [ 'isobject@^2.0.0', null ] +10073 verbose cache add spec isobject@^2.0.0 +10074 silly cache add parsed spec Result { +10074 silly cache add raw: 'is-number@^2.1.0', +10074 silly cache add scope: null, +10074 silly cache add name: 'is-number', +10074 silly cache add rawSpec: '^2.1.0', +10074 silly cache add spec: '>=2.1.0 <3.0.0', +10074 silly cache add type: 'range' } +10075 silly addNamed is-number@>=2.1.0 <3.0.0 +10076 verbose addNamed ">=2.1.0 <3.0.0" is a valid semver range for is-number +10077 silly addNameRange { name: 'is-number', range: '>=2.1.0 <3.0.0', hasData: false } +10078 silly mapToRegistry name is-number +10079 silly mapToRegistry using default registry +10080 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +10081 silly mapToRegistry data Result { +10081 silly mapToRegistry raw: 'is-number', +10081 silly mapToRegistry scope: null, +10081 silly mapToRegistry name: 'is-number', +10081 silly mapToRegistry rawSpec: '', +10081 silly mapToRegistry spec: 'latest', +10081 silly mapToRegistry type: 'tag' } +10082 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-number +10083 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-number not in flight; fetching +10084 silly cache add parsed spec Result { +10084 silly cache add raw: 'isobject@^2.0.0', +10084 silly cache add scope: null, +10084 silly cache add name: 'isobject', +10084 silly cache add rawSpec: '^2.0.0', +10084 silly cache add spec: '>=2.0.0 <3.0.0', +10084 silly cache add type: 'range' } +10085 silly addNamed isobject@>=2.0.0 <3.0.0 +10086 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for isobject +10087 silly addNameRange { name: 'isobject', range: '>=2.0.0 <3.0.0', hasData: false } +10088 silly mapToRegistry name isobject +10089 silly mapToRegistry using default registry +10090 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +10091 silly mapToRegistry data Result { +10091 silly mapToRegistry raw: 'isobject', +10091 silly mapToRegistry scope: null, +10091 silly mapToRegistry name: 'isobject', +10091 silly mapToRegistry rawSpec: '', +10091 silly mapToRegistry spec: 'latest', +10091 silly mapToRegistry type: 'tag' } +10092 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isobject +10093 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/isobject not in flight; fetching +10094 silly cache add args [ 'randomatic@^1.1.3', null ] +10095 verbose cache add spec randomatic@^1.1.3 +10096 silly cache add parsed spec Result { +10096 silly cache add raw: 'randomatic@^1.1.3', +10096 silly cache add scope: null, +10096 silly cache add name: 'randomatic', +10096 silly cache add rawSpec: '^1.1.3', +10096 silly cache add spec: '>=1.1.3 <2.0.0', +10096 silly cache add type: 'range' } +10097 silly addNamed randomatic@>=1.1.3 <2.0.0 +10098 verbose addNamed ">=1.1.3 <2.0.0" is a valid semver range for randomatic +10099 silly addNameRange { name: 'randomatic', range: '>=1.1.3 <2.0.0', hasData: false } +10100 silly mapToRegistry name randomatic +10101 silly mapToRegistry using default registry +10102 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +10103 silly mapToRegistry data Result { +10103 silly mapToRegistry raw: 'randomatic', +10103 silly mapToRegistry scope: null, +10103 silly mapToRegistry name: 'randomatic', +10103 silly mapToRegistry rawSpec: '', +10103 silly mapToRegistry spec: 'latest', +10103 silly mapToRegistry type: 'tag' } +10104 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/randomatic +10105 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/randomatic not in flight; fetching +10106 info linkStuff object.omit@2.0.0 +10107 silly linkStuff object.omit@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +10108 silly linkStuff object.omit@2.0.0 is part of a global install +10109 silly linkStuff object.omit@2.0.0 is installed into a global node_modules +10110 silly cache add args [ 'repeat-string@^1.5.2', null ] +10111 verbose cache add spec repeat-string@^1.5.2 +10112 silly cache add parsed spec Result { +10112 silly cache add raw: 'repeat-string@^1.5.2', +10112 silly cache add scope: null, +10112 silly cache add name: 'repeat-string', +10112 silly cache add rawSpec: '^1.5.2', +10112 silly cache add spec: '>=1.5.2 <2.0.0', +10112 silly cache add type: 'range' } +10113 silly addNamed repeat-string@>=1.5.2 <2.0.0 +10114 verbose addNamed ">=1.5.2 <2.0.0" is a valid semver range for repeat-string +10115 silly addNameRange { name: 'repeat-string', +10115 silly addNameRange range: '>=1.5.2 <2.0.0', +10115 silly addNameRange hasData: false } +10116 silly mapToRegistry name repeat-string +10117 silly mapToRegistry using default registry +10118 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +10119 silly mapToRegistry data Result { +10119 silly mapToRegistry raw: 'repeat-string', +10119 silly mapToRegistry scope: null, +10119 silly mapToRegistry name: 'repeat-string', +10119 silly mapToRegistry rawSpec: '', +10119 silly mapToRegistry spec: 'latest', +10119 silly mapToRegistry type: 'tag' } +10120 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/repeat-string +10121 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/repeat-string not in flight; fetching +10122 silly install resolved [] +10123 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map +10124 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map +10125 silly gunzTarPerm extractEntry intersectionBy.js +10126 silly gunzTarPerm extractEntry _mapToArray.js +10127 silly gunzTarPerm extractEntry ts/core/linq/observable/flatmap.ts +10128 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/flatmap.ts', 384, 420 ] +10129 silly gunzTarPerm extractEntry ts/core/linq/observable/flatmapfirst.ts +10130 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/flatmapfirst.ts', 384, 420 ] +10131 verbose linkBins object.omit@2.0.0 +10132 verbose linkMans object.omit@2.0.0 +10133 verbose rebuildBundles object.omit@2.0.0 +10134 verbose rebuildBundles [ 'for-own', 'is-extendable' ] +10135 info install object.omit@2.0.0 +10136 verbose request uri http://registry.npm.alibaba-inc.com/is-number +10137 verbose request no auth needed +10138 info attempt registry request try #1 at 上午9:12:31 +10139 verbose etag "4bac-KD0NLWE9r5tGu+vCYNh0tw" +10140 http request GET http://registry.npm.alibaba-inc.com/is-number +10141 verbose request uri http://registry.npm.alibaba-inc.com/isobject +10142 verbose request no auth needed +10143 info attempt registry request try #1 at 上午9:12:31 +10144 verbose etag "3d8b-XIIXg0Ynotm1j7kXH7If2Q" +10145 http request GET http://registry.npm.alibaba-inc.com/isobject +10146 verbose request uri http://registry.npm.alibaba-inc.com/randomatic +10147 verbose request no auth needed +10148 info attempt registry request try #1 at 上午9:12:31 +10149 verbose etag "6509-jpTholhp6u/Jmb2JNbFX1Q" +10150 http request GET http://registry.npm.alibaba-inc.com/randomatic +10151 info linkStuff concat-map@0.0.1 +10152 silly linkStuff concat-map@0.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules as its parent node_modules +10153 silly linkStuff concat-map@0.0.1 is part of a global install +10154 silly linkStuff concat-map@0.0.1 is installed into a global node_modules +10155 info postinstall object.omit@2.0.0 +10156 verbose request uri http://registry.npm.alibaba-inc.com/repeat-string +10157 verbose request no auth needed +10158 info attempt registry request try #1 at 上午9:12:31 +10159 verbose etag "68be-poCgKsZKaSAUOBbgKNmBPQ" +10160 http request GET http://registry.npm.alibaba-inc.com/repeat-string +10161 verbose linkBins concat-map@0.0.1 +10162 verbose linkMans concat-map@0.0.1 +10163 verbose rebuildBundles concat-map@0.0.1 +10164 verbose unlock done using /home/ruanyf/.tnpm/_locks/object-omit-35dbc341880dbc51.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit +10165 info install concat-map@0.0.1 +10166 silly gunzTarPerm extractEntry intersectionWith.js +10167 silly gunzTarPerm extractEntry _mapCacheSet.js +10168 info postinstall concat-map@0.0.1 +10169 silly gunzTarPerm extractEntry ts/core/linq/observable/flatmaplatest.ts +10170 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/flatmaplatest.ts', 384, 420 ] +10171 silly gunzTarPerm extractEntry ts/core/linq/observable/flatmapwithmaxconcurrent.ts +10172 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/flatmapwithmaxconcurrent.ts', +10172 silly gunzTarPerm 384, +10172 silly gunzTarPerm 420 ] +10173 silly gunzTarPerm extractEntry ts/core/linq/observable/for.ts +10174 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/for.ts', 384, 420 ] +10175 silly gunzTarPerm extractEntry ts/core/linq/observable/forkjoin.ts +10176 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/forkjoin.ts', 384, 420 ] +10177 verbose unlock done using /home/ruanyf/.tnpm/_locks/concat-map-f61c715bbee21c52.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map +10178 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +10179 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +10180 silly gunzTarPerm extractEntry ts/core/linq/observable/forkjoinproto.ts +10181 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/forkjoinproto.ts', 384, 420 ] +10182 silly gunzTarPerm extractEntry ts/core/linq/observable/from.ts +10183 info linkStuff brace-expansion@1.1.4 +10184 silly linkStuff brace-expansion@1.1.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules as its parent node_modules +10185 silly linkStuff brace-expansion@1.1.4 is part of a global install +10186 silly linkStuff brace-expansion@1.1.4 is installed into a global node_modules +10187 silly gunzTarPerm extractEntry invert.js +10188 silly gunzTarPerm extractEntry _mapCacheHas.js +10189 silly gunzTarPerm extractEntry ts/core/linq/observable/fromarray.ts +10190 verbose linkBins brace-expansion@1.1.4 +10191 verbose linkMans brace-expansion@1.1.4 +10192 verbose rebuildBundles brace-expansion@1.1.4 +10193 silly gunzTarPerm extractEntry ts/core/linq/observable/fromcallback.ts +10194 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/fromcallback.ts', 384, 420 ] +10195 verbose rebuildBundles [ 'balanced-match', 'concat-map' ] +10196 info install brace-expansion@1.1.4 +10197 silly gunzTarPerm extractEntry ts/core/linq/observable/fromevent.ts +10198 info postinstall brace-expansion@1.1.4 +10199 silly gunzTarPerm extractEntry ts/core/linq/observable/fromeventpattern.ts +10200 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/fromeventpattern.ts', 384, 420 ] +10201 silly gunzTarPerm extractEntry invertBy.js +10202 silly gunzTarPerm extractEntry _mapCacheGet.js +10203 verbose unlock done using /home/ruanyf/.tnpm/_locks/brace-expansion-96a64109b5c596e2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion +10204 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +10205 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +10206 silly gunzTarPerm extractEntry ts/core/linq/observable/fromnodecallback.ts +10207 info linkStuff minimatch@3.0.0 +10208 silly linkStuff minimatch@3.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules +10209 silly linkStuff minimatch@3.0.0 is part of a global install +10210 silly linkStuff minimatch@3.0.0 is installed into a global node_modules +10211 verbose linkBins minimatch@3.0.0 +10212 verbose linkMans minimatch@3.0.0 +10213 verbose rebuildBundles minimatch@3.0.0 +10214 silly gunzTarPerm extractEntry invoke.js +10215 silly gunzTarPerm extractEntry _mapCacheDelete.js +10216 verbose rebuildBundles [ 'brace-expansion' ] +10217 info install minimatch@3.0.0 +10218 silly gunzTarPerm extractEntry ts/core/linq/observable/frompromise.ts +10219 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/frompromise.ts', 384, 420 ] +10220 silly gunzTarPerm extractEntry ts/core/linq/observable/generate.ts +10221 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/generate.ts', 384, 420 ] +10222 silly gunzTarPerm extractEntry ts/core/linq/observable/generatewithabsolutetime.ts +10223 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/generatewithabsolutetime.ts', +10223 silly gunzTarPerm 384, +10223 silly gunzTarPerm 420 ] +10224 info postinstall minimatch@3.0.0 +10225 silly gunzTarPerm extractEntry ts/core/linq/observable/generatewithrelativetime.ts +10226 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/generatewithrelativetime.ts', +10226 silly gunzTarPerm 384, +10226 silly gunzTarPerm 420 ] +10227 silly gunzTarPerm extractEntry ts/core/linq/observable/groupby.ts +10228 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/groupby.ts', 384, 420 ] +10229 verbose unlock done using /home/ruanyf/.tnpm/_locks/minimatch-57daa14adac5f015.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch +10230 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +10231 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +10232 silly gunzTarPerm extractEntry ts/core/linq/observable/groupbyuntil.ts +10233 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/groupbyuntil.ts', 384, 420 ] +10234 silly gunzTarPerm extractEntry invokeMap.js +10235 silly gunzTarPerm extractEntry _mapCacheClear.js +10236 silly gunzTarPerm extractEntry ts/core/linq/observable/groupjoin.ts +10237 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/groupjoin.ts', 384, 420 ] +10238 info linkStuff glob@5.0.15 +10239 silly linkStuff glob@5.0.15 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules +10240 silly linkStuff glob@5.0.15 is part of a global install +10241 silly linkStuff glob@5.0.15 is installed into a global node_modules +10242 silly gunzTarPerm extractEntry ts/core/linq/observable/if.ts +10243 verbose linkBins glob@5.0.15 +10244 verbose linkMans glob@5.0.15 +10245 verbose rebuildBundles glob@5.0.15 +10246 silly gunzTarPerm extractEntry ts/core/linq/observable/ignoreelements.ts +10247 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/ignoreelements.ts', 384, 420 ] +10248 verbose rebuildBundles [ 'inflight', 'inherits', 'minimatch', 'once', 'path-is-absolute' ] +10249 info install glob@5.0.15 +10250 silly gunzTarPerm extractEntry ts/core/linq/observable/includes.ts +10251 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/includes.ts', 384, 420 ] +10252 info postinstall glob@5.0.15 +10253 silly gunzTarPerm extractEntry isArguments.js +10254 silly gunzTarPerm extractEntry _listCacheSet.js +10255 silly gunzTarPerm extractEntry ts/core/linq/observable/indexof.ts +10256 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/indexof.ts', 384, 420 ] +10257 verbose unlock done using /home/ruanyf/.tnpm/_locks/glob-e1e1511196958541.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob +10258 silly gunzTarPerm extractEntry ts/core/linq/observable/interval.ts +10259 silly gunzTarPerm extractEntry ts/core/linq/observable/isempty.ts +10260 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/isempty.ts', 384, 420 ] +10261 silly gunzTarPerm extractEntry ts/core/linq/observable/join.ts +10262 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/join.ts', 384, 420 ] +10263 silly gunzTarPerm extractEntry ts/core/linq/observable/jortsort.ts +10264 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/jortsort.ts', 384, 420 ] +10265 silly gunzTarPerm extractEntry isArray.js +10266 silly gunzTarPerm extractEntry _listCacheHas.js +10267 silly gunzTarPerm extractEntry isArrayBuffer.js +10268 silly gunzTarPerm extractEntry _listCacheGet.js +10269 silly gunzTarPerm extractEntry ts/core/linq/observable/jortsortuntil.ts +10270 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/jortsortuntil.ts', 384, 420 ] +10271 silly gunzTarPerm extractEntry ts/core/linq/observable/just.ts +10272 silly gunzTarPerm extractEntry isArrayLike.js +10273 silly gunzTarPerm extractEntry _listCacheDelete.js +10274 silly gunzTarPerm extractEntry ts/core/linq/observable/last.ts +10275 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/last.ts', 384, 420 ] +10276 silly gunzTarPerm extractEntry ts/core/linq/observable/let.ts +10277 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/let.ts', 384, 420 ] +10278 silly gunzTarPerm extractEntry ts/core/linq/observable/manyselect.ts +10279 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/manyselect.ts', 384, 420 ] +10280 silly gunzTarPerm extractEntry ts/core/linq/observable/map.ts +10281 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/map.ts', 384, 420 ] +10282 silly gunzTarPerm extractEntry ts/core/linq/observable/materialize.ts +10283 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/materialize.ts', 384, 420 ] +10284 silly gunzTarPerm extractEntry ts/core/linq/observable/max.ts +10285 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/max.ts', 384, 420 ] +10286 silly gunzTarPerm extractEntry ts/core/linq/observable/maxby.ts +10287 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/maxby.ts', 384, 420 ] +10288 silly gunzTarPerm extractEntry isArrayLikeObject.js +10289 silly gunzTarPerm extractEntry _listCacheClear.js +10290 silly gunzTarPerm extractEntry ts/core/linq/observable/merge.ts +10291 silly gunzTarPerm extractEntry ts/core/linq/observable/mergeall.ts +10292 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/mergeall.ts', 384, 420 ] +10293 silly gunzTarPerm extractEntry ts/core/linq/observable/mergeconcat.ts +10294 silly gunzTarPerm extractEntry ts/core/linq/observable/mergedelayerror.ts +10295 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/mergedelayerror.ts', 384, 420 ] +10296 silly gunzTarPerm extractEntry isBoolean.js +10297 silly gunzTarPerm extractEntry _lazyValue.js +10298 silly gunzTarPerm extractEntry ts/core/linq/observable/min.ts +10299 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/min.ts', 384, 420 ] +10300 silly gunzTarPerm extractEntry ts/core/linq/observable/ambproto.ts +10301 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/ambproto.ts', 384, 420 ] +10302 silly gunzTarPerm extractEntry ts/core/linq/observable/multicast.ts +10303 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/multicast.ts', 384, 420 ] +10304 silly gunzTarPerm extractEntry ts/core/linq/observable/never.ts +10305 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/never.ts', 384, 420 ] +10306 silly gunzTarPerm extractEntry isBuffer.js +10307 silly gunzTarPerm extractEntry _lazyReverse.js +10308 silly gunzTarPerm extractEntry ts/core/linq/observable/observeon.ts +10309 silly gunzTarPerm extractEntry ts/core/linq/observable/of.ts +10310 silly gunzTarPerm extractEntry ts/core/linq/observable/ofarraychanges.ts +10311 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/ofarraychanges.ts', 384, 420 ] +10312 silly gunzTarPerm extractEntry isDate.js +10313 silly gunzTarPerm extractEntry _lazyClone.js +10314 silly gunzTarPerm extractEntry ts/core/linq/observable/ofobjectchanges.ts +10315 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/ofobjectchanges.ts', 384, 420 ] +10316 silly gunzTarPerm extractEntry ts/core/linq/observable/onerrorresumenext.ts +10317 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/onerrorresumenext.ts', 384, 420 ] +10318 silly gunzTarPerm extractEntry ts/core/linq/observable/onerrorresumenextproto.ts +10319 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/onerrorresumenextproto.ts', 384, 420 ] +10320 silly gunzTarPerm extractEntry ts/core/linq/observable/pairs.ts +10321 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/pairs.ts', 384, 420 ] +10322 silly gunzTarPerm extractEntry isElement.js +10323 silly gunzTarPerm extractEntry _iteratorToArray.js +10324 http 304 http://registry.npm.alibaba-inc.com/isobject +10325 verbose headers { server: 'Tengine', +10325 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +10325 verbose headers connection: 'keep-alive', +10325 verbose headers etag: '"3d8b-XIIXg0Ynotm1j7kXH7If2Q"', +10325 verbose headers 'x-readtime': '27' } +10326 silly get cb [ 304, +10326 silly get { server: 'Tengine', +10326 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +10326 silly get connection: 'keep-alive', +10326 silly get etag: '"3d8b-XIIXg0Ynotm1j7kXH7If2Q"', +10326 silly get 'x-readtime': '27' } ] +10327 verbose etag http://registry.npm.alibaba-inc.com/isobject from cache +10328 verbose get saving isobject to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/isobject/.cache.json +10329 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +10330 silly gunzTarPerm extractEntry ts/core/linq/observable/pairwise.ts +10331 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/pairwise.ts', 384, 420 ] +10332 silly gunzTarPerm extractEntry ts/core/linq/observable/partition.ts +10333 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/partition.ts', 384, 420 ] +10334 http 304 http://registry.npm.alibaba-inc.com/is-number +10335 verbose headers { server: 'Tengine', +10335 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +10335 verbose headers connection: 'keep-alive', +10335 verbose headers etag: '"4bac-KD0NLWE9r5tGu+vCYNh0tw"', +10335 verbose headers 'x-readtime': '32' } +10336 silly get cb [ 304, +10336 silly get { server: 'Tengine', +10336 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +10336 silly get connection: 'keep-alive', +10336 silly get etag: '"4bac-KD0NLWE9r5tGu+vCYNh0tw"', +10336 silly get 'x-readtime': '32' } ] +10337 verbose etag http://registry.npm.alibaba-inc.com/is-number from cache +10338 verbose get saving is-number to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-number/.cache.json +10339 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +10340 http 304 http://registry.npm.alibaba-inc.com/randomatic +10341 verbose headers { server: 'Tengine', +10341 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +10341 verbose headers connection: 'keep-alive', +10341 verbose headers etag: '"6509-jpTholhp6u/Jmb2JNbFX1Q"', +10341 verbose headers 'x-readtime': '32' } +10342 silly get cb [ 304, +10342 silly get { server: 'Tengine', +10342 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +10342 silly get connection: 'keep-alive', +10342 silly get etag: '"6509-jpTholhp6u/Jmb2JNbFX1Q"', +10342 silly get 'x-readtime': '32' } ] +10343 verbose etag http://registry.npm.alibaba-inc.com/randomatic from cache +10344 verbose get saving randomatic to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/randomatic/.cache.json +10345 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +10346 silly gunzTarPerm extractEntry ts/core/linq/observable/pipe.ts +10347 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/pipe.ts', 384, 420 ] +10348 http 304 http://registry.npm.alibaba-inc.com/repeat-string +10349 verbose headers { server: 'Tengine', +10349 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', +10349 verbose headers connection: 'keep-alive', +10349 verbose headers etag: '"68be-poCgKsZKaSAUOBbgKNmBPQ"', +10349 verbose headers 'x-readtime': '32' } +10350 silly get cb [ 304, +10350 silly get { server: 'Tengine', +10350 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', +10350 silly get connection: 'keep-alive', +10350 silly get etag: '"68be-poCgKsZKaSAUOBbgKNmBPQ"', +10350 silly get 'x-readtime': '32' } ] +10351 verbose etag http://registry.npm.alibaba-inc.com/repeat-string from cache +10352 verbose get saving repeat-string to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/repeat-string/.cache.json +10353 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +10354 silly gunzTarPerm extractEntry ts/core/linq/observable/pluck.ts +10355 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/pluck.ts', 384, 420 ] +10356 silly gunzTarPerm extractEntry isEmpty.js +10357 silly gunzTarPerm extractEntry _isStrictComparable.js +10358 silly gunzTarPerm extractEntry ts/core/linq/observable/publish.ts +10359 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/publish.ts', 384, 420 ] +10360 silly addNameRange number 2 { name: 'isobject', range: '>=2.0.0 <3.0.0', hasData: true } +10361 silly addNameRange versions [ 'isobject', +10361 silly addNameRange [ '2.1.0', +10361 silly addNameRange '2.0.0', +10361 silly addNameRange '1.0.2', +10361 silly addNameRange '1.0.1', +10361 silly addNameRange '1.0.0', +10361 silly addNameRange '0.2.0', +10361 silly addNameRange '0.1.1', +10361 silly addNameRange '0.1.0' ] ] +10362 silly addNamed isobject@2.1.0 +10363 verbose addNamed "2.1.0" is a plain semver version for isobject +10364 silly gunzTarPerm extractEntry ts/core/linq/observable/publishlast.ts +10365 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/publishlast.ts', 384, 420 ] +10366 silly addNameRange number 2 { name: 'is-number', range: '>=2.1.0 <3.0.0', hasData: true } +10367 silly addNameRange versions [ 'is-number', +10367 silly addNameRange [ '2.1.0', +10367 silly addNameRange '2.0.2', +10367 silly addNameRange '2.0.1', +10367 silly addNameRange '2.0.0', +10367 silly addNameRange '1.1.2', +10367 silly addNameRange '1.1.1', +10367 silly addNameRange '1.1.0', +10367 silly addNameRange '1.0.0', +10367 silly addNameRange '0.1.1', +10367 silly addNameRange '0.1.0' ] ] +10368 silly addNamed is-number@2.1.0 +10369 verbose addNamed "2.1.0" is a plain semver version for is-number +10370 silly addNameRange number 2 { name: 'randomatic', range: '>=1.1.3 <2.0.0', hasData: true } +10371 silly addNameRange versions [ 'randomatic', +10371 silly addNameRange [ '1.1.5', +10371 silly addNameRange '1.1.4', +10371 silly addNameRange '1.1.3', +10371 silly addNameRange '1.1.2', +10371 silly addNameRange '1.1.1', +10371 silly addNameRange '1.1.0', +10371 silly addNameRange '1.0.1', +10371 silly addNameRange '1.0.0', +10371 silly addNameRange '0.1.4', +10371 silly addNameRange '0.1.3', +10371 silly addNameRange '0.1.2', +10371 silly addNameRange '0.1.1', +10371 silly addNameRange '0.1.0' ] ] +10372 silly addNamed randomatic@1.1.5 +10373 verbose addNamed "1.1.5" is a plain semver version for randomatic +10374 silly gunzTarPerm extractEntry ts/core/linq/observable/publishvalue.ts +10375 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/publishvalue.ts', 384, 420 ] +10376 silly addNameRange number 2 { name: 'repeat-string', range: '>=1.5.2 <2.0.0', hasData: true } +10377 silly addNameRange versions [ 'repeat-string', +10377 silly addNameRange [ '1.5.4', +10377 silly addNameRange '1.5.2', +10377 silly addNameRange '1.5.1', +10377 silly addNameRange '1.5.0', +10377 silly addNameRange '1.4.0', +10377 silly addNameRange '1.3.0', +10377 silly addNameRange '1.2.0', +10377 silly addNameRange '1.1.0', +10377 silly addNameRange '1.0.0', +10377 silly addNameRange '0.2.2', +10377 silly addNameRange '0.2.1', +10377 silly addNameRange '0.2.0', +10377 silly addNameRange '0.1.2', +10377 silly addNameRange '0.1.1', +10377 silly addNameRange '0.1.0' ] ] +10378 silly addNamed repeat-string@1.5.4 +10379 verbose addNamed "1.5.4" is a plain semver version for repeat-string +10380 silly gunzTarPerm extractEntry ts/core/linq/observable/range.ts +10381 silly cache afterAdd isobject@2.1.0 +10382 verbose afterAdd /home/ruanyf/.tnpm/isobject/2.1.0/package/package.json not in flight; writing +10383 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +10384 silly gunzTarPerm extractEntry isEqual.js +10385 silly gunzTarPerm extractEntry _isPrototype.js +10386 silly gunzTarPerm extractEntry ts/core/linq/observable/reduce.ts +10387 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/reduce.ts', 384, 420 ] +10388 silly cache afterAdd is-number@2.1.0 +10389 verbose afterAdd /home/ruanyf/.tnpm/is-number/2.1.0/package/package.json not in flight; writing +10390 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +10391 silly cache afterAdd randomatic@1.1.5 +10392 verbose afterAdd /home/ruanyf/.tnpm/randomatic/1.1.5/package/package.json not in flight; writing +10393 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +10394 silly gunzTarPerm extractEntry ts/core/linq/observable/repeat.ts +10395 silly gunzTarPerm extractEntry ts/core/linq/observable/repeatproto.ts +10396 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/repeatproto.ts', 384, 420 ] +10397 verbose afterAdd /home/ruanyf/.tnpm/isobject/2.1.0/package/package.json written +10398 silly cache afterAdd repeat-string@1.5.4 +10399 verbose afterAdd /home/ruanyf/.tnpm/repeat-string/1.5.4/package/package.json not in flight; writing +10400 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +10401 verbose afterAdd /home/ruanyf/.tnpm/randomatic/1.1.5/package/package.json written +10402 verbose afterAdd /home/ruanyf/.tnpm/is-number/2.1.0/package/package.json written +10403 silly gunzTarPerm extractEntry ts/core/linq/observable/replay.ts +10404 silly gunzTarPerm extractEntry ts/core/linq/observable/retry.ts +10405 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/retry.ts', 384, 420 ] +10406 silly gunzTarPerm extractEntry isEqualWith.js +10407 silly gunzTarPerm extractEntry _isLaziable.js +10408 silly gunzTarPerm extractEntry ts/core/linq/observable/retrywhen.ts +10409 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/retrywhen.ts', 384, 420 ] +10410 verbose afterAdd /home/ruanyf/.tnpm/repeat-string/1.5.4/package/package.json written +10411 silly install resolved [ { name: 'isobject', +10411 silly install resolved description: 'Returns true if the value is an object and not an array or null.', +10411 silly install resolved version: '2.1.0', +10411 silly install resolved homepage: 'https://github.com/jonschlinkert/isobject', +10411 silly install resolved author: +10411 silly install resolved { name: 'Jon Schlinkert', +10411 silly install resolved url: 'https://github.com/jonschlinkert' }, +10411 silly install resolved repository: +10411 silly install resolved { type: 'git', +10411 silly install resolved url: 'git+https://github.com/jonschlinkert/isobject.git' }, +10411 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/isobject/issues' }, +10411 silly install resolved license: 'MIT', +10411 silly install resolved files: [ 'index.js' ], +10411 silly install resolved main: 'index.js', +10411 silly install resolved engines: { node: '>=0.10.0' }, +10411 silly install resolved scripts: { test: 'mocha' }, +10411 silly install resolved dependencies: { isarray: '1.0.0' }, +10411 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.9', mocha: '^2.4.5' }, +10411 silly install resolved keywords: +10411 silly install resolved [ 'check', +10411 silly install resolved 'is', +10411 silly install resolved 'is-object', +10411 silly install resolved 'isobject', +10411 silly install resolved 'kind', +10411 silly install resolved 'kind-of', +10411 silly install resolved 'kindof', +10411 silly install resolved 'native', +10411 silly install resolved 'object', +10411 silly install resolved 'type', +10411 silly install resolved 'typeof', +10411 silly install resolved 'value' ], +10411 silly install resolved verb: +10411 silly install resolved { related: [Object], +10411 silly install resolved toc: false, +10411 silly install resolved layout: 'default', +10411 silly install resolved tasks: [Object], +10411 silly install resolved plugins: [Object], +10411 silly install resolved lint: [Object], +10411 silly install resolved reflinks: [Object] }, +10411 silly install resolved gitHead: 'd693ec8d31b02b42a19b2d806407a4ecb2f9fb73', +10411 silly install resolved _id: 'isobject@2.1.0', +10411 silly install resolved _shasum: 'f065561096a3f1da2ef46272f815c840d87e0c89', +10411 silly install resolved _from: 'isobject@>=2.0.0 <3.0.0', +10411 silly install resolved _npmVersion: '3.6.0', +10411 silly install resolved _nodeVersion: '5.5.0', +10411 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +10411 silly install resolved maintainers: [ [Object], [Object] ], +10411 silly install resolved dist: +10411 silly install resolved { shasum: 'f065561096a3f1da2ef46272f815c840d87e0c89', +10411 silly install resolved size: 2387, +10411 silly install resolved noattachment: false, +10411 silly install resolved key: 'isobject/-/isobject-2.1.0.tgz', +10411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isobject/download/isobject-2.1.0.tgz' }, +10411 silly install resolved _npmOperationalInternal: +10411 silly install resolved { host: 'packages-16-east.internal.npmjs.com', +10411 silly install resolved tmp: 'tmp/isobject-2.1.0.tgz_1461618425262_0.8524945541284978' }, +10411 silly install resolved directories: {}, +10411 silly install resolved publish_time: 1461618427504, +10411 silly install resolved _cnpm_publish_time: 1461618427504, +10411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isobject/download/isobject-2.1.0.tgz', +10411 silly install resolved readme: 'ERROR: No README data found!' }, +10411 silly install resolved { name: 'randomatic', +10411 silly install resolved description: 'Generate randomized strings of a specified length, fast. Only the length is necessary, but you can optionally generate patterns using any combination of numeric, alpha-numeric, alphabetical, special or custom characters.', +10411 silly install resolved version: '1.1.5', +10411 silly install resolved homepage: 'https://github.com/jonschlinkert/randomatic', +10411 silly install resolved author: +10411 silly install resolved { name: 'Jon Schlinkert', +10411 silly install resolved url: 'https://github.com/jonschlinkert' }, +10411 silly install resolved repository: +10411 silly install resolved { type: 'git', +10411 silly install resolved url: 'git+https://github.com/jonschlinkert/randomatic.git' }, +10411 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/randomatic/issues' }, +10411 silly install resolved license: 'MIT', +10411 silly install resolved files: [ 'index.js' ], +10411 silly install resolved main: 'index.js', +10411 silly install resolved scripts: { test: 'mocha' }, +10411 silly install resolved dependencies: { 'is-number': '^2.0.2', 'kind-of': '^3.0.2' }, +10411 silly install resolved devDependencies: +10411 silly install resolved { 'ansi-bold': '^0.1.1', +10411 silly install resolved benchmarked: '^0.1.4', +10411 silly install resolved glob: '^5.0.15', +10411 silly install resolved mocha: '*', +10411 silly install resolved should: '*' }, +10411 silly install resolved keywords: +10411 silly install resolved [ 'alpha', +10411 silly install resolved 'alpha-numeric', +10411 silly install resolved 'alphanumeric', +10411 silly install resolved 'characters', +10411 silly install resolved 'chars', +10411 silly install resolved 'numeric', +10411 silly install resolved 'rand', +10411 silly install resolved 'random', +10411 silly install resolved 'randomize', +10411 silly install resolved 'randomized' ], +10411 silly install resolved verb: { related: [Object], plugins: [Object] }, +10411 silly install resolved gitHead: '8d74759d683a580412484e95ec5f1b87d93fd50c', +10411 silly install resolved _id: 'randomatic@1.1.5', +10411 silly install resolved _shasum: '5e9ef5f2d573c67bd2b8124ae90b5156e457840b', +10411 silly install resolved _from: 'randomatic@>=1.1.3 <2.0.0', +10411 silly install resolved _npmVersion: '3.3.6', +10411 silly install resolved _nodeVersion: '5.0.0', +10411 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +10411 silly install resolved maintainers: [ [Object] ], +10411 silly install resolved dist: +10411 silly install resolved { shasum: '5e9ef5f2d573c67bd2b8124ae90b5156e457840b', +10411 silly install resolved size: 3537, +10411 silly install resolved noattachment: false, +10411 silly install resolved key: 'randomatic/-/randomatic-1.1.5.tgz', +10411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/randomatic/download/randomatic-1.1.5.tgz' }, +10411 silly install resolved directories: {}, +10411 silly install resolved publish_time: 1449774821356, +10411 silly install resolved _cnpm_publish_time: 1449774821356, +10411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/randomatic/download/randomatic-1.1.5.tgz', +10411 silly install resolved readme: 'ERROR: No README data found!' }, +10411 silly install resolved { name: 'is-number', +10411 silly install resolved description: 'Returns true if the value is a number. comprehensive tests.', +10411 silly install resolved version: '2.1.0', +10411 silly install resolved homepage: 'https://github.com/jonschlinkert/is-number', +10411 silly install resolved author: +10411 silly install resolved { name: 'Jon Schlinkert', +10411 silly install resolved url: 'https://github.com/jonschlinkert' }, +10411 silly install resolved repository: +10411 silly install resolved { type: 'git', +10411 silly install resolved url: 'git+https://github.com/jonschlinkert/is-number.git' }, +10411 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-number/issues' }, +10411 silly install resolved license: 'MIT', +10411 silly install resolved files: [ 'index.js' ], +10411 silly install resolved main: 'index.js', +10411 silly install resolved engines: { node: '>=0.10.0' }, +10411 silly install resolved scripts: { test: 'mocha' }, +10411 silly install resolved dependencies: { 'kind-of': '^3.0.2' }, +10411 silly install resolved devDependencies: { benchmarked: '^0.1.3', chalk: '^0.5.1', mocha: '*' }, +10411 silly install resolved keywords: +10411 silly install resolved [ 'check', +10411 silly install resolved 'coerce', +10411 silly install resolved 'coercion', +10411 silly install resolved 'integer', +10411 silly install resolved 'is', +10411 silly install resolved 'is number', +10411 silly install resolved 'is-number', +10411 silly install resolved 'istype', +10411 silly install resolved 'kind of', +10411 silly install resolved 'math', +10411 silly install resolved 'number', +10411 silly install resolved 'test', +10411 silly install resolved 'type', +10411 silly install resolved 'typeof', +10411 silly install resolved 'value' ], +10411 silly install resolved verb: { related: [Object] }, +10411 silly install resolved gitHead: 'd06c6e2cc048d3cad016cb8dfb055bb14d86fffa', +10411 silly install resolved _id: 'is-number@2.1.0', +10411 silly install resolved _shasum: '01fcbbb393463a548f2f466cce16dece49db908f', +10411 silly install resolved _from: 'is-number@>=2.1.0 <3.0.0', +10411 silly install resolved _npmVersion: '3.3.6', +10411 silly install resolved _nodeVersion: '5.0.0', +10411 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +10411 silly install resolved maintainers: [ [Object], [Object] ], +10411 silly install resolved dist: +10411 silly install resolved { shasum: '01fcbbb393463a548f2f466cce16dece49db908f', +10411 silly install resolved size: 2450, +10411 silly install resolved noattachment: false, +10411 silly install resolved key: 'is-number/-/is-number-2.1.0.tgz', +10411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-number/download/is-number-2.1.0.tgz' }, +10411 silly install resolved directories: {}, +10411 silly install resolved publish_time: 1448200616624, +10411 silly install resolved _cnpm_publish_time: 1448200616624, +10411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-number/download/is-number-2.1.0.tgz', +10411 silly install resolved readme: 'ERROR: No README data found!' }, +10411 silly install resolved { name: 'repeat-string', +10411 silly install resolved description: 'Repeat the given string n times. Fastest implementation for repeating a string.', +10411 silly install resolved version: '1.5.4', +10411 silly install resolved homepage: 'https://github.com/jonschlinkert/repeat-string', +10411 silly install resolved author: +10411 silly install resolved { name: 'Jon Schlinkert', +10411 silly install resolved url: 'http://github.com/jonschlinkert' }, +10411 silly install resolved repository: +10411 silly install resolved { type: 'git', +10411 silly install resolved url: 'git+https://github.com/jonschlinkert/repeat-string.git' }, +10411 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/repeat-string/issues' }, +10411 silly install resolved license: 'MIT', +10411 silly install resolved files: [ 'index.js' ], +10411 silly install resolved main: 'index.js', +10411 silly install resolved engines: { node: '>=0.10' }, +10411 silly install resolved scripts: { test: 'mocha' }, +10411 silly install resolved devDependencies: +10411 silly install resolved { benchmarked: '^0.1.5', +10411 silly install resolved chalk: '^1.1.1', +10411 silly install resolved glob: '^7.0.0', +10411 silly install resolved 'gulp-format-md': '^0.1.7', +10411 silly install resolved mocha: '*', +10411 silly install resolved repeating: '^2.0.0', +10411 silly install resolved should: '*' }, +10411 silly install resolved keywords: +10411 silly install resolved [ 'fast', +10411 silly install resolved 'fastest', +10411 silly install resolved 'fill', +10411 silly install resolved 'left', +10411 silly install resolved 'left-pad', +10411 silly install resolved 'multiple', +10411 silly install resolved 'pad', +10411 silly install resolved 'padding', +10411 silly install resolved 'repeat', +10411 silly install resolved 'repeating', +10411 silly install resolved 'repetition', +10411 silly install resolved 'right', +10411 silly install resolved 'right-pad', +10411 silly install resolved 'string', +10411 silly install resolved 'times' ], +10411 silly install resolved verb: +10411 silly install resolved { related: [Object], +10411 silly install resolved toc: false, +10411 silly install resolved layout: 'default', +10411 silly install resolved tasks: [Object], +10411 silly install resolved plugins: [Object], +10411 silly install resolved reflinks: [Object] }, +10411 silly install resolved gitHead: '53b4ac32e4cfa5bf339aed73544fe86b0f3e9190', +10411 silly install resolved _id: 'repeat-string@1.5.4', +10411 silly install resolved _shasum: '64ec0c91e0f4b475f90d5b643651e3e6e5b6c2d5', +10411 silly install resolved _from: 'repeat-string@>=1.5.2 <2.0.0', +10411 silly install resolved _npmVersion: '3.6.0', +10411 silly install resolved _nodeVersion: '5.5.0', +10411 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, +10411 silly install resolved maintainers: [ [Object], [Object] ], +10411 silly install resolved dist: +10411 silly install resolved { shasum: '64ec0c91e0f4b475f90d5b643651e3e6e5b6c2d5', +10411 silly install resolved size: 2855, +10411 silly install resolved noattachment: false, +10411 silly install resolved key: 'repeat-string/-/repeat-string-1.5.4.tgz', +10411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/repeat-string/download/repeat-string-1.5.4.tgz' }, +10411 silly install resolved _npmOperationalInternal: +10411 silly install resolved { host: 'packages-5-east.internal.npmjs.com', +10411 silly install resolved tmp: 'tmp/repeat-string-1.5.4.tgz_1456747759357_0.14794702967628837' }, +10411 silly install resolved directories: {}, +10411 silly install resolved publish_time: 1456747760719, +10411 silly install resolved _cnpm_publish_time: 1456747760719, +10411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/repeat-string/download/repeat-string-1.5.4.tgz', +10411 silly install resolved readme: 'ERROR: No README data found!' } ] +10412 info install isobject@2.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +10413 info install randomatic@1.1.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +10414 info install is-number@2.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +10415 info install repeat-string@1.5.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +10416 info installOne isobject@2.1.0 +10417 verbose installOne of isobject to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range not in flight; installing +10418 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +10419 info installOne randomatic@1.1.5 +10420 verbose installOne of randomatic to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range not in flight; installing +10421 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +10422 info installOne is-number@2.1.0 +10423 verbose installOne of is-number to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range not in flight; installing +10424 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +10425 info installOne repeat-string@1.5.4 +10426 verbose installOne of repeat-string to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range not in flight; installing +10427 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +10428 silly gunzTarPerm extractEntry ts/core/linq/observable/sample.ts +10429 verbose lock using /home/ruanyf/.tnpm/_locks/isobject-9016e78a1014758c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10430 verbose lock using /home/ruanyf/.tnpm/_locks/randomatic-cafe9c7b4df7f297.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic +10431 verbose lock using /home/ruanyf/.tnpm/_locks/is-number-e774981ed8f34323.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number +10432 verbose lock using /home/ruanyf/.tnpm/_locks/repeat-string-1f5fb425507e0c8b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string +10433 silly install write writing isobject 2.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10434 silly install write writing randomatic 1.1.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic +10435 silly install write writing is-number 2.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number +10436 silly install write writing repeat-string 1.5.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string +10437 silly gunzTarPerm extractEntry ts/core/linq/observable/scan.ts +10438 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/scan.ts', 384, 420 ] +10439 silly gunzTarPerm extractEntry isError.js +10440 silly gunzTarPerm extractEntry _isKeyable.js +10441 silly gunzTarPerm extractEntry ts/core/linq/observable/selectmanyobserver.ts +10442 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/selectmanyobserver.ts', 384, 420 ] +10443 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10444 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic +10445 silly gunzTarPerm extractEntry ts/core/linq/observable/sequenceequal.ts +10446 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/sequenceequal.ts', 384, 420 ] +10447 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number +10448 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string +10449 silly gunzTarPerm extractEntry ts/core/linq/observable/share.ts +10450 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/share.ts', 384, 420 ] +10451 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject is being purged from base /home/ruanyf/npm-global +10452 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10453 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic is being purged from base /home/ruanyf/npm-global +10454 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic +10455 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number is being purged from base /home/ruanyf/npm-global +10456 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number +10457 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string is being purged from base /home/ruanyf/npm-global +10458 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string +10459 verbose tar unpack /home/ruanyf/.tnpm/isobject/2.1.0/package.tgz +10460 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10461 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject is being purged +10462 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10463 verbose tar unpack /home/ruanyf/.tnpm/randomatic/1.1.5/package.tgz +10464 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic +10465 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic is being purged +10466 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic +10467 silly gunzTarPerm extractEntry ts/core/linq/observable/sharereplay.ts +10468 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/sharereplay.ts', 384, 420 ] +10469 verbose tar unpack /home/ruanyf/.tnpm/is-number/2.1.0/package.tgz +10470 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number +10471 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number is being purged +10472 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number +10473 verbose tar unpack /home/ruanyf/.tnpm/repeat-string/1.5.4/package.tgz +10474 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string +10475 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string is being purged +10476 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string +10477 silly gunzTarPerm modes [ '755', '644' ] +10478 silly gunzTarPerm modes [ '755', '644' ] +10479 silly gunzTarPerm modes [ '755', '644' ] +10480 silly gunzTarPerm modes [ '755', '644' ] +10481 silly gunzTarPerm extractEntry ts/core/linq/observable/sharevalue.ts +10482 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/sharevalue.ts', 384, 420 ] +10483 silly gunzTarPerm extractEntry isFinite.js +10484 silly gunzTarPerm extractEntry _isKey.js +10485 silly gunzTarPerm extractEntry ts/core/linq/observable/single.ts +10486 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/single.ts', 384, 420 ] +10487 silly gunzTarPerm extractEntry package.json +10488 silly gunzTarPerm extractEntry ts/core/linq/observable/singleinstance.ts +10489 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/singleinstance.ts', 384, 420 ] +10490 silly gunzTarPerm extractEntry package.json +10491 silly gunzTarPerm extractEntry package.json +10492 silly gunzTarPerm extractEntry package.json +10493 silly gunzTarPerm extractEntry ts/core/linq/observable/skip.ts +10494 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skip.ts', 384, 420 ] +10495 silly gunzTarPerm extractEntry README.md +10496 silly gunzTarPerm extractEntry LICENSE +10497 silly gunzTarPerm extractEntry ts/core/linq/observable/skiplast.ts +10498 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skiplast.ts', 384, 420 ] +10499 silly gunzTarPerm extractEntry isFunction.js +10500 silly gunzTarPerm extractEntry _isIterateeCall.js +10501 silly gunzTarPerm extractEntry README.md +10502 silly gunzTarPerm extractEntry LICENSE +10503 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] +10504 silly gunzTarPerm extractEntry README.md +10505 silly gunzTarPerm extractEntry LICENSE +10506 silly gunzTarPerm extractEntry README.md +10507 silly gunzTarPerm extractEntry LICENSE +10508 silly gunzTarPerm extractEntry ts/core/linq/observable/skiplastwithtime.ts +10509 silly gunzTarPerm extractEntry index.js +10510 silly gunzTarPerm extractEntry isInteger.js +10511 silly gunzTarPerm extractEntry ts/core/linq/observable/skipuntil.ts +10512 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skipuntil.ts', 384, 420 ] +10513 silly gunzTarPerm extractEntry ts/core/linq/observable/skipuntilwithtime.ts +10514 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skipuntilwithtime.ts', 384, 420 ] +10515 silly gunzTarPerm extractEntry ts/core/linq/observable/skipwhile.ts +10516 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skipwhile.ts', 384, 420 ] +10517 silly gunzTarPerm extractEntry index.js +10518 silly gunzTarPerm extractEntry index.js +10519 silly gunzTarPerm extractEntry index.js +10520 silly gunzTarPerm extractEntry ts/core/linq/observable/skipwithtime.ts +10521 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skipwithtime.ts', 384, 420 ] +10522 silly gunzTarPerm extractEntry _isIndex.js +10523 silly gunzTarPerm extractEntry isLength.js +10524 silly gunzTarPerm extractEntry ts/core/linq/observable/some.ts +10525 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/some.ts', 384, 420 ] +10526 silly gunzTarPerm extractEntry ts/core/linq/observable/spawn.ts +10527 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/spawn.ts', 384, 420 ] +10528 silly gunzTarPerm extractEntry _isHostObject.js +10529 silly gunzTarPerm extractEntry isMap.js +10530 silly gunzTarPerm extractEntry ts/core/linq/observable/start.ts +10531 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/start.ts', 384, 420 ] +10532 silly gunzTarPerm extractEntry ts/core/linq/observable/startasync.ts +10533 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/startasync.ts', 384, 420 ] +10534 silly gunzTarPerm extractEntry ts/core/linq/observable/startwith.ts +10535 silly gunzTarPerm extractEntry ts/core/linq/observable/subscribeon.ts +10536 silly gunzTarPerm extractEntry ts/core/linq/observable/sum.ts +10537 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/sum.ts', 384, 420 ] +10538 silly gunzTarPerm extractEntry _isFlattenableIteratee.js +10539 silly gunzTarPerm extractEntry isMatch.js +10540 silly gunzTarPerm extractEntry ts/core/linq/observable/switch.ts +10541 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/switch.ts', 384, 420 ] +10542 silly gunzTarPerm extractEntry ts/core/linq/observable/switchfirst.ts +10543 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/switchfirst.ts', 384, 420 ] +10544 silly gunzTarPerm extractEntry ts/core/linq/observable/take.ts +10545 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/package.json +10546 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number/package.json +10547 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic/package.json +10548 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string/package.json +10549 silly gunzTarPerm extractEntry _isFlattenable.js +10550 silly gunzTarPerm extractEntry isMatchWith.js +10551 info preinstall isobject@2.1.0 +10552 info preinstall randomatic@1.1.5 +10553 info preinstall is-number@2.1.0 +10554 info preinstall repeat-string@1.5.4 +10555 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/package.json +10556 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic/package.json +10557 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number/package.json +10558 silly gunzTarPerm extractEntry ts/core/linq/observable/takelast.ts +10559 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takelast.ts', 384, 420 ] +10560 silly gunzTarPerm extractEntry ts/core/linq/observable/takelastbuffer.ts +10561 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takelastbuffer.ts', 384, 420 ] +10562 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string/package.json +10563 silly prepareForInstallMany adding isarray@1.0.0 from isobject dependencies +10564 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/package.json +10565 silly gunzTarPerm extractEntry _initCloneObject.js +10566 silly gunzTarPerm extractEntry isNaN.js +10567 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic/package.json +10568 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number/package.json +10569 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string/package.json +10570 silly gunzTarPerm extractEntry ts/core/linq/observable/takelastbufferwithtime.ts +10571 silly gunzTarPerm extractEntry ts/core/linq/observable/takelastwithtime.ts +10572 silly install resolved [] +10573 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic +10574 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic +10575 silly install resolved [] +10576 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number +10577 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number +10578 silly cache add args [ 'isarray@1.0.0', null ] +10579 verbose cache add spec isarray@1.0.0 +10580 silly cache add parsed spec Result { +10580 silly cache add raw: 'isarray@1.0.0', +10580 silly cache add scope: null, +10580 silly cache add name: 'isarray', +10580 silly cache add rawSpec: '1.0.0', +10580 silly cache add spec: '1.0.0', +10580 silly cache add type: 'version' } +10581 silly addNamed isarray@1.0.0 +10582 verbose addNamed "1.0.0" is a plain semver version for isarray +10583 silly mapToRegistry name isarray +10584 silly mapToRegistry using default registry +10585 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ +10586 silly mapToRegistry data Result { +10586 silly mapToRegistry raw: 'isarray', +10586 silly mapToRegistry scope: null, +10586 silly mapToRegistry name: 'isarray', +10586 silly mapToRegistry rawSpec: '', +10586 silly mapToRegistry spec: 'latest', +10586 silly mapToRegistry type: 'tag' } +10587 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isarray +10588 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/isarray not in flight; fetching +10589 silly install resolved [] +10590 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string +10591 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string +10592 silly gunzTarPerm extractEntry _initCloneByTag.js +10593 silly gunzTarPerm extractEntry isNative.js +10594 info linkStuff randomatic@1.1.5 +10595 silly linkStuff randomatic@1.1.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules as its parent node_modules +10596 silly linkStuff randomatic@1.1.5 is part of a global install +10597 silly linkStuff randomatic@1.1.5 is installed into a global node_modules +10598 info linkStuff is-number@2.1.0 +10599 silly linkStuff is-number@2.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules as its parent node_modules +10600 silly linkStuff is-number@2.1.0 is part of a global install +10601 silly linkStuff is-number@2.1.0 is installed into a global node_modules +10602 verbose get http://registry.npm.alibaba-inc.com/isarray not expired, no request +10603 info linkStuff repeat-string@1.5.4 +10604 silly linkStuff repeat-string@1.5.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules as its parent node_modules +10605 silly linkStuff repeat-string@1.5.4 is part of a global install +10606 silly linkStuff repeat-string@1.5.4 is installed into a global node_modules +10607 silly gunzTarPerm extractEntry ts/core/linq/observable/takeuntil.ts +10608 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takeuntil.ts', 384, 420 ] +10609 silly gunzTarPerm extractEntry ts/core/linq/observable/takeuntilwithtime.ts +10610 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takeuntilwithtime.ts', 384, 420 ] +10611 verbose linkBins randomatic@1.1.5 +10612 verbose linkMans randomatic@1.1.5 +10613 verbose rebuildBundles randomatic@1.1.5 +10614 verbose linkBins is-number@2.1.0 +10615 verbose linkMans is-number@2.1.0 +10616 verbose rebuildBundles is-number@2.1.0 +10617 info install randomatic@1.1.5 +10618 verbose linkBins repeat-string@1.5.4 +10619 verbose linkMans repeat-string@1.5.4 +10620 verbose rebuildBundles repeat-string@1.5.4 +10621 info install is-number@2.1.0 +10622 info install repeat-string@1.5.4 +10623 info postinstall randomatic@1.1.5 +10624 info postinstall is-number@2.1.0 +10625 silly gunzTarPerm extractEntry _initCloneArray.js +10626 silly gunzTarPerm extractEntry isNil.js +10627 silly cache afterAdd isarray@1.0.0 +10628 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json not in flight; writing +10629 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing +10630 info postinstall repeat-string@1.5.4 +10631 verbose unlock done using /home/ruanyf/.tnpm/_locks/randomatic-cafe9c7b4df7f297.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic +10632 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-number-e774981ed8f34323.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number +10633 verbose unlock done using /home/ruanyf/.tnpm/_locks/repeat-string-1f5fb425507e0c8b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string +10634 silly gunzTarPerm extractEntry ts/core/linq/observable/takewhile.ts +10635 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takewhile.ts', 384, 420 ] +10636 silly gunzTarPerm extractEntry ts/core/linq/observable/takewithtime.ts +10637 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takewithtime.ts', 384, 420 ] +10638 silly gunzTarPerm extractEntry ts/core/linq/observable/tap.ts +10639 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/tap.ts', 384, 420 ] +10640 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json written +10641 silly install resolved [ { name: 'isarray', +10641 silly install resolved description: 'Array#isArray for older browsers', +10641 silly install resolved version: '1.0.0', +10641 silly install resolved repository: +10641 silly install resolved { type: 'git', +10641 silly install resolved url: 'git://github.com/juliangruber/isarray.git' }, +10641 silly install resolved homepage: 'https://github.com/juliangruber/isarray', +10641 silly install resolved main: 'index.js', +10641 silly install resolved dependencies: {}, +10641 silly install resolved devDependencies: { tape: '~2.13.4' }, +10641 silly install resolved keywords: [ 'browser', 'isarray', 'array' ], +10641 silly install resolved author: +10641 silly install resolved { name: 'Julian Gruber', +10641 silly install resolved email: 'mail@juliangruber.com', +10641 silly install resolved url: 'http://juliangruber.com' }, +10641 silly install resolved license: 'MIT', +10641 silly install resolved testling: { files: 'test.js', browsers: [Object] }, +10641 silly install resolved scripts: { test: 'tape test.js' }, +10641 silly install resolved gitHead: '2a23a281f369e9ae06394c0fb4d2381355a6ba33', +10641 silly install resolved bugs: { url: 'https://github.com/juliangruber/isarray/issues' }, +10641 silly install resolved _id: 'isarray@1.0.0', +10641 silly install resolved _shasum: 'bb935d48582cba168c06834957a54a3e07124f11', +10641 silly install resolved _from: 'isarray@1.0.0', +10641 silly install resolved _npmVersion: '3.3.12', +10641 silly install resolved _nodeVersion: '5.1.0', +10641 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, +10641 silly install resolved dist: +10641 silly install resolved { shasum: 'bb935d48582cba168c06834957a54a3e07124f11', +10641 silly install resolved size: 2021, +10641 silly install resolved noattachment: false, +10641 silly install resolved key: 'isarray/-/isarray-1.0.0.tgz', +10641 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz' }, +10641 silly install resolved maintainers: [ [Object] ], +10641 silly install resolved directories: {}, +10641 silly install resolved publish_time: 1449741907067, +10641 silly install resolved _cnpm_publish_time: 1449741907067, +10641 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz', +10641 silly install resolved readme: 'ERROR: No README data found!' } ] +10642 info install isarray@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10643 info installOne isarray@1.0.0 +10644 verbose installOne of isarray to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject not in flight; installing +10645 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing +10646 silly gunzTarPerm extractEntry ts/core/linq/observable/thendo.ts +10647 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/thendo.ts', 384, 420 ] +10648 verbose lock using /home/ruanyf/.tnpm/_locks/isarray-e7c4ee874841fff3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray +10649 silly install write writing isarray 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray +10650 silly gunzTarPerm extractEntry ts/core/linq/observable/throttle.ts +10651 silly gunzTarPerm extractEntry _indexOfNaN.js +10652 silly gunzTarPerm extractEntry isNull.js +10653 silly gunzTarPerm extractEntry ts/core/linq/observable/throw.ts +10654 silly gunzTarPerm extractEntry ts/core/linq/observable/timeinterval.ts +10655 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray +10656 silly gunzTarPerm extractEntry ts/core/linq/observable/timeout.ts +10657 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray is being purged from base /home/ruanyf/npm-global +10658 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray +10659 verbose tar unpack /home/ruanyf/.tnpm/isarray/1.0.0/package.tgz +10660 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray +10661 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray is being purged +10662 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray +10663 silly gunzTarPerm extractEntry _indexKeys.js +10664 silly gunzTarPerm extractEntry isNumber.js +10665 silly gunzTarPerm modes [ '755', '644' ] +10666 silly gunzTarPerm extractEntry ts/core/linq/observable/timer.ts +10667 silly gunzTarPerm extractEntry package.json +10668 silly gunzTarPerm extractEntry _hashSet.js +10669 silly gunzTarPerm extractEntry isObject.js +10670 silly gunzTarPerm extractEntry .npmignore +10671 silly gunzTarPerm extractEntry README.md +10672 silly gunzTarPerm extractEntry ts/core/linq/observable/timestamp.ts +10673 silly gunzTarPerm extractEntry ts/core/linq/observable/toarray.ts +10674 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/toarray.ts', 384, 420 ] +10675 silly gunzTarPerm extractEntry _hashHas.js +10676 silly gunzTarPerm extractEntry isObjectLike.js +10677 silly gunzTarPerm extractEntry index.js +10678 silly gunzTarPerm extractEntry test.js +10679 silly gunzTarPerm extractEntry ts/core/linq/observable/toasync.ts +10680 silly gunzTarPerm extractEntry ts/core/linq/observable/tomap.ts +10681 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/tomap.ts', 384, 420 ] +10682 silly gunzTarPerm extractEntry _hashGet.js +10683 silly gunzTarPerm extractEntry isPlainObject.js +10684 silly gunzTarPerm extractEntry .travis.yml +10685 silly gunzTarPerm extractEntry Makefile +10686 silly gunzTarPerm extractEntry ts/core/linq/observable/topromise.ts +10687 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/topromise.ts', 384, 420 ] +10688 silly gunzTarPerm extractEntry ts/core/linq/observable/toset.ts +10689 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/toset.ts', 384, 420 ] +10690 silly gunzTarPerm extractEntry _hashDelete.js +10691 silly gunzTarPerm extractEntry isRegExp.js +10692 silly gunzTarPerm extractEntry component.json +10693 silly gunzTarPerm extractEntry ts/core/linq/observable/transduce.ts +10694 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/transduce.ts', 384, 420 ] +10695 silly gunzTarPerm extractEntry ts/core/linq/observable/using.ts +10696 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/using.ts', 384, 420 ] +10697 silly gunzTarPerm extractEntry ts/core/linq/observable/when.ts +10698 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/when.ts', 384, 420 ] +10699 silly gunzTarPerm extractEntry ts/core/linq/observable/while.ts +10700 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/while.ts', 384, 420 ] +10701 silly gunzTarPerm extractEntry _hashClear.js +10702 silly gunzTarPerm extractEntry isSafeInteger.js +10703 silly gunzTarPerm extractEntry ts/core/linq/observable/window.ts +10704 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/window.ts', 384, 420 ] +10705 silly gunzTarPerm extractEntry ts/core/linq/observable/windowwithcount.ts +10706 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/windowwithcount.ts', 384, 420 ] +10707 silly gunzTarPerm extractEntry ts/core/linq/observable/windowwithtime.ts +10708 silly gunzTarPerm extractEntry ts/core/linq/observable/windowwithtimeorcount.ts +10709 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/windowwithtimeorcount.ts', 384, 420 ] +10710 silly gunzTarPerm extractEntry _hasPath.js +10711 silly gunzTarPerm extractEntry isSet.js +10712 silly gunzTarPerm extractEntry _getView.js +10713 silly gunzTarPerm extractEntry isString.js +10714 silly gunzTarPerm extractEntry ts/core/linq/observable/withlatestfrom.ts +10715 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/withlatestfrom.ts', 384, 420 ] +10716 silly gunzTarPerm extractEntry ts/core/linq/observable/zip.ts +10717 silly gunzTarPerm extractEntry ts/core/linq/observable/zipiterable.ts +10718 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/zipiterable.ts', 384, 420 ] +10719 silly gunzTarPerm extractEntry ts/core/notification.ts +10720 silly gunzTarPerm modified mode [ 'ts/core/notification.ts', 384, 420 ] +10721 silly gunzTarPerm extractEntry ts/core/observable.ts +10722 silly gunzTarPerm modified mode [ 'ts/core/observable.ts', 384, 420 ] +10723 silly gunzTarPerm extractEntry ts/core/observer-extras.ts +10724 silly gunzTarPerm modified mode [ 'ts/core/observer-extras.ts', 384, 420 ] +10725 silly gunzTarPerm extractEntry _getTag.js +10726 silly gunzTarPerm extractEntry isSymbol.js +10727 silly gunzTarPerm extractEntry ts/core/observer-lite.ts +10728 silly gunzTarPerm modified mode [ 'ts/core/observer-lite.ts', 384, 420 ] +10729 silly gunzTarPerm extractEntry ts/core/observer.ts +10730 silly gunzTarPerm modified mode [ 'ts/core/observer.ts', 384, 420 ] +10731 silly gunzTarPerm extractEntry ts/core/scheduledobserver.ts +10732 silly gunzTarPerm modified mode [ 'ts/core/scheduledobserver.ts', 384, 420 ] +10733 silly gunzTarPerm extractEntry ts/core/subjects/anonymoussubject.ts +10734 silly gunzTarPerm modified mode [ 'ts/core/subjects/anonymoussubject.ts', 384, 420 ] +10735 silly gunzTarPerm extractEntry _getSymbolsIn.js +10736 silly gunzTarPerm extractEntry isTypedArray.js +10737 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray/package.json +10738 silly gunzTarPerm extractEntry _getSymbols.js +10739 silly gunzTarPerm extractEntry isUndefined.js +10740 silly gunzTarPerm extractEntry ts/core/subjects/asyncsubject.ts +10741 silly gunzTarPerm modified mode [ 'ts/core/subjects/asyncsubject.ts', 384, 420 ] +10742 silly gunzTarPerm extractEntry ts/core/subjects/behaviorsubject.ts +10743 silly gunzTarPerm modified mode [ 'ts/core/subjects/behaviorsubject.ts', 384, 420 ] +10744 info preinstall isarray@1.0.0 +10745 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray/package.json +10746 silly gunzTarPerm extractEntry _getPrototype.js +10747 silly gunzTarPerm extractEntry isWeakMap.js +10748 silly gunzTarPerm extractEntry ts/core/subjects/replaysubject.ts +10749 silly gunzTarPerm extractEntry ts/core/subjects/subject.ts +10750 silly gunzTarPerm modified mode [ 'ts/core/subjects/subject.ts', 384, 420 ] +10751 silly gunzTarPerm extractEntry ts/core/testing/mockdisposable.ts +10752 silly gunzTarPerm modified mode [ 'ts/core/testing/mockdisposable.ts', 384, 420 ] +10753 silly gunzTarPerm extractEntry ts/core/testing/mockobserver.ts +10754 silly gunzTarPerm modified mode [ 'ts/core/testing/mockobserver.ts', 384, 420 ] +10755 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray/package.json +10756 silly gunzTarPerm extractEntry ts/core/testing/reactivetest.ts +10757 silly gunzTarPerm modified mode [ 'ts/core/testing/reactivetest.ts', 384, 420 ] +10758 silly gunzTarPerm extractEntry ts/core/testing/recorded.ts +10759 silly gunzTarPerm modified mode [ 'ts/core/testing/recorded.ts', 384, 420 ] +10760 silly gunzTarPerm extractEntry _getNative.js +10761 silly gunzTarPerm extractEntry isWeakSet.js +10762 silly gunzTarPerm extractEntry ts/core/testing/subscription.ts +10763 silly gunzTarPerm modified mode [ 'ts/core/testing/subscription.ts', 384, 420 ] +10764 silly install resolved [] +10765 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray +10766 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray +10767 silly gunzTarPerm extractEntry ts/core/testing/testscheduler.ts +10768 silly gunzTarPerm modified mode [ 'ts/core/testing/testscheduler.ts', 384, 420 ] +10769 silly gunzTarPerm extractEntry ts/iterable.es6.d.ts +10770 silly gunzTarPerm modified mode [ 'ts/iterable.es6.d.ts', 384, 420 ] +10771 info linkStuff isarray@1.0.0 +10772 silly linkStuff isarray@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules as its parent node_modules +10773 silly linkStuff isarray@1.0.0 is part of a global install +10774 silly linkStuff isarray@1.0.0 is installed into a global node_modules +10775 silly gunzTarPerm extractEntry _getMatchData.js +10776 silly gunzTarPerm extractEntry iteratee.js +10777 verbose linkBins isarray@1.0.0 +10778 verbose linkMans isarray@1.0.0 +10779 verbose rebuildBundles isarray@1.0.0 +10780 info install isarray@1.0.0 +10781 info postinstall isarray@1.0.0 +10782 silly gunzTarPerm extractEntry ts/rx.aggregates.d.ts +10783 silly gunzTarPerm extractEntry ts/rx.aggregates.es6.d.ts +10784 silly gunzTarPerm extractEntry ts/rx.all.d.ts +10785 verbose unlock done using /home/ruanyf/.tnpm/_locks/isarray-e7c4ee874841fff3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray +10786 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10787 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10788 silly gunzTarPerm extractEntry ts/rx.all.es6.d.ts +10789 silly gunzTarPerm extractEntry _getMapData.js +10790 silly gunzTarPerm extractEntry join.js +10791 silly gunzTarPerm extractEntry ts/rx.async.d.ts +10792 info linkStuff isobject@2.1.0 +10793 silly linkStuff isobject@2.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules as its parent node_modules +10794 silly linkStuff isobject@2.1.0 is part of a global install +10795 silly linkStuff isobject@2.1.0 is installed into a global node_modules +10796 silly gunzTarPerm extractEntry ts/rx.async.es6.d.ts +10797 verbose linkBins isobject@2.1.0 +10798 verbose linkMans isobject@2.1.0 +10799 verbose rebuildBundles isobject@2.1.0 +10800 silly gunzTarPerm extractEntry ts/rx.backpressure.d.ts +10801 verbose rebuildBundles [ 'isarray' ] +10802 info install isobject@2.1.0 +10803 silly gunzTarPerm extractEntry ts/rx.backpressure.es6.d.ts +10804 info postinstall isobject@2.1.0 +10805 silly gunzTarPerm extractEntry _getLength.js +10806 silly gunzTarPerm extractEntry kebabCase.js +10807 silly gunzTarPerm extractEntry ts/rx.binding.d.ts +10808 verbose unlock done using /home/ruanyf/.tnpm/_locks/isobject-9016e78a1014758c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject +10809 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +10810 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +10811 silly gunzTarPerm extractEntry _getHolder.js +10812 silly gunzTarPerm extractEntry keyBy.js +10813 info linkStuff fill-range@2.2.3 +10814 silly linkStuff fill-range@2.2.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules as its parent node_modules +10815 silly linkStuff fill-range@2.2.3 is part of a global install +10816 silly linkStuff fill-range@2.2.3 is installed into a global node_modules +10817 silly gunzTarPerm extractEntry ts/rx.binding.es6.d.ts +10818 silly gunzTarPerm extractEntry ts/rx.coincidence.d.ts +10819 verbose linkBins fill-range@2.2.3 +10820 verbose linkMans fill-range@2.2.3 +10821 verbose rebuildBundles fill-range@2.2.3 +10822 verbose rebuildBundles [ 'is-number', 'isobject', 'randomatic', 'repeat-string' ] +10823 info install fill-range@2.2.3 +10824 info postinstall fill-range@2.2.3 +10825 silly gunzTarPerm extractEntry _getFuncName.js +10826 silly gunzTarPerm extractEntry keys.js +10827 verbose unlock done using /home/ruanyf/.tnpm/_locks/fill-range-211f70546d1bdea8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range +10828 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +10829 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +10830 silly gunzTarPerm extractEntry ts/rx.coincidence.es6.d.ts +10831 silly gunzTarPerm extractEntry ts/rx.core.binding.d.ts +10832 info linkStuff expand-range@1.8.2 +10833 silly linkStuff expand-range@1.8.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules as its parent node_modules +10834 silly linkStuff expand-range@1.8.2 is part of a global install +10835 silly linkStuff expand-range@1.8.2 is installed into a global node_modules +10836 silly gunzTarPerm extractEntry _getData.js +10837 silly gunzTarPerm extractEntry keysIn.js +10838 verbose linkBins expand-range@1.8.2 +10839 verbose linkMans expand-range@1.8.2 +10840 verbose rebuildBundles expand-range@1.8.2 +10841 verbose rebuildBundles [ 'fill-range' ] +10842 info install expand-range@1.8.2 +10843 info postinstall expand-range@1.8.2 +10844 silly gunzTarPerm extractEntry ts/rx.core.binding.es6.d.ts +10845 silly gunzTarPerm extractEntry ts/rx.core.d.ts +10846 verbose unlock done using /home/ruanyf/.tnpm/_locks/expand-range-05d02f12f4c3112f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range +10847 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +10848 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +10849 silly gunzTarPerm extractEntry _getAllKeysIn.js +10850 silly gunzTarPerm extractEntry lang.js +10851 info linkStuff braces@1.8.4 +10852 silly linkStuff braces@1.8.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules +10853 silly linkStuff braces@1.8.4 is part of a global install +10854 silly linkStuff braces@1.8.4 is installed into a global node_modules +10855 silly gunzTarPerm extractEntry ts/rx.core.es6.d.ts +10856 silly gunzTarPerm extractEntry ts/rx.core.testing.d.ts +10857 verbose linkBins braces@1.8.4 +10858 verbose linkMans braces@1.8.4 +10859 verbose rebuildBundles braces@1.8.4 +10860 verbose rebuildBundles [ 'expand-range', 'preserve', 'repeat-element' ] +10861 info install braces@1.8.4 +10862 info postinstall braces@1.8.4 +10863 silly gunzTarPerm extractEntry _getAllKeys.js +10864 silly gunzTarPerm extractEntry last.js +10865 verbose unlock done using /home/ruanyf/.tnpm/_locks/braces-097842f0c137e8be.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces +10866 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +10867 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +10868 silly gunzTarPerm extractEntry ts/es6-promise.es6.d.ts +10869 silly gunzTarPerm modified mode [ 'ts/es6-promise.es6.d.ts', 384, 420 ] +10870 silly gunzTarPerm extractEntry ts/rx.d.ts +10871 info linkStuff micromatch@2.3.8 +10872 silly linkStuff micromatch@2.3.8 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules +10873 silly linkStuff micromatch@2.3.8 is part of a global install +10874 silly linkStuff micromatch@2.3.8 is installed into a global node_modules +10875 silly gunzTarPerm extractEntry _escapeStringChar.js +10876 silly gunzTarPerm extractEntry lastIndexOf.js +10877 verbose linkBins micromatch@2.3.8 +10878 verbose linkMans micromatch@2.3.8 +10879 verbose rebuildBundles micromatch@2.3.8 +10880 verbose rebuildBundles [ 'arr-diff', +10880 verbose rebuildBundles 'array-unique', +10880 verbose rebuildBundles 'braces', +10880 verbose rebuildBundles 'expand-brackets', +10880 verbose rebuildBundles 'extglob', +10880 verbose rebuildBundles 'filename-regex', +10880 verbose rebuildBundles 'is-extglob', +10880 verbose rebuildBundles 'is-glob', +10880 verbose rebuildBundles 'kind-of', +10880 verbose rebuildBundles 'normalize-path', +10880 verbose rebuildBundles 'object.omit', +10880 verbose rebuildBundles 'parse-glob', +10880 verbose rebuildBundles 'regex-cache' ] +10881 info install micromatch@2.3.8 +10882 info postinstall micromatch@2.3.8 +10883 silly gunzTarPerm extractEntry ts/rx.es6.d.ts +10884 silly gunzTarPerm extractEntry ts/rx.experimental.d.ts +10885 verbose unlock done using /home/ruanyf/.tnpm/_locks/micromatch-24c668eacc4b7001.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch +10886 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +10887 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +10888 silly gunzTarPerm extractEntry _escapeHtmlChar.js +10889 silly gunzTarPerm extractEntry lodash.js +10890 info linkStuff glob-stream@5.3.2 +10891 silly linkStuff glob-stream@5.3.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules +10892 silly linkStuff glob-stream@5.3.2 is part of a global install +10893 silly linkStuff glob-stream@5.3.2 is installed into a global node_modules +10894 silly gunzTarPerm extractEntry ts/rx.experimental.es6.d.ts +10895 silly gunzTarPerm extractEntry ts/rx.joinpatterns.d.ts +10896 silly gunzTarPerm modified mode [ 'ts/rx.joinpatterns.d.ts', 384, 420 ] +10897 verbose linkBins glob-stream@5.3.2 +10898 verbose linkMans glob-stream@5.3.2 +10899 verbose rebuildBundles glob-stream@5.3.2 +10900 verbose rebuildBundles [ 'extend', +10900 verbose rebuildBundles 'glob', +10900 verbose rebuildBundles 'glob-parent', +10900 verbose rebuildBundles 'micromatch', +10900 verbose rebuildBundles 'ordered-read-streams', +10900 verbose rebuildBundles 'through2', +10900 verbose rebuildBundles 'to-absolute-glob', +10900 verbose rebuildBundles 'unique-stream' ] +10901 info install glob-stream@5.3.2 +10902 silly gunzTarPerm extractEntry _equalObjects.js +10903 info postinstall glob-stream@5.3.2 +10904 verbose unlock done using /home/ruanyf/.tnpm/_locks/glob-stream-e046c20b39469590.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream +10905 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs +10906 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs +10907 silly gunzTarPerm extractEntry ts/rx.joinpatterns.es6.d.ts +10908 silly gunzTarPerm modified mode [ 'ts/rx.joinpatterns.es6.d.ts', 384, 420 ] +10909 silly gunzTarPerm extractEntry ts/rx.lite.d.ts +10910 silly gunzTarPerm extractEntry ts/rx.lite.es6.d.ts +10911 silly gunzTarPerm extractEntry lodash.min.js +10912 silly gunzTarPerm extractEntry _equalByTag.js +10913 info linkStuff vinyl-fs@2.4.3 +10914 silly linkStuff vinyl-fs@2.4.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules as its parent node_modules +10915 silly linkStuff vinyl-fs@2.4.3 is part of a global install +10916 silly linkStuff vinyl-fs@2.4.3 is installed into a global node_modules +10917 verbose linkBins vinyl-fs@2.4.3 +10918 verbose linkMans vinyl-fs@2.4.3 +10919 verbose rebuildBundles vinyl-fs@2.4.3 +10920 verbose rebuildBundles [ '.bin', +10920 verbose rebuildBundles 'duplexify', +10920 verbose rebuildBundles 'glob-stream', +10920 verbose rebuildBundles 'graceful-fs', +10920 verbose rebuildBundles 'gulp-sourcemaps', +10920 verbose rebuildBundles 'is-valid-glob', +10920 verbose rebuildBundles 'lazystream', +10920 verbose rebuildBundles 'lodash.isequal', +10920 verbose rebuildBundles 'merge-stream', +10920 verbose rebuildBundles 'mkdirp', +10920 verbose rebuildBundles 'object-assign', +10920 verbose rebuildBundles 'readable-stream', +10920 verbose rebuildBundles 'strip-bom', +10920 verbose rebuildBundles 'strip-bom-stream', +10920 verbose rebuildBundles 'through2-filter', +10920 verbose rebuildBundles 'vali-date', +10920 verbose rebuildBundles 'vinyl' ] +10921 info install vinyl-fs@2.4.3 +10922 info postinstall vinyl-fs@2.4.3 +10923 silly gunzTarPerm extractEntry ts/rx.lite.extras.d.ts +10924 silly gunzTarPerm extractEntry ts/rx.lite.extras.es6.d.ts +10925 silly gunzTarPerm extractEntry ts/rx.sorting.d.ts +10926 silly gunzTarPerm modified mode [ 'ts/rx.sorting.d.ts', 384, 420 ] +10927 silly gunzTarPerm extractEntry ts/rx.sorting.es6.d.ts +10928 silly gunzTarPerm modified mode [ 'ts/rx.sorting.es6.d.ts', 384, 420 ] +10929 silly gunzTarPerm extractEntry lowerCase.js +10930 silly gunzTarPerm extractEntry _equalArrays.js +10931 verbose unlock done using /home/ruanyf/.tnpm/_locks/vinyl-fs-98ccb0e2955699cc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs +10932 silly gunzTarPerm extractEntry ts/rx.testing.d.ts +10933 silly gunzTarPerm extractEntry ts/rx.testing.es6.d.ts +10934 silly gunzTarPerm extractEntry ts/rx.time.d.ts +10935 silly gunzTarPerm extractEntry ts/rx.time.es6.d.ts +10936 silly gunzTarPerm extractEntry lowerFirst.js +10937 silly gunzTarPerm extractEntry _deburrLetter.js +10938 silly gunzTarPerm extractEntry ts/rx.virtualtime.d.ts +10939 silly gunzTarPerm extractEntry ts/rx.virtualtime.es6.d.ts +10940 silly gunzTarPerm extractEntry ts/tsconfig.json +10941 silly gunzTarPerm modified mode [ 'ts/tsconfig.json', 384, 420 ] +10942 silly gunzTarPerm extractEntry lt.js +10943 silly gunzTarPerm extractEntry _createWrapper.js +10944 silly gunzTarPerm extractEntry lte.js +10945 silly gunzTarPerm extractEntry _createToPairs.js +10946 silly gunzTarPerm extractEntry map.js +10947 silly gunzTarPerm extractEntry _createSet.js +10948 silly gunzTarPerm extractEntry mapKeys.js +10949 silly gunzTarPerm extractEntry _createRound.js +10950 silly gunzTarPerm extractEntry mapValues.js +10951 silly gunzTarPerm extractEntry _createRelationalOperation.js +10952 silly gunzTarPerm extractEntry matches.js +10953 silly gunzTarPerm extractEntry _createRecurryWrapper.js +10954 silly gunzTarPerm extractEntry matchesProperty.js +10955 silly gunzTarPerm extractEntry _createRange.js +10956 silly gunzTarPerm extractEntry math.js +10957 silly gunzTarPerm extractEntry _createPartialWrapper.js +10958 silly gunzTarPerm extractEntry max.js +10959 silly gunzTarPerm extractEntry _createPadding.js +10960 silly gunzTarPerm extractEntry maxBy.js +10961 silly gunzTarPerm extractEntry _createOver.js +10962 silly gunzTarPerm extractEntry mean.js +10963 silly gunzTarPerm extractEntry _createMathOperation.js +10964 silly gunzTarPerm extractEntry meanBy.js +10965 silly gunzTarPerm extractEntry _createInverter.js +10966 silly gunzTarPerm extractEntry memoize.js +10967 silly gunzTarPerm extractEntry _createHybridWrapper.js +10968 silly gunzTarPerm extractEntry merge.js +10969 silly gunzTarPerm extractEntry _createFlow.js +10970 silly gunzTarPerm extractEntry mergeWith.js +10971 silly gunzTarPerm extractEntry _createCurryWrapper.js +10972 silly gunzTarPerm extractEntry method.js +10973 silly gunzTarPerm extractEntry _createCtorWrapper.js +10974 silly gunzTarPerm extractEntry methodOf.js +10975 silly gunzTarPerm extractEntry _createCompounder.js +10976 silly gunzTarPerm extractEntry min.js +10977 silly gunzTarPerm extractEntry _createCaseFirst.js +10978 silly gunzTarPerm extractEntry minBy.js +10979 silly gunzTarPerm extractEntry _createBaseWrapper.js +10980 silly gunzTarPerm extractEntry mixin.js +10981 silly gunzTarPerm extractEntry _createBaseFor.js +10982 silly gunzTarPerm extractEntry multiply.js +10983 silly gunzTarPerm extractEntry _createBaseEach.js +10984 silly gunzTarPerm extractEntry negate.js +10985 silly gunzTarPerm extractEntry _createAssigner.js +10986 silly gunzTarPerm extractEntry next.js +10987 silly gunzTarPerm extractEntry _createAggregator.js +10988 silly gunzTarPerm extractEntry noop.js +10989 silly gunzTarPerm extractEntry _countHolders.js +10990 silly gunzTarPerm extractEntry now.js +10991 silly gunzTarPerm extractEntry _copySymbols.js +10992 silly gunzTarPerm extractEntry nth.js +10993 silly gunzTarPerm extractEntry _copyObject.js +10994 silly gunzTarPerm extractEntry nthArg.js +10995 silly gunzTarPerm extractEntry _copyArray.js +10996 silly gunzTarPerm extractEntry number.js +10997 silly gunzTarPerm extractEntry _composeArgsRight.js +10998 silly gunzTarPerm extractEntry object.js +10999 silly gunzTarPerm extractEntry _composeArgs.js +11000 silly gunzTarPerm extractEntry omit.js +11001 silly gunzTarPerm extractEntry _compareMultiple.js +11002 silly gunzTarPerm extractEntry omitBy.js +11003 silly gunzTarPerm extractEntry _compareAscending.js +11004 silly gunzTarPerm extractEntry once.js +11005 silly gunzTarPerm extractEntry _cloneTypedArray.js +11006 silly gunzTarPerm extractEntry orderBy.js +11007 silly gunzTarPerm extractEntry _cloneSymbol.js +11008 silly gunzTarPerm extractEntry over.js +11009 silly gunzTarPerm extractEntry _cloneSet.js +11010 silly gunzTarPerm extractEntry overArgs.js +11011 silly gunzTarPerm extractEntry _cloneRegExp.js +11012 silly gunzTarPerm extractEntry overEvery.js +11013 silly gunzTarPerm extractEntry _cloneMap.js +11014 silly gunzTarPerm extractEntry overSome.js +11015 silly gunzTarPerm extractEntry _cloneDataView.js +11016 silly gunzTarPerm extractEntry _charsStartIndex.js +11017 silly gunzTarPerm extractEntry debounce.js +11018 silly gunzTarPerm extractEntry pad.js +11019 silly gunzTarPerm extractEntry _charsEndIndex.js +11020 silly gunzTarPerm extractEntry padEnd.js +11021 silly gunzTarPerm extractEntry _castSlice.js +11022 silly gunzTarPerm extractEntry padStart.js +11023 silly gunzTarPerm extractEntry _castPath.js +11024 silly gunzTarPerm extractEntry parseInt.js +11025 silly gunzTarPerm extractEntry _castFunction.js +11026 silly gunzTarPerm extractEntry partial.js +11027 silly gunzTarPerm extractEntry _castArrayLikeObject.js +11028 silly gunzTarPerm extractEntry partialRight.js +11029 silly gunzTarPerm extractEntry _cacheHas.js +11030 silly gunzTarPerm extractEntry partition.js +11031 silly gunzTarPerm extractEntry _baseZipObject.js +11032 silly gunzTarPerm extractEntry pick.js +11033 silly gunzTarPerm extractEntry _baseXor.js +11034 silly gunzTarPerm extractEntry pickBy.js +11035 silly gunzTarPerm extractEntry _baseWrapperValue.js +11036 silly gunzTarPerm extractEntry plant.js +11037 silly gunzTarPerm extractEntry _baseWhile.js +11038 silly gunzTarPerm extractEntry property.js +11039 silly gunzTarPerm extractEntry _baseValues.js +11040 silly gunzTarPerm extractEntry propertyOf.js +11041 silly gunzTarPerm extractEntry _baseUpdate.js +11042 silly gunzTarPerm extractEntry pull.js +11043 silly gunzTarPerm extractEntry _baseUnset.js +11044 silly gunzTarPerm extractEntry pullAll.js +11045 silly gunzTarPerm extractEntry _baseUniq.js +11046 silly gunzTarPerm extractEntry pullAllBy.js +11047 silly gunzTarPerm extractEntry _baseUnary.js +11048 silly gunzTarPerm extractEntry pullAllWith.js +11049 silly gunzTarPerm extractEntry _baseToString.js +11050 silly gunzTarPerm extractEntry pullAt.js +11051 silly gunzTarPerm extractEntry _baseToPairs.js +11052 silly gunzTarPerm extractEntry random.js +11053 silly gunzTarPerm extractEntry _baseToNumber.js +11054 silly gunzTarPerm extractEntry range.js +11055 silly gunzTarPerm extractEntry _baseTimes.js +11056 silly gunzTarPerm extractEntry rangeRight.js +11057 silly gunzTarPerm extractEntry _baseSum.js +11058 silly gunzTarPerm extractEntry rearg.js +11059 silly gunzTarPerm extractEntry _baseSortedUniq.js +11060 silly gunzTarPerm extractEntry reduce.js +11061 silly gunzTarPerm extractEntry _baseSortedIndexBy.js +11062 silly gunzTarPerm extractEntry reduceRight.js +11063 silly gunzTarPerm extractEntry _baseSortedIndex.js +11064 silly gunzTarPerm extractEntry reject.js +11065 silly gunzTarPerm extractEntry _baseSortBy.js +11066 silly gunzTarPerm extractEntry remove.js +11067 silly gunzTarPerm extractEntry _baseSome.js +11068 silly gunzTarPerm extractEntry repeat.js +11069 silly gunzTarPerm extractEntry _baseSlice.js +11070 silly gunzTarPerm extractEntry replace.js +11071 silly gunzTarPerm extractEntry _baseSetData.js +11072 silly gunzTarPerm extractEntry rest.js +11073 silly gunzTarPerm extractEntry _baseSet.js +11074 silly gunzTarPerm extractEntry result.js +11075 silly gunzTarPerm extractEntry _baseRepeat.js +11076 silly gunzTarPerm extractEntry reverse.js +11077 silly gunzTarPerm extractEntry _baseReduce.js +11078 silly gunzTarPerm extractEntry round.js +11079 silly gunzTarPerm extractEntry _baseRange.js +11080 silly gunzTarPerm extractEntry sample.js +11081 silly gunzTarPerm extractEntry _baseRandom.js +11082 silly gunzTarPerm extractEntry sampleSize.js +11083 silly gunzTarPerm extractEntry _basePullAt.js +11084 silly gunzTarPerm extractEntry seq.js +11085 silly gunzTarPerm extractEntry _basePullAll.js +11086 silly gunzTarPerm extractEntry set.js +11087 silly gunzTarPerm extractEntry _basePropertyDeep.js +11088 silly gunzTarPerm extractEntry setWith.js +11089 silly gunzTarPerm extractEntry _baseProperty.js +11090 silly gunzTarPerm extractEntry shuffle.js +11091 silly gunzTarPerm extractEntry _basePickBy.js +11092 silly gunzTarPerm extractEntry size.js +11093 silly gunzTarPerm extractEntry _basePick.js +11094 silly gunzTarPerm extractEntry slice.js +11095 silly gunzTarPerm extractEntry _baseOrderBy.js +11096 silly gunzTarPerm extractEntry snakeCase.js +11097 silly gunzTarPerm extractEntry _baseNth.js +11098 silly gunzTarPerm extractEntry some.js +11099 silly gunzTarPerm extractEntry _baseMergeDeep.js +11100 silly gunzTarPerm extractEntry sortBy.js +11101 silly gunzTarPerm extractEntry _baseMerge.js +11102 silly gunzTarPerm extractEntry sortedIndex.js +11103 silly gunzTarPerm extractEntry _baseMean.js +11104 silly gunzTarPerm extractEntry sortedIndexBy.js +11105 silly gunzTarPerm extractEntry _baseMatchesProperty.js +11106 silly gunzTarPerm extractEntry sortedIndexOf.js +11107 silly gunzTarPerm extractEntry _baseMatches.js +11108 silly gunzTarPerm extractEntry sortedLastIndex.js +11109 silly gunzTarPerm extractEntry _baseMap.js +11110 silly gunzTarPerm extractEntry sortedLastIndexBy.js +11111 silly gunzTarPerm extractEntry _baseLt.js +11112 silly gunzTarPerm extractEntry sortedLastIndexOf.js +11113 silly gunzTarPerm extractEntry _baseLodash.js +11114 silly gunzTarPerm extractEntry sortedUniq.js +11115 silly gunzTarPerm extractEntry _baseKeysIn.js +11116 silly gunzTarPerm extractEntry sortedUniqBy.js +11117 silly gunzTarPerm extractEntry _baseKeys.js +11118 silly gunzTarPerm extractEntry split.js +11119 silly gunzTarPerm extractEntry _baseIteratee.js +11120 silly gunzTarPerm extractEntry spread.js +11121 silly gunzTarPerm extractEntry _baseIsMatch.js +11122 silly gunzTarPerm extractEntry startCase.js +11123 silly gunzTarPerm extractEntry _baseIsEqualDeep.js +11124 silly gunzTarPerm extractEntry startsWith.js +11125 silly gunzTarPerm extractEntry _baseIsEqual.js +11126 silly gunzTarPerm extractEntry string.js +11127 silly gunzTarPerm extractEntry _baseInvoke.js +11128 silly gunzTarPerm extractEntry subtract.js +11129 silly gunzTarPerm extractEntry _baseInverter.js +11130 silly gunzTarPerm extractEntry sum.js +11131 silly gunzTarPerm extractEntry _baseIntersection.js +11132 silly gunzTarPerm extractEntry sumBy.js +11133 silly gunzTarPerm extractEntry _baseIndexOfWith.js +11134 silly gunzTarPerm extractEntry tail.js +11135 silly gunzTarPerm extractEntry _baseIndexOf.js +11136 silly gunzTarPerm extractEntry take.js +11137 silly gunzTarPerm extractEntry _baseInRange.js +11138 silly gunzTarPerm extractEntry takeRight.js +11139 silly gunzTarPerm extractEntry _baseHasIn.js +11140 silly gunzTarPerm extractEntry takeRightWhile.js +11141 silly gunzTarPerm extractEntry _baseHas.js +11142 silly gunzTarPerm extractEntry takeWhile.js +11143 silly gunzTarPerm extractEntry _baseGt.js +11144 silly gunzTarPerm extractEntry tap.js +11145 silly gunzTarPerm extractEntry _baseGetAllKeys.js +11146 silly gunzTarPerm extractEntry template.js +11147 silly gunzTarPerm extractEntry _baseGet.js +11148 silly gunzTarPerm extractEntry templateSettings.js +11149 silly gunzTarPerm extractEntry _baseFunctions.js +11150 silly gunzTarPerm extractEntry throttle.js +11151 silly gunzTarPerm extractEntry _baseForRight.js +11152 silly gunzTarPerm extractEntry thru.js +11153 silly gunzTarPerm extractEntry _baseForOwnRight.js +11154 silly gunzTarPerm extractEntry times.js +11155 silly gunzTarPerm extractEntry _baseForOwn.js +11156 silly gunzTarPerm extractEntry toArray.js +11157 silly gunzTarPerm extractEntry _baseFor.js +11158 silly gunzTarPerm extractEntry toFinite.js +11159 silly gunzTarPerm extractEntry _baseFlatten.js +11160 silly gunzTarPerm extractEntry toInteger.js +11161 silly gunzTarPerm extractEntry _baseFindIndex.js +11162 silly gunzTarPerm extractEntry toIterator.js +11163 silly gunzTarPerm extractEntry _baseFind.js +11164 silly gunzTarPerm extractEntry toJSON.js +11165 silly gunzTarPerm extractEntry _baseFilter.js +11166 silly gunzTarPerm extractEntry toLength.js +11167 silly gunzTarPerm extractEntry _baseFill.js +11168 silly gunzTarPerm extractEntry toLower.js +11169 silly gunzTarPerm extractEntry _baseExtremum.js +11170 silly gunzTarPerm extractEntry toNumber.js +11171 silly gunzTarPerm extractEntry _baseEvery.js +11172 silly gunzTarPerm extractEntry toPairs.js +11173 silly gunzTarPerm extractEntry _baseEachRight.js +11174 silly gunzTarPerm extractEntry toPairsIn.js +11175 silly gunzTarPerm extractEntry _baseEach.js +11176 silly gunzTarPerm extractEntry toPath.js +11177 silly gunzTarPerm extractEntry _baseDifference.js +11178 silly gunzTarPerm extractEntry toPlainObject.js +11179 silly gunzTarPerm extractEntry _baseDelay.js +11180 silly gunzTarPerm extractEntry toSafeInteger.js +11181 silly gunzTarPerm extractEntry _baseCreate.js +11182 silly gunzTarPerm extractEntry toString.js +11183 silly gunzTarPerm extractEntry _baseConforms.js +11184 silly gunzTarPerm extractEntry toUpper.js +11185 silly gunzTarPerm extractEntry _baseClone.js +11186 silly gunzTarPerm extractEntry transform.js +11187 silly gunzTarPerm extractEntry _baseClamp.js +11188 silly gunzTarPerm extractEntry trim.js +11189 silly gunzTarPerm extractEntry _baseAt.js +11190 silly gunzTarPerm extractEntry trimEnd.js +11191 silly gunzTarPerm extractEntry _baseAssign.js +11192 silly gunzTarPerm extractEntry trimStart.js +11193 silly gunzTarPerm extractEntry _baseAggregator.js +11194 silly gunzTarPerm extractEntry truncate.js +11195 silly gunzTarPerm extractEntry _assocIndexOf.js +11196 silly gunzTarPerm extractEntry unary.js +11197 silly gunzTarPerm extractEntry _assignValue.js +11198 silly gunzTarPerm extractEntry unescape.js +11199 silly gunzTarPerm extractEntry _assignMergeValue.js +11200 silly gunzTarPerm extractEntry union.js +11201 silly gunzTarPerm extractEntry _assignInDefaults.js +11202 silly gunzTarPerm extractEntry unionBy.js +11203 silly gunzTarPerm extractEntry _arraySome.js +11204 silly gunzTarPerm extractEntry unionWith.js +11205 silly gunzTarPerm extractEntry _arrayReduceRight.js +11206 silly gunzTarPerm extractEntry uniq.js +11207 silly gunzTarPerm extractEntry _arrayReduce.js +11208 silly gunzTarPerm extractEntry uniqBy.js +11209 silly gunzTarPerm extractEntry _arrayPush.js +11210 silly gunzTarPerm extractEntry uniqWith.js +11211 silly gunzTarPerm extractEntry _arrayMap.js +11212 silly gunzTarPerm extractEntry uniqueId.js +11213 silly gunzTarPerm extractEntry _arrayIncludesWith.js +11214 silly gunzTarPerm extractEntry unset.js +11215 silly gunzTarPerm extractEntry _arrayIncludes.js +11216 silly gunzTarPerm extractEntry unzip.js +11217 silly gunzTarPerm extractEntry _arrayFilter.js +11218 silly gunzTarPerm extractEntry unzipWith.js +11219 silly gunzTarPerm extractEntry _arrayEvery.js +11220 silly gunzTarPerm extractEntry update.js +11221 silly gunzTarPerm extractEntry _arrayEachRight.js +11222 silly gunzTarPerm extractEntry updateWith.js +11223 silly gunzTarPerm extractEntry _arrayEach.js +11224 silly gunzTarPerm extractEntry upperCase.js +11225 silly gunzTarPerm extractEntry _arrayAggregator.js +11226 silly gunzTarPerm extractEntry upperFirst.js +11227 silly gunzTarPerm extractEntry _apply.js +11228 silly gunzTarPerm extractEntry util.js +11229 silly gunzTarPerm extractEntry _addSetEntry.js +11230 silly gunzTarPerm extractEntry value.js +11231 silly gunzTarPerm extractEntry _addMapEntry.js +11232 silly gunzTarPerm extractEntry valueOf.js +11233 silly gunzTarPerm extractEntry _WeakMap.js +11234 silly gunzTarPerm extractEntry values.js +11235 silly gunzTarPerm extractEntry _Uint8Array.js +11236 silly gunzTarPerm extractEntry valuesIn.js +11237 silly gunzTarPerm extractEntry _Symbol.js +11238 silly gunzTarPerm extractEntry without.js +11239 silly gunzTarPerm extractEntry _Stack.js +11240 silly gunzTarPerm extractEntry words.js +11241 silly gunzTarPerm extractEntry _SetCache.js +11242 silly gunzTarPerm extractEntry wrap.js +11243 silly gunzTarPerm extractEntry _Set.js +11244 silly gunzTarPerm extractEntry wrapperAt.js +11245 silly gunzTarPerm extractEntry _Reflect.js +11246 silly gunzTarPerm extractEntry wrapperChain.js +11247 silly gunzTarPerm extractEntry _Promise.js +11248 silly gunzTarPerm extractEntry wrapperLodash.js +11249 silly gunzTarPerm extractEntry _MapCache.js +11250 silly gunzTarPerm extractEntry wrapperReverse.js +11251 silly gunzTarPerm extractEntry _Map.js +11252 silly gunzTarPerm extractEntry wrapperValue.js +11253 silly gunzTarPerm extractEntry _LodashWrapper.js +11254 silly gunzTarPerm extractEntry xor.js +11255 silly gunzTarPerm extractEntry _ListCache.js +11256 silly gunzTarPerm extractEntry xorBy.js +11257 silly gunzTarPerm extractEntry _LazyWrapper.js +11258 silly gunzTarPerm extractEntry xorWith.js +11259 silly gunzTarPerm extractEntry _Hash.js +11260 silly gunzTarPerm extractEntry zip.js +11261 silly gunzTarPerm extractEntry _DataView.js +11262 silly gunzTarPerm extractEntry zipObject.js +11263 silly gunzTarPerm extractEntry curryRight.js +11264 silly gunzTarPerm extractEntry zipWith.js +11265 silly gunzTarPerm extractEntry date.js +11266 silly gunzTarPerm extractEntry fp/__.js +11267 silly gunzTarPerm extractEntry fp/lastIndexOf.js +11268 silly gunzTarPerm extractEntry fp/lowerCase.js +11269 silly gunzTarPerm extractEntry fp/lowerFirst.js +11270 silly gunzTarPerm extractEntry fp/last.js +11271 silly gunzTarPerm extractEntry fp/lte.js +11272 silly gunzTarPerm extractEntry fp/map.js +11273 silly gunzTarPerm extractEntry fp/mapKeys.js +11274 silly gunzTarPerm extractEntry fp/mapValues.js +11275 silly gunzTarPerm extractEntry fp/matches.js +11276 silly gunzTarPerm extractEntry fp/lang.js +11277 silly gunzTarPerm extractEntry fp/matchesProperty.js +11278 silly gunzTarPerm extractEntry fp/keysIn.js +11279 silly gunzTarPerm extractEntry fp/math.js +11280 silly gunzTarPerm extractEntry fp/keys.js +11281 silly gunzTarPerm extractEntry fp/max.js +11282 silly gunzTarPerm extractEntry fp/keyBy.js +11283 silly gunzTarPerm extractEntry fp/maxBy.js +11284 silly gunzTarPerm extractEntry fp/kebabCase.js +11285 silly gunzTarPerm extractEntry fp/mean.js +11286 silly gunzTarPerm extractEntry fp/juxt.js +11287 silly gunzTarPerm extractEntry fp/meanBy.js +11288 silly gunzTarPerm extractEntry fp/join.js +11289 silly gunzTarPerm extractEntry fp/memoize.js +11290 silly gunzTarPerm extractEntry fp/iteratee.js +11291 silly gunzTarPerm extractEntry fp/merge.js +11292 silly gunzTarPerm extractEntry fp/isWeakSet.js +11293 silly gunzTarPerm extractEntry fp/mergeWith.js +11294 silly gunzTarPerm extractEntry fp/isWeakMap.js +11295 silly gunzTarPerm extractEntry fp/method.js +11296 silly gunzTarPerm extractEntry fp/isUndefined.js +11297 silly gunzTarPerm extractEntry fp/methodOf.js +11298 silly gunzTarPerm extractEntry fp/isTypedArray.js +11299 silly gunzTarPerm extractEntry fp/min.js +11300 silly gunzTarPerm extractEntry fp/isSymbol.js +11301 silly gunzTarPerm extractEntry fp/minBy.js +11302 silly gunzTarPerm extractEntry fp/isString.js +11303 silly gunzTarPerm extractEntry fp/mixin.js +11304 silly gunzTarPerm extractEntry fp/isSet.js +11305 silly gunzTarPerm extractEntry fp/multiply.js +11306 silly gunzTarPerm extractEntry fp/isSafeInteger.js +11307 silly gunzTarPerm extractEntry fp/nAry.js +11308 silly gunzTarPerm extractEntry fp/isRegExp.js +11309 silly gunzTarPerm extractEntry fp/negate.js +11310 silly gunzTarPerm extractEntry fp/isPlainObject.js +11311 silly gunzTarPerm extractEntry fp/next.js +11312 silly gunzTarPerm extractEntry fp/isObjectLike.js +11313 silly gunzTarPerm extractEntry fp/noop.js +11314 silly gunzTarPerm extractEntry fp/isObject.js +11315 silly gunzTarPerm extractEntry fp/now.js +11316 silly gunzTarPerm extractEntry fp/isNumber.js +11317 silly gunzTarPerm extractEntry fp/nth.js +11318 silly gunzTarPerm extractEntry fp/isNull.js +11319 silly gunzTarPerm extractEntry fp/nthArg.js +11320 silly gunzTarPerm extractEntry fp/isNil.js +11321 silly gunzTarPerm extractEntry fp/number.js +11322 silly gunzTarPerm extractEntry fp/isNative.js +11323 silly gunzTarPerm extractEntry fp/object.js +11324 silly gunzTarPerm extractEntry fp/isNaN.js +11325 silly gunzTarPerm extractEntry fp/omit.js +11326 silly gunzTarPerm extractEntry fp/isMatchWith.js +11327 silly gunzTarPerm extractEntry fp/omitAll.js +11328 silly gunzTarPerm extractEntry fp/isMatch.js +11329 silly gunzTarPerm extractEntry fp/omitBy.js +11330 silly gunzTarPerm extractEntry fp/isMap.js +11331 silly gunzTarPerm extractEntry fp/once.js +11332 silly gunzTarPerm extractEntry fp/isLength.js +11333 silly gunzTarPerm extractEntry fp/orderBy.js +11334 silly gunzTarPerm extractEntry fp/isInteger.js +11335 silly gunzTarPerm extractEntry fp/over.js +11336 silly gunzTarPerm extractEntry fp/isFunction.js +11337 silly gunzTarPerm extractEntry fp/overArgs.js +11338 silly gunzTarPerm extractEntry fp/isFinite.js +11339 silly gunzTarPerm extractEntry fp/overEvery.js +11340 silly gunzTarPerm extractEntry fp/isError.js +11341 silly gunzTarPerm extractEntry fp/overSome.js +11342 silly gunzTarPerm extractEntry fp/isEqualWith.js +11343 silly gunzTarPerm extractEntry fp/pad.js +11344 silly gunzTarPerm extractEntry fp/isEqual.js +11345 silly gunzTarPerm extractEntry fp/padChars.js +11346 silly gunzTarPerm extractEntry fp/isEmpty.js +11347 silly gunzTarPerm extractEntry fp/padCharsEnd.js +11348 silly gunzTarPerm extractEntry fp/isElement.js +11349 silly gunzTarPerm extractEntry fp/padCharsStart.js +11350 silly gunzTarPerm extractEntry fp/isDate.js +11351 silly gunzTarPerm extractEntry fp/padEnd.js +11352 silly gunzTarPerm extractEntry fp/isBuffer.js +11353 silly gunzTarPerm extractEntry fp/padStart.js +11354 silly gunzTarPerm extractEntry fp/isBoolean.js +11355 silly gunzTarPerm extractEntry fp/parseInt.js +11356 silly gunzTarPerm extractEntry fp/isArrayLikeObject.js +11357 silly gunzTarPerm extractEntry fp/partial.js +11358 silly gunzTarPerm extractEntry fp/isArrayLike.js +11359 silly gunzTarPerm extractEntry fp/partialRight.js +11360 silly gunzTarPerm extractEntry fp/isArrayBuffer.js +11361 silly gunzTarPerm extractEntry fp/partition.js +11362 silly gunzTarPerm extractEntry fp/isArray.js +11363 silly gunzTarPerm extractEntry fp/path.js +11364 silly gunzTarPerm extractEntry fp/isArguments.js +11365 silly gunzTarPerm extractEntry fp/pathEq.js +11366 silly gunzTarPerm extractEntry fp/invokeMap.js +11367 silly gunzTarPerm extractEntry fp/pathOr.js +11368 silly gunzTarPerm extractEntry fp/invokeArgsMap.js +11369 silly gunzTarPerm extractEntry fp/paths.js +11370 silly gunzTarPerm extractEntry fp/invokeArgs.js +11371 silly gunzTarPerm extractEntry fp/pick.js +11372 silly gunzTarPerm extractEntry fp/invoke.js +11373 silly gunzTarPerm extractEntry fp/pickAll.js +11374 silly gunzTarPerm extractEntry fp/invertObj.js +11375 silly gunzTarPerm extractEntry fp/pickBy.js +11376 silly gunzTarPerm extractEntry fp/invertBy.js +11377 silly gunzTarPerm extractEntry fp/pipe.js +11378 silly gunzTarPerm extractEntry fp/invert.js +11379 silly gunzTarPerm extractEntry fp/placeholder.js +11380 silly gunzTarPerm extractEntry fp/intersectionWith.js +11381 silly gunzTarPerm extractEntry fp/plant.js +11382 silly gunzTarPerm extractEntry fp/intersectionBy.js +11383 silly gunzTarPerm extractEntry fp/pluck.js +11384 silly gunzTarPerm extractEntry fp/intersection.js +11385 silly gunzTarPerm extractEntry fp/prop.js +11386 silly gunzTarPerm extractEntry fp/initial.js +11387 silly gunzTarPerm extractEntry fp/propEq.js +11388 silly gunzTarPerm extractEntry fp/init.js +11389 silly gunzTarPerm extractEntry fp/propOr.js +11390 silly gunzTarPerm extractEntry fp/indexOf.js +11391 silly gunzTarPerm extractEntry fp/property.js +11392 silly gunzTarPerm extractEntry fp/includes.js +11393 silly gunzTarPerm extractEntry fp/propertyOf.js +11394 silly gunzTarPerm extractEntry fp/inRange.js +11395 silly gunzTarPerm extractEntry fp/props.js +11396 silly gunzTarPerm extractEntry fp/identity.js +11397 silly gunzTarPerm extractEntry fp/pull.js +11398 silly gunzTarPerm extractEntry fp/identical.js +11399 silly gunzTarPerm extractEntry fp/pullAll.js +11400 silly gunzTarPerm extractEntry fp/head.js +11401 silly gunzTarPerm extractEntry fp/pullAllBy.js +11402 silly gunzTarPerm extractEntry fp/hasIn.js +11403 silly gunzTarPerm extractEntry fp/pullAllWith.js +11404 silly gunzTarPerm extractEntry fp/has.js +11405 silly gunzTarPerm extractEntry fp/pullAt.js +11406 silly gunzTarPerm extractEntry fp/gte.js +11407 silly gunzTarPerm extractEntry fp/random.js +11408 silly gunzTarPerm extractEntry fp/gt.js +11409 silly gunzTarPerm extractEntry fp/range.js +11410 silly gunzTarPerm extractEntry fp/groupBy.js +11411 silly gunzTarPerm extractEntry fp/rangeRight.js +11412 silly gunzTarPerm extractEntry fp/getOr.js +11413 silly gunzTarPerm extractEntry fp/rearg.js +11414 silly gunzTarPerm extractEntry fp/get.js +11415 silly gunzTarPerm extractEntry fp/reduce.js +11416 silly gunzTarPerm extractEntry fp/functionsIn.js +11417 silly gunzTarPerm extractEntry fp/reduceRight.js +11418 silly gunzTarPerm extractEntry fp/functions.js +11419 silly gunzTarPerm extractEntry fp/reject.js +11420 silly gunzTarPerm extractEntry fp/function.js +11421 silly gunzTarPerm extractEntry fp/remove.js +11422 silly gunzTarPerm extractEntry fp/fromPairs.js +11423 silly gunzTarPerm extractEntry fp/repeat.js +11424 silly gunzTarPerm extractEntry fp/forOwnRight.js +11425 silly gunzTarPerm extractEntry fp/replace.js +11426 silly gunzTarPerm extractEntry fp/forOwn.js +11427 silly gunzTarPerm extractEntry fp/rest.js +11428 silly gunzTarPerm extractEntry fp/forInRight.js +11429 silly gunzTarPerm extractEntry fp/restFrom.js +11430 silly gunzTarPerm extractEntry fp/forIn.js +11431 silly gunzTarPerm extractEntry fp/result.js +11432 silly gunzTarPerm extractEntry fp/forEachRight.js +11433 silly gunzTarPerm extractEntry fp/reverse.js +11434 silly gunzTarPerm extractEntry fp/forEach.js +11435 silly gunzTarPerm extractEntry fp/round.js +11436 silly gunzTarPerm extractEntry fp/flowRight.js +11437 silly gunzTarPerm extractEntry fp/sample.js +11438 silly gunzTarPerm extractEntry fp/flow.js +11439 silly gunzTarPerm extractEntry fp/sampleSize.js +11440 silly gunzTarPerm extractEntry fp/floor.js +11441 silly gunzTarPerm extractEntry fp/seq.js +11442 silly gunzTarPerm extractEntry fp/flip.js +11443 silly gunzTarPerm extractEntry fp/set.js +11444 silly gunzTarPerm extractEntry fp/flattenDepth.js +11445 silly gunzTarPerm extractEntry fp/setWith.js +11446 silly gunzTarPerm extractEntry fp/flattenDeep.js +11447 silly gunzTarPerm extractEntry fp/shuffle.js +11448 silly gunzTarPerm extractEntry fp/flatten.js +11449 silly gunzTarPerm extractEntry fp/size.js +11450 silly gunzTarPerm extractEntry fp/flatMapDepth.js +11451 silly gunzTarPerm extractEntry fp/slice.js +11452 silly gunzTarPerm extractEntry fp/flatMapDeep.js +11453 silly gunzTarPerm extractEntry fp/snakeCase.js +11454 silly gunzTarPerm extractEntry fp/flatMap.js +11455 silly gunzTarPerm extractEntry fp/some.js +11456 silly gunzTarPerm extractEntry fp/first.js +11457 silly gunzTarPerm extractEntry fp/sortBy.js +11458 silly gunzTarPerm extractEntry fp/findLastKey.js +11459 silly gunzTarPerm extractEntry fp/sortedIndex.js +11460 silly gunzTarPerm extractEntry fp/findLastIndex.js +11461 silly gunzTarPerm extractEntry fp/sortedIndexBy.js +11462 silly gunzTarPerm extractEntry fp/findLast.js +11463 silly gunzTarPerm extractEntry fp/sortedIndexOf.js +11464 silly gunzTarPerm extractEntry fp/findKey.js +11465 silly gunzTarPerm extractEntry fp/sortedLastIndex.js +11466 silly gunzTarPerm extractEntry fp/findIndex.js +11467 silly gunzTarPerm extractEntry fp/sortedLastIndexBy.js +11468 silly gunzTarPerm extractEntry fp/find.js +11469 silly gunzTarPerm extractEntry fp/sortedLastIndexOf.js +11470 silly gunzTarPerm extractEntry fp/filter.js +11471 silly gunzTarPerm extractEntry fp/sortedUniq.js +11472 silly gunzTarPerm extractEntry fp/fill.js +11473 silly gunzTarPerm extractEntry fp/sortedUniqBy.js +11474 silly gunzTarPerm extractEntry fp/extendWith.js +11475 silly gunzTarPerm extractEntry fp/split.js +11476 silly gunzTarPerm extractEntry fp/extend.js +11477 silly gunzTarPerm extractEntry fp/spread.js +11478 silly gunzTarPerm extractEntry fp/every.js +11479 silly gunzTarPerm extractEntry fp/spreadFrom.js +11480 silly gunzTarPerm extractEntry fp/escapeRegExp.js +11481 silly gunzTarPerm extractEntry fp/startCase.js +11482 silly gunzTarPerm extractEntry fp/escape.js +11483 silly gunzTarPerm extractEntry fp/startsWith.js +11484 silly gunzTarPerm extractEntry fp/equals.js +11485 silly gunzTarPerm extractEntry fp/string.js +11486 silly gunzTarPerm extractEntry fp/eq.js +11487 silly gunzTarPerm extractEntry fp/subtract.js +11488 silly gunzTarPerm extractEntry fp/entriesIn.js +11489 silly gunzTarPerm extractEntry fp/sum.js +11490 silly gunzTarPerm extractEntry fp/entries.js +11491 silly gunzTarPerm extractEntry fp/sumBy.js +11492 silly gunzTarPerm extractEntry fp/endsWith.js +11493 silly gunzTarPerm extractEntry fp/tail.js +11494 silly gunzTarPerm extractEntry fp/eachRight.js +11495 silly gunzTarPerm extractEntry fp/take.js +11496 silly gunzTarPerm extractEntry fp/each.js +11497 silly gunzTarPerm extractEntry fp/takeRight.js +11498 silly gunzTarPerm extractEntry fp/dropWhile.js +11499 silly gunzTarPerm extractEntry fp/takeRightWhile.js +11500 silly gunzTarPerm extractEntry fp/dropRightWhile.js +11501 silly gunzTarPerm extractEntry fp/takeWhile.js +11502 silly gunzTarPerm extractEntry fp/dropRight.js +11503 silly gunzTarPerm extractEntry fp/tap.js +11504 silly gunzTarPerm extractEntry fp/drop.js +11505 silly gunzTarPerm extractEntry fp/template.js +11506 silly gunzTarPerm extractEntry fp/divide.js +11507 silly gunzTarPerm extractEntry fp/templateSettings.js +11508 silly gunzTarPerm extractEntry fp/dissocPath.js +11509 silly gunzTarPerm extractEntry fp/throttle.js +11510 silly gunzTarPerm extractEntry fp/dissoc.js +11511 silly gunzTarPerm extractEntry fp/thru.js +11512 silly gunzTarPerm extractEntry fp/differenceWith.js +11513 silly gunzTarPerm extractEntry fp/times.js +11514 silly gunzTarPerm extractEntry fp/differenceBy.js +11515 silly gunzTarPerm extractEntry fp/toArray.js +11516 silly gunzTarPerm extractEntry fp/difference.js +11517 silly gunzTarPerm extractEntry fp/toFinite.js +11518 silly gunzTarPerm extractEntry fp/delay.js +11519 silly gunzTarPerm extractEntry fp/toInteger.js +11520 silly gunzTarPerm extractEntry fp/defer.js +11521 silly gunzTarPerm extractEntry fp/toIterator.js +11522 silly gunzTarPerm extractEntry fp/defaultsDeep.js +11523 silly gunzTarPerm extractEntry fp/toJSON.js +11524 silly gunzTarPerm extractEntry fp/defaults.js +11525 silly gunzTarPerm extractEntry fp/toLength.js +11526 silly gunzTarPerm extractEntry fp/deburr.js +11527 silly gunzTarPerm extractEntry fp/toLower.js +11528 silly gunzTarPerm extractEntry fp/debounce.js +11529 silly gunzTarPerm extractEntry fp/toNumber.js +11530 silly gunzTarPerm extractEntry fp/date.js +11531 silly gunzTarPerm extractEntry fp/toPairs.js +11532 silly gunzTarPerm extractEntry fp/curryRightN.js +11533 silly gunzTarPerm extractEntry fp/toPairsIn.js +11534 silly gunzTarPerm extractEntry fp/curryRight.js +11535 silly gunzTarPerm extractEntry fp/toPath.js +11536 silly gunzTarPerm extractEntry fp/curryN.js +11537 silly gunzTarPerm extractEntry fp/toPlainObject.js +11538 silly gunzTarPerm extractEntry fp/curry.js +11539 silly gunzTarPerm extractEntry fp/toSafeInteger.js +11540 silly gunzTarPerm extractEntry fp/create.js +11541 silly gunzTarPerm extractEntry fp/toString.js +11542 silly gunzTarPerm extractEntry fp/countBy.js +11543 silly gunzTarPerm extractEntry fp/toUpper.js +11544 silly gunzTarPerm extractEntry fp/convert.js +11545 silly gunzTarPerm extractEntry fp/transform.js +11546 silly gunzTarPerm extractEntry fp/contains.js +11547 silly gunzTarPerm extractEntry fp/trim.js +11548 silly gunzTarPerm extractEntry fp/constant.js +11549 silly gunzTarPerm extractEntry fp/trimChars.js +11550 silly gunzTarPerm extractEntry fp/conforms.js +11551 silly gunzTarPerm extractEntry fp/trimCharsEnd.js +11552 silly gunzTarPerm extractEntry fp/cond.js +11553 silly gunzTarPerm extractEntry fp/trimCharsStart.js +11554 silly gunzTarPerm extractEntry fp/concat.js +11555 silly gunzTarPerm extractEntry fp/trimEnd.js +11556 silly gunzTarPerm extractEntry fp/compose.js +11557 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx/package.json +11558 info preinstall rx@4.1.0 +11559 silly gunzTarPerm extractEntry fp/trimStart.js +11560 silly gunzTarPerm extractEntry fp/complement.js +11561 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx/package.json +11562 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx/package.json +11563 silly gunzTarPerm extractEntry fp/truncate.js +11564 silly gunzTarPerm extractEntry fp/compact.js +11565 silly install resolved [] +11566 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx +11567 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx +11568 silly gunzTarPerm extractEntry fp/unapply.js +11569 silly gunzTarPerm extractEntry fp/commit.js +11570 info linkStuff rx@4.1.0 +11571 silly linkStuff rx@4.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +11572 silly linkStuff rx@4.1.0 is part of a global install +11573 silly linkStuff rx@4.1.0 is installed into a global node_modules +11574 verbose linkBins rx@4.1.0 +11575 verbose linkMans rx@4.1.0 +11576 verbose rebuildBundles rx@4.1.0 +11577 info install rx@4.1.0 +11578 info postinstall rx@4.1.0 +11579 silly gunzTarPerm extractEntry fp/unary.js +11580 silly gunzTarPerm extractEntry fp/collection.js +11581 verbose unlock done using /home/ruanyf/.tnpm/_locks/rx-a88d72d456f97785.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx +11582 silly gunzTarPerm extractEntry fp/unescape.js +11583 silly gunzTarPerm extractEntry fp/cloneWith.js +11584 silly gunzTarPerm extractEntry fp/union.js +11585 silly gunzTarPerm extractEntry fp/cloneDeepWith.js +11586 silly gunzTarPerm extractEntry fp/unionBy.js +11587 silly gunzTarPerm extractEntry fp/cloneDeep.js +11588 silly gunzTarPerm extractEntry fp/unionWith.js +11589 silly gunzTarPerm extractEntry fp/clone.js +11590 silly gunzTarPerm extractEntry fp/uniq.js +11591 silly gunzTarPerm extractEntry fp/clamp.js +11592 silly gunzTarPerm extractEntry fp/uniqBy.js +11593 silly gunzTarPerm extractEntry fp/chunk.js +11594 silly gunzTarPerm extractEntry fp/uniqWith.js +11595 silly gunzTarPerm extractEntry fp/chain.js +11596 silly gunzTarPerm extractEntry fp/uniqueId.js +11597 silly gunzTarPerm extractEntry fp/ceil.js +11598 silly gunzTarPerm extractEntry fp/unnest.js +11599 silly gunzTarPerm extractEntry fp/castArray.js +11600 silly gunzTarPerm extractEntry fp/unset.js +11601 silly gunzTarPerm extractEntry fp/capitalize.js +11602 silly gunzTarPerm extractEntry fp/unzip.js +11603 silly gunzTarPerm extractEntry fp/camelCase.js +11604 silly gunzTarPerm extractEntry fp/unzipWith.js +11605 silly gunzTarPerm extractEntry fp/bindKey.js +11606 silly gunzTarPerm extractEntry fp/update.js +11607 silly gunzTarPerm extractEntry fp/bindAll.js +11608 silly gunzTarPerm extractEntry fp/updateWith.js +11609 silly gunzTarPerm extractEntry fp/bind.js +11610 silly gunzTarPerm extractEntry fp/upperCase.js +11611 silly gunzTarPerm extractEntry fp/before.js +11612 silly gunzTarPerm extractEntry fp/upperFirst.js +11613 silly gunzTarPerm extractEntry fp/attempt.js +11614 silly gunzTarPerm extractEntry fp/useWith.js +11615 silly gunzTarPerm extractEntry fp/at.js +11616 silly gunzTarPerm extractEntry fp/util.js +11617 silly gunzTarPerm extractEntry fp/assocPath.js +11618 silly gunzTarPerm extractEntry fp/value.js +11619 silly gunzTarPerm extractEntry fp/assoc.js +11620 silly gunzTarPerm extractEntry fp/valueOf.js +11621 silly gunzTarPerm extractEntry fp/assignWith.js +11622 silly gunzTarPerm extractEntry fp/values.js +11623 silly gunzTarPerm extractEntry fp/assignInWith.js +11624 silly gunzTarPerm extractEntry fp/valuesIn.js +11625 silly gunzTarPerm extractEntry fp/assignIn.js +11626 silly gunzTarPerm extractEntry fp/whereEq.js +11627 silly gunzTarPerm extractEntry fp/assign.js +11628 silly gunzTarPerm extractEntry fp/without.js +11629 silly gunzTarPerm extractEntry fp/ary.js +11630 silly gunzTarPerm extractEntry fp/words.js +11631 silly gunzTarPerm extractEntry fp/array.js +11632 silly gunzTarPerm extractEntry fp/wrap.js +11633 silly gunzTarPerm extractEntry fp/apply.js +11634 silly gunzTarPerm extractEntry fp/wrapperAt.js +11635 silly gunzTarPerm extractEntry fp/anyPass.js +11636 silly gunzTarPerm extractEntry fp/wrapperChain.js +11637 silly gunzTarPerm extractEntry fp/any.js +11638 silly gunzTarPerm extractEntry fp/wrapperLodash.js +11639 silly gunzTarPerm extractEntry fp/always.js +11640 silly gunzTarPerm extractEntry fp/wrapperReverse.js +11641 silly gunzTarPerm extractEntry fp/allPass.js +11642 silly gunzTarPerm extractEntry fp/wrapperValue.js +11643 silly gunzTarPerm extractEntry fp/all.js +11644 silly gunzTarPerm extractEntry fp/xor.js +11645 silly gunzTarPerm extractEntry fp/after.js +11646 silly gunzTarPerm extractEntry fp/xorBy.js +11647 silly gunzTarPerm extractEntry fp/add.js +11648 silly gunzTarPerm extractEntry fp/xorWith.js +11649 silly gunzTarPerm extractEntry fp/_util.js +11650 silly gunzTarPerm extractEntry fp/zip.js +11651 silly gunzTarPerm extractEntry fp/_mapping.js +11652 silly gunzTarPerm extractEntry fp/zipObj.js +11653 silly gunzTarPerm extractEntry fp/_falseOptions.js +11654 silly gunzTarPerm extractEntry fp/zipObject.js +11655 silly gunzTarPerm extractEntry fp/_convertBrowser.js +11656 silly gunzTarPerm extractEntry fp/zipObjectDeep.js +11657 silly gunzTarPerm extractEntry fp/_baseConvert.js +11658 silly gunzTarPerm extractEntry fp/zipWith.js +11659 silly gunzTarPerm extractEntry fp/lt.js +11660 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash/package.json +11661 info preinstall lodash@4.12.0 +11662 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash/package.json +11663 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash/package.json +11664 silly install resolved [] +11665 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash +11666 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash +11667 info linkStuff lodash@4.12.0 +11668 silly linkStuff lodash@4.12.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules +11669 silly linkStuff lodash@4.12.0 is part of a global install +11670 silly linkStuff lodash@4.12.0 is installed into a global node_modules +11671 verbose linkBins lodash@4.12.0 +11672 verbose linkMans lodash@4.12.0 +11673 verbose rebuildBundles lodash@4.12.0 +11674 info install lodash@4.12.0 +11675 info postinstall lodash@4.12.0 +11676 verbose unlock done using /home/ruanyf/.tnpm/_locks/lodash-18cb345c53418e4c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash +11677 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +11678 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +11679 info linkStuff inquirer@1.0.2 +11680 silly linkStuff inquirer@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules as its parent node_modules +11681 silly linkStuff inquirer@1.0.2 is part of a global install +11682 silly linkStuff inquirer@1.0.2 is installed into a global node_modules +11683 verbose linkBins inquirer@1.0.2 +11684 verbose linkMans inquirer@1.0.2 +11685 verbose rebuildBundles inquirer@1.0.2 +11686 verbose rebuildBundles [ 'ansi-escapes', +11686 verbose rebuildBundles 'chalk', +11686 verbose rebuildBundles 'cli-cursor', +11686 verbose rebuildBundles 'cli-width', +11686 verbose rebuildBundles 'figures', +11686 verbose rebuildBundles 'lodash', +11686 verbose rebuildBundles 'mute-stream', +11686 verbose rebuildBundles 'pinkie-promise', +11686 verbose rebuildBundles 'run-async', +11686 verbose rebuildBundles 'rx', +11686 verbose rebuildBundles 'string-width', +11686 verbose rebuildBundles 'strip-ansi', +11686 verbose rebuildBundles 'through' ] +11687 info install inquirer@1.0.2 +11688 info postinstall inquirer@1.0.2 +11689 verbose unlock done using /home/ruanyf/.tnpm/_locks/inquirer-f296c232979e4521.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer +11690 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init +11691 info build /home/ruanyf/npm-global/lib/node_modules/antd-init +11692 info linkStuff antd-init@1.1.1 +11693 silly linkStuff antd-init@1.1.1 has /home/ruanyf/npm-global/lib/node_modules as its parent node_modules +11694 silly linkStuff antd-init@1.1.1 is part of a global install +11695 silly linkStuff antd-init@1.1.1 is installed into a global node_modules +11696 silly linkStuff antd-init@1.1.1 is installed into the top-level global node_modules +11697 verbose linkBins antd-init@1.1.1 +11698 verbose link bins [ { 'antd-init': './bin/antd-init' }, +11698 verbose link bins '/home/ruanyf/npm-global/bin', +11698 verbose link bins true ] +11699 verbose linkMans antd-init@1.1.1 +11700 verbose rebuildBundles antd-init@1.1.1 +11701 verbose rebuildBundles [ '.bin', 'inquirer', 'through2', 'vinyl-fs', 'which' ] +11702 silly gentlyRm /home/ruanyf/npm-global/bin/antd-init is being gently removed +11703 silly gentlyRm verifying /home/ruanyf/npm-global is an npm working directory +11704 silly gentlyRm containing path /home/ruanyf/npm-global is under npm's control, in /home/ruanyf/npm-global +11705 silly gentlyRm deletion target /home/ruanyf/npm-global/bin/antd-init is under /home/ruanyf/npm-global +11706 verbose gentlyRm vacuuming from /home/ruanyf/npm-global/bin/antd-init up to /home/ruanyf/npm-global +11707 info install antd-init@1.1.1 +11708 info postinstall antd-init@1.1.1 +11709 verbose unlock done using /home/ruanyf/.tnpm/_locks/antd-init-240ac15f17eb2aec.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init +11710 verbose validateInstall loading /home/ruanyf/npm-global/lib/package.json for validation +11711 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/engine.io requires debug@'1.0.3' but will load +11711 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, +11711 warn unmet dependency which is version 2.2.0 +11712 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/enhanced-resolve requires graceful-fs@'^3.0.5' but will load +11712 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/graceful-fs, +11712 warn unmet dependency which is version 4.1.2 +11713 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/engine.io-client requires debug@'1.0.4' but will load +11713 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, +11713 warn unmet dependency which is version 2.2.0 +11714 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/engine.io-client requires parseuri@'0.0.4' but will load +11714 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/parseuri, +11714 warn unmet dependency which is version 0.0.2 +11715 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/express requires qs@'4.0.0' but will load +11715 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/qs, +11715 warn unmet dependency which is version 2.4.1 +11716 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/has-binary requires isarray@'0.0.1' but will load +11716 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, +11716 warn unmet dependency which is version 1.0.0 +11717 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/has-binary-data requires isarray@'0.0.1' but will load +11717 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, +11717 warn unmet dependency which is version 1.0.0 +11718 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isobject requires isarray@'0.0.1' but will load +11718 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, +11718 warn unmet dependency which is version 1.0.0 +11719 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/jstransform requires esprima-fb@'13001.1001.0-dev-harmony-fb' but will load +11719 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/esprima-fb, +11719 warn unmet dependency which is version 15001.1001.0-dev-harmony-fb +11720 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/jstransform requires source-map@'0.1.31' but will load +11720 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map, +11720 warn unmet dependency which is version 0.4.4 +11721 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/optimist requires minimist@'~0.0.1' but will load +11721 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/minimist, +11721 warn unmet dependency which is version 1.2.0 +11722 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/readable-stream requires isarray@'0.0.1' but will load +11722 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, +11722 warn unmet dependency which is version 1.0.0 +11723 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/recast requires source-map@'~0.5.0' but will load +11723 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map, +11723 warn unmet dependency which is version 0.4.4 +11724 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/readdirp requires readable-stream@'^2.0.2' but will load +11724 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/readable-stream, +11724 warn unmet dependency which is version 1.1.13 +11725 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/reduce-css-calc requires balanced-match@'^0.1.0' but will load +11725 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/balanced-match, +11725 warn unmet dependency which is version 0.3.0 +11726 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/send requires mime@'1.3.4' but will load +11726 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/mime, +11726 warn unmet dependency which is version 1.2.11 +11727 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-client requires debug@'0.7.4' but will load +11727 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, +11727 warn unmet dependency which is version 2.2.0 +11728 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-parser requires debug@'0.7.4' but will load +11728 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, +11728 warn unmet dependency which is version 2.2.0 +11729 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-parser requires isarray@'0.0.1' but will load +11729 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, +11729 warn unmet dependency which is version 1.0.0 +11730 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io requires debug@'2.1.0' but will load +11730 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, +11730 warn unmet dependency which is version 2.2.0 +11731 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map-support requires source-map@'0.1.32' but will load +11731 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map, +11731 warn unmet dependency which is version 0.4.4 +11732 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-adapter requires debug@'1.0.2' but will load +11732 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, +11732 warn unmet dependency which is version 2.2.0 +11733 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-adapter requires socket.io-parser@'2.2.2' but will load +11733 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-parser, +11733 warn unmet dependency which is version 2.2.4 +11734 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/url requires punycode@'1.3.2' but will load +11734 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/punycode, +11734 warn unmet dependency which is version 1.4.0 +11735 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/defs requires yargs@'~3.27.0' but will load +11735 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/yargs, +11735 warn unmet dependency which is version 3.15.0 +11736 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/mkdirp requires minimist@'0.0.8' but will load +11736 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/minimist, +11736 warn unmet dependency which is version 1.2.0 +11737 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/uglify-js requires async@'~0.2.6' but will load +11737 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/async, +11737 warn unmet dependency which is version 1.5.0 +11738 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/uglify-js requires source-map@'0.1.34' but will load +11738 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map, +11738 warn unmet dependency which is version 0.4.4 +11739 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/uglify-js requires yargs@'~3.5.4' but will load +11739 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/yargs, +11739 warn unmet dependency which is version 3.15.0 +11740 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/autoprefixer requires browserslist@'~1.0.1' but will load +11740 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/browserslist, +11740 warn unmet dependency which is version 0.4.0 +11741 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/cssnano requires object-assign@'^4.0.1' but will load +11741 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/object-assign, +11741 warn unmet dependency which is version 3.0.0 +11742 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/webpack/node_modules/watchpack/node_modules/chokidar/node_modules/anymatch/node_modules/micromatch requires kind-of@'^3.0.2' but will load +11742 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/kind-of, +11742 warn unmet dependency which is version 2.0.1 +11743 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/webpack-dev-server/node_modules/webpack-dev-middleware requires mime@'^1.3.4' but will load +11743 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/mime, +11743 warn unmet dependency which is version 1.2.11 +11744 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/webpack-dev-server/node_modules/webpack-dev-middleware/node_modules/memory-fs requires readable-stream@'^2.0.1' but will load +11744 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/readable-stream, +11744 warn unmet dependency which is version 1.1.13 +11745 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/webpack-require/node_modules/uglify-js requires async@'~0.2.6' but will load +11745 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/async, +11745 warn unmet dependency which is version 1.5.0 +11746 verbose stack Error: The package handlebars@4.0.5 does not satisfy its siblings' peerDependencies requirements! +11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/lib/install.js:125:32 +11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/lib/install.js:268:7 +11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:142:5 +11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:263:14 +11746 verbose stack at cb (/home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/slide/lib/async-map.js:47:24) +11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:263:14 +11746 verbose stack at cb (/home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/slide/lib/async-map.js:47:24) +11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:263:14 +11746 verbose stack at cb (/home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/slide/lib/async-map.js:47:24) +11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:263:14 +11747 verbose cwd /home/ruanyf/project/es6tutorial +11748 error Linux 3.16.0-4-amd64 +11749 error argv "/usr/bin/nodejs" "/home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/bin/npm-cli.js" "install" "--cache=/home/ruanyf/.tnpm" "--node_sqlite3_binary_host_mirror=https://npm.taobao.org/mirrors/" "--fse_binary_host_mirror=https://npm.taobao.org/mirrors/fsevents/" "--no-proxy" "--disturl=https://npm.taobao.org/mirrors/node" "--userconfig=/home/ruanyf/.tnpmrc" "--registry=http://registry.npm.alibaba-inc.com" "antd-init" "-g" +11750 error node v4.4.3 +11751 error npm v2.15.6 +11752 error code EPEERINVALID +11753 error peerinvalid The package handlebars@4.0.5 does not satisfy its siblings' peerDependencies requirements! +11754 verbose exit [ 1, true ] From 41c37bdbe2f74acbdfcc30b42da8aba9c43828e8 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 21 May 2016 09:20:59 +0800 Subject: [PATCH 031/994] =?UTF-8?q?doc(proxy):=20edit=20proxy.has=20?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/proxy.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 06537b13c..6213cfcaa 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -432,7 +432,9 @@ Reflect.apply(proxy, null, [9, 10]) // 38 ### has() -`has`方法可以隐藏某些属性,不被`in`操作符发现。 +`has`方法用来拦截`HasProperty`操作,即判断对象是否具有某个属性时,这个方法会生效。典型的操作就是`in`运算符。 + +下面的例子使用`has`方法隐藏某些属性,不被`in`运算符发现。 ```javascript var handler = { @@ -461,47 +463,45 @@ var p = new Proxy(obj, { } }); -"a" in p // TypeError is thrown +'a' in p // TypeError is thrown ``` 上面代码中,`obj`对象禁止扩展,结果使用`has`拦截就会报错。 -has 也可以用于拦截for...in操作 +值得注意的是,`has`方法拦截的是`HasProperty`操作,而不是`HasOwnProperty`操作,即`has`方法不判断一个属性是对象自身的属性,而是继承的属性。由于`for...in`操作内部也会用到`HasProperty`操作,所以`has`方法在`for...in`循环时也会生效。 ```javascript -let stu1 = { - name: "Owen", - score: 59 -} - -let stu2 = { - name: "Mark", - score: 99 -} +let stu1 = {name: 'Owen', score: 59}; +let stu2 = {name: 'Mark', score: 99}; let handler = { - has(target , prop) { - if(prop === "score" && target[prop] < 60) { - console.log(`${target["name"]}偷偷地把考砸的分数藏起来了`); - return false; + has(target, prop) { + if (prop === 'score' && target[prop] < 60) { + console.log(`${target.name} 不及格`); + return false; } - - return prop in target; + return prop in target; } } -let oproxy1 = new Proxy(stu1 , handler); -let oproxy2 = new Proxy(stu2 , handler); +let oproxy1 = new Proxy(stu1, handler); +let oproxy2 = new Proxy(stu2, handler); -for(let a in oproxy1) { - console.log(oproxy1[a]); +for (let a in oproxy1) { + console.log(oproxy1[a]); } +// Owen +// Owen 不及格 -for(let b in oproxy2) { - console.log(oproxy2[b]); +for (let b in oproxy2) { + console.log(oproxy2[b]); } +// Mark +// Mark 59 ``` +上面代码中,`for...in`循环时,`has`拦截会生效,导致不符合要求的属性被排除在`for...in`循环之外。 + ### construct() `construct`方法用于拦截`new`命令。 From 3bd3d6fbdbf4a9eb1f1aff53e954a91d1711a4c0 Mon Sep 17 00:00:00 2001 From: Owen <469564715@qq.com> Date: Sat, 21 May 2016 14:57:06 +0800 Subject: [PATCH 032/994] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 阮老师你好,在747行这个例子中,filter 返回的是属性的数组集合,所以,使用for...of 得到的key应该是对应的属性 “prop” 而不是您之后备注的 "baz" 可能是我理解有误,耽误了老师宝贵的时间,还望老师见谅 --- docs/proxy.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 160358d8b..6d1f1eca8 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -745,21 +745,21 @@ Object.keys(proxy) 下面的例子是拦截第一个字符为下划线的属性名。 ```javascript -var target = { +let target = { _bar: 'foo', _prop: 'bar', prop: 'baz' }; -var handler = { +let handler = { ownKeys (target) { return Reflect.ownKeys(target).filter(key => key[0] !== '_'); } }; -var proxy = new Proxy(target, handler); +let proxy = new Proxy(target, handler); for (let key of Object.keys(proxy)) { - console.log(key) + console.log(target[key]); } // "baz" ``` From 1b0eba15a99980954152b07b0d6abab3795a7b59 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 21 May 2016 15:32:47 +0800 Subject: [PATCH 033/994] =?UTF-8?q?doc(proxy):=20=E5=88=A0=E9=99=A4proxy?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E7=9A=84enumerate=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/proxy.md | 79 +++++++-------------------------------------------- 1 file changed, 11 insertions(+), 68 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 6213cfcaa..dd109ac20 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -133,45 +133,41 @@ fproxy.foo; // 'Hello, foo' 拦截`delete proxy[propKey]`的操作,返回一个布尔值。 -**(5)enumerate(target)** - -拦截`for...in`循环、`Object.getOwnPropertySymbols`方法、`Object.keys`方法和`JSON.stringify`方法,返回一个遍历器。 - -**(6)ownKeys(target)** +**(5)ownKeys(target)** 拦截`Object.getOwnPropertyNames(proxy)`、`Object.getOwnPropertySymbols(proxy)`、`Object.keys(proxy)`,返回一个数组。该方法返回对象所有自身的属性,而`Object.keys()`仅返回对象可遍历的属性。 -**(7)getOwnPropertyDescriptor(target, propKey)** +**(6)getOwnPropertyDescriptor(target, propKey)** 拦截`Object.getOwnPropertyDescriptor(proxy, propKey)`,返回属性的描述对象。 -**(8)defineProperty(target, propKey, propDesc)** +**(7)defineProperty(target, propKey, propDesc)** 拦截`Object.defineProperty(proxy, propKey, propDesc)`、`Object.defineProperties(proxy, propDescs)`,返回一个布尔值。 -**(9)preventExtensions(target)** +**(8)preventExtensions(target)** 拦截`Object.preventExtensions(proxy)`,返回一个布尔值。 -**(10)getPrototypeOf(target)** +**(9)getPrototypeOf(target)** 拦截`Object.getPrototypeOf(proxy)`,返回一个对象。 -**(11)isExtensible(target)** +**(10)isExtensible(target)** 拦截`Object.isExtensible(proxy)`,返回一个布尔值。 -**(12)setPrototypeOf(target, proto)** +**(11)setPrototypeOf(target, proto)** 拦截`Object.setPrototypeOf(proxy, proto)`,返回一个布尔值。 如果目标对象是函数,那么还有两种额外操作可以拦截。 -**(13)apply(target, object, args)** +**(12)apply(target, object, args)** 拦截Proxy实例作为函数调用的操作,比如`proxy(...args)`、`proxy.call(object, ...args)`、`proxy.apply(...)`。 -**(14)construct(target, args, proxy)** +**(13)construct(target, args, proxy)** 拦截Proxy实例作为构造函数调用的操作,比如`new proxy(...args)`。 @@ -497,7 +493,7 @@ for (let b in oproxy2) { console.log(oproxy2[b]); } // Mark -// Mark 59 +// Mark 99 ``` 上面代码中,`for...in`循环时,`has`拦截会生效,导致不符合要求的属性被排除在`for...in`循环之外。 @@ -584,58 +580,6 @@ proxy.foo = 'bar' 上面代码中,`defineProperty`方法返回`false`,导致添加新属性会抛出错误。 -### enumerate() - -`enumerate`方法用来拦截遍历对象属性的行为,任何调用对象的Iterator接口的操作都会被拦截,最典型的就是`for...in`循环,以及`Object.getOwnPropertySymbols`方法、`Object.keys`方法和`JSON.stringify`方法等。 - -```javascript -var handler = { - enumerate (target) { - let keys = Object.keys(target).filter(key => key[0] !== '_'); - return keys[Symbol.iterator](); - } -}; -var target = { prop: 'foo', _bar: 'baz', _prop: 'foo' }; -var proxy = new Proxy(target, handler); -for (let key in proxy) { - console.log(key); - // "prop" -} -``` - -上面代码中,`enumerate`方法取出原对象的所有属性名,将其中第一个字符等于下划线的都过滤掉,然后返回这些符合条件的属性名的一个遍历器对象,供`for...in`循环消费。 - -下面是另一个例子。 - -```javascript -var p = new Proxy({}, { - enumerate(target) { - console.log('called'); - return ['a', 'b', 'c'][Symbol.iterator](); - } -}); - -for (var x in p) { - console.log(x); -} -// "called" -// "a" -// "b" -// "c" -``` - -如果`enumerate`方法返回的不是一个对象,就会报错。 - -```javascript -var p = new Proxy({}, { - enumerate(target) { - return 1; - } -}); - -for (var x in p) {} // 报错 -``` - ### getOwnPropertyDescriptor() `getOwnPropertyDescriptor`方法拦截`Object.getOwnPropertyDescriptor`,返回一个属性描述对象或者`undefined`。 @@ -923,7 +867,7 @@ Reflect.apply(Math.floor, undefined, [1.75]) // 1 ## Reflect对象的方法 -`Reflect`对象的方法清单如下,共14个。 +`Reflect`对象的方法清单如下,共13个。 - Reflect.apply(target,thisArg,args) - Reflect.construct(target,args) @@ -933,7 +877,6 @@ Reflect.apply(Math.floor, undefined, [1.75]) // 1 - Reflect.deleteProperty(target,name) - Reflect.has(target,name) - Reflect.ownKeys(target) -- Reflect.enumerate(target) - Reflect.isExtensible(target) - Reflect.preventExtensions(target) - Reflect.getOwnPropertyDescriptor(target, name) From d4640a262d87c280547efaa540a64ddc77b6493b Mon Sep 17 00:00:00 2001 From: Owen <469564715@qq.com> Date: Mon, 23 May 2016 11:32:06 +0800 Subject: [PATCH 034/994] =?UTF-8?q?=E5=A2=9E=E5=8A=A0fibonacci=20=E5=B0=BE?= =?UTF-8?q?=E9=80=92=E5=BD=92=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 阮老师你好,阅读完您关于 尾递归这方面的研究书稿后,我自己使用了尾递归实现了计算fibonacci数列的方法,觉得比较有代表性 由非尾递归的fibonacci数列的 和 尾递归的fibonacci数列 比较,更加说明尾递归优化的重要性 此外fibonacci数列也是测试性能的常用算法 如果因为我的理解不深刻,浪费了老师宝贵时间,望老师见谅 --- docs/function.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/function.md b/docs/function.md index 41cdf03c7..f468571f8 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1195,6 +1195,37 @@ function factorial(n, total) { factorial(5, 1) // 120 ``` +还有一个比较著名的例子,就是计算fibonacci 数列,也能充分说明尾递归优化的重要性 + +如果是非尾递归的fibonacci 递归方法 + +```javascript +function Fibonacci (n) { + if ( n <= 1 ) {return 1}; + + return Fibonacci(n - 1) + Fibonacci(n - 2); +} + +Fibonacci(10); // 89 +// Fibonacci(100) +// Fibonacci(500) +// 堆栈溢出了 +``` + +如果我们使用尾递归优化过的fibonacci 递归算法 + +```javascript +function Fibonacci2 (n , ac1 = 1 , ac2 = 1) { + if( n <= 1 ) {return ac1}; + + return Fibonacci2 (n-1 , ac2 , ac1 + ac2); +} + +console.log(Fibonacci2(100)) // 354224848179262000000 +console.log(Fibonacci2(1000)) // 4.346655768693743e+208 +console.log(Fibonacci2(10000)) // Infinity +``` + 由此可见,“尾调用优化”对递归操作意义重大,所以一些函数式编程语言将其写入了语言规格。ES6也是如此,第一次明确规定,所有ECMAScript的实现,都必须部署“尾调用优化”。这就是说,在ES6中,只要使用尾递归,就不会发生栈溢出,相对节省内存。 ### 递归函数的改写 From 1e1ea908ffaf0b11229988c9ddd288e7e2511f0d Mon Sep 17 00:00:00 2001 From: Owen <469564715@qq.com> Date: Mon, 23 May 2016 11:35:13 +0800 Subject: [PATCH 035/994] Update function.md --- docs/function.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/function.md b/docs/function.md index f468571f8..63f0c4b8e 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1221,9 +1221,9 @@ function Fibonacci2 (n , ac1 = 1 , ac2 = 1) { return Fibonacci2 (n-1 , ac2 , ac1 + ac2); } -console.log(Fibonacci2(100)) // 354224848179262000000 -console.log(Fibonacci2(1000)) // 4.346655768693743e+208 -console.log(Fibonacci2(10000)) // Infinity +Fibonacci2(100) // 354224848179262000000 +Fibonacci2(1000) // 4.346655768693743e+208 +Fibonacci2(10000) // Infinity ``` 由此可见,“尾调用优化”对递归操作意义重大,所以一些函数式编程语言将其写入了语言规格。ES6也是如此,第一次明确规定,所有ECMAScript的实现,都必须部署“尾调用优化”。这就是说,在ES6中,只要使用尾递归,就不会发生栈溢出,相对节省内存。 From 9c5d80d3ffae025c01e4393fe67beddbfcb6bf23 Mon Sep 17 00:00:00 2001 From: Chuan Shao Date: Wed, 25 May 2016 10:11:44 +0800 Subject: [PATCH 036/994] fix bug to remove unnecessary preset --- docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro.md b/docs/intro.md index 3b42615a8..100faa333 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -395,7 +395,7 @@ $ npm install --save-dev babelify babel-preset-es2015 ```bash $ browserify script.js -o bundle.js \ - -t [ babelify --presets [ es2015 react ] ] + -t [ babelify --presets [ es2015 ] ] ``` 上面代码将ES6脚本`script.js`,转为`bundle.js`,浏览器直接加载后者就可以了。 From 106aed655381e51fe8947a43f5c022396db14c89 Mon Sep 17 00:00:00 2001 From: UFOwl Date: Sat, 28 May 2016 21:13:57 +0800 Subject: [PATCH 037/994] Update destructuring.md --- docs/destructuring.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index 5dc836cd6..c24941bc6 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -520,7 +520,7 @@ function f([(z)]) { return z; } ([a]) = [5]; ``` -上面代码将整个模式放在模式之中,导致报错。 +上面代码将整个模式放在圆括号之中,导致报错。 ```javascript // 报错 From 988364563937961a3108c6ffb65c76a3894c43b0 Mon Sep 17 00:00:00 2001 From: UFOwl Date: Sat, 28 May 2016 21:54:57 +0800 Subject: [PATCH 038/994] Update string.md --- docs/string.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/string.md b/docs/string.md index 6c2c4fd68..685a53fba 100644 --- a/docs/string.md +++ b/docs/string.md @@ -133,7 +133,7 @@ String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y' // true ``` -上面代码中,如果`String.fromCharCode`方法有多个参数,则它们会被合并成一个字符串返回。 +上面代码中,如果`String.fromCodePoint`方法有多个参数,则它们会被合并成一个字符串返回。 注意,`fromCodePoint`方法定义在`String`对象上,而`codePointAt`方法定义在字符串的实例对象上。 From 18b2f80f834ffad66f45cccd01093aa5076fe001 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 29 May 2016 10:07:42 +0800 Subject: [PATCH 039/994] =?UTF-8?q?docs(proxy):=20construct=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/number.md | 17 +++++++++++++++-- docs/proxy.md | 35 ++++++++++++++++++++++++----------- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/docs/number.md b/docs/number.md index 0abb98b21..a4a66d3c1 100644 --- a/docs/number.md +++ b/docs/number.md @@ -65,7 +65,7 @@ ES5可以通过下面的代码,部署`Number.isFinite`方法。 })(this); ``` -`Number.isNaN()`用来检查一个值是否为NaN。 +`Number.isNaN()`用来检查一个值是否为`NaN`。 ```javascript Number.isNaN(NaN) // true @@ -236,6 +236,8 @@ Number.MIN_SAFE_INTEGER === -9007199254740991 // true ``` +上面代码中,可以看到JavaScript能够精确表示的极限。 + `Number.isSafeInteger()`则是用来判断一个整数是否落在这个范围之内。 ```javascript @@ -256,7 +258,18 @@ Number.isSafeInteger(Number.MAX_SAFE_INTEGER) // true Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) // false ``` -注意,验证运算结果是否落在安全整数的范围时,不要只验证运算结果,而要同时验证参与运算的每个值。 +这个函数的实现很简单,就是跟安全整数的两个边界值比较一下。 + +```javascript +Number.isSafeInteger = function (n) { + return (typeof n === 'number' && + Math.round(n) === n && + Number.MIN_SAFE_INTEGER <= n && + n <= Number.MAX_SAFE_INTEGER); +} +``` + +实际使用这个函数时,需要注意。验证运算结果是否落在安全整数的范围内,不要只验证运算结果,而要同时验证参与运算的每个值。 ```javascript Number.isSafeInteger(9007199254740993) diff --git a/docs/proxy.md b/docs/proxy.md index a7c2d2818..bda6812d3 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -96,21 +96,29 @@ obj.time // 35 ```javascript var handler = { get: function(target, name) { - if (name === 'prototype') return Object.prototype; + if (name === 'prototype') { + return Object.prototype; + } return 'Hello, ' + name; }, - apply: function(target, thisBinding, args) { return args[0]; }, - construct: function(target, args) { return args[1]; } + + apply: function(target, thisBinding, args) { + return args[0]; + }, + + construct: function(target, args) { + return {value: args[1]}; + } }; var fproxy = new Proxy(function(x, y) { return x + y; }, handler); -fproxy(1,2); // 1 -new fproxy(1,2); // 2 -fproxy.prototype; // Object.prototype -fproxy.foo; // 'Hello, foo' +fproxy(1, 2) // 1 +new fproxy(1,2) // {value: 2} +fproxy.prototype === Object.prototype // true +fproxy.foo // "Hello, foo" ``` 下面是Proxy支持的拦截操作一览。 @@ -167,7 +175,7 @@ fproxy.foo; // 'Hello, foo' 拦截Proxy实例作为函数调用的操作,比如`proxy(...args)`、`proxy.call(object, ...args)`、`proxy.apply(...)`。 -**(13)construct(target, args, proxy)** +**(13)construct(target, args)** 拦截Proxy实例作为构造函数调用的操作,比如`new proxy(...args)`。 @@ -500,16 +508,21 @@ for (let b in oproxy2) { ### construct() -`construct`方法用于拦截`new`命令。 +`construct`方法用于拦截`new`命令,下面是拦截对象的写法。 ```javascript var handler = { - construct (target, args) { + construct (target, args, newTarget) { return new target(...args); } }; ``` +`construct`方法可以接受两个参数。 + +- `target`: 目标对象 +- `args`:构建函数的参数对象 + 下面是一个例子。 ```javascript @@ -525,7 +538,7 @@ new p(1).value // 10 ``` -如果`construct`方法返回的不是对象,就会抛出错误。 +如果`construct`方法返回的必须是一个对象,否则会报错。 ```javascript var p = new Proxy(function() {}, { From 9aca4ea3ae91895d6159e8af9ed118606b2dcd27 Mon Sep 17 00:00:00 2001 From: UFOwl Date: Mon, 30 May 2016 16:00:24 +0800 Subject: [PATCH 040/994] Update regex.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改了一个不太通顺的地方,但不影响理解,一峰大大看心情改 --- docs/regex.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/regex.md b/docs/regex.md index 5a66f1b36..04361d793 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -89,7 +89,7 @@ ES6新增了使用大括号表示Unicode字符,这种表示法在正则表达 **(3)量词** -使用`u`修饰符后,所有量词都会正确识别大于码点大于`0xFFFF`的Unicode字符。 +使用`u`修饰符后,所有量词都会正确识别码点大于`0xFFFF`的Unicode字符。 ```javascript /a{2}/.test('aa') // true From 399c635290b7907e4ce1411a300138c63da6fbe4 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 1 Jun 2016 12:47:11 +0800 Subject: [PATCH 041/994] docs: edit generator --- docs/generator.md | 14 ++++++++------ docs/string.md | 35 ++++++++++++++++++++++++----------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/docs/generator.md b/docs/generator.md index f2f76b22f..7983d08d9 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -1318,21 +1318,23 @@ function* f(){ }; ``` -上面代码使用Promise的函数库Q,yield语句返回的就是一个Promise对象。 +上面代码使用Promise的函数库`Q`,`yield`语句返回的就是一个Promise对象。 -多个任务按顺序一个接一个执行时,yield语句可以按顺序排列。多个任务需要并列执行时(比如只有A任务和B任务都执行完,才能执行C任务),可以采用数组的写法。 +如果`yield`语句后面的参数,是一个具有遍历器接口的对象,`yield`会遍历这个对象,再往下执行。这意味着, + +多个任务按顺序一个接一个执行时,`yield`语句可以按顺序排列。多个任务需要并列执行时(比如只有A任务和B任务都执行完,才能执行C任务),可以采用数组的写法。 ```javascript -function* parallelDownloads() { - let [text1,text2] = yield [ +function* parallelTasks() { + let [resultA, resultB] = yield [ taskA(), taskB() ]; - console.log(text1, text2); + console.log(resultA, resultB); } ``` -上面代码中,yield语句的参数是一个数组,成员就是两个任务taskA和taskB,只有等这两个任务都完成了,才会接着执行下面的语句。 +上面代码中,`yield`语句的参数是一个数组,成员就是两个任务taskA和taskB,只有等这两个任务都完成了,才会接着执行下面的语句。 ### (3)部署iterator接口 diff --git a/docs/string.md b/docs/string.md index 685a53fba..cb72cc153 100644 --- a/docs/string.md +++ b/docs/string.md @@ -354,18 +354,18 @@ ES7推出了字符串补全长度的功能。如果某个字符串不够指定 传统的JavaScript语言,输出模板通常是这样写的。 ```javascript -$("#result").append( - "There are " + basket.count + " " + - "items in your basket, " + - "" + basket.onSale + - " are on sale!" +$('#result').append( + 'There are ' + basket.count + ' ' + + 'items in your basket, ' + + '' + basket.onSale + + ' are on sale!' ); ``` 上面这种写法相当繁琐不方便,ES6引入了模板字符串解决这个问题。 ```javascript -$("#result").append(` +$('#result').append(` There are ${basket.count} items in your basket, ${basket.onSale} are on sale! @@ -390,7 +390,7 @@ var name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?` ``` -上面代码中的字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。 +上面代码中的模板字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。 ```javascript var greeting = `\`Yo\` World!`; @@ -399,13 +399,26 @@ var greeting = `\`Yo\` World!`; 如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。 ```javascript -$("#warning").html(` -

Watch out!

-

Unauthorized hockeying can result in penalties - of up to ${maxPenalty} minutes.

+$('#list').html(` +
    +
  • first
  • +
  • second
  • +
`); ``` +上面代码中,所有模板字符串的空格和换行,都是被保留的,比如`
    `标签前面会有一个换行。如果你不想要这个换行,可以使用`trim`方法消除它。 + + +```javascript +$('#list').html(` +
      +
    • first
    • +
    • second
    • +
    +`.trim()); +``` + 模板字符串中嵌入变量,需要将变量名写在`${}`之中。 ```javascript From 251552555a103678064b4b3b0e63999f6847465e Mon Sep 17 00:00:00 2001 From: Owen <469564715@qq.com> Date: Wed, 1 Jun 2016 21:12:39 +0800 Subject: [PATCH 042/994] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/class.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/class.md b/docs/class.md index 9e021e0a1..22f44464c 100644 --- a/docs/class.md +++ b/docs/class.md @@ -905,8 +905,7 @@ Foo.prop // 1 目前,只有这种写法可行,因为ES6明确规定,Class内部只有静态方法,没有静态属性。 ```javascript -// 以下两种写法都无效, -// 但不会报错 +// 以下两种写法都无效 class Foo { // 写法一 prop: 2 From d1983dc1a2c76ab56d00f6ee98bd527100367cfd Mon Sep 17 00:00:00 2001 From: UFOwl Date: Thu, 2 Jun 2016 01:31:21 +0800 Subject: [PATCH 043/994] Update object.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 小勘误 --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index 4678d356e..ffe22cff7 100644 --- a/docs/object.md +++ b/docs/object.md @@ -924,7 +924,7 @@ x.a.b // 2 上面代码中,`x`是Rest解构赋值所在的对象,拷贝了对象`obj`的`a`属性。`a`属性引用了一个对象,修改这个对象的值,会影响到Rest解构赋值对它的引用。 -另外,Rest解构赋不会拷贝继承自原型对象的属性。 +另外,Rest解构赋值不会拷贝继承自原型对象的属性。 ```javascript let o1 = { a: 1 }; From d5eeef139eb7d8716642181f4ba1c6c0f12284fd Mon Sep 17 00:00:00 2001 From: UFOwl Date: Fri, 3 Jun 2016 11:53:18 +0800 Subject: [PATCH 044/994] Update proxy.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 小勘误。 “而是”=>“还是” “如果”=>“” --- docs/proxy.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index bda6812d3..be626fc21 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -472,7 +472,7 @@ var p = new Proxy(obj, { 上面代码中,`obj`对象禁止扩展,结果使用`has`拦截就会报错。 -值得注意的是,`has`方法拦截的是`HasProperty`操作,而不是`HasOwnProperty`操作,即`has`方法不判断一个属性是对象自身的属性,而是继承的属性。由于`for...in`操作内部也会用到`HasProperty`操作,所以`has`方法在`for...in`循环时也会生效。 +值得注意的是,`has`方法拦截的是`HasProperty`操作,而不是`HasOwnProperty`操作,即`has`方法不判断一个属性是对象自身的属性,还是继承的属性。由于`for...in`操作内部也会用到`HasProperty`操作,所以`has`方法在`for...in`循环时也会生效。 ```javascript let stu1 = {name: 'Owen', score: 59}; @@ -538,7 +538,7 @@ new p(1).value // 10 ``` -如果`construct`方法返回的必须是一个对象,否则会报错。 +`construct`方法返回的必须是一个对象,否则会报错。 ```javascript var p = new Proxy(function() {}, { From b9bde6c178b7f4e2a4cc070d13c975ffae446847 Mon Sep 17 00:00:00 2001 From: Chuan Shao Date: Mon, 6 Jun 2016 07:24:13 +0800 Subject: [PATCH 045/994] remove unnecessary usage of Symbol.for --- docs/symbol.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/symbol.md b/docs/symbol.md index 98a0def11..1096bc3aa 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -246,7 +246,7 @@ Symbol作为属性名,该属性不会出现在`for...in`、`for...of`循环中 ```javascript var obj = {}; var a = Symbol('a'); -var b = Symbol.for('b'); +var b = Symbol('b'); obj[a] = 'Hello'; obj[b] = 'World'; From 562b0b5e07b52338a989f53a66951524cc81bff4 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 7 Jun 2016 09:50:52 +0800 Subject: [PATCH 046/994] =?UTF-8?q?fix(iterator):=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/iterator.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/iterator.md b/docs/iterator.md index 9f4bcd655..5c2d623a3 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -181,10 +181,9 @@ Obj.prototype[Symbol.iterator] = function() { function next() { if (current) { var value = current.value; - var done = current.next === null; current = current.next; return { - done: done, + done: false, value: value }; } else { From 571088b40d49ee765eeb743322b438b708a4b81e Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 7 Jun 2016 17:14:39 +0800 Subject: [PATCH 047/994] =?UTF-8?q?docs(async):=20async=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E7=9A=84=E8=AF=AD=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/async.md | 129 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 124 insertions(+), 5 deletions(-) diff --git a/docs/async.md b/docs/async.md index 246d091ba..0c9bdce6c 100644 --- a/docs/async.md +++ b/docs/async.md @@ -727,9 +727,9 @@ ES7提供了`async`函数,使得异步操作变得更加方便。`async`函数 ```javascript var fs = require('fs'); -var readFile = function (fileName){ - return new Promise(function (resolve, reject){ - fs.readFile(fileName, function(error, data){ +var readFile = function (fileName) { + return new Promise(function (resolve, reject) { + fs.readFile(fileName, function(error, data) { if (error) reject(error); resolve(data); }); @@ -775,9 +775,42 @@ var result = asyncReadFile(); 进一步说,`async`函数完全可以看作多个异步操作,包装成的一个Promise对象,而`await`命令就是内部`then`命令的语法糖。 -正常情况下,`await`命令后面是一个Promise对象,否则会被转成Promise。 +### 语法 + +`async`函数的语法规则总体上比较简单,难点是错误处理机制。 + +(1)`async`函数返回一个Promise对象。 + +`async`函数内部`return`语句返回的值,会成为`then`方法回调函数的参数。 + +```javascript +async function f() { + return 'hello world'; +} + +f().then(v => console.log(v)) +// "hello world" +``` + +上面代码中,函数`f`内部`return`命令返回的值,会被`then`方法回调函数接收到。 + +`async`函数内部抛出错误,会导致返回的Promise对象变为`reject`状态。抛出的错误对象会被`catch`方法回调函数接收到。 + +```javascript +async function f() { + throw new Error('出错了'); +} + +f().then( + v => console.log(v), + e => console.log(e) +) +// Error: 出错了 +``` + +(2)`async`函数返回的Promise对象,必须等到内部所有`await`命令的Promise对象执行完,才会发生状态改变。也就是说,只有`async`函数内部的异步操作执行完,才会执行`then`方法指定的回调函数。 -下面是一个完整的例子。 +下面是一个例子。 ```javascript async function getTitle(url) { @@ -789,6 +822,92 @@ getTitle('https://tc39.github.io/ecma262/').then(console.log) // "ECMAScript 2017 Language Specification" ``` +(3)正常情况下,`await`命令后面是一个Promise对象。如果不是,会被转成一个立即`resolve`的Promise对象。 + +```javascript +async function f() { + return await 123; +} + +f().then(v => console.log(v)) +// 123 +``` + +上面代码中,`await`命令的参数是数值`123`,它被转成Promise对象,并立即`resolve`。 + +`await`命令后面的Promise对象如果变为`reject`状态,则`reject`的参数会被`catch`方法的回调函数接收到。 + +```javascript +async function f() { + await Promise.reject('出错了'); +} + +f() +.then(v => console.log(v)) +.catch(e => console.log(e)) +// 出错了 +``` + +注意,上面代码中,`await`语句前面没有`return`,但是`reject`方法的参数依然传入了`catch`方法的回调函数。这里如果在`await`前面加上`return`,效果是一样的。 + +只要一个`await`语句后面的Promise变为`reject`,那么整个`async`函数都会中断执行。 + +```javascript +async function f() { + await Promise.reject('出错了'); + await Promise.resolve('hello world'); // 不会执行 +} +``` + +上面代码中,第二个`await`语句是不会执行的,因为第一个`await`语句状态变成了`reject`。 + +为了避免这个问题,可以将第一个`await`放在`try...catch`结构里面,这样第二个`await`就会执行。 + +```javascript +async function f() { + try { + await Promise.reject('出错了'); + } catch(e) { + } + return await Promise.resolve('hello world'); +} + +f() +.then(v => console.log(v)) +// hello world +``` + +(4)如果`await`后面的异步操作出错,那么等同于`async`函数返回的Promise对象被`reject`。 + +```javascript +async function f() { + await new Promise(function (resolve, reject) { + throw new Error('出错了'); + }); +} + +f() +.then(v => console.log(v)) +.catch(e => console.log(e)) +// Error:出错了 +``` + +上面代码中,`async`函数`f`执行后,`await`后面的Promise对象会抛出一个错误对象,导致`catch`方法的回调函数被调用,它的参数就是抛出的错误对象。具体的执行机制,可以参考后文的“async函数的实现”。 + +防止出错的方法,也是将其放在`try...catch`代码块之中。 + +```javascript +async function f() { + try { + await new Promise(function (resolve, reject) { + throw new Error('出错了'); + }); + } catch(e) { + } + return await('hello world'); +} +``` + ### async函数的实现 async 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里。 From 36edba382db5f80b216e579e63c0f8879145199c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 8 Jun 2016 09:02:42 +0800 Subject: [PATCH 048/994] =?UTF-8?q?docs(async):=20async=20=E8=AF=AD?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/async.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/async.md b/docs/async.md index 0c9bdce6c..de798092d 100644 --- a/docs/async.md +++ b/docs/async.md @@ -877,6 +877,21 @@ f() // hello world ``` +另一种方法是`await`后面的Promise对象再跟一个`catch`方面,处理前面可能出现的错误。 + +```javascript +async function f() { + await Promise.reject('出错了') + .catch(e => console.log(e)); + return await Promise.resolve('hello world'); +} + +f() +.then(v => console.log(v)) +// 出错了 +// hello world +``` + (4)如果`await`后面的异步操作出错,那么等同于`async`函数返回的Promise对象被`reject`。 ```javascript From 6c8f03eef905943bd5a18b389b41f01069f36b17 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 8 Jun 2016 14:01:03 +0800 Subject: [PATCH 049/994] docs(object): delete Reflect.enumerate --- docs/object.md | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/docs/object.md b/docs/object.md index ffe22cff7..292adcdb4 100644 --- a/docs/object.md +++ b/docs/object.md @@ -543,27 +543,26 @@ function processContent(options) { ```javascript let obj = { foo: 123 }; - Object.getOwnPropertyDescriptor(obj, 'foo') - // { value: 123, - // writable: true, - // enumerable: true, - // configurable: true } +Object.getOwnPropertyDescriptor(obj, 'foo') +// { +// value: 123, +// writable: true, +// enumerable: true, +// configurable: true +// } ``` 描述对象的`enumerable`属性,称为”可枚举性“,如果该属性为`false`,就表示某些操作会忽略当前属性。 ES5有三个操作会忽略`enumerable`为`false`的属性。 -- for...in 循环:只遍历对象自身的和继承的可枚举的属性 -- Object.keys():返回对象自身的所有可枚举的属性的键名 -- JSON.stringify():只串行化对象自身的可枚举的属性 +- `for...in`循环:只遍历对象自身的和继承的可枚举的属性 +- `Object.keys()`:返回对象自身的所有可枚举的属性的键名 +- `JSON.stringify()`:只串行化对象自身的可枚举的属性 -ES6新增了两个操作,会忽略`enumerable`为`false`的属性。 +ES6新增了一个操作`Object.assign()`,会忽略`enumerable`为`false`的属性,只拷贝对象自身的可枚举的属性。 -- Object.assign():只拷贝对象自身的可枚举的属性 -- Reflect.enumerate():返回所有`for...in`循环会遍历的属性 - -这五个操作之中,只有`for...in`和`Reflect.enumerate()`会返回继承的属性。实际上,引入`enumerable`的最初目的,就是让某些属性可以规避掉`for...in`操作。比如,对象原型的`toString`方法,以及数组的`length`属性,就通过这种手段,不会被`for...in`遍历到。 +这四个操作之中,只有`for...in`会返回继承的属性。实际上,引入`enumerable`的最初目的,就是让某些属性可以规避掉`for...in`操作。比如,对象原型的`toString`方法,以及数组的`length`属性,就通过这种手段,不会被`for...in`遍历到。 ```javascript Object.getOwnPropertyDescriptor(Object.prototype, 'toString').enumerable @@ -573,6 +572,8 @@ Object.getOwnPropertyDescriptor([], 'length').enumerable // false ``` +上面代码中,`toString`和`length`属性的`enumerable`都是`false`,因此`for...in`不会遍历到这两个继承自原型的属性。 + 另外,ES6规定,所有Class的原型的方法都是不可枚举的。 ```javascript @@ -584,7 +585,7 @@ Object.getOwnPropertyDescriptor(class {foo() {}}.prototype, 'foo').enumerable ## 属性的遍历 -ES6一共有6种方法可以遍历对象的属性。 +ES6一共有5种方法可以遍历对象的属性。 **(1)for...in** @@ -606,11 +607,7 @@ ES6一共有6种方法可以遍历对象的属性。 `Reflect.ownKeys`返回一个数组,包含对象自身的所有属性,不管是属性名是Symbol或字符串,也不管是否可枚举。 -**(6)Reflect.enumerate(obj)** - -`Reflect.enumerate`返回一个Iterator对象,遍历对象自身的和继承的所有可枚举属性(不含Symbol属性),与`for...in`循环相同。 - -以上的6种方法遍历对象的属性,都遵守同样的属性遍历的次序规则。 +以上的5种方法遍历对象的属性,都遵守同样的属性遍历的次序规则。 - 首先遍历所有属性名为数值的属性,按照数字排序。 - 其次遍历所有属性名为字符串的属性,按照生成时间排序。 From 2755c1809db6fb6675a54e7668794357b40a1245 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 11 Jun 2016 20:38:39 +0800 Subject: [PATCH 050/994] =?UTF-8?q?docs(module):=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E7=9A=84=E6=A8=A1=E5=9D=97=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/module.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/module.md b/docs/module.md index 3b44a96db..b61ad777d 100644 --- a/docs/module.md +++ b/docs/module.md @@ -36,6 +36,16 @@ import { stat, exists, readFile } from 'fs'; - 将来浏览器的新API就能用模块格式提供,不再必要做成全局变量或者`navigator`对象的属性。 - 不再需要对象作为命名空间(比如`Math`对象),未来这些功能可以通过模块提供。 +浏览器使用ES6模块的语法如下。 + +```html + +``` + +上面代码在网页中插入一个模块`foo.js`,由于`type`属性设为`module`,所以浏览器知道这是一个ES6模块。 + +Node的默认模块格式是CommonJS,目前还没决定怎么支持ES6模块。所以,只能通过Babel这样的转码器,在Node里面使用ES6模块。 + ## 严格模式 ES6的模块自动采用严格模式,不管你有没有在模块头部加上`"use strict";`。 From 96dfa3b858db70918dfa88e6fb03d5cf2f851a5f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 12 Jun 2016 06:21:58 +0800 Subject: [PATCH 051/994] docs(promise): edit Promise.resolve() --- docs/async.md | 20 +++++++++++++++++++- docs/promise.md | 28 +++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/docs/async.md b/docs/async.md index de798092d..44f0e29f7 100644 --- a/docs/async.md +++ b/docs/async.md @@ -892,6 +892,23 @@ f() // hello world ``` +如果有多个`await`命令,可以统一放在`try...catch`结构中。 + +```javascript +async function main() { + try { + var val1 = await firstStep(); + var val2 = await secondStep(val1); + var val3 = await thirdStep(val1, val2); + + console.log('Final: ', val3); + } + catch (err) { + console.error(err); + } +} +``` + (4)如果`await`后面的异步操作出错,那么等同于`async`函数返回的Promise对象被`reject`。 ```javascript @@ -1042,7 +1059,8 @@ async function myFunction() { // 另一种写法 async function myFunction() { - await somethingThatReturnsAPromise().catch(function (err){ + await somethingThatReturnsAPromise() + .catch(function (err) { console.log(err); }; } diff --git a/docs/promise.md b/docs/promise.md index c468a14e5..7d4fec272 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -40,7 +40,7 @@ Promise构造函数接受一个函数作为参数,该函数的两个参数分 `resolve`函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从Pending变为Resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;`reject`函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从Pending变为Rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。 -Promise实例生成以后,可以用then方法分别指定Resolved状态和Reject状态的回调函数。 +Promise实例生成以后,可以用`then`方法分别指定`Resolved`状态和`Reject`状态的回调函数。 ```javascript promise.then(function(value) { @@ -109,6 +109,8 @@ function loadImageAsync(url) { } ``` +上面代码中,使用Promise包装了一个图片加载的异步操作。如果加载成功,就调用`resolve`方法,否则就调用`reject`方法。 + 下面是一个用Promise对象实现的Ajax操作的例子。 ```javascript @@ -148,11 +150,11 @@ getJSON("/posts.json").then(function(json) { 如果调用`resolve`函数和`reject`函数时带有参数,那么它们的参数会被传递给回调函数。`reject`函数的参数通常是Error对象的实例,表示抛出的错误;`resolve`函数的参数除了正常的值以外,还可能是另一个Promise实例,表示异步操作的结果有可能是一个值,也有可能是另一个异步操作,比如像下面这样。 ```javascript -var p1 = new Promise(function(resolve, reject){ +var p1 = new Promise(function (resolve, reject) { // ... }); -var p2 = new Promise(function(resolve, reject){ +var p2 = new Promise(function (resolve, reject) { // ... resolve(p1); }) @@ -611,6 +613,26 @@ p.then(function () { 上面代码的变量`p`就是一个Promise对象。 +需要注意的是,立即`resolve`的Promise对象,是在本轮“事件循环”(event loop)的结束时,而不是在下一轮“事件循环”的开始时。 + +```javascript +setTimeout(function () { + console.log('three'); +}, 0); + +Promise.resolve().then(function () { + console.log('two'); +}); + +console.log('one'); + +// one +// two +// three +``` + +上面代码中,`setTimeout(fn, 0)`在下一轮“事件循环”开始时执行,`Promise.resolve()`在本轮“事件循环”结束时执行,`console.log(’one‘)`则是立即执行,因此最先输出。 + ## Promise.reject() `Promise.reject(reason)`方法也会返回一个新的Promise实例,该实例的状态为`rejected`。它的参数用法与`Promise.resolve`方法完全一致。 From 5e0525be3553cd123797bd3ff349ed1ca84bef6f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 13 Jun 2016 08:18:45 +0800 Subject: [PATCH 052/994] =?UTF-8?q?docs(set):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=81=8D=E5=8E=86=E9=A1=BA=E5=BA=8F=E7=9A=84=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/set-map.md | 80 +++++++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/docs/set-map.md b/docs/set-map.md index c128345d3..ddebf3107 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -157,11 +157,15 @@ dedupe([1, 1, 2, 3]) // [1, 2, 3] Set结构的实例有四个遍历方法,可以用于遍历成员。 -- `keys()`:返回一个键名的遍历器 -- `values()`:返回一个键值的遍历器 -- `entries()`:返回一个键值对的遍历器 +- `keys()`:返回键名的遍历器 +- `values()`:返回键值的遍历器 +- `entries()`:返回键值对的遍历器 - `forEach()`:使用回调函数遍历每个成员 +需要特别指出的是,`Set`的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用Set保存一个回调函数列表,调用时就能保证按照添加顺序调用。 + +**(1)`keys()`,`values()`,`entries()`** + `key`方法、`value`方法、`entries`方法返回的都是遍历器对象(详见《Iterator对象》一章)。由于Set结构没有键名,只有键值(或者说键名和键值是同一个值),所以`key`方法和`value`方法的行为完全一致。 ```javascript @@ -211,7 +215,23 @@ for (let x of set) { // blue ``` -由于扩展运算符(`...`)内部使用`for...of`循环,所以也可以用于Set结构。 +**(2)`forEach()`** + +Set结构的实例的`forEach`方法,用于对每个成员执行某种操作,没有返回值。 + +```javascript +let set = new Set([1, 2, 3]); +set.forEach((value, key) => console.log(value * 2) ) +// 2 +// 4 +// 6 +``` + +上面代码说明,`forEach`方法的参数就是一个处理函数。该函数的参数依次为键值、键名、集合本身(上例省略了该参数)。另外,`forEach`方法还可以有第二个参数,表示绑定的this对象。 + +**(3)遍历的应用** + +扩展运算符(`...`)内部使用`for...of`循环,所以也可以用于Set结构。 ```javascript let set = new Set(['red', 'green', 'blue']); @@ -239,7 +259,7 @@ set = new Set([...set].filter(x => (x % 2) == 0)); // 返回Set结构:{2, 4} ``` -因此使用Set,可以很容易地实现并集(Union)、交集(Intersect)和差集(Difference)。 +因此使用Set可以很容易地实现并集(Union)、交集(Intersect)和差集(Difference)。 ```javascript let a = new Set([1, 2, 3]); @@ -258,19 +278,7 @@ let difference = new Set([...a].filter(x => !b.has(x))); // [1] ``` -Set结构的实例的`forEach`方法,用于对每个成员执行某种操作,没有返回值。 - -```javascript -let set = new Set([1, 2, 3]); -set.forEach((value, key) => console.log(value * 2) ) -// 2 -// 4 -// 6 -``` - -上面代码说明,`forEach`方法的参数就是一个处理函数。该函数的参数依次为键值、键名、集合本身(上例省略了该参数)。另外,`forEach`方法还可以有第二个参数,表示绑定的this对象。 - -如果想在遍历操作中,同步改变原来的Set结构,目前没有直接的方法,但有两种变通方法。一种是利用原Set结构映射出一个新的结构,然后赋值给原来的Set结构;另一种是利用Array.from方法。 +如果想在遍历操作中,同步改变原来的Set结构,目前没有直接的方法,但有两种变通方法。一种是利用原Set结构映射出一个新的结构,然后赋值给原来的Set结构;另一种是利用`Array.from`方法。 ```javascript // 方法一 @@ -398,7 +406,7 @@ data[element] = metadata; data["[Object HTMLDivElement]"] // metadata ``` -上面代码原意是将一个DOM节点作为对象data的键,但是由于对象只接受字符串作为键名,所以element被自动转为字符串`[Object HTMLDivElement]`。 +上面代码原意是将一个DOM节点作为对象data的键,但是由于对象只接受字符串作为键名,所以`element`被自动转为字符串`[Object HTMLDivElement]`。 为了解决这个问题,ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。 @@ -414,18 +422,18 @@ m.delete(o) // true m.has(o) // false ``` -上面代码使用set方法,将对象o当作m的一个键,然后又使用get方法读取这个键,接着使用delete方法删除了这个键。 +上面代码使用`set`方法,将对象`o`当作m的一个键,然后又使用`get`方法读取这个键,接着使用`delete`方法删除了这个键。 作为构造函数,Map也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。 ```javascript -var map = new Map([["name", "张三"], ["title", "Author"]]); +var map = new Map([['name', '张三'], ['title', 'Author']]); map.size // 2 -map.has("name") // true -map.get("name") // "张三" -map.has("title") // true -map.get("title") // "Author" +map.has('name') // true +map.get('name') // "张三" +map.has('title') // true +map.get('title') // "Author" ``` 上面代码在新建Map实例时,就指定了两个键`name`和`title`。 @@ -434,8 +442,8 @@ Map构造函数接受数组作为参数,实际上执行的是下面的算法 ```javascript var items = [ - ["name", "张三"], - ["title", "Author"] + ['name', '张三'], + ['title', 'Author'] ]; var map = new Map(); items.forEach(([key, value]) => map.set(key, value)); @@ -602,10 +610,12 @@ map.size // 0 Map原生提供三个遍历器生成函数和一个遍历方法。 -- keys():返回键名的遍历器。 -- values():返回键值的遍历器。 -- entries():返回所有成员的遍历器。 -- forEach():遍历Map的所有成员。 +- `keys()`:返回键名的遍历器。 +- `values()`:返回键值的遍历器。 +- `entries()`:返回所有成员的遍历器。 +- `forEach()`:遍历Map的所有成员。 + +需要特别注意的是,Map的遍历顺序就是插入顺序。 下面是使用实例。 @@ -651,7 +661,7 @@ map[Symbol.iterator] === map.entries // true ``` -Map结构转为数组结构,比较快速的方法是结合使用扩展运算符(...)。 +Map结构转为数组结构,比较快速的方法是结合使用扩展运算符(`...`)。 ```javascript let map = new Map([ @@ -673,7 +683,7 @@ let map = new Map([ // [[1,'one'], [2, 'two'], [3, 'three']] ``` -结合数组的map方法、filter方法,可以实现Map的遍历和过滤(Map本身没有map和filter方法)。 +结合数组的`map`方法、`filter`方法,可以实现Map的遍历和过滤(Map本身没有`map`和`filter`方法)。 ```javascript let map0 = new Map() @@ -692,7 +702,7 @@ let map2 = new Map( // 产生Map结构 {2 => '_a', 4 => '_b', 6 => '_c'} ``` -此外,Map还有一个forEach方法,与数组的forEach方法类似,也可以实现遍历。 +此外,Map还有一个`forEach`方法,与数组的`forEach`方法类似,也可以实现遍历。 ```javascript map.forEach(function(value, key, map)) { @@ -700,7 +710,7 @@ map.forEach(function(value, key, map)) { }; ``` -forEach方法还可以接受第二个参数,用来绑定this。 +`forEach`方法还可以接受第二个参数,用来绑定`this`。 ```javascript var reporter = { From a719f83d4e73762a579d0585a9146b1481ec6719 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 14 Jun 2016 11:46:10 +0800 Subject: [PATCH 053/994] =?UTF-8?q?fix:=20=E8=AF=AF=E6=B7=BB=E5=8A=A0npm-d?= =?UTF-8?q?ebug.log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + npm-debug.log | 18695 ------------------------------------------------ 2 files changed, 1 insertion(+), 18695 deletions(-) create mode 100644 .gitignore delete mode 100644 npm-debug.log diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c8f50f7cd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +npm-debug.log diff --git a/npm-debug.log b/npm-debug.log deleted file mode 100644 index f0c6b5515..000000000 --- a/npm-debug.log +++ /dev/null @@ -1,18695 +0,0 @@ -2001 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter -2002 verbose tar unpack /home/ruanyf/.tnpm/lazystream/1.0.0/package.tgz -2003 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream -2004 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream is being purged -2005 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream -2006 verbose tar unpack /home/ruanyf/.tnpm/is-valid-glob/0.3.0/package.tgz -2007 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob -2008 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob is being purged -2009 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob -2010 verbose tar unpack /home/ruanyf/.tnpm/strip-bom-stream/1.0.0/package.tgz -2011 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream -2012 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream is being purged -2013 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream -2014 verbose tar unpack /home/ruanyf/.tnpm/vali-date/1.0.0/package.tgz -2015 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date -2016 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date is being purged -2017 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date -2018 verbose tar unpack /home/ruanyf/.tnpm/duplexify/3.4.3/package.tgz -2019 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify -2020 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify is being purged -2021 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify -2022 verbose tar unpack /home/ruanyf/.tnpm/strip-bom/2.0.0/package.tgz -2023 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom -2024 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom is being purged -2025 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom -2026 verbose tar unpack /home/ruanyf/.tnpm/glob-stream/5.3.2/package.tgz -2027 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -2028 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream is being purged -2029 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -2030 verbose tar unpack /home/ruanyf/.tnpm/object-assign/4.1.0/package.tgz -2031 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign -2032 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign is being purged -2033 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign -2034 verbose tar unpack /home/ruanyf/.tnpm/graceful-fs/4.1.4/package.tgz -2035 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs -2036 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs is being purged -2037 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs -2038 verbose tar unpack /home/ruanyf/.tnpm/vinyl/1.1.1/package.tgz -2039 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl -2040 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl is being purged -2041 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl -2042 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp is being purged from base /home/ruanyf/npm-global -2043 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp -2044 verbose tar unpack /home/ruanyf/.tnpm/merge-stream/1.0.0/package.tgz -2045 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream -2046 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream is being purged -2047 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream -2048 verbose tar unpack /home/ruanyf/.tnpm/lodash.isequal/4.2.0/package.tgz -2049 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal -2050 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal is being purged -2051 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal -2052 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream is being purged from base /home/ruanyf/npm-global -2053 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -2054 silly gunzTarPerm modes [ '755', '644' ] -2055 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps is being purged from base /home/ruanyf/npm-global -2056 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps -2057 silly gunzTarPerm modes [ '755', '644' ] -2058 silly gunzTarPerm modes [ '755', '644' ] -2059 silly gunzTarPerm modes [ '755', '644' ] -2060 silly gunzTarPerm modes [ '755', '644' ] -2061 silly gunzTarPerm modes [ '755', '644' ] -2062 silly gunzTarPerm modes [ '755', '644' ] -2063 silly gunzTarPerm modes [ '755', '644' ] -2064 silly gunzTarPerm modes [ '755', '644' ] -2065 silly gunzTarPerm modes [ '755', '644' ] -2066 silly gunzTarPerm modes [ '755', '644' ] -2067 verbose tar unpack /home/ruanyf/.tnpm/mkdirp/0.5.1/package.tgz -2068 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp -2069 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp is being purged -2070 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp -2071 silly gunzTarPerm modes [ '755', '644' ] -2072 silly gunzTarPerm modes [ '755', '644' ] -2073 verbose tar unpack /home/ruanyf/.tnpm/readable-stream/2.1.4/package.tgz -2074 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -2075 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream is being purged -2076 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -2077 verbose tar unpack /home/ruanyf/.tnpm/gulp-sourcemaps/1.6.0/package.tgz -2078 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps -2079 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps is being purged -2080 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps -2081 silly gunzTarPerm modes [ '755', '644' ] -2082 silly gunzTarPerm modes [ '755', '644' ] -2083 silly gunzTarPerm modes [ '755', '644' ] -2084 http 304 http://registry.npm.alibaba-inc.com/rx -2085 verbose headers { server: 'Tengine', -2085 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2085 verbose headers connection: 'keep-alive', -2085 verbose headers etag: '"2e175-WOOVUqCwxwLEoq2lIWlqUQ"', -2085 verbose headers 'x-readtime': '223' } -2086 silly get cb [ 304, -2086 silly get { server: 'Tengine', -2086 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2086 silly get connection: 'keep-alive', -2086 silly get etag: '"2e175-WOOVUqCwxwLEoq2lIWlqUQ"', -2086 silly get 'x-readtime': '223' } ] -2087 verbose etag http://registry.npm.alibaba-inc.com/rx from cache -2088 verbose get saving rx to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/rx/.cache.json -2089 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2090 silly gunzTarPerm extractEntry package.json -2091 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] -2092 silly gunzTarPerm extractEntry package.json -2093 silly gunzTarPerm extractEntry package.json -2094 silly gunzTarPerm extractEntry package.json -2095 silly gunzTarPerm extractEntry package.json -2096 silly gunzTarPerm extractEntry package.json -2097 silly gunzTarPerm extractEntry package.json -2098 silly gunzTarPerm extractEntry package.json -2099 silly gunzTarPerm extractEntry package.json -2100 silly gunzTarPerm extractEntry package.json -2101 silly gunzTarPerm extractEntry package.json -2102 silly gunzTarPerm extractEntry package.json -2103 silly gunzTarPerm extractEntry package.json -2104 silly gunzTarPerm extractEntry package.json -2105 silly gunzTarPerm extractEntry package.json -2106 silly gunzTarPerm extractEntry package.json -2107 silly gunzTarPerm extractEntry README.md -2108 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] -2109 silly gunzTarPerm extractEntry index.js -2110 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ] -2111 silly gunzTarPerm extractEntry .npmignore -2112 silly gunzTarPerm extractEntry README.md -2113 silly gunzTarPerm extractEntry README.md -2114 silly gunzTarPerm extractEntry LICENSE -2115 silly gunzTarPerm extractEntry index.js -2116 silly gunzTarPerm extractEntry license -2117 silly gunzTarPerm extractEntry .npmignore -2118 silly gunzTarPerm extractEntry README.md -2119 silly gunzTarPerm extractEntry index.js -2120 silly gunzTarPerm extractEntry license -2121 silly gunzTarPerm extractEntry index.js -2122 silly gunzTarPerm extractEntry license -2123 silly gunzTarPerm extractEntry README.md -2124 silly gunzTarPerm extractEntry LICENSE -2125 silly gunzTarPerm extractEntry README.md -2126 silly gunzTarPerm extractEntry LICENSE -2127 silly gunzTarPerm extractEntry index.js -2128 silly gunzTarPerm extractEntry license -2129 silly gunzTarPerm extractEntry README.md -2130 silly gunzTarPerm extractEntry LICENSE -2131 silly gunzTarPerm extractEntry README.md -2132 silly gunzTarPerm extractEntry index.js -2133 silly gunzTarPerm extractEntry README.md -2134 silly gunzTarPerm extractEntry LICENSE -2135 silly gunzTarPerm extractEntry LICENSE -2136 silly gunzTarPerm extractEntry index.js -2137 silly gunzTarPerm extractEntry .npmignore -2138 silly gunzTarPerm extractEntry README.md -2139 silly addNameRange number 2 { name: 'rx', range: '>=4.1.0 <5.0.0', hasData: true } -2140 silly addNameRange versions [ 'rx', -2140 silly addNameRange [ '4.1.0', -2140 silly addNameRange '4.0.8', -2140 silly addNameRange '4.0.7', -2140 silly addNameRange '4.0.6', -2140 silly addNameRange '4.0.5', -2140 silly addNameRange '4.0.4', -2140 silly addNameRange '4.0.3', -2140 silly addNameRange '4.0.2', -2140 silly addNameRange '4.0.1', -2140 silly addNameRange '4.0.0', -2140 silly addNameRange '3.1.2', -2140 silly addNameRange '3.1.1', -2140 silly addNameRange '3.1.0', -2140 silly addNameRange '3.0.1', -2140 silly addNameRange '3.0.0', -2140 silly addNameRange '2.5.3', -2140 silly addNameRange '2.5.2', -2140 silly addNameRange '2.5.1', -2140 silly addNameRange '2.5.0', -2140 silly addNameRange '2.4.10', -2140 silly addNameRange '2.4.9', -2140 silly addNameRange '2.4.8', -2140 silly addNameRange '2.4.7', -2140 silly addNameRange '2.4.6', -2140 silly addNameRange '2.4.5', -2140 silly addNameRange '2.4.3', -2140 silly addNameRange '2.4.1', -2140 silly addNameRange '2.4.0', -2140 silly addNameRange '2.3.25', -2140 silly addNameRange '2.3.24', -2140 silly addNameRange '2.3.23', -2140 silly addNameRange '2.3.22', -2140 silly addNameRange '2.3.20', -2140 silly addNameRange '2.3.19', -2140 silly addNameRange '2.3.18', -2140 silly addNameRange '2.3.17', -2140 silly addNameRange '2.3.16', -2140 silly addNameRange '2.3.14', -2140 silly addNameRange '2.3.13', -2140 silly addNameRange '2.3.12', -2140 silly addNameRange '2.3.11', -2140 silly addNameRange '2.3.10', -2140 silly addNameRange '2.3.9', -2140 silly addNameRange '2.3.8', -2140 silly addNameRange '2.3.7', -2140 silly addNameRange '2.3.6', -2140 silly addNameRange '2.3.5', -2140 silly addNameRange '2.3.4', -2140 silly addNameRange '2.3.3', -2140 silly addNameRange '2.3.2', -2140 silly addNameRange '2.3.1', -2140 silly addNameRange '2.3.0', -2140 silly addNameRange '2.2.28', -2140 silly addNameRange '2.2.27', -2140 silly addNameRange '2.2.26', -2140 silly addNameRange '2.2.25', -2140 silly addNameRange '2.2.24', -2140 silly addNameRange '2.2.22', -2140 silly addNameRange '2.2.21', -2140 silly addNameRange '2.2.20', -2140 silly addNameRange '2.2.19', -2140 silly addNameRange '2.2.18', -2140 silly addNameRange '2.2.17', -2140 silly addNameRange '2.2.16', -2140 silly addNameRange '2.2.15', -2140 silly addNameRange '2.2.14', -2140 silly addNameRange '2.2.13', -2140 silly addNameRange '2.2.12', -2140 silly addNameRange '2.2.10', -2140 silly addNameRange '2.2.9', -2140 silly addNameRange '2.2.8', -2140 silly addNameRange '2.2.7', -2140 silly addNameRange '2.2.5', -2140 silly addNameRange '2.2.4', -2140 silly addNameRange '2.2.3', -2140 silly addNameRange '2.2.2', -2140 silly addNameRange '2.2.0', -2140 silly addNameRange '2.1.21', -2140 silly addNameRange '2.1.20', -2140 silly addNameRange '2.1.18', -2140 silly addNameRange '2.1.17', -2140 silly addNameRange '2.1.16', -2140 silly addNameRange '2.1.15', -2140 silly addNameRange '2.1.14', -2140 silly addNameRange '2.1.13', -2140 silly addNameRange '2.1.12', -2140 silly addNameRange '2.1.11', -2140 silly addNameRange '2.1.10', -2140 silly addNameRange '2.1.9', -2140 silly addNameRange '2.1.8', -2140 silly addNameRange '2.1.7', -2140 silly addNameRange '2.1.6', -2140 silly addNameRange '2.1.5', -2140 silly addNameRange '2.1.4', -2140 silly addNameRange '2.1.3', -2140 silly addNameRange '2.1.2', -2140 silly addNameRange '2.1.1', -2140 silly addNameRange '2.1.0', -2140 silly addNameRange '2.0.2', -2140 silly addNameRange '2.0.1', -2140 silly addNameRange '2.0.0', -2140 silly addNameRange '0.0.2', -2140 silly addNameRange '0.0.1' ] ] -2141 silly addNamed rx@4.1.0 -2142 verbose addNamed "4.1.0" is a plain semver version for rx -2143 silly gunzTarPerm extractEntry README.md -2144 silly gunzTarPerm extractEntry index.js -2145 silly cache afterAdd rx@4.1.0 -2146 verbose afterAdd /home/ruanyf/.tnpm/rx/4.1.0/package/package.json not in flight; writing -2147 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2148 silly gunzTarPerm extractEntry .travis.yml -2149 silly gunzTarPerm extractEntry LICENSE-MIT -2150 silly gunzTarPerm extractEntry index.js -2151 silly gunzTarPerm extractEntry readme.md -2152 silly gunzTarPerm extractEntry LICENSE -2153 silly gunzTarPerm extractEntry example.js -2154 silly gunzTarPerm extractEntry readme.md -2155 silly gunzTarPerm extractEntry readme.md -2156 silly gunzTarPerm extractEntry index.js -2157 silly gunzTarPerm extractEntry index.js -2158 silly gunzTarPerm extractEntry readme.md -2159 silly gunzTarPerm extractEntry polyfills.js -2160 silly gunzTarPerm extractEntry legacy-streams.js -2161 silly gunzTarPerm extractEntry index.js -2162 silly gunzTarPerm extractEntry CHANGELOG.md -2163 silly gunzTarPerm extractEntry lib/cloneBuffer.js -2164 silly gunzTarPerm extractEntry lib/inspectStream.js -2165 silly gunzTarPerm extractEntry lib/isBuffer.js -2166 silly gunzTarPerm extractEntry lib/isNull.js -2167 silly gunzTarPerm extractEntry lib/isStream.js -2168 silly gunzTarPerm extractEntry .travis.yml -2169 silly gunzTarPerm extractEntry bin/cmd.js -2170 silly gunzTarPerm extractEntry LICENSE -2171 silly gunzTarPerm extractEntry writable.js -2172 silly gunzTarPerm extractEntry LICENSE.md -2173 verbose afterAdd /home/ruanyf/.tnpm/rx/4.1.0/package/package.json written -2174 silly gunzTarPerm extractEntry lib/lazystream.js -2175 silly gunzTarPerm extractEntry secret -2176 silly gunzTarPerm extractEntry index.js -2177 silly gunzTarPerm extractEntry test.js -2178 silly gunzTarPerm extractEntry transform.js -2179 silly gunzTarPerm extractEntry readable.js -2180 silly gunzTarPerm extractEntry graceful-fs.js -2181 silly gunzTarPerm extractEntry bin/usage.txt -2182 silly gunzTarPerm extractEntry examples/pow.js -2183 silly gunzTarPerm extractEntry test/fs_test.js -2184 silly gunzTarPerm extractEntry .travis.yml -2185 silly gunzTarPerm extractEntry passthrough.js -2186 silly gunzTarPerm extractEntry duplex.js -2187 silly gunzTarPerm extractEntry fs.js -2188 silly gunzTarPerm extractEntry readme.markdown -2189 silly gunzTarPerm extractEntry test/chmod.js -2190 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/package.json -2191 info preinstall readable-stream@2.0.6 -2192 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/package.json -2193 silly gunzTarPerm extractEntry test/helper.js -2194 silly gunzTarPerm extractEntry test/pipe_test.js -2195 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream/package.json -2196 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/package.json -2197 silly gunzTarPerm extractEntry test/opts_fs_sync.js -2198 silly gunzTarPerm extractEntry doc/stream.md -2199 silly gunzTarPerm extractEntry doc/wg-meetings/2015-01-30.md -2200 silly gunzTarPerm extractEntry lib/_stream_duplex.js -2201 silly gunzTarPerm extractEntry lib/_stream_passthrough.js -2202 silly gunzTarPerm extractEntry lib/_stream_readable.js -2203 silly gunzTarPerm extractEntry lib/_stream_transform.js -2204 silly gunzTarPerm extractEntry lib/_stream_writable.js -2205 silly gunzTarPerm extractEntry .travis.yml -2206 info preinstall through2-filter@2.0.0 -2207 info preinstall merge-stream@1.0.0 -2208 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/package.json -2209 silly prepareForInstallMany adding core-util-is@~1.0.0 from readable-stream dependencies -2210 silly prepareForInstallMany adding inherits@~2.0.1 from readable-stream dependencies -2211 silly prepareForInstallMany adding isarray@~1.0.0 from readable-stream dependencies -2212 silly prepareForInstallMany adding process-nextick-args@~1.0.6 from readable-stream dependencies -2213 silly prepareForInstallMany adding string_decoder@~0.10.x from readable-stream dependencies -2214 silly prepareForInstallMany adding util-deprecate@~1.0.1 from readable-stream dependencies -2215 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/package.json -2216 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream/package.json -2217 http 200 http://registry.npm.alibaba-inc.com/lodash -2218 verbose headers { server: 'Tengine', -2218 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2218 verbose headers 'content-type': 'application/json; charset=utf-8', -2218 verbose headers 'transfer-encoding': 'chunked', -2218 verbose headers connection: 'keep-alive', -2218 verbose headers vary: 'Accept-Encoding', -2218 verbose headers 'x-readtime': '262', -2218 verbose headers 'content-encoding': 'gzip' } -2219 silly get cb [ 200, -2219 silly get { server: 'Tengine', -2219 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2219 silly get 'content-type': 'application/json; charset=utf-8', -2219 silly get 'transfer-encoding': 'chunked', -2219 silly get connection: 'keep-alive', -2219 silly get vary: 'Accept-Encoding', -2219 silly get 'x-readtime': '262', -2219 silly get 'content-encoding': 'gzip' } ] -2220 verbose get saving lodash to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/lodash/.cache.json -2221 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2222 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date/package.json -2223 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob/package.json -2224 silly gunzTarPerm extractEntry test/readable_test.js -2225 silly gunzTarPerm extractEntry test/writable_test.js -2226 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/package.json -2227 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/package.json -2228 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/package.json -2229 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign/package.json -2230 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/package.json -2231 silly prepareForInstallMany adding xtend@~4.0.0 from through2-filter dependencies -2232 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/package.json -2233 info preinstall is-valid-glob@0.3.0 -2234 info preinstall vali-date@1.0.0 -2235 info preinstall strip-bom@2.0.0 -2236 info preinstall strip-bom-stream@1.0.0 -2237 silly gunzTarPerm extractEntry test/perm.js -2238 silly gunzTarPerm extractEntry test/perm_sync.js -2239 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/package.json -2240 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream/package.json -2241 info preinstall glob-stream@5.3.2 -2242 info preinstall object-assign@4.1.0 -2243 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob/package.json -2244 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date/package.json -2245 silly cache add args [ 'process-nextick-args@~1.0.6', null ] -2246 verbose cache add spec process-nextick-args@~1.0.6 -2247 silly cache add parsed spec Result { -2247 silly cache add raw: 'process-nextick-args@~1.0.6', -2247 silly cache add scope: null, -2247 silly cache add name: 'process-nextick-args', -2247 silly cache add rawSpec: '~1.0.6', -2247 silly cache add spec: '>=1.0.6 <1.1.0', -2247 silly cache add type: 'range' } -2248 silly addNamed process-nextick-args@>=1.0.6 <1.1.0 -2249 verbose addNamed ">=1.0.6 <1.1.0" is a valid semver range for process-nextick-args -2250 silly addNameRange { name: 'process-nextick-args', -2250 silly addNameRange range: '>=1.0.6 <1.1.0', -2250 silly addNameRange hasData: false } -2251 silly mapToRegistry name process-nextick-args -2252 silly mapToRegistry using default registry -2253 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2254 silly mapToRegistry data Result { -2254 silly mapToRegistry raw: 'process-nextick-args', -2254 silly mapToRegistry scope: null, -2254 silly mapToRegistry name: 'process-nextick-args', -2254 silly mapToRegistry rawSpec: '', -2254 silly mapToRegistry spec: 'latest', -2254 silly mapToRegistry type: 'tag' } -2255 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/process-nextick-args -2256 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/process-nextick-args not in flight; fetching -2257 silly cache add args [ 'string_decoder@~0.10.x', null ] -2258 verbose cache add spec string_decoder@~0.10.x -2259 silly cache add parsed spec Result { -2259 silly cache add raw: 'string_decoder@~0.10.x', -2259 silly cache add scope: null, -2259 silly cache add name: 'string_decoder', -2259 silly cache add rawSpec: '~0.10.x', -2259 silly cache add spec: '>=0.10.0 <0.11.0', -2259 silly cache add type: 'range' } -2260 silly addNamed string_decoder@>=0.10.0 <0.11.0 -2261 verbose addNamed ">=0.10.0 <0.11.0" is a valid semver range for string_decoder -2262 silly addNameRange { name: 'string_decoder', -2262 silly addNameRange range: '>=0.10.0 <0.11.0', -2262 silly addNameRange hasData: false } -2263 silly mapToRegistry name string_decoder -2264 silly mapToRegistry using default registry -2265 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2266 silly mapToRegistry data Result { -2266 silly mapToRegistry raw: 'string_decoder', -2266 silly mapToRegistry scope: null, -2266 silly mapToRegistry name: 'string_decoder', -2266 silly mapToRegistry rawSpec: '', -2266 silly mapToRegistry spec: 'latest', -2266 silly mapToRegistry type: 'tag' } -2267 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/string_decoder -2268 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/string_decoder not in flight; fetching -2269 silly cache add args [ 'util-deprecate@~1.0.1', null ] -2270 verbose cache add spec util-deprecate@~1.0.1 -2271 silly cache add parsed spec Result { -2271 silly cache add raw: 'util-deprecate@~1.0.1', -2271 silly cache add scope: null, -2271 silly cache add name: 'util-deprecate', -2271 silly cache add rawSpec: '~1.0.1', -2271 silly cache add spec: '>=1.0.1 <1.1.0', -2271 silly cache add type: 'range' } -2272 silly addNamed util-deprecate@>=1.0.1 <1.1.0 -2273 verbose addNamed ">=1.0.1 <1.1.0" is a valid semver range for util-deprecate -2274 silly addNameRange { name: 'util-deprecate', -2274 silly addNameRange range: '>=1.0.1 <1.1.0', -2274 silly addNameRange hasData: false } -2275 silly mapToRegistry name util-deprecate -2276 silly mapToRegistry using default registry -2277 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2278 silly mapToRegistry data Result { -2278 silly mapToRegistry raw: 'util-deprecate', -2278 silly mapToRegistry scope: null, -2278 silly mapToRegistry name: 'util-deprecate', -2278 silly mapToRegistry rawSpec: '', -2278 silly mapToRegistry spec: 'latest', -2278 silly mapToRegistry type: 'tag' } -2279 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/util-deprecate -2280 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/util-deprecate not in flight; fetching -2281 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/package.json -2282 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/package.json -2283 info preinstall gulp-sourcemaps@1.6.0 -2284 silly cache add args [ 'core-util-is@~1.0.0', null ] -2285 verbose cache add spec core-util-is@~1.0.0 -2286 silly cache add parsed spec Result { -2286 silly cache add raw: 'core-util-is@~1.0.0', -2286 silly cache add scope: null, -2286 silly cache add name: 'core-util-is', -2286 silly cache add rawSpec: '~1.0.0', -2286 silly cache add spec: '>=1.0.0 <1.1.0', -2286 silly cache add type: 'range' } -2287 silly addNamed core-util-is@>=1.0.0 <1.1.0 -2288 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for core-util-is -2289 silly addNameRange { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: false } -2290 silly mapToRegistry name core-util-is -2291 silly mapToRegistry using default registry -2292 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2293 silly mapToRegistry data Result { -2293 silly mapToRegistry raw: 'core-util-is', -2293 silly mapToRegistry scope: null, -2293 silly mapToRegistry name: 'core-util-is', -2293 silly mapToRegistry rawSpec: '', -2293 silly mapToRegistry spec: 'latest', -2293 silly mapToRegistry type: 'tag' } -2294 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/core-util-is -2295 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/core-util-is not in flight; fetching -2296 silly cache add args [ 'inherits@~2.0.1', null ] -2297 verbose cache add spec inherits@~2.0.1 -2298 silly cache add parsed spec Result { -2298 silly cache add raw: 'inherits@~2.0.1', -2298 silly cache add scope: null, -2298 silly cache add name: 'inherits', -2298 silly cache add rawSpec: '~2.0.1', -2298 silly cache add spec: '>=2.0.1 <2.1.0', -2298 silly cache add type: 'range' } -2299 silly addNamed inherits@>=2.0.1 <2.1.0 -2300 verbose addNamed ">=2.0.1 <2.1.0" is a valid semver range for inherits -2301 silly addNameRange { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: false } -2302 silly mapToRegistry name inherits -2303 silly mapToRegistry using default registry -2304 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2305 silly mapToRegistry data Result { -2305 silly mapToRegistry raw: 'inherits', -2305 silly mapToRegistry scope: null, -2305 silly mapToRegistry name: 'inherits', -2305 silly mapToRegistry rawSpec: '', -2305 silly mapToRegistry spec: 'latest', -2305 silly mapToRegistry type: 'tag' } -2306 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits -2307 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching -2308 silly cache add args [ 'isarray@~1.0.0', null ] -2309 verbose cache add spec isarray@~1.0.0 -2310 silly cache add parsed spec Result { -2310 silly cache add raw: 'isarray@~1.0.0', -2310 silly cache add scope: null, -2310 silly cache add name: 'isarray', -2310 silly cache add rawSpec: '~1.0.0', -2310 silly cache add spec: '>=1.0.0 <1.1.0', -2310 silly cache add type: 'range' } -2311 silly addNamed isarray@>=1.0.0 <1.1.0 -2312 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for isarray -2313 silly addNameRange { name: 'isarray', range: '>=1.0.0 <1.1.0', hasData: false } -2314 silly mapToRegistry name isarray -2315 silly mapToRegistry using default registry -2316 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2317 silly mapToRegistry data Result { -2317 silly mapToRegistry raw: 'isarray', -2317 silly mapToRegistry scope: null, -2317 silly mapToRegistry name: 'isarray', -2317 silly mapToRegistry rawSpec: '', -2317 silly mapToRegistry spec: 'latest', -2317 silly mapToRegistry type: 'tag' } -2318 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isarray -2319 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/isarray not in flight; fetching -2320 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/package.json -2321 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign/package.json -2322 silly addNameRange number 2 { name: 'lodash', range: '>=4.3.0 <5.0.0', hasData: true } -2323 silly addNameRange versions [ 'lodash', -2323 silly addNameRange [ '4.12.0', -2323 silly addNameRange '4.11.2', -2323 silly addNameRange '4.11.1', -2323 silly addNameRange '4.11.0', -2323 silly addNameRange '4.10.0', -2323 silly addNameRange '4.9.0', -2323 silly addNameRange '4.8.2', -2323 silly addNameRange '4.8.1', -2323 silly addNameRange '4.8.0', -2323 silly addNameRange '4.7.0', -2323 silly addNameRange '4.6.1', -2323 silly addNameRange '4.6.0', -2323 silly addNameRange '4.5.1', -2323 silly addNameRange '4.5.0', -2323 silly addNameRange '4.4.0', -2323 silly addNameRange '4.3.0', -2323 silly addNameRange '4.2.1', -2323 silly addNameRange '4.2.0', -2323 silly addNameRange '4.1.0', -2323 silly addNameRange '4.0.1', -2323 silly addNameRange '4.0.0', -2323 silly addNameRange '3.10.1', -2323 silly addNameRange '3.10.0', -2323 silly addNameRange '3.9.3', -2323 silly addNameRange '3.9.2', -2323 silly addNameRange '3.9.1', -2323 silly addNameRange '3.9.0', -2323 silly addNameRange '3.8.0', -2323 silly addNameRange '2.4.2', -2323 silly addNameRange '3.7.0', -2323 silly addNameRange '1.0.2', -2323 silly addNameRange '3.6.0', -2323 silly addNameRange '3.5.0', -2323 silly addNameRange '3.4.0', -2323 silly addNameRange '3.3.1', -2323 silly addNameRange '3.3.0', -2323 silly addNameRange '3.2.0', -2323 silly addNameRange '3.1.0', -2323 silly addNameRange '3.0.1', -2323 silly addNameRange '3.0.0', -2323 silly addNameRange '2.4.1', -2323 silly addNameRange '2.4.0', -2323 silly addNameRange '2.3.0', -2323 silly addNameRange '2.2.1', -2323 silly addNameRange '2.2.0', -2323 silly addNameRange '2.1.0', -2323 silly addNameRange '2.0.0', -2323 silly addNameRange '1.3.1', -2323 silly addNameRange '1.3.0', -2323 silly addNameRange '1.2.1', -2323 silly addNameRange '1.2.0', -2323 silly addNameRange '1.1.1', -2323 silly addNameRange '1.1.0', -2323 silly addNameRange '1.0.1', -2323 silly addNameRange '1.0.0', -2323 silly addNameRange '1.0.0-rc.3', -2323 silly addNameRange '1.0.0-rc.2', -2323 silly addNameRange '1.0.0-rc.1', -2323 silly addNameRange '0.10.0', -2323 silly addNameRange '0.9.2', -2323 silly addNameRange '0.9.1', -2323 silly addNameRange '0.9.0', -2323 silly addNameRange '0.8.2', -2323 silly addNameRange '0.8.1', -2323 silly addNameRange '0.8.0', -2323 silly addNameRange '0.7.0', -2323 silly addNameRange '0.6.1', -2323 silly addNameRange '0.6.0', -2323 silly addNameRange '0.5.2', -2323 silly addNameRange '0.5.1', -2323 silly addNameRange '0.5.0', -2323 silly addNameRange '0.5.0-rc.1', -2323 silly addNameRange '0.4.2', -2323 silly addNameRange '0.4.1', -2323 silly addNameRange '0.4.0', -2323 silly addNameRange '0.3.2', -2323 silly addNameRange '0.3.1', -2323 silly addNameRange '0.3.0', -2323 silly addNameRange '0.2.2', -2323 silly addNameRange '0.2.1', -2323 silly addNameRange '0.2.0', -2323 silly addNameRange '0.1.0' ] ] -2324 silly addNamed lodash@4.12.0 -2325 verbose addNamed "4.12.0" is a plain semver version for lodash -2326 info preinstall lodash.isequal@4.2.0 -2327 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/package.json -2328 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/package.json -2329 silly install resolved [] -2330 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream -2331 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream -2332 silly gunzTarPerm extractEntry test/data.md -2333 silly cache add args [ 'xtend@~4.0.0', null ] -2334 verbose cache add spec xtend@~4.0.0 -2335 silly cache add parsed spec Result { -2335 silly cache add raw: 'xtend@~4.0.0', -2335 silly cache add scope: null, -2335 silly cache add name: 'xtend', -2335 silly cache add rawSpec: '~4.0.0', -2335 silly cache add spec: '>=4.0.0 <4.1.0', -2335 silly cache add type: 'range' } -2336 silly addNamed xtend@>=4.0.0 <4.1.0 -2337 verbose addNamed ">=4.0.0 <4.1.0" is a valid semver range for xtend -2338 silly addNameRange { name: 'xtend', range: '>=4.0.0 <4.1.0', hasData: false } -2339 silly mapToRegistry name xtend -2340 silly mapToRegistry using default registry -2341 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2342 silly mapToRegistry data Result { -2342 silly mapToRegistry raw: 'xtend', -2342 silly mapToRegistry scope: null, -2342 silly mapToRegistry name: 'xtend', -2342 silly mapToRegistry rawSpec: '', -2342 silly mapToRegistry spec: 'latest', -2342 silly mapToRegistry type: 'tag' } -2343 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/xtend -2344 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/xtend not in flight; fetching -2345 silly gunzTarPerm extractEntry test/opts_fs.js -2346 silly gunzTarPerm extractEntry test/rel.js -2347 verbose request uri http://registry.npm.alibaba-inc.com/process-nextick-args -2348 verbose request no auth needed -2349 info attempt registry request try #1 at 上午9:12:29 -2350 verbose etag "29b6-+c9xMCSHhzraGfcJXw/LOw" -2351 http request GET http://registry.npm.alibaba-inc.com/process-nextick-args -2352 verbose request uri http://registry.npm.alibaba-inc.com/string_decoder -2353 verbose request no auth needed -2354 info attempt registry request try #1 at 上午9:12:29 -2355 verbose etag "2781-r+r6Q+yEIMxgrJFc2TidrQ" -2356 http request GET http://registry.npm.alibaba-inc.com/string_decoder -2357 verbose request uri http://registry.npm.alibaba-inc.com/util-deprecate -2358 verbose request no auth needed -2359 info attempt registry request try #1 at 上午9:12:29 -2360 verbose etag "1828-s5Mws6s7lWlAGY5y9YlXaQ" -2361 http request GET http://registry.npm.alibaba-inc.com/util-deprecate -2362 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob/package.json -2363 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date/package.json -2364 verbose request uri http://registry.npm.alibaba-inc.com/core-util-is -2365 verbose request no auth needed -2366 info attempt registry request try #1 at 上午9:12:29 -2367 verbose etag "1012-J1qBYwWSaRuhI7IrLgNy1w" -2368 http request GET http://registry.npm.alibaba-inc.com/core-util-is -2369 silly prepareForInstallMany adding is-utf8@^0.2.0 from strip-bom dependencies -2370 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/package.json -2371 silly prepareForInstallMany adding first-chunk-stream@^1.0.0 from strip-bom-stream dependencies -2372 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/package.json -2373 verbose request uri http://registry.npm.alibaba-inc.com/inherits -2374 verbose request no auth needed -2375 info attempt registry request try #1 at 上午9:12:29 -2376 verbose etag "1f1e-Mk9UHFC0IpS7TBhwmfSvmg" -2377 http request GET http://registry.npm.alibaba-inc.com/inherits -2378 verbose request uri http://registry.npm.alibaba-inc.com/isarray -2379 verbose request no auth needed -2380 info attempt registry request try #1 at 上午9:12:29 -2381 verbose etag "1874-/oRHxQaeyMwf9womjIj2iQ" -2382 http request GET http://registry.npm.alibaba-inc.com/isarray -2383 silly prepareForInstallMany adding extend@^3.0.0 from glob-stream dependencies -2384 silly prepareForInstallMany adding glob@^5.0.3 from glob-stream dependencies -2385 silly prepareForInstallMany adding glob-parent@^2.0.0 from glob-stream dependencies -2386 silly prepareForInstallMany adding micromatch@^2.3.7 from glob-stream dependencies -2387 silly prepareForInstallMany adding ordered-read-streams@^0.3.0 from glob-stream dependencies -2388 silly prepareForInstallMany adding through2@^0.6.0 from glob-stream dependencies -2389 silly prepareForInstallMany adding to-absolute-glob@^0.1.1 from glob-stream dependencies -2390 silly prepareForInstallMany adding unique-stream@^2.0.2 from glob-stream dependencies -2391 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/package.json -2392 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign/package.json -2393 silly cache afterAdd lodash@4.12.0 -2394 verbose afterAdd /home/ruanyf/.tnpm/lodash/4.12.0/package/package.json not in flight; writing -2395 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2396 silly prepareForInstallMany adding convert-source-map@^1.1.1 from gulp-sourcemaps dependencies -2397 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/package.json -2398 info linkStuff merge-stream@1.0.0 -2399 silly linkStuff merge-stream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -2400 silly linkStuff merge-stream@1.0.0 is part of a global install -2401 silly linkStuff merge-stream@1.0.0 is installed into a global node_modules -2402 verbose get http://registry.npm.alibaba-inc.com/xtend not expired, no request -2403 silly addNameRange number 2 { name: 'xtend', range: '>=4.0.0 <4.1.0', hasData: true } -2404 silly addNameRange versions [ 'xtend', -2404 silly addNameRange [ '4.0.1', -2404 silly addNameRange '4.0.0', -2404 silly addNameRange '3.0.0', -2404 silly addNameRange '2.2.0', -2404 silly addNameRange '2.1.2', -2404 silly addNameRange '2.1.1', -2404 silly addNameRange '2.0.6', -2404 silly addNameRange '2.0.5', -2404 silly addNameRange '2.0.4', -2404 silly addNameRange '2.0.3', -2404 silly addNameRange '2.0.2', -2404 silly addNameRange '2.0.1', -2404 silly addNameRange '1.0.3', -2404 silly addNameRange '1.0.2', -2404 silly addNameRange '1.0.1', -2404 silly addNameRange '1.0.0' ] ] -2405 silly addNamed xtend@4.0.1 -2406 verbose addNamed "4.0.1" is a plain semver version for xtend -2407 silly install resolved [] -2408 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob -2409 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob -2410 silly install resolved [] -2411 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date -2412 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date -2413 verbose linkBins merge-stream@1.0.0 -2414 verbose linkMans merge-stream@1.0.0 -2415 verbose rebuildBundles merge-stream@1.0.0 -2416 verbose afterAdd /home/ruanyf/.tnpm/lodash/4.12.0/package/package.json written -2417 silly install resolved [ { name: 'cli-cursor', -2417 silly install resolved version: '1.0.2', -2417 silly install resolved description: 'Toggle the CLI cursor', -2417 silly install resolved license: 'MIT', -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+https://github.com/sindresorhus/cli-cursor.git' }, -2417 silly install resolved author: -2417 silly install resolved { name: 'Sindre Sorhus', -2417 silly install resolved email: 'sindresorhus@gmail.com', -2417 silly install resolved url: 'sindresorhus.com' }, -2417 silly install resolved engines: { node: '>=0.10.0' }, -2417 silly install resolved scripts: { test: 'xo && ava' }, -2417 silly install resolved files: [ 'index.js' ], -2417 silly install resolved keywords: -2417 silly install resolved [ 'cli', -2417 silly install resolved 'cursor', -2417 silly install resolved 'ansi', -2417 silly install resolved 'toggle', -2417 silly install resolved 'display', -2417 silly install resolved 'show', -2417 silly install resolved 'hide', -2417 silly install resolved 'term', -2417 silly install resolved 'terminal', -2417 silly install resolved 'console', -2417 silly install resolved 'tty', -2417 silly install resolved 'shell', -2417 silly install resolved 'command-line' ], -2417 silly install resolved dependencies: { 'restore-cursor': '^1.0.1' }, -2417 silly install resolved devDependencies: { ava: '*', xo: '*' }, -2417 silly install resolved gitHead: '6be5a384d90278c66aa30db5ecdec8dc68f17d4f', -2417 silly install resolved bugs: { url: 'https://github.com/sindresorhus/cli-cursor/issues' }, -2417 silly install resolved homepage: 'https://github.com/sindresorhus/cli-cursor#readme', -2417 silly install resolved _id: 'cli-cursor@1.0.2', -2417 silly install resolved _shasum: '64da3f7d56a54412e59794bd62dc35295e8f2987', -2417 silly install resolved _from: 'cli-cursor@>=1.0.1 <2.0.0', -2417 silly install resolved _npmVersion: '2.14.3', -2417 silly install resolved _nodeVersion: '4.1.0', -2417 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: '64da3f7d56a54412e59794bd62dc35295e8f2987', -2417 silly install resolved size: 1636, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'cli-cursor/-/cli-cursor-1.0.2.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/cli-cursor/download/cli-cursor-1.0.2.tgz' }, -2417 silly install resolved maintainers: [ [Object] ], -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1442584046541, -2417 silly install resolved _cnpm_publish_time: 1442584046541, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/cli-cursor/download/cli-cursor-1.0.2.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'cli-width', -2417 silly install resolved version: '2.1.0', -2417 silly install resolved description: 'Get stdout window width, with two fallbacks, tty and then a default.', -2417 silly install resolved main: 'index.js', -2417 silly install resolved scripts: -2417 silly install resolved { test: 'node test | tspec', -2417 silly install resolved coverage: 'isparta cover test/*.js | tspec', -2417 silly install resolved coveralls: 'npm run coverage -s && coveralls < coverage/lcov.info', -2417 silly install resolved postcoveralls: 'rimraf ./coverage' }, -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+ssh://git@github.com/knownasilya/cli-width.git' }, -2417 silly install resolved author: { name: 'Ilya Radchenko', email: 'ilya@burstcreations.com' }, -2417 silly install resolved license: 'ISC', -2417 silly install resolved bugs: { url: 'https://github.com/knownasilya/cli-width/issues' }, -2417 silly install resolved homepage: 'https://github.com/knownasilya/cli-width', -2417 silly install resolved devDependencies: -2417 silly install resolved { 'tap-spec': '^4.1.0', -2417 silly install resolved tape: '^3.4.0', -2417 silly install resolved coveralls: '^2.11.4', -2417 silly install resolved isparta: '^3.0.4', -2417 silly install resolved rimraf: '^2.4.3' }, -2417 silly install resolved gitHead: 'c9506fd74bd3863ff327f8f8892601fa4ac2dbb3', -2417 silly install resolved _id: 'cli-width@2.1.0', -2417 silly install resolved _shasum: 'b234ca209b29ef66fc518d9b98d5847b00edf00a', -2417 silly install resolved _from: 'cli-width@>=2.0.0 <3.0.0', -2417 silly install resolved _npmVersion: '2.14.12', -2417 silly install resolved _nodeVersion: '4.2.6', -2417 silly install resolved _npmUser: { name: 'knownasilya', email: 'ilya@burstcreations.com' }, -2417 silly install resolved maintainers: [ [Object] ], -2417 silly install resolved dist: -2417 silly install resolved { shasum: 'b234ca209b29ef66fc518d9b98d5847b00edf00a', -2417 silly install resolved size: 15911, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'cli-width/-/cli-width-2.1.0.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/cli-width/download/cli-width-2.1.0.tgz' }, -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-9-west.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/cli-width-2.1.0.tgz_1455570612101_0.2879865295253694' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1455570615968, -2417 silly install resolved _cnpm_publish_time: 1455570615968, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/cli-width/download/cli-width-2.1.0.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'pinkie-promise', -2417 silly install resolved version: '2.0.1', -2417 silly install resolved description: 'ES2015 Promise ponyfill', -2417 silly install resolved license: 'MIT', -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+https://github.com/floatdrop/pinkie-promise.git' }, -2417 silly install resolved author: -2417 silly install resolved { name: 'Vsevolod Strukchinsky', -2417 silly install resolved email: 'floatdrop@gmail.com', -2417 silly install resolved url: 'github.com/floatdrop' }, -2417 silly install resolved engines: { node: '>=0.10.0' }, -2417 silly install resolved scripts: { test: 'mocha' }, -2417 silly install resolved files: [ 'index.js' ], -2417 silly install resolved keywords: [ 'promise', 'promises', 'es2015', 'es6', 'polyfill', 'ponyfill' ], -2417 silly install resolved dependencies: { pinkie: '^2.0.0' }, -2417 silly install resolved devDependencies: { mocha: '*' }, -2417 silly install resolved gitHead: '4a936c09c34ad591a25db93f1216d242de0d6184', -2417 silly install resolved bugs: { url: 'https://github.com/floatdrop/pinkie-promise/issues' }, -2417 silly install resolved homepage: 'https://github.com/floatdrop/pinkie-promise', -2417 silly install resolved _id: 'pinkie-promise@2.0.1', -2417 silly install resolved _shasum: '2135d6dfa7a358c069ac9b178776288228450ffa', -2417 silly install resolved _from: 'pinkie-promise@>=2.0.0 <3.0.0', -2417 silly install resolved _npmVersion: '2.14.20', -2417 silly install resolved _nodeVersion: '4.4.1', -2417 silly install resolved _npmUser: { name: 'floatdrop', email: 'floatdrop@gmail.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: '2135d6dfa7a358c069ac9b178776288228450ffa', -2417 silly install resolved size: 1532, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'pinkie-promise/-/pinkie-promise-2.0.1.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/pinkie-promise/download/pinkie-promise-2.0.1.tgz' }, -2417 silly install resolved maintainers: [ [Object] ], -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/pinkie-promise-2.0.1.tgz_1460309839126_0.3422858319245279' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1460309840299, -2417 silly install resolved _cnpm_publish_time: 1460309840299, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/pinkie-promise/download/pinkie-promise-2.0.1.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'mute-stream', -2417 silly install resolved version: '0.0.6', -2417 silly install resolved main: 'mute.js', -2417 silly install resolved directories: { test: 'test' }, -2417 silly install resolved devDependencies: { tap: '^1.2.0' }, -2417 silly install resolved scripts: { test: 'tap test/*.js' }, -2417 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/mute-stream.git' }, -2417 silly install resolved keywords: [ 'mute', 'stream', 'pipe' ], -2417 silly install resolved author: -2417 silly install resolved { name: 'Isaac Z. Schlueter', -2417 silly install resolved email: 'i@izs.me', -2417 silly install resolved url: 'http://blog.izs.me/' }, -2417 silly install resolved license: 'ISC', -2417 silly install resolved description: 'Bytes go in, but they don\'t come out (when muted).', -2417 silly install resolved gitHead: '3c0b793839b923b8d8a86a3d07f70fa451e30348', -2417 silly install resolved bugs: { url: 'https://github.com/isaacs/mute-stream/issues' }, -2417 silly install resolved homepage: 'https://github.com/isaacs/mute-stream#readme', -2417 silly install resolved _id: 'mute-stream@0.0.6', -2417 silly install resolved _shasum: '48962b19e169fd1dfc240b3f1e7317627bbc47db', -2417 silly install resolved _from: 'mute-stream@0.0.6', -2417 silly install resolved _npmVersion: '3.7.0', -2417 silly install resolved _nodeVersion: '5.6.0', -2417 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: '48962b19e169fd1dfc240b3f1e7317627bbc47db', -2417 silly install resolved size: 3561, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'mute-stream/-/mute-stream-0.0.6.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/mute-stream/download/mute-stream-0.0.6.tgz' }, -2417 silly install resolved maintainers: [ [Object], [Object], [Object], [Object] ], -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-9-west.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/mute-stream-0.0.6.tgz_1455343284080_0.04852168820798397' }, -2417 silly install resolved publish_time: 1455343285846, -2417 silly install resolved _cnpm_publish_time: 1455343285846, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/mute-stream/download/mute-stream-0.0.6.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'string-width', -2417 silly install resolved version: '1.0.1', -2417 silly install resolved description: 'Get the visual width of a string - the number of columns required to display it', -2417 silly install resolved license: 'MIT', -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+https://github.com/sindresorhus/string-width.git' }, -2417 silly install resolved author: -2417 silly install resolved { name: 'Sindre Sorhus', -2417 silly install resolved email: 'sindresorhus@gmail.com', -2417 silly install resolved url: 'sindresorhus.com' }, -2417 silly install resolved engines: { node: '>=0.10.0' }, -2417 silly install resolved scripts: { test: 'node test.js' }, -2417 silly install resolved files: [ 'index.js' ], -2417 silly install resolved keywords: -2417 silly install resolved [ 'string', -2417 silly install resolved 'str', -2417 silly install resolved 'character', -2417 silly install resolved 'char', -2417 silly install resolved 'unicode', -2417 silly install resolved 'width', -2417 silly install resolved 'visual', -2417 silly install resolved 'column', -2417 silly install resolved 'columns', -2417 silly install resolved 'fullwidth', -2417 silly install resolved 'full-width', -2417 silly install resolved 'full', -2417 silly install resolved 'ansi', -2417 silly install resolved 'escape', -2417 silly install resolved 'codes', -2417 silly install resolved 'cli', -2417 silly install resolved 'command-line', -2417 silly install resolved 'terminal', -2417 silly install resolved 'console', -2417 silly install resolved 'cjk', -2417 silly install resolved 'chinese', -2417 silly install resolved 'japanese', -2417 silly install resolved 'korean', -2417 silly install resolved 'fixed-width' ], -2417 silly install resolved dependencies: -2417 silly install resolved { 'code-point-at': '^1.0.0', -2417 silly install resolved 'is-fullwidth-code-point': '^1.0.0', -2417 silly install resolved 'strip-ansi': '^3.0.0' }, -2417 silly install resolved devDependencies: { ava: '0.0.4' }, -2417 silly install resolved gitHead: 'f279cfd14835f0a3c8df69ba18e9a3960156e135', -2417 silly install resolved bugs: { url: 'https://github.com/sindresorhus/string-width/issues' }, -2417 silly install resolved homepage: 'https://github.com/sindresorhus/string-width', -2417 silly install resolved _id: 'string-width@1.0.1', -2417 silly install resolved _shasum: 'c92129b6f1d7f52acf9af424a26e3864a05ceb0a', -2417 silly install resolved _from: 'string-width@>=1.0.1 <2.0.0', -2417 silly install resolved _npmVersion: '2.11.2', -2417 silly install resolved _nodeVersion: '0.12.5', -2417 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: 'c92129b6f1d7f52acf9af424a26e3864a05ceb0a', -2417 silly install resolved size: 1954, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'string-width/-/string-width-1.0.1.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/string-width/download/string-width-1.0.1.tgz' }, -2417 silly install resolved maintainers: [ [Object] ], -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1437355869758, -2417 silly install resolved _cnpm_publish_time: 1437355869758, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/string-width/download/string-width-1.0.1.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'run-async', -2417 silly install resolved version: '2.2.0', -2417 silly install resolved description: 'Utility method to run function either synchronously or asynchronously using the common `this.async()` style.', -2417 silly install resolved main: 'index.js', -2417 silly install resolved scripts: { test: 'mocha -R spec' }, -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+https://github.com/sboudrias/run-async.git' }, -2417 silly install resolved keywords: [ 'flow', 'flow-control', 'async' ], -2417 silly install resolved author: { name: 'Simon Boudrias', email: 'admin@simonboudrias.com' }, -2417 silly install resolved license: 'MIT', -2417 silly install resolved dependencies: { 'is-promise': '^2.1.0', 'pinkie-promise': '^2.0.0' }, -2417 silly install resolved devDependencies: { mocha: '^2.3.3' }, -2417 silly install resolved gitHead: '5c6dc70500fd5c0b6ab1ba93f5f1a3338bfeaa84', -2417 silly install resolved bugs: { url: 'https://github.com/sboudrias/run-async/issues' }, -2417 silly install resolved homepage: 'https://github.com/sboudrias/run-async#readme', -2417 silly install resolved _id: 'run-async@2.2.0', -2417 silly install resolved _shasum: '8783abd83c7bb86f41ee0602fc82404b3bd6e8b9', -2417 silly install resolved _from: 'run-async@>=2.2.0 <3.0.0', -2417 silly install resolved _npmVersion: '3.5.3', -2417 silly install resolved _nodeVersion: '5.2.0', -2417 silly install resolved _npmUser: { name: 'sboudrias', email: 'admin@simonboudrias.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: '8783abd83c7bb86f41ee0602fc82404b3bd6e8b9', -2417 silly install resolved size: 3623, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'run-async/-/run-async-2.2.0.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/run-async/download/run-async-2.2.0.tgz' }, -2417 silly install resolved maintainers: [ [Object] ], -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-13-west.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/run-async-2.2.0.tgz_1458198577245_0.4591540393885225' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1458198577775, -2417 silly install resolved _cnpm_publish_time: 1458198577775, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/run-async/download/run-async-2.2.0.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'ansi-escapes', -2417 silly install resolved version: '1.4.0', -2417 silly install resolved description: 'ANSI escape codes for manipulating the terminal', -2417 silly install resolved license: 'MIT', -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+https://github.com/sindresorhus/ansi-escapes.git' }, -2417 silly install resolved author: -2417 silly install resolved { name: 'Sindre Sorhus', -2417 silly install resolved email: 'sindresorhus@gmail.com', -2417 silly install resolved url: 'sindresorhus.com' }, -2417 silly install resolved engines: { node: '>=0.10.0' }, -2417 silly install resolved scripts: { test: 'xo && ava' }, -2417 silly install resolved files: [ 'index.js' ], -2417 silly install resolved keywords: -2417 silly install resolved [ 'ansi', -2417 silly install resolved 'terminal', -2417 silly install resolved 'console', -2417 silly install resolved 'cli', -2417 silly install resolved 'string', -2417 silly install resolved 'tty', -2417 silly install resolved 'escape', -2417 silly install resolved 'escapes', -2417 silly install resolved 'formatting', -2417 silly install resolved 'shell', -2417 silly install resolved 'xterm', -2417 silly install resolved 'log', -2417 silly install resolved 'logging', -2417 silly install resolved 'command-line', -2417 silly install resolved 'text', -2417 silly install resolved 'vt100', -2417 silly install resolved 'sequence', -2417 silly install resolved 'control', -2417 silly install resolved 'code', -2417 silly install resolved 'codes', -2417 silly install resolved 'cursor', -2417 silly install resolved 'iterm', -2417 silly install resolved 'iterm2' ], -2417 silly install resolved devDependencies: { ava: '*', xo: '*' }, -2417 silly install resolved gitHead: '763a11847148479dd315c2b9f81b001c94740415', -2417 silly install resolved bugs: { url: 'https://github.com/sindresorhus/ansi-escapes/issues' }, -2417 silly install resolved homepage: 'https://github.com/sindresorhus/ansi-escapes#readme', -2417 silly install resolved _id: 'ansi-escapes@1.4.0', -2417 silly install resolved _shasum: 'd3a8a83b319aa67793662b13e761c7911422306e', -2417 silly install resolved _from: 'ansi-escapes@>=1.1.0 <2.0.0', -2417 silly install resolved _npmVersion: '2.15.0', -2417 silly install resolved _nodeVersion: '4.4.2', -2417 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: 'd3a8a83b319aa67793662b13e761c7911422306e', -2417 silly install resolved size: 3151, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'ansi-escapes/-/ansi-escapes-1.4.0.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ansi-escapes/download/ansi-escapes-1.4.0.tgz' }, -2417 silly install resolved maintainers: [ [Object] ], -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/ansi-escapes-1.4.0.tgz_1460925437568_0.228597579523921' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1460925439676, -2417 silly install resolved _cnpm_publish_time: 1460925439676, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ansi-escapes/download/ansi-escapes-1.4.0.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'strip-ansi', -2417 silly install resolved version: '3.0.1', -2417 silly install resolved description: 'Strip ANSI escape codes', -2417 silly install resolved license: 'MIT', -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+https://github.com/chalk/strip-ansi.git' }, -2417 silly install resolved author: -2417 silly install resolved { name: 'Sindre Sorhus', -2417 silly install resolved email: 'sindresorhus@gmail.com', -2417 silly install resolved url: 'sindresorhus.com' }, -2417 silly install resolved maintainers: [ [Object], [Object] ], -2417 silly install resolved engines: { node: '>=0.10.0' }, -2417 silly install resolved scripts: { test: 'xo && ava' }, -2417 silly install resolved files: [ 'index.js' ], -2417 silly install resolved keywords: -2417 silly install resolved [ 'strip', -2417 silly install resolved 'trim', -2417 silly install resolved 'remove', -2417 silly install resolved 'ansi', -2417 silly install resolved 'styles', -2417 silly install resolved 'color', -2417 silly install resolved 'colour', -2417 silly install resolved 'colors', -2417 silly install resolved 'terminal', -2417 silly install resolved 'console', -2417 silly install resolved 'string', -2417 silly install resolved 'tty', -2417 silly install resolved 'escape', -2417 silly install resolved 'formatting', -2417 silly install resolved 'rgb', -2417 silly install resolved '256', -2417 silly install resolved 'shell', -2417 silly install resolved 'xterm', -2417 silly install resolved 'log', -2417 silly install resolved 'logging', -2417 silly install resolved 'command-line', -2417 silly install resolved 'text' ], -2417 silly install resolved dependencies: { 'ansi-regex': '^2.0.0' }, -2417 silly install resolved devDependencies: { ava: '*', xo: '*' }, -2417 silly install resolved gitHead: '8270705c704956da865623e564eba4875c3ea17f', -2417 silly install resolved bugs: { url: 'https://github.com/chalk/strip-ansi/issues' }, -2417 silly install resolved homepage: 'https://github.com/chalk/strip-ansi', -2417 silly install resolved _id: 'strip-ansi@3.0.1', -2417 silly install resolved _shasum: '6a385fb8853d952d5ff05d0e8aaf94278dc63dcf', -2417 silly install resolved _from: 'strip-ansi@>=3.0.0 <4.0.0', -2417 silly install resolved _npmVersion: '2.11.3', -2417 silly install resolved _nodeVersion: '0.12.7', -2417 silly install resolved _npmUser: { name: 'jbnicolai', email: 'jappelman@xebia.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: '6a385fb8853d952d5ff05d0e8aaf94278dc63dcf', -2417 silly install resolved size: 1734, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'strip-ansi/-/strip-ansi-3.0.1.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/strip-ansi/download/strip-ansi-3.0.1.tgz' }, -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-9-west.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/strip-ansi-3.0.1.tgz_1456057278183_0.28958667791448534' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1456057282998, -2417 silly install resolved _cnpm_publish_time: 1456057282998, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/strip-ansi/download/strip-ansi-3.0.1.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'through', -2417 silly install resolved version: '2.3.8', -2417 silly install resolved description: 'simplified stream construction', -2417 silly install resolved main: 'index.js', -2417 silly install resolved scripts: { test: 'set -e; for t in test/*.js; do node $t; done' }, -2417 silly install resolved devDependencies: { 'stream-spec': '~0.3.5', tape: '~2.3.2', from: '~0.1.3' }, -2417 silly install resolved keywords: [ 'stream', 'streams', 'user-streams', 'pipe' ], -2417 silly install resolved author: -2417 silly install resolved { name: 'Dominic Tarr', -2417 silly install resolved email: 'dominic.tarr@gmail.com', -2417 silly install resolved url: 'dominictarr.com' }, -2417 silly install resolved license: 'MIT', -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+https://github.com/dominictarr/through.git' }, -2417 silly install resolved homepage: 'https://github.com/dominictarr/through', -2417 silly install resolved testling: { browsers: [Object], files: 'test/*.js' }, -2417 silly install resolved gitHead: '2c5a6f9a0cc54da759b6e10964f2081c358e49dc', -2417 silly install resolved bugs: { url: 'https://github.com/dominictarr/through/issues' }, -2417 silly install resolved _id: 'through@2.3.8', -2417 silly install resolved _shasum: '0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5', -2417 silly install resolved _from: 'through@>=2.3.6 <3.0.0', -2417 silly install resolved _npmVersion: '2.12.0', -2417 silly install resolved _nodeVersion: '2.3.1', -2417 silly install resolved _npmUser: { name: 'dominictarr', email: 'dominic.tarr@gmail.com' }, -2417 silly install resolved maintainers: [ [Object] ], -2417 silly install resolved dist: -2417 silly install resolved { shasum: '0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5', -2417 silly install resolved size: 4468, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'through/-/through-2.3.8.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/through/download/through-2.3.8.tgz' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1435930719650, -2417 silly install resolved _cnpm_publish_time: 1435930719650, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/through/download/through-2.3.8.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'figures', -2417 silly install resolved version: '1.7.0', -2417 silly install resolved description: 'Unicode symbols with Windows CMD fallbacks', -2417 silly install resolved license: 'MIT', -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+https://github.com/sindresorhus/figures.git' }, -2417 silly install resolved author: -2417 silly install resolved { name: 'Sindre Sorhus', -2417 silly install resolved email: 'sindresorhus@gmail.com', -2417 silly install resolved url: 'sindresorhus.com' }, -2417 silly install resolved engines: { node: '>=0.10.0' }, -2417 silly install resolved scripts: { test: 'xo && ava', make: './makefile.js' }, -2417 silly install resolved files: [ 'index.js' ], -2417 silly install resolved keywords: -2417 silly install resolved [ 'unicode', -2417 silly install resolved 'cli', -2417 silly install resolved 'cmd', -2417 silly install resolved 'command-line', -2417 silly install resolved 'characters', -2417 silly install resolved 'char', -2417 silly install resolved 'symbol', -2417 silly install resolved 'symbols', -2417 silly install resolved 'figure', -2417 silly install resolved 'figures', -2417 silly install resolved 'fallback' ], -2417 silly install resolved dependencies: { 'escape-string-regexp': '^1.0.5', 'object-assign': '^4.1.0' }, -2417 silly install resolved devDependencies: -2417 silly install resolved { ava: '*', -2417 silly install resolved 'markdown-table': '^0.4.0', -2417 silly install resolved 'require-uncached': '^1.0.2', -2417 silly install resolved xo: '*' }, -2417 silly install resolved gitHead: 'f5f4e3d6cccf84f2ca13d9e6b235def59afc15f7', -2417 silly install resolved bugs: { url: 'https://github.com/sindresorhus/figures/issues' }, -2417 silly install resolved homepage: 'https://github.com/sindresorhus/figures#readme', -2417 silly install resolved _id: 'figures@1.7.0', -2417 silly install resolved _shasum: 'cbe1e3affcf1cd44b80cadfed28dc793a9701d2e', -2417 silly install resolved _from: 'figures@>=1.3.5 <2.0.0', -2417 silly install resolved _npmVersion: '2.15.0', -2417 silly install resolved _nodeVersion: '4.4.2', -2417 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: 'cbe1e3affcf1cd44b80cadfed28dc793a9701d2e', -2417 silly install resolved size: 3563, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'figures/-/figures-1.7.0.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/figures/download/figures-1.7.0.tgz' }, -2417 silly install resolved maintainers: [ [Object] ], -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/figures-1.7.0.tgz_1463504380148_0.06917169434018433' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1463504380776, -2417 silly install resolved _cnpm_publish_time: 1463504380776, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/figures/download/figures-1.7.0.tgz' }, -2417 silly install resolved { name: 'chalk', -2417 silly install resolved version: '1.1.3', -2417 silly install resolved description: 'Terminal string styling done right. Much color.', -2417 silly install resolved license: 'MIT', -2417 silly install resolved repository: { type: 'git', url: 'git+https://github.com/chalk/chalk.git' }, -2417 silly install resolved maintainers: [ [Object], [Object], [Object] ], -2417 silly install resolved engines: { node: '>=0.10.0' }, -2417 silly install resolved scripts: -2417 silly install resolved { test: 'xo && mocha', -2417 silly install resolved bench: 'matcha benchmark.js', -2417 silly install resolved coverage: 'nyc npm test && nyc report', -2417 silly install resolved coveralls: 'nyc npm test && nyc report --reporter=text-lcov | coveralls' }, -2417 silly install resolved files: [ 'index.js' ], -2417 silly install resolved keywords: -2417 silly install resolved [ 'color', -2417 silly install resolved 'colour', -2417 silly install resolved 'colors', -2417 silly install resolved 'terminal', -2417 silly install resolved 'console', -2417 silly install resolved 'cli', -2417 silly install resolved 'string', -2417 silly install resolved 'str', -2417 silly install resolved 'ansi', -2417 silly install resolved 'style', -2417 silly install resolved 'styles', -2417 silly install resolved 'tty', -2417 silly install resolved 'formatting', -2417 silly install resolved 'rgb', -2417 silly install resolved '256', -2417 silly install resolved 'shell', -2417 silly install resolved 'xterm', -2417 silly install resolved 'log', -2417 silly install resolved 'logging', -2417 silly install resolved 'command-line', -2417 silly install resolved 'text' ], -2417 silly install resolved dependencies: -2417 silly install resolved { 'ansi-styles': '^2.2.1', -2417 silly install resolved 'escape-string-regexp': '^1.0.2', -2417 silly install resolved 'has-ansi': '^2.0.0', -2417 silly install resolved 'strip-ansi': '^3.0.0', -2417 silly install resolved 'supports-color': '^2.0.0' }, -2417 silly install resolved devDependencies: -2417 silly install resolved { coveralls: '^2.11.2', -2417 silly install resolved matcha: '^0.6.0', -2417 silly install resolved mocha: '*', -2417 silly install resolved nyc: '^3.0.0', -2417 silly install resolved 'require-uncached': '^1.0.2', -2417 silly install resolved 'resolve-from': '^1.0.0', -2417 silly install resolved semver: '^4.3.3', -2417 silly install resolved xo: '*' }, -2417 silly install resolved xo: { envs: [Object] }, -2417 silly install resolved gitHead: '0d8d8c204eb87a4038219131ad4d8369c9f59d24', -2417 silly install resolved bugs: { url: 'https://github.com/chalk/chalk/issues' }, -2417 silly install resolved homepage: 'https://github.com/chalk/chalk#readme', -2417 silly install resolved _id: 'chalk@1.1.3', -2417 silly install resolved _shasum: 'a8115c55e4a702fe4d150abd3872822a7e09fc98', -2417 silly install resolved _from: 'chalk@>=1.0.0 <2.0.0', -2417 silly install resolved _npmVersion: '2.14.2', -2417 silly install resolved _nodeVersion: '0.10.32', -2417 silly install resolved _npmUser: { name: 'qix', email: 'i.am.qix@gmail.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: 'a8115c55e4a702fe4d150abd3872822a7e09fc98', -2417 silly install resolved size: 5236, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'chalk/-/chalk-1.1.3.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/chalk/download/chalk-1.1.3.tgz' }, -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/chalk-1.1.3.tgz_1459210604109_0.3892582862172276' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1459210604512, -2417 silly install resolved _cnpm_publish_time: 1459210604512, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/chalk/download/chalk-1.1.3.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'rx', -2417 silly install resolved title: 'Reactive Extensions for JavaScript (RxJS)', -2417 silly install resolved description: 'Library for composing asynchronous and event-based operations in JavaScript', -2417 silly install resolved version: '4.1.0', -2417 silly install resolved homepage: 'https://github.com/Reactive-Extensions/RxJS', -2417 silly install resolved author: -2417 silly install resolved { name: 'Cloud Programmability Team', -2417 silly install resolved url: 'https://github.com/Reactive-Extensions/RxJS/blob/master/authors.txt' }, -2417 silly install resolved repository: -2417 silly install resolved { type: 'git', -2417 silly install resolved url: 'git+https://github.com/Reactive-Extensions/RxJS.git' }, -2417 silly install resolved license: 'Apache-2.0', -2417 silly install resolved bugs: { url: 'https://github.com/Reactive-Extensions/RxJS/issues' }, -2417 silly install resolved jam: { main: 'dist/rx.all.js' }, -2417 silly install resolved browser: { 'index.js': './dist/rx.all.js' }, -2417 silly install resolved dependencies: {}, -2417 silly install resolved devDependencies: -2417 silly install resolved { benchmark: '*', -2417 silly install resolved 'grunt-cli': '*', -2417 silly install resolved grunt: '*', -2417 silly install resolved 'grunt-contrib-copy': '*', -2417 silly install resolved 'grunt-contrib-jshint': '*', -2417 silly install resolved 'grunt-contrib-connect': '*', -2417 silly install resolved 'grunt-contrib-uglify': '*', -2417 silly install resolved 'grunt-contrib-concat': '*', -2417 silly install resolved 'grunt-contrib-qunit': '*', -2417 silly install resolved 'grunt-contrib-watch': '*', -2417 silly install resolved 'grunt-saucelabs': '*', -2417 silly install resolved 'grunt-jscs': '*', -2417 silly install resolved 'load-grunt-tasks': '*' }, -2417 silly install resolved keywords: [ 'LINQ', 'FRP', 'Reactive', 'Events', 'Rx', 'RxJS' ], -2417 silly install resolved main: 'index.js', -2417 silly install resolved scripts: { test: 'grunt' }, -2417 silly install resolved gitHead: '11cd57f5d66dd2a4bc3ed8140bfac48093e59197', -2417 silly install resolved _id: 'rx@4.1.0', -2417 silly install resolved _shasum: 'a5f13ff79ef3b740fe30aa803fb09f98805d4782', -2417 silly install resolved _from: 'rx@>=4.1.0 <5.0.0', -2417 silly install resolved _npmVersion: '3.8.0', -2417 silly install resolved _nodeVersion: '5.5.0', -2417 silly install resolved _npmUser: -2417 silly install resolved { name: 'mattpodwysocki', -2417 silly install resolved email: 'matthew.podwysocki@gmail.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: 'a5f13ff79ef3b740fe30aa803fb09f98805d4782', -2417 silly install resolved size: 1160834, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'rx/-/rx-4.1.0.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/rx/download/rx-4.1.0.tgz' }, -2417 silly install resolved maintainers: [ [Object], [Object] ], -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/rx-4.1.0.tgz_1457382319406_0.62292555347085' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1457382321443, -2417 silly install resolved _cnpm_publish_time: 1457382321443, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/rx/download/rx-4.1.0.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' }, -2417 silly install resolved { name: 'lodash', -2417 silly install resolved version: '4.12.0', -2417 silly install resolved description: 'Lodash modular utilities.', -2417 silly install resolved keywords: [ 'modules', 'stdlib', 'util' ], -2417 silly install resolved homepage: 'https://lodash.com/', -2417 silly install resolved repository: { type: 'git', url: 'git+https://github.com/lodash/lodash.git' }, -2417 silly install resolved icon: 'https://lodash.com/icon.svg', -2417 silly install resolved license: 'MIT', -2417 silly install resolved main: 'lodash.js', -2417 silly install resolved author: -2417 silly install resolved { name: 'John-David Dalton', -2417 silly install resolved email: 'john.david.dalton@gmail.com', -2417 silly install resolved url: 'http://allyoucanleet.com/' }, -2417 silly install resolved contributors: [ [Object], [Object], [Object] ], -2417 silly install resolved scripts: { test: 'echo "See https://travis-ci.org/lodash/lodash-cli for testing details."' }, -2417 silly install resolved bugs: { url: 'https://github.com/lodash/lodash/issues' }, -2417 silly install resolved _id: 'lodash@4.12.0', -2417 silly install resolved _shasum: '2bd6dc46a040f59e686c972ed21d93dc59053258', -2417 silly install resolved _from: 'lodash@>=4.3.0 <5.0.0', -2417 silly install resolved _npmVersion: '2.15.5', -2417 silly install resolved _nodeVersion: '6.0.0', -2417 silly install resolved _npmUser: { name: 'jdalton', email: 'john.david.dalton@gmail.com' }, -2417 silly install resolved dist: -2417 silly install resolved { shasum: '2bd6dc46a040f59e686c972ed21d93dc59053258', -2417 silly install resolved size: 294010, -2417 silly install resolved noattachment: false, -2417 silly install resolved key: 'lodash/-/lodash-4.12.0.tgz', -2417 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/lodash/download/lodash-4.12.0.tgz' }, -2417 silly install resolved maintainers: [ [Object], [Object], [Object] ], -2417 silly install resolved _npmOperationalInternal: -2417 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -2417 silly install resolved tmp: 'tmp/lodash-4.12.0.tgz_1462735540938_0.36508488352410495' }, -2417 silly install resolved directories: {}, -2417 silly install resolved publish_time: 1462735543826, -2417 silly install resolved _cnpm_publish_time: 1462735543826, -2417 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/lodash/download/lodash-4.12.0.tgz', -2417 silly install resolved readme: 'ERROR: No README data found!' } ] -2418 info install cli-cursor@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2419 info install cli-width@2.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2420 info install pinkie-promise@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2421 info install mute-stream@0.0.6 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2422 info install string-width@1.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2423 info install run-async@2.2.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2424 info install ansi-escapes@1.4.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2425 info install strip-ansi@3.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2426 info install through@2.3.8 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2427 info install figures@1.7.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2428 info install chalk@1.1.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2429 info install rx@4.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2430 info install lodash@4.12.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -2431 info installOne cli-cursor@1.0.2 -2432 verbose installOne of cli-cursor to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2433 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2434 info installOne cli-width@2.1.0 -2435 verbose installOne of cli-width to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2436 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2437 info installOne pinkie-promise@2.0.1 -2438 verbose installOne of pinkie-promise to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2439 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2440 info installOne mute-stream@0.0.6 -2441 verbose installOne of mute-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2442 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2443 info installOne string-width@1.0.1 -2444 verbose installOne of string-width to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2445 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2446 info installOne run-async@2.2.0 -2447 verbose installOne of run-async to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2448 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2449 info installOne ansi-escapes@1.4.0 -2450 verbose installOne of ansi-escapes to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2451 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2452 info installOne strip-ansi@3.0.1 -2453 verbose installOne of strip-ansi to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2454 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2455 info installOne through@2.3.8 -2456 verbose installOne of through to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2457 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2458 info installOne figures@1.7.0 -2459 verbose installOne of figures to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2460 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2461 info installOne chalk@1.1.3 -2462 verbose installOne of chalk to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2463 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2464 info installOne rx@4.1.0 -2465 verbose installOne of rx to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2466 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2467 info installOne lodash@4.12.0 -2468 verbose installOne of lodash to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer not in flight; installing -2469 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2470 silly install resolved [] -2471 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign -2472 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign -2473 info install merge-stream@1.0.0 -2474 http 304 http://registry.npm.alibaba-inc.com/util-deprecate -2475 verbose headers { server: 'Tengine', -2475 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2475 verbose headers connection: 'keep-alive', -2475 verbose headers etag: '"1828-s5Mws6s7lWlAGY5y9YlXaQ"', -2475 verbose headers 'x-readtime': '20' } -2476 silly get cb [ 304, -2476 silly get { server: 'Tengine', -2476 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2476 silly get connection: 'keep-alive', -2476 silly get etag: '"1828-s5Mws6s7lWlAGY5y9YlXaQ"', -2476 silly get 'x-readtime': '20' } ] -2477 verbose etag http://registry.npm.alibaba-inc.com/util-deprecate from cache -2478 verbose get saving util-deprecate to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/util-deprecate/.cache.json -2479 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2480 silly cache add args [ 'first-chunk-stream@^1.0.0', null ] -2481 verbose cache add spec first-chunk-stream@^1.0.0 -2482 silly cache add args [ 'is-utf8@^0.2.0', null ] -2483 verbose cache add spec is-utf8@^0.2.0 -2484 silly cache add parsed spec Result { -2484 silly cache add raw: 'first-chunk-stream@^1.0.0', -2484 silly cache add scope: null, -2484 silly cache add name: 'first-chunk-stream', -2484 silly cache add rawSpec: '^1.0.0', -2484 silly cache add spec: '>=1.0.0 <2.0.0', -2484 silly cache add type: 'range' } -2485 silly addNamed first-chunk-stream@>=1.0.0 <2.0.0 -2486 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for first-chunk-stream -2487 silly addNameRange { name: 'first-chunk-stream', -2487 silly addNameRange range: '>=1.0.0 <2.0.0', -2487 silly addNameRange hasData: false } -2488 silly mapToRegistry name first-chunk-stream -2489 silly mapToRegistry using default registry -2490 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2491 silly mapToRegistry data Result { -2491 silly mapToRegistry raw: 'first-chunk-stream', -2491 silly mapToRegistry scope: null, -2491 silly mapToRegistry name: 'first-chunk-stream', -2491 silly mapToRegistry rawSpec: '', -2491 silly mapToRegistry spec: 'latest', -2491 silly mapToRegistry type: 'tag' } -2492 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/first-chunk-stream -2493 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/first-chunk-stream not in flight; fetching -2494 silly cache add parsed spec Result { -2494 silly cache add raw: 'is-utf8@^0.2.0', -2494 silly cache add scope: null, -2494 silly cache add name: 'is-utf8', -2494 silly cache add rawSpec: '^0.2.0', -2494 silly cache add spec: '>=0.2.0 <0.3.0', -2494 silly cache add type: 'range' } -2495 silly addNamed is-utf8@>=0.2.0 <0.3.0 -2496 verbose addNamed ">=0.2.0 <0.3.0" is a valid semver range for is-utf8 -2497 silly addNameRange { name: 'is-utf8', range: '>=0.2.0 <0.3.0', hasData: false } -2498 silly mapToRegistry name is-utf8 -2499 silly mapToRegistry using default registry -2500 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2501 silly mapToRegistry data Result { -2501 silly mapToRegistry raw: 'is-utf8', -2501 silly mapToRegistry scope: null, -2501 silly mapToRegistry name: 'is-utf8', -2501 silly mapToRegistry rawSpec: '', -2501 silly mapToRegistry spec: 'latest', -2501 silly mapToRegistry type: 'tag' } -2502 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-utf8 -2503 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-utf8 not in flight; fetching -2504 verbose lock using /home/ruanyf/.tnpm/_locks/cli-cursor-6c4949ad4093ce24.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -2505 verbose lock using /home/ruanyf/.tnpm/_locks/string-width-569431eadb6883c4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -2506 verbose lock using /home/ruanyf/.tnpm/_locks/run-async-d947f04ab284015f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -2507 verbose lock using /home/ruanyf/.tnpm/_locks/cli-width-56eac2007d3e9b43.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width -2508 verbose lock using /home/ruanyf/.tnpm/_locks/ansi-escapes-e3b00eb232f4df7f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes -2509 verbose lock using /home/ruanyf/.tnpm/_locks/pinkie-promise-800bae8d19425ab2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -2510 verbose lock using /home/ruanyf/.tnpm/_locks/mute-stream-2084b951161707d7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream -2511 verbose lock using /home/ruanyf/.tnpm/_locks/strip-ansi-8225ce477c1ac85b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -2512 verbose lock using /home/ruanyf/.tnpm/_locks/through-a3c6e237a9a7f49c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through -2513 verbose lock using /home/ruanyf/.tnpm/_locks/figures-3c89e277294fa2ae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -2514 verbose lock using /home/ruanyf/.tnpm/_locks/chalk-c288fdd6e70f8cf3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -2515 verbose lock using /home/ruanyf/.tnpm/_locks/rx-a88d72d456f97785.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx -2516 verbose lock using /home/ruanyf/.tnpm/_locks/lodash-18cb345c53418e4c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash -2517 http 304 http://registry.npm.alibaba-inc.com/process-nextick-args -2518 verbose headers { server: 'Tengine', -2518 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2518 verbose headers connection: 'keep-alive', -2518 verbose headers etag: '"29b6-+c9xMCSHhzraGfcJXw/LOw"', -2518 verbose headers 'x-readtime': '19' } -2519 silly get cb [ 304, -2519 silly get { server: 'Tengine', -2519 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2519 silly get connection: 'keep-alive', -2519 silly get etag: '"29b6-+c9xMCSHhzraGfcJXw/LOw"', -2519 silly get 'x-readtime': '19' } ] -2520 verbose etag http://registry.npm.alibaba-inc.com/process-nextick-args from cache -2521 verbose get saving process-nextick-args to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/process-nextick-args/.cache.json -2522 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2523 silly cache add args [ 'unique-stream@^2.0.2', null ] -2524 verbose cache add spec unique-stream@^2.0.2 -2525 silly cache add parsed spec Result { -2525 silly cache add raw: 'unique-stream@^2.0.2', -2525 silly cache add scope: null, -2525 silly cache add name: 'unique-stream', -2525 silly cache add rawSpec: '^2.0.2', -2525 silly cache add spec: '>=2.0.2 <3.0.0', -2525 silly cache add type: 'range' } -2526 silly addNamed unique-stream@>=2.0.2 <3.0.0 -2527 verbose addNamed ">=2.0.2 <3.0.0" is a valid semver range for unique-stream -2528 silly addNameRange { name: 'unique-stream', -2528 silly addNameRange range: '>=2.0.2 <3.0.0', -2528 silly addNameRange hasData: false } -2529 silly mapToRegistry name unique-stream -2530 silly mapToRegistry using default registry -2531 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2532 silly mapToRegistry data Result { -2532 silly mapToRegistry raw: 'unique-stream', -2532 silly mapToRegistry scope: null, -2532 silly mapToRegistry name: 'unique-stream', -2532 silly mapToRegistry rawSpec: '', -2532 silly mapToRegistry spec: 'latest', -2532 silly mapToRegistry type: 'tag' } -2533 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/unique-stream -2534 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/unique-stream not in flight; fetching -2535 silly prepareForInstallMany adding lodash._root@~3.0.0 from lodash.isequal dependencies -2536 silly prepareForInstallMany adding lodash.keys@^4.0.0 from lodash.isequal dependencies -2537 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/package.json -2538 silly gunzTarPerm extractEntry test/return.js -2539 silly gunzTarPerm extractEntry test/return_sync.js -2540 info postinstall merge-stream@1.0.0 -2541 silly install write writing cli-cursor 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -2542 silly install write writing string-width 1.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -2543 silly install write writing run-async 2.2.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -2544 silly install write writing cli-width 2.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width -2545 silly install write writing ansi-escapes 1.4.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes -2546 silly install write writing pinkie-promise 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -2547 silly install write writing mute-stream 0.0.6 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream -2548 silly install write writing strip-ansi 3.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -2549 silly install write writing through 2.3.8 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through -2550 silly install write writing figures 1.7.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -2551 silly install write writing chalk 1.1.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -2552 silly install write writing rx 4.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx -2553 silly install write writing lodash 4.12.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash -2554 http 304 http://registry.npm.alibaba-inc.com/string_decoder -2555 verbose headers { server: 'Tengine', -2555 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2555 verbose headers connection: 'keep-alive', -2555 verbose headers etag: '"2781-r+r6Q+yEIMxgrJFc2TidrQ"', -2555 verbose headers 'x-readtime': '28' } -2556 silly get cb [ 304, -2556 silly get { server: 'Tengine', -2556 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2556 silly get connection: 'keep-alive', -2556 silly get etag: '"2781-r+r6Q+yEIMxgrJFc2TidrQ"', -2556 silly get 'x-readtime': '28' } ] -2557 verbose etag http://registry.npm.alibaba-inc.com/string_decoder from cache -2558 verbose get saving string_decoder to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/string_decoder/.cache.json -2559 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2560 http 304 http://registry.npm.alibaba-inc.com/isarray -2561 verbose headers { server: 'Tengine', -2561 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2561 verbose headers connection: 'keep-alive', -2561 verbose headers etag: '"1874-/oRHxQaeyMwf9womjIj2iQ"', -2561 verbose headers 'x-readtime': '23' } -2562 silly get cb [ 304, -2562 silly get { server: 'Tengine', -2562 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2562 silly get connection: 'keep-alive', -2562 silly get etag: '"1874-/oRHxQaeyMwf9womjIj2iQ"', -2562 silly get 'x-readtime': '23' } ] -2563 verbose etag http://registry.npm.alibaba-inc.com/isarray from cache -2564 verbose get saving isarray to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/isarray/.cache.json -2565 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2566 http 304 http://registry.npm.alibaba-inc.com/core-util-is -2567 verbose headers { server: 'Tengine', -2567 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2567 verbose headers connection: 'keep-alive', -2567 verbose headers etag: '"1012-J1qBYwWSaRuhI7IrLgNy1w"', -2567 verbose headers 'x-readtime': '22' } -2568 silly get cb [ 304, -2568 silly get { server: 'Tengine', -2568 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2568 silly get connection: 'keep-alive', -2568 silly get etag: '"1012-J1qBYwWSaRuhI7IrLgNy1w"', -2568 silly get 'x-readtime': '22' } ] -2569 verbose etag http://registry.npm.alibaba-inc.com/core-util-is from cache -2570 verbose get saving core-util-is to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/core-util-is/.cache.json -2571 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2572 silly cache add args [ 'extend@^3.0.0', null ] -2573 verbose cache add spec extend@^3.0.0 -2574 silly cache add parsed spec Result { -2574 silly cache add raw: 'extend@^3.0.0', -2574 silly cache add scope: null, -2574 silly cache add name: 'extend', -2574 silly cache add rawSpec: '^3.0.0', -2574 silly cache add spec: '>=3.0.0 <4.0.0', -2574 silly cache add type: 'range' } -2575 silly addNamed extend@>=3.0.0 <4.0.0 -2576 verbose addNamed ">=3.0.0 <4.0.0" is a valid semver range for extend -2577 silly addNameRange { name: 'extend', range: '>=3.0.0 <4.0.0', hasData: false } -2578 silly mapToRegistry name extend -2579 silly mapToRegistry using default registry -2580 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2581 silly mapToRegistry data Result { -2581 silly mapToRegistry raw: 'extend', -2581 silly mapToRegistry scope: null, -2581 silly mapToRegistry name: 'extend', -2581 silly mapToRegistry rawSpec: '', -2581 silly mapToRegistry spec: 'latest', -2581 silly mapToRegistry type: 'tag' } -2582 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/extend -2583 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/extend not in flight; fetching -2584 silly cache add args [ 'convert-source-map@^1.1.1', null ] -2585 verbose cache add spec convert-source-map@^1.1.1 -2586 silly cache add parsed spec Result { -2586 silly cache add raw: 'convert-source-map@^1.1.1', -2586 silly cache add scope: null, -2586 silly cache add name: 'convert-source-map', -2586 silly cache add rawSpec: '^1.1.1', -2586 silly cache add spec: '>=1.1.1 <2.0.0', -2586 silly cache add type: 'range' } -2587 silly addNamed convert-source-map@>=1.1.1 <2.0.0 -2588 verbose addNamed ">=1.1.1 <2.0.0" is a valid semver range for convert-source-map -2589 silly addNameRange { name: 'convert-source-map', -2589 silly addNameRange range: '>=1.1.1 <2.0.0', -2589 silly addNameRange hasData: false } -2590 silly mapToRegistry name convert-source-map -2591 silly mapToRegistry using default registry -2592 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2593 silly mapToRegistry data Result { -2593 silly mapToRegistry raw: 'convert-source-map', -2593 silly mapToRegistry scope: null, -2593 silly mapToRegistry name: 'convert-source-map', -2593 silly mapToRegistry rawSpec: '', -2593 silly mapToRegistry spec: 'latest', -2593 silly mapToRegistry type: 'tag' } -2594 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/convert-source-map -2595 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/convert-source-map not in flight; fetching -2596 silly cache add args [ 'glob@^5.0.3', null ] -2597 verbose cache add spec glob@^5.0.3 -2598 silly cache add parsed spec Result { -2598 silly cache add raw: 'glob@^5.0.3', -2598 silly cache add scope: null, -2598 silly cache add name: 'glob', -2598 silly cache add rawSpec: '^5.0.3', -2598 silly cache add spec: '>=5.0.3 <6.0.0', -2598 silly cache add type: 'range' } -2599 silly addNamed glob@>=5.0.3 <6.0.0 -2600 verbose addNamed ">=5.0.3 <6.0.0" is a valid semver range for glob -2601 silly addNameRange { name: 'glob', range: '>=5.0.3 <6.0.0', hasData: false } -2602 silly mapToRegistry name glob -2603 silly mapToRegistry using default registry -2604 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2605 silly mapToRegistry data Result { -2605 silly mapToRegistry raw: 'glob', -2605 silly mapToRegistry scope: null, -2605 silly mapToRegistry name: 'glob', -2605 silly mapToRegistry rawSpec: '', -2605 silly mapToRegistry spec: 'latest', -2605 silly mapToRegistry type: 'tag' } -2606 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/glob -2607 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/glob not in flight; fetching -2608 silly cache add args [ 'glob-parent@^2.0.0', null ] -2609 verbose cache add spec glob-parent@^2.0.0 -2610 silly cache add parsed spec Result { -2610 silly cache add raw: 'glob-parent@^2.0.0', -2610 silly cache add scope: null, -2610 silly cache add name: 'glob-parent', -2610 silly cache add rawSpec: '^2.0.0', -2610 silly cache add spec: '>=2.0.0 <3.0.0', -2610 silly cache add type: 'range' } -2611 silly addNamed glob-parent@>=2.0.0 <3.0.0 -2612 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for glob-parent -2613 silly addNameRange { name: 'glob-parent', range: '>=2.0.0 <3.0.0', hasData: false } -2614 silly mapToRegistry name glob-parent -2615 silly mapToRegistry using default registry -2616 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2617 silly mapToRegistry data Result { -2617 silly mapToRegistry raw: 'glob-parent', -2617 silly mapToRegistry scope: null, -2617 silly mapToRegistry name: 'glob-parent', -2617 silly mapToRegistry rawSpec: '', -2617 silly mapToRegistry spec: 'latest', -2617 silly mapToRegistry type: 'tag' } -2618 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/glob-parent -2619 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/glob-parent not in flight; fetching -2620 silly cache add args [ 'micromatch@^2.3.7', null ] -2621 verbose cache add spec micromatch@^2.3.7 -2622 silly cache add parsed spec Result { -2622 silly cache add raw: 'micromatch@^2.3.7', -2622 silly cache add scope: null, -2622 silly cache add name: 'micromatch', -2622 silly cache add rawSpec: '^2.3.7', -2622 silly cache add spec: '>=2.3.7 <3.0.0', -2622 silly cache add type: 'range' } -2623 silly addNamed micromatch@>=2.3.7 <3.0.0 -2624 verbose addNamed ">=2.3.7 <3.0.0" is a valid semver range for micromatch -2625 silly addNameRange { name: 'micromatch', range: '>=2.3.7 <3.0.0', hasData: false } -2626 silly mapToRegistry name micromatch -2627 silly mapToRegistry using default registry -2628 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2629 silly mapToRegistry data Result { -2629 silly mapToRegistry raw: 'micromatch', -2629 silly mapToRegistry scope: null, -2629 silly mapToRegistry name: 'micromatch', -2629 silly mapToRegistry rawSpec: '', -2629 silly mapToRegistry spec: 'latest', -2629 silly mapToRegistry type: 'tag' } -2630 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/micromatch -2631 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/micromatch not in flight; fetching -2632 silly cache add args [ 'ordered-read-streams@^0.3.0', null ] -2633 verbose cache add spec ordered-read-streams@^0.3.0 -2634 silly cache add parsed spec Result { -2634 silly cache add raw: 'ordered-read-streams@^0.3.0', -2634 silly cache add scope: null, -2634 silly cache add name: 'ordered-read-streams', -2634 silly cache add rawSpec: '^0.3.0', -2634 silly cache add spec: '>=0.3.0 <0.4.0', -2634 silly cache add type: 'range' } -2635 silly addNamed ordered-read-streams@>=0.3.0 <0.4.0 -2636 verbose addNamed ">=0.3.0 <0.4.0" is a valid semver range for ordered-read-streams -2637 silly addNameRange { name: 'ordered-read-streams', -2637 silly addNameRange range: '>=0.3.0 <0.4.0', -2637 silly addNameRange hasData: false } -2638 silly mapToRegistry name ordered-read-streams -2639 silly mapToRegistry using default registry -2640 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2641 silly mapToRegistry data Result { -2641 silly mapToRegistry raw: 'ordered-read-streams', -2641 silly mapToRegistry scope: null, -2641 silly mapToRegistry name: 'ordered-read-streams', -2641 silly mapToRegistry rawSpec: '', -2641 silly mapToRegistry spec: 'latest', -2641 silly mapToRegistry type: 'tag' } -2642 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/ordered-read-streams -2643 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/ordered-read-streams not in flight; fetching -2644 silly cache add args [ 'through2@^0.6.0', null ] -2645 verbose cache add spec through2@^0.6.0 -2646 silly cache add parsed spec Result { -2646 silly cache add raw: 'through2@^0.6.0', -2646 silly cache add scope: null, -2646 silly cache add name: 'through2', -2646 silly cache add rawSpec: '^0.6.0', -2646 silly cache add spec: '>=0.6.0 <0.7.0', -2646 silly cache add type: 'range' } -2647 silly addNamed through2@>=0.6.0 <0.7.0 -2648 verbose addNamed ">=0.6.0 <0.7.0" is a valid semver range for through2 -2649 silly addNameRange { name: 'through2', range: '>=0.6.0 <0.7.0', hasData: false } -2650 silly mapToRegistry name through2 -2651 silly mapToRegistry using default registry -2652 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2653 silly mapToRegistry data Result { -2653 silly mapToRegistry raw: 'through2', -2653 silly mapToRegistry scope: null, -2653 silly mapToRegistry name: 'through2', -2653 silly mapToRegistry rawSpec: '', -2653 silly mapToRegistry spec: 'latest', -2653 silly mapToRegistry type: 'tag' } -2654 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/through2 -2655 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/through2 not in flight; fetching -2656 silly cache add args [ 'to-absolute-glob@^0.1.1', null ] -2657 verbose cache add spec to-absolute-glob@^0.1.1 -2658 silly cache add parsed spec Result { -2658 silly cache add raw: 'to-absolute-glob@^0.1.1', -2658 silly cache add scope: null, -2658 silly cache add name: 'to-absolute-glob', -2658 silly cache add rawSpec: '^0.1.1', -2658 silly cache add spec: '>=0.1.1 <0.2.0', -2658 silly cache add type: 'range' } -2659 silly addNamed to-absolute-glob@>=0.1.1 <0.2.0 -2660 verbose addNamed ">=0.1.1 <0.2.0" is a valid semver range for to-absolute-glob -2661 silly addNameRange { name: 'to-absolute-glob', -2661 silly addNameRange range: '>=0.1.1 <0.2.0', -2661 silly addNameRange hasData: false } -2662 silly mapToRegistry name to-absolute-glob -2663 silly mapToRegistry using default registry -2664 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2665 silly mapToRegistry data Result { -2665 silly mapToRegistry raw: 'to-absolute-glob', -2665 silly mapToRegistry scope: null, -2665 silly mapToRegistry name: 'to-absolute-glob', -2665 silly mapToRegistry rawSpec: '', -2665 silly mapToRegistry spec: 'latest', -2665 silly mapToRegistry type: 'tag' } -2666 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/to-absolute-glob -2667 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/to-absolute-glob not in flight; fetching -2668 silly cache afterAdd xtend@4.0.1 -2669 verbose afterAdd /home/ruanyf/.tnpm/xtend/4.0.1/package/package.json not in flight; writing -2670 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2671 info linkStuff is-valid-glob@0.3.0 -2672 silly linkStuff is-valid-glob@0.3.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -2673 silly linkStuff is-valid-glob@0.3.0 is part of a global install -2674 silly linkStuff is-valid-glob@0.3.0 is installed into a global node_modules -2675 info linkStuff vali-date@1.0.0 -2676 silly linkStuff vali-date@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -2677 silly linkStuff vali-date@1.0.0 is part of a global install -2678 silly linkStuff vali-date@1.0.0 is installed into a global node_modules -2679 http 304 http://registry.npm.alibaba-inc.com/inherits -2680 verbose headers { server: 'Tengine', -2680 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2680 verbose headers connection: 'keep-alive', -2680 verbose headers etag: '"1f1e-Mk9UHFC0IpS7TBhwmfSvmg"', -2680 verbose headers 'x-readtime': '26' } -2681 silly get cb [ 304, -2681 silly get { server: 'Tengine', -2681 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2681 silly get connection: 'keep-alive', -2681 silly get etag: '"1f1e-Mk9UHFC0IpS7TBhwmfSvmg"', -2681 silly get 'x-readtime': '26' } ] -2682 verbose etag http://registry.npm.alibaba-inc.com/inherits from cache -2683 verbose get saving inherits to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/inherits/.cache.json -2684 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2685 info linkStuff object-assign@4.1.0 -2686 silly linkStuff object-assign@4.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -2687 silly linkStuff object-assign@4.1.0 is part of a global install -2688 silly linkStuff object-assign@4.1.0 is installed into a global node_modules -2689 verbose unlock done using /home/ruanyf/.tnpm/_locks/merge-stream-5b8b682289fbfd1f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/merge-stream -2690 verbose request uri http://registry.npm.alibaba-inc.com/first-chunk-stream -2691 verbose request no auth needed -2692 info attempt registry request try #1 at 上午9:12:29 -2693 verbose etag "1a8e-hJfQcz5wSU8k2u+/smzM0g" -2694 http request GET http://registry.npm.alibaba-inc.com/first-chunk-stream -2695 verbose request uri http://registry.npm.alibaba-inc.com/is-utf8 -2696 verbose request no auth needed -2697 info attempt registry request try #1 at 上午9:12:29 -2698 verbose etag "e7c-RDU3TErngl+p7xTFHAuDKA" -2699 http request GET http://registry.npm.alibaba-inc.com/is-utf8 -2700 verbose linkBins is-valid-glob@0.3.0 -2701 verbose linkMans is-valid-glob@0.3.0 -2702 verbose rebuildBundles is-valid-glob@0.3.0 -2703 verbose linkBins vali-date@1.0.0 -2704 verbose linkMans vali-date@1.0.0 -2705 verbose rebuildBundles vali-date@1.0.0 -2706 verbose request uri http://registry.npm.alibaba-inc.com/unique-stream -2707 verbose request no auth needed -2708 info attempt registry request try #1 at 上午9:12:29 -2709 verbose etag "54bd-4WIIMf65nm60xrDs/Jydtg" -2710 http request GET http://registry.npm.alibaba-inc.com/unique-stream -2711 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -2712 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -2713 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width -2714 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -2715 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes -2716 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -2717 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream -2718 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/through -2719 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -2720 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -2721 info install is-valid-glob@0.3.0 -2722 info install vali-date@1.0.0 -2723 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -2724 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx -2725 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash -2726 verbose request uri http://registry.npm.alibaba-inc.com/convert-source-map -2727 verbose request no auth needed -2728 info attempt registry request try #1 at 上午9:12:29 -2729 verbose etag "a073-HdYxcrXL3gR8xhvzyCOtNQ" -2730 http request GET http://registry.npm.alibaba-inc.com/convert-source-map -2731 verbose request uri http://registry.npm.alibaba-inc.com/glob-parent -2732 verbose request no auth needed -2733 info attempt registry request try #1 at 上午9:12:29 -2734 verbose etag "21d5-Z6sRptdOnEa4+jW3so9OtQ" -2735 http request GET http://registry.npm.alibaba-inc.com/glob-parent -2736 verbose request uri http://registry.npm.alibaba-inc.com/glob -2737 verbose request no auth needed -2738 info attempt registry request try #1 at 上午9:12:29 -2739 http request GET http://registry.npm.alibaba-inc.com/glob -2740 verbose get http://registry.npm.alibaba-inc.com/through2 not expired, no request -2741 silly addNameRange number 2 { name: 'through2', range: '>=0.6.0 <0.7.0', hasData: true } -2742 silly addNameRange versions [ 'through2', -2742 silly addNameRange [ '2.0.1', -2742 silly addNameRange '2.0.0', -2742 silly addNameRange '0.6.5', -2742 silly addNameRange '0.6.4', -2742 silly addNameRange '0.6.3', -2742 silly addNameRange '0.6.2', -2742 silly addNameRange '1.1.1', -2742 silly addNameRange '0.6.1', -2742 silly addNameRange '1.1.0', -2742 silly addNameRange '0.6.0', -2742 silly addNameRange '0.5.1', -2742 silly addNameRange '0.5.0', -2742 silly addNameRange '0.4.2', -2742 silly addNameRange '1.0.0', -2742 silly addNameRange '0.4.1', -2742 silly addNameRange '0.4.0', -2742 silly addNameRange '0.3.0', -2742 silly addNameRange '0.2.3', -2742 silly addNameRange '0.2.2', -2742 silly addNameRange '0.2.1', -2742 silly addNameRange '0.2.0', -2742 silly addNameRange '0.1.0', -2742 silly addNameRange '0.0.5', -2742 silly addNameRange '0.0.4', -2742 silly addNameRange '0.0.3', -2742 silly addNameRange '0.0.2', -2742 silly addNameRange '0.0.1', -2742 silly addNameRange '0.0.0' ] ] -2743 silly addNamed through2@0.6.5 -2744 verbose addNamed "0.6.5" is a plain semver version for through2 -2745 verbose request uri http://registry.npm.alibaba-inc.com/extend -2746 verbose request no auth needed -2747 info attempt registry request try #1 at 上午9:12:29 -2748 verbose etag "3e39-RcQ391ZJSIFujxd4rb4zLQ" -2749 http request GET http://registry.npm.alibaba-inc.com/extend -2750 verbose afterAdd /home/ruanyf/.tnpm/xtend/4.0.1/package/package.json written -2751 silly install resolved [ { name: 'xtend', -2751 silly install resolved version: '4.0.1', -2751 silly install resolved description: 'extend like a boss', -2751 silly install resolved keywords: [ 'extend', 'merge', 'options', 'opts', 'object', 'array' ], -2751 silly install resolved author: { name: 'Raynos', email: 'raynos2@gmail.com' }, -2751 silly install resolved repository: { type: 'git', url: 'git://github.com/Raynos/xtend.git' }, -2751 silly install resolved main: 'immutable', -2751 silly install resolved scripts: { test: 'node test' }, -2751 silly install resolved dependencies: {}, -2751 silly install resolved devDependencies: { tape: '~1.1.0' }, -2751 silly install resolved homepage: 'https://github.com/Raynos/xtend', -2751 silly install resolved contributors: [ [Object], [Object] ], -2751 silly install resolved bugs: -2751 silly install resolved { url: 'https://github.com/Raynos/xtend/issues', -2751 silly install resolved email: 'raynos2@gmail.com' }, -2751 silly install resolved license: 'MIT', -2751 silly install resolved testling: { files: 'test.js', browsers: [Object] }, -2751 silly install resolved engines: { node: '>=0.4' }, -2751 silly install resolved gitHead: '23dc302a89756da89c1897bc732a752317e35390', -2751 silly install resolved _id: 'xtend@4.0.1', -2751 silly install resolved _shasum: 'a5c6d532be656e23db820efb943a1f04998d63af', -2751 silly install resolved _from: 'xtend@>=4.0.0 <4.1.0', -2751 silly install resolved _npmVersion: '2.14.1', -2751 silly install resolved _nodeVersion: '0.10.32', -2751 silly install resolved _npmUser: { name: 'raynos', email: 'raynos2@gmail.com' }, -2751 silly install resolved dist: -2751 silly install resolved { shasum: 'a5c6d532be656e23db820efb943a1f04998d63af', -2751 silly install resolved size: 2542, -2751 silly install resolved noattachment: false, -2751 silly install resolved key: 'xtend/-/xtend-4.0.1.tgz', -2751 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.1.tgz' }, -2751 silly install resolved maintainers: [ [Object] ], -2751 silly install resolved directories: {}, -2751 silly install resolved publish_time: 1446502761923, -2751 silly install resolved _cnpm_publish_time: 1446502761923, -2751 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.1.tgz', -2751 silly install resolved readme: 'ERROR: No README data found!' } ] -2752 info install xtend@4.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter -2753 info installOne xtend@4.0.1 -2754 verbose installOne of xtend to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter not in flight; installing -2755 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -2756 verbose linkBins object-assign@4.1.0 -2757 verbose linkMans object-assign@4.1.0 -2758 verbose rebuildBundles object-assign@4.1.0 -2759 verbose request uri http://registry.npm.alibaba-inc.com/to-absolute-glob -2760 verbose request no auth needed -2761 info attempt registry request try #1 at 上午9:12:29 -2762 verbose etag "19da-FWTgFQ+ay4JKX0o3NhmBDg" -2763 http request GET http://registry.npm.alibaba-inc.com/to-absolute-glob -2764 verbose request uri http://registry.npm.alibaba-inc.com/ordered-read-streams -2765 verbose request no auth needed -2766 info attempt registry request try #1 at 上午9:12:29 -2767 verbose etag "3f15-Du58wvwbsKH5cTnGg/pXMg" -2768 http request GET http://registry.npm.alibaba-inc.com/ordered-read-streams -2769 verbose request uri http://registry.npm.alibaba-inc.com/micromatch -2770 verbose request no auth needed -2771 info attempt registry request try #1 at 上午9:12:29 -2772 verbose etag "1ada2-nMnnuVjpmwNfr0jJonuQmw" -2773 http request GET http://registry.npm.alibaba-inc.com/micromatch -2774 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs/package.json -2775 silly addNameRange number 2 { name: 'util-deprecate', -2775 silly addNameRange range: '>=1.0.1 <1.1.0', -2775 silly addNameRange hasData: true } -2776 silly addNameRange versions [ 'util-deprecate', [ '1.0.2', '1.0.1', '1.0.0' ] ] -2777 silly addNamed util-deprecate@1.0.2 -2778 verbose addNamed "1.0.2" is a plain semver version for util-deprecate -2779 info install object-assign@4.1.0 -2780 info postinstall is-valid-glob@0.3.0 -2781 info postinstall vali-date@1.0.0 -2782 silly addNameRange number 2 { name: 'process-nextick-args', -2782 silly addNameRange range: '>=1.0.6 <1.1.0', -2782 silly addNameRange hasData: true } -2783 silly addNameRange versions [ 'process-nextick-args', -2783 silly addNameRange [ '1.0.7', -2783 silly addNameRange '1.0.6', -2783 silly addNameRange '1.0.5', -2783 silly addNameRange '1.0.4', -2783 silly addNameRange '1.0.3', -2783 silly addNameRange '1.0.2', -2783 silly addNameRange '1.0.1', -2783 silly addNameRange '1.0.0' ] ] -2784 silly addNamed process-nextick-args@1.0.7 -2785 verbose addNamed "1.0.7" is a plain semver version for process-nextick-args -2786 http 304 http://registry.npm.alibaba-inc.com/first-chunk-stream -2787 verbose headers { server: 'Tengine', -2787 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2787 verbose headers connection: 'keep-alive', -2787 verbose headers etag: '"1a8e-hJfQcz5wSU8k2u+/smzM0g"', -2787 verbose headers 'x-readtime': '17' } -2788 silly get cb [ 304, -2788 silly get { server: 'Tengine', -2788 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2788 silly get connection: 'keep-alive', -2788 silly get etag: '"1a8e-hJfQcz5wSU8k2u+/smzM0g"', -2788 silly get 'x-readtime': '17' } ] -2789 verbose etag http://registry.npm.alibaba-inc.com/first-chunk-stream from cache -2790 verbose get saving first-chunk-stream to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/first-chunk-stream/.cache.json -2791 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2792 http 304 http://registry.npm.alibaba-inc.com/is-utf8 -2793 verbose headers { server: 'Tengine', -2793 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2793 verbose headers connection: 'keep-alive', -2793 verbose headers etag: '"e7c-RDU3TErngl+p7xTFHAuDKA"', -2793 verbose headers 'x-readtime': '16' } -2794 silly get cb [ 304, -2794 silly get { server: 'Tengine', -2794 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2794 silly get connection: 'keep-alive', -2794 silly get etag: '"e7c-RDU3TErngl+p7xTFHAuDKA"', -2794 silly get 'x-readtime': '16' } ] -2795 verbose etag http://registry.npm.alibaba-inc.com/is-utf8 from cache -2796 verbose get saving is-utf8 to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-utf8/.cache.json -2797 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2798 verbose lock using /home/ruanyf/.tnpm/_locks/xtend-b1f074d35a78cd4c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend -2799 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width is being purged from base /home/ruanyf/npm-global -2800 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -2801 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor is being purged from base /home/ruanyf/npm-global -2802 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -2803 silly gunzTarPerm extractEntry test/root.js -2804 silly gunzTarPerm extractEntry test/sync.js -2805 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width is being purged from base /home/ruanyf/npm-global -2806 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width -2807 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async is being purged from base /home/ruanyf/npm-global -2808 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -2809 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes is being purged from base /home/ruanyf/npm-global -2810 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes -2811 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise is being purged from base /home/ruanyf/npm-global -2812 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -2813 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream is being purged from base /home/ruanyf/npm-global -2814 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream -2815 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through is being purged from base /home/ruanyf/npm-global -2816 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through -2817 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures is being purged from base /home/ruanyf/npm-global -2818 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -2819 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi is being purged from base /home/ruanyf/npm-global -2820 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -2821 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk is being purged from base /home/ruanyf/npm-global -2822 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -2823 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx is being purged from base /home/ruanyf/npm-global -2824 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx -2825 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash is being purged from base /home/ruanyf/npm-global -2826 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash -2827 silly addNameRange number 2 { name: 'isarray', range: '>=1.0.0 <1.1.0', hasData: true } -2828 silly addNameRange versions [ 'isarray', [ '1.0.0', '0.0.1', '0.0.0' ] ] -2829 silly addNamed isarray@1.0.0 -2830 verbose addNamed "1.0.0" is a plain semver version for isarray -2831 silly addNameRange number 2 { name: 'string_decoder', -2831 silly addNameRange range: '>=0.10.0 <0.11.0', -2831 silly addNameRange hasData: true } -2832 silly addNameRange versions [ 'string_decoder', -2832 silly addNameRange [ '0.10.31', -2832 silly addNameRange '0.10.25-1', -2832 silly addNameRange '0.11.10-1', -2832 silly addNameRange '0.10.25', -2832 silly addNameRange '0.11.10', -2832 silly addNameRange '0.10.24', -2832 silly addNameRange '0.0.1', -2832 silly addNameRange '0.0.0' ] ] -2833 silly addNamed string_decoder@0.10.31 -2834 verbose addNamed "0.10.31" is a plain semver version for string_decoder -2835 silly addNameRange number 2 { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: true } -2836 silly addNameRange versions [ 'core-util-is', [ '1.0.2', '1.0.1', '1.0.0' ] ] -2837 silly addNamed core-util-is@1.0.2 -2838 verbose addNamed "1.0.2" is a plain semver version for core-util-is -2839 info postinstall object-assign@4.1.0 -2840 silly install write writing xtend 4.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend -2841 verbose tar unpack /home/ruanyf/.tnpm/string-width/1.0.1/package.tgz -2842 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -2843 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width is being purged -2844 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -2845 verbose tar unpack /home/ruanyf/.tnpm/cli-cursor/1.0.2/package.tgz -2846 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -2847 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor is being purged -2848 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -2849 verbose tar unpack /home/ruanyf/.tnpm/cli-width/2.1.0/package.tgz -2850 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width -2851 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width is being purged -2852 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width -2853 verbose tar unpack /home/ruanyf/.tnpm/run-async/2.2.0/package.tgz -2854 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -2855 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async is being purged -2856 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -2857 verbose tar unpack /home/ruanyf/.tnpm/ansi-escapes/1.4.0/package.tgz -2858 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes -2859 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes is being purged -2860 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes -2861 verbose tar unpack /home/ruanyf/.tnpm/pinkie-promise/2.0.1/package.tgz -2862 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -2863 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise is being purged -2864 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -2865 verbose tar unpack /home/ruanyf/.tnpm/mute-stream/0.0.6/package.tgz -2866 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream -2867 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream is being purged -2868 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream -2869 verbose tar unpack /home/ruanyf/.tnpm/through/2.3.8/package.tgz -2870 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through -2871 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through is being purged -2872 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through -2873 verbose tar unpack /home/ruanyf/.tnpm/figures/1.7.0/package.tgz -2874 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -2875 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures is being purged -2876 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -2877 verbose tar unpack /home/ruanyf/.tnpm/strip-ansi/3.0.1/package.tgz -2878 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -2879 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi is being purged -2880 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -2881 verbose tar unpack /home/ruanyf/.tnpm/chalk/1.1.3/package.tgz -2882 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -2883 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk is being purged -2884 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -2885 verbose tar unpack /home/ruanyf/.tnpm/rx/4.1.0/package.tgz -2886 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx -2887 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx is being purged -2888 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx -2889 verbose tar unpack /home/ruanyf/.tnpm/lodash/4.12.0/package.tgz -2890 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash -2891 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash is being purged -2892 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash -2893 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: true } -2894 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] -2895 silly addNamed inherits@2.0.1 -2896 verbose addNamed "2.0.1" is a plain semver version for inherits -2897 silly gunzTarPerm modes [ '755', '644' ] -2898 silly gunzTarPerm modes [ '755', '644' ] -2899 silly gunzTarPerm modes [ '755', '644' ] -2900 silly gunzTarPerm modes [ '755', '644' ] -2901 silly gunzTarPerm modes [ '755', '644' ] -2902 silly gunzTarPerm modes [ '755', '644' ] -2903 silly gunzTarPerm modes [ '755', '644' ] -2904 silly gunzTarPerm modes [ '755', '644' ] -2905 silly gunzTarPerm modes [ '755', '644' ] -2906 silly gunzTarPerm modes [ '755', '644' ] -2907 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-valid-glob-9f79f0427d8ae514.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/is-valid-glob -2908 info preinstall graceful-fs@4.1.4 -2909 verbose unlock done using /home/ruanyf/.tnpm/_locks/vali-date-3a589ee89230ab82.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vali-date -2910 silly gunzTarPerm modes [ '755', '644' ] -2911 silly gunzTarPerm modes [ '755', '644' ] -2912 silly gunzTarPerm modes [ '755', '644' ] -2913 verbose unlock done using /home/ruanyf/.tnpm/_locks/object-assign-6a58d648390be4f2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/object-assign -2914 silly cache afterAdd through2@0.6.5 -2915 verbose afterAdd /home/ruanyf/.tnpm/through2/0.6.5/package/package.json not in flight; writing -2916 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2917 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs/package.json -2918 silly cache add args [ 'lodash._root@~3.0.0', null ] -2919 verbose cache add spec lodash._root@~3.0.0 -2920 silly cache add parsed spec Result { -2920 silly cache add raw: 'lodash._root@~3.0.0', -2920 silly cache add scope: null, -2920 silly cache add name: 'lodash._root', -2920 silly cache add rawSpec: '~3.0.0', -2920 silly cache add spec: '>=3.0.0 <3.1.0', -2920 silly cache add type: 'range' } -2921 silly addNamed lodash._root@>=3.0.0 <3.1.0 -2922 verbose addNamed ">=3.0.0 <3.1.0" is a valid semver range for lodash._root -2923 silly addNameRange { name: 'lodash._root', range: '>=3.0.0 <3.1.0', hasData: false } -2924 silly mapToRegistry name lodash._root -2925 silly mapToRegistry using default registry -2926 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2927 silly mapToRegistry data Result { -2927 silly mapToRegistry raw: 'lodash._root', -2927 silly mapToRegistry scope: null, -2927 silly mapToRegistry name: 'lodash._root', -2927 silly mapToRegistry rawSpec: '', -2927 silly mapToRegistry spec: 'latest', -2927 silly mapToRegistry type: 'tag' } -2928 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/lodash._root -2929 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/lodash._root not in flight; fetching -2930 silly cache add args [ 'lodash.keys@^4.0.0', null ] -2931 verbose cache add spec lodash.keys@^4.0.0 -2932 silly cache add parsed spec Result { -2932 silly cache add raw: 'lodash.keys@^4.0.0', -2932 silly cache add scope: null, -2932 silly cache add name: 'lodash.keys', -2932 silly cache add rawSpec: '^4.0.0', -2932 silly cache add spec: '>=4.0.0 <5.0.0', -2932 silly cache add type: 'range' } -2933 silly addNamed lodash.keys@>=4.0.0 <5.0.0 -2934 verbose addNamed ">=4.0.0 <5.0.0" is a valid semver range for lodash.keys -2935 silly addNameRange { name: 'lodash.keys', range: '>=4.0.0 <5.0.0', hasData: false } -2936 silly mapToRegistry name lodash.keys -2937 silly mapToRegistry using default registry -2938 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -2939 silly mapToRegistry data Result { -2939 silly mapToRegistry raw: 'lodash.keys', -2939 silly mapToRegistry scope: null, -2939 silly mapToRegistry name: 'lodash.keys', -2939 silly mapToRegistry rawSpec: '', -2939 silly mapToRegistry spec: 'latest', -2939 silly mapToRegistry type: 'tag' } -2940 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/lodash.keys -2941 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/lodash.keys not in flight; fetching -2942 silly cache afterAdd util-deprecate@1.0.2 -2943 verbose afterAdd /home/ruanyf/.tnpm/util-deprecate/1.0.2/package/package.json not in flight; writing -2944 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2945 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/package.json -2946 http 304 http://registry.npm.alibaba-inc.com/glob-parent -2947 verbose headers { server: 'Tengine', -2947 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2947 verbose headers connection: 'keep-alive', -2947 verbose headers etag: '"21d5-Z6sRptdOnEa4+jW3so9OtQ"', -2947 verbose headers 'x-readtime': '21' } -2948 silly get cb [ 304, -2948 silly get { server: 'Tengine', -2948 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2948 silly get connection: 'keep-alive', -2948 silly get etag: '"21d5-Z6sRptdOnEa4+jW3so9OtQ"', -2948 silly get 'x-readtime': '21' } ] -2949 verbose etag http://registry.npm.alibaba-inc.com/glob-parent from cache -2950 verbose get saving glob-parent to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/glob-parent/.cache.json -2951 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2952 http 304 http://registry.npm.alibaba-inc.com/unique-stream -2953 verbose headers { server: 'Tengine', -2953 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2953 verbose headers connection: 'keep-alive', -2953 verbose headers etag: '"54bd-4WIIMf65nm60xrDs/Jydtg"', -2953 verbose headers 'x-readtime': '25' } -2954 silly get cb [ 304, -2954 silly get { server: 'Tengine', -2954 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2954 silly get connection: 'keep-alive', -2954 silly get etag: '"54bd-4WIIMf65nm60xrDs/Jydtg"', -2954 silly get 'x-readtime': '25' } ] -2955 verbose etag http://registry.npm.alibaba-inc.com/unique-stream from cache -2956 verbose get saving unique-stream to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/unique-stream/.cache.json -2957 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2958 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend -2959 silly cache afterAdd process-nextick-args@1.0.7 -2960 verbose afterAdd /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package/package.json not in flight; writing -2961 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2962 silly cache afterAdd isarray@1.0.0 -2963 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json not in flight; writing -2964 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2965 silly cache afterAdd string_decoder@0.10.31 -2966 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json not in flight; writing -2967 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2968 silly cache afterAdd core-util-is@1.0.2 -2969 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json not in flight; writing -2970 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2971 silly gunzTarPerm extractEntry package.json -2972 http 304 http://registry.npm.alibaba-inc.com/to-absolute-glob -2973 verbose headers { server: 'Tengine', -2973 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -2973 verbose headers connection: 'keep-alive', -2973 verbose headers etag: '"19da-FWTgFQ+ay4JKX0o3NhmBDg"', -2973 verbose headers 'x-readtime': '16' } -2974 silly get cb [ 304, -2974 silly get { server: 'Tengine', -2974 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -2974 silly get connection: 'keep-alive', -2974 silly get etag: '"19da-FWTgFQ+ay4JKX0o3NhmBDg"', -2974 silly get 'x-readtime': '16' } ] -2975 verbose etag http://registry.npm.alibaba-inc.com/to-absolute-glob from cache -2976 verbose get saving to-absolute-glob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/to-absolute-glob/.cache.json -2977 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2978 silly addNameRange number 2 { name: 'is-utf8', range: '>=0.2.0 <0.3.0', hasData: true } -2979 silly addNameRange versions [ 'is-utf8', [ '0.2.1', '0.2.0', '0.1.0' ] ] -2980 silly addNamed is-utf8@0.2.1 -2981 verbose addNamed "0.2.1" is a plain semver version for is-utf8 -2982 silly addNameRange number 2 { name: 'first-chunk-stream', -2982 silly addNameRange range: '>=1.0.0 <2.0.0', -2982 silly addNameRange hasData: true } -2983 silly addNameRange versions [ 'first-chunk-stream', [ '2.0.0', '1.0.0', '0.1.0' ] ] -2984 silly addNamed first-chunk-stream@1.0.0 -2985 verbose addNamed "1.0.0" is a plain semver version for first-chunk-stream -2986 silly cache afterAdd inherits@2.0.1 -2987 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing -2988 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -2989 silly gunzTarPerm extractEntry package.json -2990 silly gunzTarPerm extractEntry package.json -2991 silly gunzTarPerm extractEntry package.json -2992 silly gunzTarPerm extractEntry package.json -2993 silly gunzTarPerm extractEntry package.json -2994 silly gunzTarPerm extractEntry package.json -2995 silly gunzTarPerm extractEntry package.json -2996 silly gunzTarPerm extractEntry package.json -2997 silly gunzTarPerm extractEntry package.json -2998 silly gunzTarPerm extractEntry package.json -2999 silly gunzTarPerm extractEntry package.json -3000 info preinstall duplexify@3.4.3 -3001 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend is being purged from base /home/ruanyf/npm-global -3002 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend -3003 silly gunzTarPerm extractEntry package.json -3004 verbose afterAdd /home/ruanyf/.tnpm/through2/0.6.5/package/package.json written -3005 verbose request uri http://registry.npm.alibaba-inc.com/lodash._root -3006 verbose request no auth needed -3007 info attempt registry request try #1 at 上午9:12:29 -3008 verbose etag "11ee-PoQ6ahk1bx7NZjJwBalZ+A" -3009 http request GET http://registry.npm.alibaba-inc.com/lodash._root -3010 http 304 http://registry.npm.alibaba-inc.com/ordered-read-streams -3011 verbose headers { server: 'Tengine', -3011 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3011 verbose headers connection: 'keep-alive', -3011 verbose headers etag: '"3f15-Du58wvwbsKH5cTnGg/pXMg"', -3011 verbose headers 'x-readtime': '25' } -3012 silly get cb [ 304, -3012 silly get { server: 'Tengine', -3012 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3012 silly get connection: 'keep-alive', -3012 silly get etag: '"3f15-Du58wvwbsKH5cTnGg/pXMg"', -3012 silly get 'x-readtime': '25' } ] -3013 verbose etag http://registry.npm.alibaba-inc.com/ordered-read-streams from cache -3014 verbose get saving ordered-read-streams to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/ordered-read-streams/.cache.json -3015 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3016 http 304 http://registry.npm.alibaba-inc.com/extend -3017 verbose headers { server: 'Tengine', -3017 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3017 verbose headers connection: 'keep-alive', -3017 verbose headers etag: '"3e39-RcQ391ZJSIFujxd4rb4zLQ"', -3017 verbose headers 'x-readtime': '23' } -3018 silly get cb [ 304, -3018 silly get { server: 'Tengine', -3018 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3018 silly get connection: 'keep-alive', -3018 silly get etag: '"3e39-RcQ391ZJSIFujxd4rb4zLQ"', -3018 silly get 'x-readtime': '23' } ] -3019 verbose etag http://registry.npm.alibaba-inc.com/extend from cache -3020 verbose get saving extend to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/extend/.cache.json -3021 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3022 verbose request uri http://registry.npm.alibaba-inc.com/lodash.keys -3023 verbose request no auth needed -3024 info attempt registry request try #1 at 上午9:12:29 -3025 verbose etag "b195-SbVMEYnecjs0LL38MRKJ6g" -3026 http request GET http://registry.npm.alibaba-inc.com/lodash.keys -3027 verbose afterAdd /home/ruanyf/.tnpm/util-deprecate/1.0.2/package/package.json written -3028 verbose tar unpack /home/ruanyf/.tnpm/xtend/4.0.1/package.tgz -3029 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend -3030 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend is being purged -3031 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend -3032 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs/package.json -3033 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/package.json -3034 silly gunzTarPerm modes [ '755', '644' ] -3035 verbose afterAdd /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package/package.json written -3036 silly gunzTarPerm extractEntry test/mkdirp.js -3037 silly gunzTarPerm extractEntry test/umask.js -3038 silly gunzTarPerm extractEntry index.js -3039 silly gunzTarPerm extractEntry license -3040 http 304 http://registry.npm.alibaba-inc.com/convert-source-map -3041 verbose headers { server: 'Tengine', -3041 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3041 verbose headers connection: 'keep-alive', -3041 verbose headers etag: '"a073-HdYxcrXL3gR8xhvzyCOtNQ"', -3041 verbose headers 'x-readtime': '54' } -3042 silly get cb [ 304, -3042 silly get { server: 'Tengine', -3042 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3042 silly get connection: 'keep-alive', -3042 silly get etag: '"a073-HdYxcrXL3gR8xhvzyCOtNQ"', -3042 silly get 'x-readtime': '54' } ] -3043 verbose etag http://registry.npm.alibaba-inc.com/convert-source-map from cache -3044 verbose get saving convert-source-map to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/convert-source-map/.cache.json -3045 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3046 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json written -3047 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json written -3048 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json written -3049 silly gunzTarPerm extractEntry index.js -3050 silly gunzTarPerm extractEntry license -3051 silly gunzTarPerm extractEntry .npmignore -3052 silly gunzTarPerm extractEntry README.md -3053 silly gunzTarPerm extractEntry .npmignore -3054 silly gunzTarPerm extractEntry README.md -3055 silly gunzTarPerm extractEntry README.md -3056 silly gunzTarPerm extractEntry LICENSE -3057 silly gunzTarPerm extractEntry index.js -3058 silly gunzTarPerm extractEntry license -3059 silly gunzTarPerm extractEntry index.js -3060 silly gunzTarPerm extractEntry license -3061 silly gunzTarPerm extractEntry index.js -3062 silly gunzTarPerm extractEntry .travis.yml -3063 silly gunzTarPerm extractEntry index.js -3064 silly gunzTarPerm extractEntry license -3065 silly gunzTarPerm extractEntry index.js -3066 silly gunzTarPerm extractEntry license -3067 silly gunzTarPerm extractEntry index.js -3068 silly gunzTarPerm extractEntry license -3069 silly gunzTarPerm extractEntry index.js -3070 silly gunzTarPerm extractEntry component.json -3071 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written -3072 silly install resolved [ { name: 'util-deprecate', -3072 silly install resolved version: '1.0.2', -3072 silly install resolved description: 'The Node.js `util.deprecate()` function with browser support', -3072 silly install resolved main: 'node.js', -3072 silly install resolved browser: 'browser.js', -3072 silly install resolved scripts: { test: 'echo "Error: no test specified" && exit 1' }, -3072 silly install resolved repository: -3072 silly install resolved { type: 'git', -3072 silly install resolved url: 'git://github.com/TooTallNate/util-deprecate.git' }, -3072 silly install resolved keywords: [ 'util', 'deprecate', 'browserify', 'browser', 'node' ], -3072 silly install resolved author: -3072 silly install resolved { name: 'Nathan Rajlich', -3072 silly install resolved email: 'nathan@tootallnate.net', -3072 silly install resolved url: 'http://n8.io/' }, -3072 silly install resolved license: 'MIT', -3072 silly install resolved bugs: { url: 'https://github.com/TooTallNate/util-deprecate/issues' }, -3072 silly install resolved homepage: 'https://github.com/TooTallNate/util-deprecate', -3072 silly install resolved gitHead: '475fb6857cd23fafff20c1be846c1350abf8e6d4', -3072 silly install resolved _id: 'util-deprecate@1.0.2', -3072 silly install resolved _shasum: '450d4dc9fa70de732762fbd2d4a28981419a0ccf', -3072 silly install resolved _from: 'util-deprecate@>=1.0.1 <1.1.0', -3072 silly install resolved _npmVersion: '2.14.4', -3072 silly install resolved _nodeVersion: '4.1.2', -3072 silly install resolved _npmUser: { name: 'tootallnate', email: 'nathan@tootallnate.net' }, -3072 silly install resolved maintainers: [ [Object] ], -3072 silly install resolved dist: -3072 silly install resolved { shasum: '450d4dc9fa70de732762fbd2d4a28981419a0ccf', -3072 silly install resolved size: 2246, -3072 silly install resolved noattachment: false, -3072 silly install resolved key: 'util-deprecate/-/util-deprecate-1.0.2.tgz', -3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz' }, -3072 silly install resolved directories: {}, -3072 silly install resolved publish_time: 1444243060665, -3072 silly install resolved _cnpm_publish_time: 1444243060665, -3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz', -3072 silly install resolved readme: 'ERROR: No README data found!' }, -3072 silly install resolved { name: 'process-nextick-args', -3072 silly install resolved version: '1.0.7', -3072 silly install resolved description: 'process.nextTick but always with args', -3072 silly install resolved main: 'index.js', -3072 silly install resolved scripts: { test: 'node test.js' }, -3072 silly install resolved repository: -3072 silly install resolved { type: 'git', -3072 silly install resolved url: 'git+https://github.com/calvinmetcalf/process-nextick-args.git' }, -3072 silly install resolved author: '', -3072 silly install resolved license: 'MIT', -3072 silly install resolved bugs: { url: 'https://github.com/calvinmetcalf/process-nextick-args/issues' }, -3072 silly install resolved homepage: 'https://github.com/calvinmetcalf/process-nextick-args', -3072 silly install resolved devDependencies: { tap: '~0.2.6' }, -3072 silly install resolved gitHead: '5c00899ab01dd32f93ad4b5743da33da91404f39', -3072 silly install resolved _id: 'process-nextick-args@1.0.7', -3072 silly install resolved _shasum: '150e20b756590ad3f91093f25a4f2ad8bff30ba3', -3072 silly install resolved _from: 'process-nextick-args@>=1.0.6 <1.1.0', -3072 silly install resolved _npmVersion: '3.8.6', -3072 silly install resolved _nodeVersion: '5.11.0', -3072 silly install resolved _npmUser: { name: 'cwmma', email: 'calvin.metcalf@gmail.com' }, -3072 silly install resolved dist: -3072 silly install resolved { shasum: '150e20b756590ad3f91093f25a4f2ad8bff30ba3', -3072 silly install resolved size: 1923, -3072 silly install resolved noattachment: false, -3072 silly install resolved key: 'process-nextick-args/-/process-nextick-args-1.0.7.tgz', -3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/process-nextick-args/download/process-nextick-args-1.0.7.tgz' }, -3072 silly install resolved maintainers: [ [Object] ], -3072 silly install resolved _npmOperationalInternal: -3072 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -3072 silly install resolved tmp: 'tmp/process-nextick-args-1.0.7.tgz_1462394251778_0.36989671061746776' }, -3072 silly install resolved directories: {}, -3072 silly install resolved publish_time: 1462394254467, -3072 silly install resolved _cnpm_publish_time: 1462394254467, -3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/process-nextick-args/download/process-nextick-args-1.0.7.tgz', -3072 silly install resolved readme: 'ERROR: No README data found!' }, -3072 silly install resolved { name: 'isarray', -3072 silly install resolved description: 'Array#isArray for older browsers', -3072 silly install resolved version: '1.0.0', -3072 silly install resolved repository: -3072 silly install resolved { type: 'git', -3072 silly install resolved url: 'git://github.com/juliangruber/isarray.git' }, -3072 silly install resolved homepage: 'https://github.com/juliangruber/isarray', -3072 silly install resolved main: 'index.js', -3072 silly install resolved dependencies: {}, -3072 silly install resolved devDependencies: { tape: '~2.13.4' }, -3072 silly install resolved keywords: [ 'browser', 'isarray', 'array' ], -3072 silly install resolved author: -3072 silly install resolved { name: 'Julian Gruber', -3072 silly install resolved email: 'mail@juliangruber.com', -3072 silly install resolved url: 'http://juliangruber.com' }, -3072 silly install resolved license: 'MIT', -3072 silly install resolved testling: { files: 'test.js', browsers: [Object] }, -3072 silly install resolved scripts: { test: 'tape test.js' }, -3072 silly install resolved gitHead: '2a23a281f369e9ae06394c0fb4d2381355a6ba33', -3072 silly install resolved bugs: { url: 'https://github.com/juliangruber/isarray/issues' }, -3072 silly install resolved _id: 'isarray@1.0.0', -3072 silly install resolved _shasum: 'bb935d48582cba168c06834957a54a3e07124f11', -3072 silly install resolved _from: 'isarray@>=1.0.0 <1.1.0', -3072 silly install resolved _npmVersion: '3.3.12', -3072 silly install resolved _nodeVersion: '5.1.0', -3072 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, -3072 silly install resolved dist: -3072 silly install resolved { shasum: 'bb935d48582cba168c06834957a54a3e07124f11', -3072 silly install resolved size: 2021, -3072 silly install resolved noattachment: false, -3072 silly install resolved key: 'isarray/-/isarray-1.0.0.tgz', -3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz' }, -3072 silly install resolved maintainers: [ [Object] ], -3072 silly install resolved directories: {}, -3072 silly install resolved publish_time: 1449741907067, -3072 silly install resolved _cnpm_publish_time: 1449741907067, -3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz', -3072 silly install resolved readme: 'ERROR: No README data found!' }, -3072 silly install resolved { name: 'string_decoder', -3072 silly install resolved version: '0.10.31', -3072 silly install resolved description: 'The string_decoder module from Node core', -3072 silly install resolved main: 'index.js', -3072 silly install resolved dependencies: {}, -3072 silly install resolved devDependencies: { tap: '~0.4.8' }, -3072 silly install resolved scripts: { test: 'tap test/simple/*.js' }, -3072 silly install resolved repository: -3072 silly install resolved { type: 'git', -3072 silly install resolved url: 'git://github.com/rvagg/string_decoder.git' }, -3072 silly install resolved homepage: 'https://github.com/rvagg/string_decoder', -3072 silly install resolved keywords: [ 'string', 'decoder', 'browser', 'browserify' ], -3072 silly install resolved license: 'MIT', -3072 silly install resolved gitHead: 'd46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0', -3072 silly install resolved bugs: { url: 'https://github.com/rvagg/string_decoder/issues' }, -3072 silly install resolved _id: 'string_decoder@0.10.31', -3072 silly install resolved _shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', -3072 silly install resolved _from: 'string_decoder@>=0.10.0 <0.11.0', -3072 silly install resolved _npmVersion: '1.4.23', -3072 silly install resolved _npmUser: { name: 'rvagg', email: 'rod@vagg.org' }, -3072 silly install resolved maintainers: [ [Object], [Object] ], -3072 silly install resolved dist: -3072 silly install resolved { shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', -3072 silly install resolved size: 3608, -3072 silly install resolved noattachment: false, -3072 silly install resolved key: 'string_decoder/-/string_decoder-0.10.31.tgz', -3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz' }, -3072 silly install resolved directories: {}, -3072 silly install resolved publish_time: 1408767919329, -3072 silly install resolved _cnpm_publish_time: 1408767919329, -3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz', -3072 silly install resolved readme: 'ERROR: No README data found!' }, -3072 silly install resolved { name: 'core-util-is', -3072 silly install resolved version: '1.0.2', -3072 silly install resolved description: 'The `util.is*` functions introduced in Node v0.12.', -3072 silly install resolved main: 'lib/util.js', -3072 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/core-util-is.git' }, -3072 silly install resolved keywords: -3072 silly install resolved [ 'util', -3072 silly install resolved 'isBuffer', -3072 silly install resolved 'isArray', -3072 silly install resolved 'isNumber', -3072 silly install resolved 'isString', -3072 silly install resolved 'isRegExp', -3072 silly install resolved 'isThis', -3072 silly install resolved 'isThat', -3072 silly install resolved 'polyfill' ], -3072 silly install resolved author: -3072 silly install resolved { name: 'Isaac Z. Schlueter', -3072 silly install resolved email: 'i@izs.me', -3072 silly install resolved url: 'http://blog.izs.me/' }, -3072 silly install resolved license: 'MIT', -3072 silly install resolved bugs: { url: 'https://github.com/isaacs/core-util-is/issues' }, -3072 silly install resolved scripts: { test: 'tap test.js' }, -3072 silly install resolved devDependencies: { tap: '^2.3.0' }, -3072 silly install resolved gitHead: 'a177da234df5638b363ddc15fa324619a38577c8', -3072 silly install resolved homepage: 'https://github.com/isaacs/core-util-is#readme', -3072 silly install resolved _id: 'core-util-is@1.0.2', -3072 silly install resolved _shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', -3072 silly install resolved _from: 'core-util-is@>=1.0.0 <1.1.0', -3072 silly install resolved _npmVersion: '3.3.2', -3072 silly install resolved _nodeVersion: '4.0.0', -3072 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -3072 silly install resolved dist: -3072 silly install resolved { shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', -3072 silly install resolved size: 7016, -3072 silly install resolved noattachment: false, -3072 silly install resolved key: 'core-util-is/-/core-util-is-1.0.2.tgz', -3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz' }, -3072 silly install resolved maintainers: [ [Object] ], -3072 silly install resolved directories: {}, -3072 silly install resolved publish_time: 1447979853081, -3072 silly install resolved _cnpm_publish_time: 1447979853081, -3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz', -3072 silly install resolved readme: 'ERROR: No README data found!' }, -3072 silly install resolved { name: 'inherits', -3072 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', -3072 silly install resolved version: '2.0.1', -3072 silly install resolved keywords: -3072 silly install resolved [ 'inheritance', -3072 silly install resolved 'class', -3072 silly install resolved 'klass', -3072 silly install resolved 'oop', -3072 silly install resolved 'object-oriented', -3072 silly install resolved 'inherits', -3072 silly install resolved 'browser', -3072 silly install resolved 'browserify' ], -3072 silly install resolved main: './inherits.js', -3072 silly install resolved browser: './inherits_browser.js', -3072 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, -3072 silly install resolved license: 'ISC', -3072 silly install resolved scripts: { test: 'node test' }, -3072 silly install resolved readmeFilename: 'README.md', -3072 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, -3072 silly install resolved _id: 'inherits@2.0.1', -3072 silly install resolved dist: -3072 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -3072 silly install resolved size: 2122, -3072 silly install resolved noattachment: false, -3072 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', -3072 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, -3072 silly install resolved _from: 'inherits@>=2.0.1 <2.1.0', -3072 silly install resolved _npmVersion: '1.3.8', -3072 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -3072 silly install resolved maintainers: [ [Object] ], -3072 silly install resolved directories: {}, -3072 silly install resolved publish_time: 1376950220463, -3072 silly install resolved _cnpm_publish_time: 1376950220463, -3072 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -3072 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', -3072 silly install resolved readme: 'ERROR: No README data found!', -3072 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' } ] -3073 info install util-deprecate@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream -3074 info install process-nextick-args@1.0.7 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream -3075 info install isarray@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream -3076 info install string_decoder@0.10.31 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream -3077 info install core-util-is@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream -3078 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream -3079 info installOne util-deprecate@1.0.2 -3080 verbose installOne of util-deprecate to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing -3081 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3082 info installOne process-nextick-args@1.0.7 -3083 verbose installOne of process-nextick-args to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing -3084 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3085 info installOne isarray@1.0.0 -3086 verbose installOne of isarray to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing -3087 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3088 info installOne string_decoder@0.10.31 -3089 verbose installOne of string_decoder to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing -3090 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3091 info installOne core-util-is@1.0.2 -3092 verbose installOne of core-util-is to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing -3093 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3094 info installOne inherits@2.0.1 -3095 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream not in flight; installing -3096 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3097 silly gunzTarPerm extractEntry README.md -3098 silly gunzTarPerm extractEntry LICENSE -3099 silly addNameRange number 2 { name: 'glob-parent', range: '>=2.0.0 <3.0.0', hasData: true } -3100 silly addNameRange versions [ 'glob-parent', -3100 silly addNameRange [ '2.0.0', '1.3.0', '1.2.0', '1.1.0', '1.0.0' ] ] -3101 silly addNamed glob-parent@2.0.0 -3102 verbose addNamed "2.0.0" is a plain semver version for glob-parent -3103 silly addNameRange number 2 { name: 'unique-stream', range: '>=2.0.2 <3.0.0', hasData: true } -3104 silly addNameRange versions [ 'unique-stream', -3104 silly addNameRange [ '2.2.1', -3104 silly addNameRange '2.2.0', -3104 silly addNameRange '2.1.1', -3104 silly addNameRange '2.1.0', -3104 silly addNameRange '2.0.2', -3104 silly addNameRange '2.0.1', -3104 silly addNameRange '2.0.0', -3104 silly addNameRange '1.0.0', -3104 silly addNameRange '0.0.5', -3104 silly addNameRange '0.0.4', -3104 silly addNameRange '0.0.3', -3104 silly addNameRange '0.0.2', -3104 silly addNameRange '0.0.1' ] ] -3105 silly addNamed unique-stream@2.2.1 -3106 verbose addNamed "2.2.1" is a plain semver version for unique-stream -3107 silly cache afterAdd first-chunk-stream@1.0.0 -3108 verbose afterAdd /home/ruanyf/.tnpm/first-chunk-stream/1.0.0/package/package.json not in flight; writing -3109 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3110 silly cache afterAdd is-utf8@0.2.1 -3111 verbose afterAdd /home/ruanyf/.tnpm/is-utf8/0.2.1/package/package.json not in flight; writing -3112 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3113 verbose lock using /home/ruanyf/.tnpm/_locks/util-deprecate-da6ff6e24a0a44c8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate -3114 verbose lock using /home/ruanyf/.tnpm/_locks/process-nextick-args-640681cf1f951d3d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args -3115 verbose lock using /home/ruanyf/.tnpm/_locks/core-util-is-43b8c89985671e22.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -3116 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-5a31eb8d44663059.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits -3117 verbose lock using /home/ruanyf/.tnpm/_locks/isarray-62ce9f5052cd7d81.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray -3118 verbose lock using /home/ruanyf/.tnpm/_locks/string-decoder-e42dd0bbb825ea12.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -3119 silly addNameRange number 2 { name: 'to-absolute-glob', -3119 silly addNameRange range: '>=0.1.1 <0.2.0', -3119 silly addNameRange hasData: true } -3120 silly addNameRange versions [ 'to-absolute-glob', [ '0.1.1', '0.1.0' ] ] -3121 silly addNamed to-absolute-glob@0.1.1 -3122 verbose addNamed "0.1.1" is a plain semver version for to-absolute-glob -3123 silly gunzTarPerm extractEntry package.json -3124 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] -3125 silly install write writing util-deprecate 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate -3126 silly install write writing process-nextick-args 1.0.7 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args -3127 silly install write writing core-util-is 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -3128 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits -3129 silly install write writing isarray 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray -3130 silly install write writing string_decoder 0.10.31 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -3131 silly install resolved [] -3132 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs -3133 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs -3134 silly prepareForInstallMany adding end-of-stream@1.0.0 from duplexify dependencies -3135 silly prepareForInstallMany adding inherits@^2.0.1 from duplexify dependencies -3136 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/package.json -3137 silly addNameRange number 2 { name: 'ordered-read-streams', -3137 silly addNameRange range: '>=0.3.0 <0.4.0', -3137 silly addNameRange hasData: true } -3138 silly addNameRange versions [ 'ordered-read-streams', -3138 silly addNameRange [ '0.3.0', -3138 silly addNameRange '0.2.0', -3138 silly addNameRange '0.1.0', -3138 silly addNameRange '0.0.8', -3138 silly addNameRange '0.0.7', -3138 silly addNameRange '0.0.6', -3138 silly addNameRange '0.0.5', -3138 silly addNameRange '0.0.4', -3138 silly addNameRange '0.0.3', -3138 silly addNameRange '0.0.2', -3138 silly addNameRange '0.0.1' ] ] -3139 silly addNamed ordered-read-streams@0.3.0 -3140 verbose addNamed "0.3.0" is a plain semver version for ordered-read-streams -3141 silly addNameRange number 2 { name: 'extend', range: '>=3.0.0 <4.0.0', hasData: true } -3142 silly addNameRange versions [ 'extend', -3142 silly addNameRange [ '3.0.0', -3142 silly addNameRange '2.0.1', -3142 silly addNameRange '2.0.0', -3142 silly addNameRange '1.3.0', -3142 silly addNameRange '1.2.1', -3142 silly addNameRange '1.2.0', -3142 silly addNameRange '1.1.3', -3142 silly addNameRange '1.1.1', -3142 silly addNameRange '1.1.0', -3142 silly addNameRange '1.0.0' ] ] -3143 silly addNamed extend@3.0.0 -3144 verbose addNamed "3.0.0" is a plain semver version for extend -3145 verbose afterAdd /home/ruanyf/.tnpm/first-chunk-stream/1.0.0/package/package.json written -3146 silly install resolved [ { name: 'first-chunk-stream', -3146 silly install resolved version: '1.0.0', -3146 silly install resolved description: 'Transform the first chunk in a stream', -3146 silly install resolved license: 'MIT', -3146 silly install resolved repository: -3146 silly install resolved { type: 'git', -3146 silly install resolved url: 'git+https://github.com/sindresorhus/first-chunk-stream.git' }, -3146 silly install resolved author: -3146 silly install resolved { name: 'Sindre Sorhus', -3146 silly install resolved email: 'sindresorhus@gmail.com', -3146 silly install resolved url: 'http://sindresorhus.com' }, -3146 silly install resolved engines: { node: '>=0.10.0' }, -3146 silly install resolved scripts: { test: 'mocha' }, -3146 silly install resolved files: [ 'index.js' ], -3146 silly install resolved keywords: -3146 silly install resolved [ 'buffer', -3146 silly install resolved 'stream', -3146 silly install resolved 'streams', -3146 silly install resolved 'transform', -3146 silly install resolved 'first', -3146 silly install resolved 'chunk', -3146 silly install resolved 'size', -3146 silly install resolved 'min', -3146 silly install resolved 'minimum' ], -3146 silly install resolved devDependencies: { 'concat-stream': '^1.4.5', mocha: '*' }, -3146 silly install resolved gitHead: '8b0b1750edcc30fa2b2071245198181e925be619', -3146 silly install resolved bugs: { url: 'https://github.com/sindresorhus/first-chunk-stream/issues' }, -3146 silly install resolved homepage: 'https://github.com/sindresorhus/first-chunk-stream', -3146 silly install resolved _id: 'first-chunk-stream@1.0.0', -3146 silly install resolved _shasum: '59bfb50cd905f60d7c394cd3d9acaab4e6ad934e', -3146 silly install resolved _from: 'first-chunk-stream@>=1.0.0 <2.0.0', -3146 silly install resolved _npmVersion: '1.4.21', -3146 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -3146 silly install resolved maintainers: [ [Object] ], -3146 silly install resolved dist: -3146 silly install resolved { shasum: '59bfb50cd905f60d7c394cd3d9acaab4e6ad934e', -3146 silly install resolved size: 1636, -3146 silly install resolved noattachment: false, -3146 silly install resolved key: 'first-chunk-stream/-/first-chunk-stream-1.0.0.tgz', -3146 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/first-chunk-stream/download/first-chunk-stream-1.0.0.tgz' }, -3146 silly install resolved directories: {}, -3146 silly install resolved publish_time: 1408007190958, -3146 silly install resolved _cnpm_publish_time: 1408007190958, -3146 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/first-chunk-stream/download/first-chunk-stream-1.0.0.tgz', -3146 silly install resolved readme: 'ERROR: No README data found!' } ] -3147 info install first-chunk-stream@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream -3148 info installOne first-chunk-stream@1.0.0 -3149 verbose installOne of first-chunk-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream not in flight; installing -3150 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3151 verbose afterAdd /home/ruanyf/.tnpm/is-utf8/0.2.1/package/package.json written -3152 silly install resolved [ { name: 'is-utf8', -3152 silly install resolved version: '0.2.1', -3152 silly install resolved description: 'Detect if a buffer is utf8 encoded.', -3152 silly install resolved main: 'is-utf8.js', -3152 silly install resolved scripts: { test: 'node test.js' }, -3152 silly install resolved repository: -3152 silly install resolved { type: 'git', -3152 silly install resolved url: 'git+https://github.com/wayfind/is-utf8.git' }, -3152 silly install resolved keywords: [ 'utf8', 'charset' ], -3152 silly install resolved files: [ 'is-utf8.js' ], -3152 silly install resolved author: { name: 'wayfind' }, -3152 silly install resolved license: 'MIT', -3152 silly install resolved gitHead: '709df7202f9c3f93cdc2463b352dd80d8de9ce0b', -3152 silly install resolved bugs: { url: 'https://github.com/wayfind/is-utf8/issues' }, -3152 silly install resolved homepage: 'https://github.com/wayfind/is-utf8#readme', -3152 silly install resolved _id: 'is-utf8@0.2.1', -3152 silly install resolved _shasum: '4b0da1442104d1b336340e80797e865cf39f7d72', -3152 silly install resolved _from: 'is-utf8@>=0.2.0 <0.3.0', -3152 silly install resolved _npmVersion: '2.12.1', -3152 silly install resolved _nodeVersion: '2.3.4', -3152 silly install resolved _npmUser: { name: 'wayfind', email: 'whyer1@gmail.com' }, -3152 silly install resolved maintainers: [ [Object] ], -3152 silly install resolved dist: -3152 silly install resolved { shasum: '4b0da1442104d1b336340e80797e865cf39f7d72', -3152 silly install resolved size: 1628, -3152 silly install resolved noattachment: false, -3152 silly install resolved key: 'is-utf8/-/is-utf8-0.2.1.tgz', -3152 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-utf8/download/is-utf8-0.2.1.tgz' }, -3152 silly install resolved directories: {}, -3152 silly install resolved publish_time: 1450497862462, -3152 silly install resolved _cnpm_publish_time: 1450497862462, -3152 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-utf8/download/is-utf8-0.2.1.tgz', -3152 silly install resolved readme: 'ERROR: No README data found!' } ] -3153 info install is-utf8@0.2.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom -3154 info installOne is-utf8@0.2.1 -3155 verbose installOne of is-utf8 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom not in flight; installing -3156 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3157 silly cache afterAdd glob-parent@2.0.0 -3158 verbose afterAdd /home/ruanyf/.tnpm/glob-parent/2.0.0/package/package.json not in flight; writing -3159 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3160 silly cache afterAdd unique-stream@2.2.1 -3161 verbose afterAdd /home/ruanyf/.tnpm/unique-stream/2.2.1/package/package.json not in flight; writing -3162 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3163 silly addNameRange number 2 { name: 'convert-source-map', -3163 silly addNameRange range: '>=1.1.1 <2.0.0', -3163 silly addNameRange hasData: true } -3164 silly addNameRange versions [ 'convert-source-map', -3164 silly addNameRange [ '1.2.0', -3164 silly addNameRange '1.1.3', -3164 silly addNameRange '1.1.2', -3164 silly addNameRange '1.1.1', -3164 silly addNameRange '1.1.0', -3164 silly addNameRange '1.0.0', -3164 silly addNameRange '0.7.1', -3164 silly addNameRange '0.7.0', -3164 silly addNameRange '0.6.0', -3164 silly addNameRange '0.5.1', -3164 silly addNameRange '0.5.0', -3164 silly addNameRange '0.4.1', -3164 silly addNameRange '0.4.0', -3164 silly addNameRange '0.3.5', -3164 silly addNameRange '0.3.4', -3164 silly addNameRange '0.3.3', -3164 silly addNameRange '0.3.2', -3164 silly addNameRange '0.3.1', -3164 silly addNameRange '0.3.0', -3164 silly addNameRange '0.2.6', -3164 silly addNameRange '0.2.5', -3164 silly addNameRange '0.2.4', -3164 silly addNameRange '0.2.3', -3164 silly addNameRange '0.2.2', -3164 silly addNameRange '0.2.1', -3164 silly addNameRange '0.2.0', -3164 silly addNameRange '0.1.0' ] ] -3165 silly addNamed convert-source-map@1.2.0 -3166 verbose addNamed "1.2.0" is a plain semver version for convert-source-map -3167 silly gunzTarPerm extractEntry .npmignore -3168 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] -3169 silly gunzTarPerm extractEntry README.md -3170 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] -3171 silly gunzTarPerm extractEntry test/clobber.js -3172 silly gunzTarPerm extractEntry test/umask_sync.js -3173 silly gunzTarPerm extractEntry readme.md -3174 http 304 http://registry.npm.alibaba-inc.com/lodash._root -3175 verbose headers { server: 'Tengine', -3175 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3175 verbose headers connection: 'keep-alive', -3175 verbose headers etag: '"11ee-PoQ6ahk1bx7NZjJwBalZ+A"', -3175 verbose headers 'x-readtime': '20' } -3176 silly get cb [ 304, -3176 silly get { server: 'Tengine', -3176 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3176 silly get connection: 'keep-alive', -3176 silly get etag: '"11ee-PoQ6ahk1bx7NZjJwBalZ+A"', -3176 silly get 'x-readtime': '20' } ] -3177 verbose etag http://registry.npm.alibaba-inc.com/lodash._root from cache -3178 verbose get saving lodash._root to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/lodash._root/.cache.json -3179 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3180 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate -3181 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args -3182 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -3183 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits -3184 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -3185 verbose unbuild lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray -3186 verbose lock using /home/ruanyf/.tnpm/_locks/first-chunk-stream-8f8e638611f67384.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream -3187 verbose lock using /home/ruanyf/.tnpm/_locks/is-utf8-3fff051c3e4a800b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 -3188 silly gunzTarPerm extractEntry readme.md -3189 silly gunzTarPerm extractEntry LICENSE -3190 silly gunzTarPerm extractEntry index.js -3191 silly gunzTarPerm extractEntry .travis.yml -3192 silly gunzTarPerm extractEntry coverage/coverage.json -3193 silly gunzTarPerm extractEntry coverage/lcov-report/prettify.js -3194 silly gunzTarPerm extractEntry coverage/lcov-report/sorter.js -3195 silly gunzTarPerm extractEntry coverage/lcov-report/base.css -3196 silly gunzTarPerm extractEntry coverage/lcov-report/cli-width/index.html -3197 silly gunzTarPerm extractEntry coverage/lcov-report/cli-width/index.js.html -3198 silly gunzTarPerm extractEntry coverage/lcov-report/index.html -3199 silly gunzTarPerm extractEntry coverage/lcov-report/prettify.css -3200 silly gunzTarPerm extractEntry coverage/lcov-report/sort-arrow-sprite.png -3201 silly gunzTarPerm extractEntry coverage/lcov.info -3202 silly gunzTarPerm extractEntry LICENSE -3203 silly gunzTarPerm extractEntry index.js -3204 silly gunzTarPerm extractEntry mute.js -3205 silly gunzTarPerm extractEntry .travis.yml -3206 silly gunzTarPerm extractEntry readme.md -3207 silly gunzTarPerm extractEntry readme.md -3208 silly gunzTarPerm extractEntry LICENSE.APACHE2 -3209 silly gunzTarPerm extractEntry LICENSE.MIT -3210 info linkStuff graceful-fs@4.1.4 -3211 silly linkStuff graceful-fs@4.1.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -3212 silly linkStuff graceful-fs@4.1.4 is part of a global install -3213 silly linkStuff graceful-fs@4.1.4 is installed into a global node_modules -3214 silly gunzTarPerm extractEntry readme.md -3215 silly gunzTarPerm extractEntry readme.md -3216 silly gunzTarPerm extractEntry readme.md -3217 silly gunzTarPerm extractEntry .jamignore -3218 silly gunzTarPerm extractEntry .jscsrc -3219 silly cache afterAdd to-absolute-glob@0.1.1 -3220 verbose afterAdd /home/ruanyf/.tnpm/to-absolute-glob/0.1.1/package/package.json not in flight; writing -3221 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3222 silly install write writing first-chunk-stream 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream -3223 silly gunzTarPerm extractEntry _cloneBuffer.js -3224 silly gunzTarPerm extractEntry create.js -3225 silly install write writing is-utf8 0.2.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 -3226 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/package.json -3227 silly cache afterAdd ordered-read-streams@0.3.0 -3228 verbose afterAdd /home/ruanyf/.tnpm/ordered-read-streams/0.3.0/package/package.json not in flight; writing -3229 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3230 silly cache afterAdd extend@3.0.0 -3231 verbose afterAdd /home/ruanyf/.tnpm/extend/3.0.0/package/package.json not in flight; writing -3232 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3233 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate is being purged from base /home/ruanyf/npm-global -3234 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate -3235 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args is being purged from base /home/ruanyf/npm-global -3236 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args -3237 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is is being purged from base /home/ruanyf/npm-global -3238 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -3239 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits is being purged from base /home/ruanyf/npm-global -3240 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits -3241 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder is being purged from base /home/ruanyf/npm-global -3242 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -3243 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray is being purged from base /home/ruanyf/npm-global -3244 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray -3245 verbose linkBins graceful-fs@4.1.4 -3246 verbose linkMans graceful-fs@4.1.4 -3247 verbose rebuildBundles graceful-fs@4.1.4 -3248 silly cache add args [ 'end-of-stream@1.0.0', null ] -3249 verbose cache add spec end-of-stream@1.0.0 -3250 silly cache add parsed spec Result { -3250 silly cache add raw: 'end-of-stream@1.0.0', -3250 silly cache add scope: null, -3250 silly cache add name: 'end-of-stream', -3250 silly cache add rawSpec: '1.0.0', -3250 silly cache add spec: '1.0.0', -3250 silly cache add type: 'version' } -3251 silly addNamed end-of-stream@1.0.0 -3252 verbose addNamed "1.0.0" is a plain semver version for end-of-stream -3253 silly mapToRegistry name end-of-stream -3254 silly mapToRegistry using default registry -3255 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3256 silly mapToRegistry data Result { -3256 silly mapToRegistry raw: 'end-of-stream', -3256 silly mapToRegistry scope: null, -3256 silly mapToRegistry name: 'end-of-stream', -3256 silly mapToRegistry rawSpec: '', -3256 silly mapToRegistry spec: 'latest', -3256 silly mapToRegistry type: 'tag' } -3257 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/end-of-stream -3258 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/end-of-stream not in flight; fetching -3259 silly cache add args [ 'inherits@^2.0.1', null ] -3260 verbose cache add spec inherits@^2.0.1 -3261 silly cache add parsed spec Result { -3261 silly cache add raw: 'inherits@^2.0.1', -3261 silly cache add scope: null, -3261 silly cache add name: 'inherits', -3261 silly cache add rawSpec: '^2.0.1', -3261 silly cache add spec: '>=2.0.1 <3.0.0', -3261 silly cache add type: 'range' } -3262 silly addNamed inherits@>=2.0.1 <3.0.0 -3263 verbose addNamed ">=2.0.1 <3.0.0" is a valid semver range for inherits -3264 silly addNameRange { name: 'inherits', range: '>=2.0.1 <3.0.0', hasData: false } -3265 silly mapToRegistry name inherits -3266 silly mapToRegistry using default registry -3267 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3268 silly mapToRegistry data Result { -3268 silly mapToRegistry raw: 'inherits', -3268 silly mapToRegistry scope: null, -3268 silly mapToRegistry name: 'inherits', -3268 silly mapToRegistry rawSpec: '', -3268 silly mapToRegistry spec: 'latest', -3268 silly mapToRegistry type: 'tag' } -3269 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits -3270 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching -3271 verbose afterAdd /home/ruanyf/.tnpm/glob-parent/2.0.0/package/package.json written -3272 verbose afterAdd /home/ruanyf/.tnpm/unique-stream/2.2.1/package/package.json written -3273 verbose tar unpack /home/ruanyf/.tnpm/util-deprecate/1.0.2/package.tgz -3274 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate -3275 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate is being purged -3276 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate -3277 verbose tar unpack /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package.tgz -3278 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args -3279 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args is being purged -3280 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args -3281 verbose tar unpack /home/ruanyf/.tnpm/core-util-is/1.0.2/package.tgz -3282 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -3283 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is is being purged -3284 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -3285 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz -3286 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits -3287 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits is being purged -3288 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits -3289 verbose tar unpack /home/ruanyf/.tnpm/string_decoder/0.10.31/package.tgz -3290 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -3291 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder is being purged -3292 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -3293 verbose tar unpack /home/ruanyf/.tnpm/isarray/1.0.0/package.tgz -3294 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray -3295 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray is being purged -3296 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray -3297 info install graceful-fs@4.1.4 -3298 silly cache afterAdd convert-source-map@1.2.0 -3299 verbose afterAdd /home/ruanyf/.tnpm/convert-source-map/1.2.0/package/package.json not in flight; writing -3300 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3301 silly gunzTarPerm modes [ '755', '644' ] -3302 silly gunzTarPerm modes [ '755', '644' ] -3303 silly gunzTarPerm modes [ '755', '644' ] -3304 silly gunzTarPerm modes [ '755', '644' ] -3305 silly gunzTarPerm modes [ '755', '644' ] -3306 silly gunzTarPerm modes [ '755', '644' ] -3307 http 200 http://registry.npm.alibaba-inc.com/lodash.keys -3308 verbose headers { server: 'Tengine', -3308 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3308 verbose headers 'content-type': 'application/json; charset=utf-8', -3308 verbose headers 'transfer-encoding': 'chunked', -3308 verbose headers connection: 'keep-alive', -3308 verbose headers vary: 'Accept-Encoding', -3308 verbose headers 'x-readtime': '40', -3308 verbose headers 'content-encoding': 'gzip' } -3309 silly get cb [ 200, -3309 silly get { server: 'Tengine', -3309 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3309 silly get 'content-type': 'application/json; charset=utf-8', -3309 silly get 'transfer-encoding': 'chunked', -3309 silly get connection: 'keep-alive', -3309 silly get vary: 'Accept-Encoding', -3309 silly get 'x-readtime': '40', -3309 silly get 'content-encoding': 'gzip' } ] -3310 verbose get saving lodash.keys to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/lodash.keys/.cache.json -3311 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3312 info preinstall vinyl@1.1.1 -3313 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream -3314 verbose afterAdd /home/ruanyf/.tnpm/to-absolute-glob/0.1.1/package/package.json written -3315 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 -3316 info postinstall graceful-fs@4.1.4 -3317 http 304 http://registry.npm.alibaba-inc.com/micromatch -3318 verbose headers { server: 'Tengine', -3318 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3318 verbose headers connection: 'keep-alive', -3318 verbose headers etag: '"1ada2-nMnnuVjpmwNfr0jJonuQmw"', -3318 verbose headers 'x-readtime': '110' } -3319 silly get cb [ 304, -3319 silly get { server: 'Tengine', -3319 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3319 silly get connection: 'keep-alive', -3319 silly get etag: '"1ada2-nMnnuVjpmwNfr0jJonuQmw"', -3319 silly get 'x-readtime': '110' } ] -3320 verbose etag http://registry.npm.alibaba-inc.com/micromatch from cache -3321 verbose get saving micromatch to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/micromatch/.cache.json -3322 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3323 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/package.json -3324 silly addNameRange number 2 { name: 'lodash._root', range: '>=3.0.0 <3.1.0', hasData: true } -3325 silly addNameRange versions [ 'lodash._root', [ '3.0.1', '3.0.0' ] ] -3326 silly addNamed lodash._root@3.0.1 -3327 verbose addNamed "3.0.1" is a plain semver version for lodash._root -3328 verbose afterAdd /home/ruanyf/.tnpm/ordered-read-streams/0.3.0/package/package.json written -3329 verbose afterAdd /home/ruanyf/.tnpm/extend/3.0.0/package/package.json written -3330 silly gunzTarPerm extractEntry LICENCE -3331 silly gunzTarPerm modified mode [ 'LICENCE', 436, 420 ] -3332 silly gunzTarPerm extractEntry immutable.js -3333 silly gunzTarPerm modified mode [ 'immutable.js', 436, 420 ] -3334 silly gunzTarPerm extractEntry test/race.js -3335 silly gunzTarPerm extractEntry test.js -3336 silly gunzTarPerm extractEntry .travis.yml -3337 verbose request uri http://registry.npm.alibaba-inc.com/end-of-stream -3338 verbose request no auth needed -3339 info attempt registry request try #1 at 上午9:12:29 -3340 verbose etag "2b37-lC4Q3xDLsfexs8mFXY5tgw" -3341 http request GET http://registry.npm.alibaba-inc.com/end-of-stream -3342 verbose get http://registry.npm.alibaba-inc.com/inherits not expired, no request -3343 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.1 <3.0.0', hasData: true } -3344 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] -3345 silly addNamed inherits@2.0.1 -3346 verbose addNamed "2.0.1" is a plain semver version for inherits -3347 silly gunzTarPerm extractEntry .jscsrc.todo -3348 silly gunzTarPerm extractEntry .editorconfig -3349 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream is being purged from base /home/ruanyf/npm-global -3350 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream -3351 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 is being purged from base /home/ruanyf/npm-global -3352 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 -3353 silly gunzTarPerm extractEntry test/basic.js -3354 silly gunzTarPerm extractEntry readme.markdown -3355 silly gunzTarPerm extractEntry test/async.js -3356 verbose unlock done using /home/ruanyf/.tnpm/_locks/graceful-fs-8c6e88eb9b5c7f99.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/graceful-fs -3357 verbose afterAdd /home/ruanyf/.tnpm/convert-source-map/1.2.0/package/package.json written -3358 silly install resolved [ { name: 'convert-source-map', -3358 silly install resolved version: '1.2.0', -3358 silly install resolved description: 'Converts a source-map from/to different formats and allows adding/changing properties.', -3358 silly install resolved main: 'index.js', -3358 silly install resolved scripts: { test: 'tap test/*.js' }, -3358 silly install resolved repository: -3358 silly install resolved { type: 'git', -3358 silly install resolved url: 'git://github.com/thlorenz/convert-source-map.git' }, -3358 silly install resolved homepage: 'https://github.com/thlorenz/convert-source-map', -3358 silly install resolved dependencies: {}, -3358 silly install resolved devDependencies: { 'inline-source-map': '~0.3.1', tap: '~0.4.13' }, -3358 silly install resolved keywords: [ 'convert', 'sourcemap', 'source', 'map', 'browser', 'debug' ], -3358 silly install resolved author: -3358 silly install resolved { name: 'Thorsten Lorenz', -3358 silly install resolved email: 'thlorenz@gmx.de', -3358 silly install resolved url: 'http://thlorenz.com' }, -3358 silly install resolved license: 'MIT', -3358 silly install resolved engine: { node: '>=0.6' }, -3358 silly install resolved gitHead: 'c840d5ab5a1cfa4c8eb902283cac3fb120a6f466', -3358 silly install resolved bugs: { url: 'https://github.com/thlorenz/convert-source-map/issues' }, -3358 silly install resolved _id: 'convert-source-map@1.2.0', -3358 silly install resolved _shasum: '44c08c2506f10fb3ca6fd888d5a3444cf8d6a669', -3358 silly install resolved _from: 'convert-source-map@>=1.1.1 <2.0.0', -3358 silly install resolved _npmVersion: '2.14.15', -3358 silly install resolved _nodeVersion: '4.3.1-rc.2', -3358 silly install resolved _npmUser: { name: 'thlorenz', email: 'thlorenz@gmx.de' }, -3358 silly install resolved dist: -3358 silly install resolved { shasum: '44c08c2506f10fb3ca6fd888d5a3444cf8d6a669', -3358 silly install resolved size: 7891, -3358 silly install resolved noattachment: false, -3358 silly install resolved key: 'convert-source-map/-/convert-source-map-1.2.0.tgz', -3358 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/convert-source-map/download/convert-source-map-1.2.0.tgz' }, -3358 silly install resolved maintainers: [ [Object] ], -3358 silly install resolved _npmOperationalInternal: -3358 silly install resolved { host: 'packages-5-east.internal.npmjs.com', -3358 silly install resolved tmp: 'tmp/convert-source-map-1.2.0.tgz_1456506734770_0.5290673428680748' }, -3358 silly install resolved directories: {}, -3358 silly install resolved publish_time: 1456506736052, -3358 silly install resolved _cnpm_publish_time: 1456506736052, -3358 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/convert-source-map/download/convert-source-map-1.2.0.tgz', -3358 silly install resolved readme: 'ERROR: No README data found!' } ] -3359 info install convert-source-map@1.2.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps -3360 info installOne convert-source-map@1.2.0 -3361 verbose installOne of convert-source-map to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps not in flight; installing -3362 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3363 silly gunzTarPerm extractEntry package.json -3364 verbose tar unpack /home/ruanyf/.tnpm/first-chunk-stream/1.0.0/package.tgz -3365 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream -3366 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream is being purged -3367 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream -3368 silly gunzTarPerm extractEntry curry.js -3369 silly gunzTarPerm extractEntry _checkGlobal.js -3370 verbose tar unpack /home/ruanyf/.tnpm/is-utf8/0.2.1/package.tgz -3371 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 -3372 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 is being purged -3373 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 -3374 silly gunzTarPerm extractEntry package.json -3375 silly gunzTarPerm extractEntry package.json -3376 silly gunzTarPerm extractEntry package.json -3377 silly gunzTarPerm extractEntry package.json -3378 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] -3379 silly gunzTarPerm extractEntry package.json -3380 silly gunzTarPerm modes [ '755', '644' ] -3381 silly gunzTarPerm modes [ '755', '644' ] -3382 verbose lock using /home/ruanyf/.tnpm/_locks/convert-source-map-1e2549d3702e64b0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map -3383 silly install write writing convert-source-map 1.2.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map -3384 silly prepareForInstallMany adding clone@^1.0.0 from vinyl dependencies -3385 silly prepareForInstallMany adding clone-stats@^0.0.1 from vinyl dependencies -3386 silly prepareForInstallMany adding replace-ext@0.0.1 from vinyl dependencies -3387 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/package.json -3388 silly addNameRange number 2 { name: 'lodash.keys', range: '>=4.0.0 <5.0.0', hasData: true } -3389 silly addNameRange versions [ 'lodash.keys', -3389 silly addNameRange [ '4.0.7', -3389 silly addNameRange '4.0.6', -3389 silly addNameRange '4.0.5', -3389 silly addNameRange '4.0.4', -3389 silly addNameRange '4.0.3', -3389 silly addNameRange '4.0.2', -3389 silly addNameRange '4.0.1', -3389 silly addNameRange '4.0.0', -3389 silly addNameRange '3.1.2', -3389 silly addNameRange '3.1.1', -3389 silly addNameRange '3.1.0', -3389 silly addNameRange '3.0.7', -3389 silly addNameRange '3.0.6', -3389 silly addNameRange '3.0.5', -3389 silly addNameRange '3.0.4', -3389 silly addNameRange '3.0.3', -3389 silly addNameRange '3.0.2', -3389 silly addNameRange '3.0.1', -3389 silly addNameRange '3.0.0', -3389 silly addNameRange '2.4.1', -3389 silly addNameRange '2.4.0', -3389 silly addNameRange '2.3.0', -3389 silly addNameRange '2.2.1', -3389 silly addNameRange '2.2.0', -3389 silly addNameRange '2.1.0', -3389 silly addNameRange '2.0.0' ] ] -3390 silly addNamed lodash.keys@4.0.7 -3391 verbose addNamed "4.0.7" is a plain semver version for lodash.keys -3392 silly gunzTarPerm extractEntry README.md -3393 silly gunzTarPerm extractEntry LICENSE -3394 silly cache afterAdd inherits@2.0.1 -3395 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing -3396 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3397 silly cache afterAdd lodash._root@3.0.1 -3398 verbose afterAdd /home/ruanyf/.tnpm/lodash._root/3.0.1/package/package.json not in flight; writing -3399 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3400 silly addNameRange number 2 { name: 'micromatch', range: '>=2.3.7 <3.0.0', hasData: true } -3401 silly addNameRange versions [ 'micromatch', -3401 silly addNameRange [ '2.3.8', -3401 silly addNameRange '2.3.7', -3401 silly addNameRange '2.3.6', -3401 silly addNameRange '2.3.5', -3401 silly addNameRange '2.3.4', -3401 silly addNameRange '2.3.3', -3401 silly addNameRange '2.3.2', -3401 silly addNameRange '2.3.1', -3401 silly addNameRange '2.3.0', -3401 silly addNameRange '2.2.0', -3401 silly addNameRange '2.1.6', -3401 silly addNameRange '2.1.5', -3401 silly addNameRange '2.1.4', -3401 silly addNameRange '2.1.3', -3401 silly addNameRange '2.1.2', -3401 silly addNameRange '2.1.1', -3401 silly addNameRange '2.1.0', -3401 silly addNameRange '2.0.0', -3401 silly addNameRange '1.6.2', -3401 silly addNameRange '1.6.1', -3401 silly addNameRange '1.6.0', -3401 silly addNameRange '1.5.0', -3401 silly addNameRange '1.4.5', -3401 silly addNameRange '1.4.4', -3401 silly addNameRange '1.4.3', -3401 silly addNameRange '1.4.2', -3401 silly addNameRange '1.4.1', -3401 silly addNameRange '1.4.0', -3401 silly addNameRange '1.3.3', -3401 silly addNameRange '1.3.2', -3401 silly addNameRange '1.3.1', -3401 silly addNameRange '1.3.0', -3401 silly addNameRange '1.2.2', -3401 silly addNameRange '1.2.0', -3401 silly addNameRange '1.0.1', -3401 silly addNameRange '1.0.0', -3401 silly addNameRange '0.2.2', -3401 silly addNameRange '0.2.1', -3401 silly addNameRange '0.2.0', -3401 silly addNameRange '0.1.0' ] ] -3402 silly addNamed micromatch@2.3.8 -3403 verbose addNamed "2.3.8" is a plain semver version for micromatch -3404 silly mapToRegistry name lodash.keys -3405 silly mapToRegistry using default registry -3406 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3407 silly mapToRegistry data Result { -3407 silly mapToRegistry raw: 'lodash.keys', -3407 silly mapToRegistry scope: null, -3407 silly mapToRegistry name: 'lodash.keys', -3407 silly mapToRegistry rawSpec: '', -3407 silly mapToRegistry spec: 'latest', -3407 silly mapToRegistry type: 'tag' } -3408 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/lodash.keys -3409 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz not in flight; adding -3410 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz', -3410 verbose addRemoteTarball '30e1b3bd98e54d6a0611991812685b6bc47cb63b' ] -3411 silly gunzTarPerm extractEntry index.js -3412 silly gunzTarPerm extractEntry test.js -3413 silly gunzTarPerm extractEntry README.md -3414 silly gunzTarPerm extractEntry LICENSE -3415 silly gunzTarPerm extractEntry README.md -3416 silly gunzTarPerm extractEntry LICENSE -3417 silly gunzTarPerm extractEntry .npmignore -3418 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] -3419 silly gunzTarPerm extractEntry README.md -3420 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] -3421 silly gunzTarPerm extractEntry .npmignore -3422 silly gunzTarPerm extractEntry README.md -3423 silly gunzTarPerm extractEntry mutable.js -3424 silly gunzTarPerm modified mode [ 'mutable.js', 436, 420 ] -3425 silly gunzTarPerm extractEntry test.js -3426 silly gunzTarPerm modified mode [ 'test.js', 436, 420 ] -3427 silly gunzTarPerm extractEntry package.json -3428 silly gunzTarPerm extractEntry package.json -3429 silly gunzTarPerm extractEntry .jshintrc -3430 silly gunzTarPerm extractEntry .gitattributes -3431 silly gunzTarPerm extractEntry .editorconfig -3432 silly gunzTarPerm extractEntry test/auto-destroy.js -3433 silly gunzTarPerm extractEntry test/buffering.js -3434 silly gunzTarPerm extractEntry authors.txt -3435 silly gunzTarPerm extractEntry bower.json -3436 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map -3437 info retry fetch attempt 1 at 上午9:12:29 -3438 info attempt registry request try #1 at 上午9:12:29 -3439 http fetch GET http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz -3440 silly gunzTarPerm extractEntry _cloneArrayBuffer.js -3441 silly gunzTarPerm extractEntry countBy.js -3442 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written -3443 verbose afterAdd /home/ruanyf/.tnpm/lodash._root/3.0.1/package/package.json written -3444 silly gunzTarPerm extractEntry index.js -3445 silly gunzTarPerm extractEntry readme.md -3446 silly gunzTarPerm extractEntry README.md -3447 silly gunzTarPerm extractEntry LICENSE -3448 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map is being purged from base /home/ruanyf/npm-global -3449 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map -3450 silly cache afterAdd micromatch@2.3.8 -3451 verbose afterAdd /home/ruanyf/.tnpm/micromatch/2.3.8/package/package.json not in flight; writing -3452 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3453 silly cache add args [ 'replace-ext@0.0.1', null ] -3454 verbose cache add spec replace-ext@0.0.1 -3455 silly cache add parsed spec Result { -3455 silly cache add raw: 'replace-ext@0.0.1', -3455 silly cache add scope: null, -3455 silly cache add name: 'replace-ext', -3455 silly cache add rawSpec: '0.0.1', -3455 silly cache add spec: '0.0.1', -3455 silly cache add type: 'version' } -3456 silly addNamed replace-ext@0.0.1 -3457 verbose addNamed "0.0.1" is a plain semver version for replace-ext -3458 silly mapToRegistry name replace-ext -3459 silly mapToRegistry using default registry -3460 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3461 silly mapToRegistry data Result { -3461 silly mapToRegistry raw: 'replace-ext', -3461 silly mapToRegistry scope: null, -3461 silly mapToRegistry name: 'replace-ext', -3461 silly mapToRegistry rawSpec: '', -3461 silly mapToRegistry spec: 'latest', -3461 silly mapToRegistry type: 'tag' } -3462 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/replace-ext -3463 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/replace-ext not in flight; fetching -3464 silly cache add args [ 'clone@^1.0.0', null ] -3465 verbose cache add spec clone@^1.0.0 -3466 silly cache add parsed spec Result { -3466 silly cache add raw: 'clone@^1.0.0', -3466 silly cache add scope: null, -3466 silly cache add name: 'clone', -3466 silly cache add rawSpec: '^1.0.0', -3466 silly cache add spec: '>=1.0.0 <2.0.0', -3466 silly cache add type: 'range' } -3467 silly addNamed clone@>=1.0.0 <2.0.0 -3468 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for clone -3469 silly addNameRange { name: 'clone', range: '>=1.0.0 <2.0.0', hasData: false } -3470 silly mapToRegistry name clone -3471 silly mapToRegistry using default registry -3472 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3473 silly mapToRegistry data Result { -3473 silly mapToRegistry raw: 'clone', -3473 silly mapToRegistry scope: null, -3473 silly mapToRegistry name: 'clone', -3473 silly mapToRegistry rawSpec: '', -3473 silly mapToRegistry spec: 'latest', -3473 silly mapToRegistry type: 'tag' } -3474 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/clone -3475 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/clone not in flight; fetching -3476 verbose tar unpack /home/ruanyf/.tnpm/convert-source-map/1.2.0/package.tgz -3477 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map -3478 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map is being purged -3479 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map -3480 silly cache add args [ 'clone-stats@^0.0.1', null ] -3481 verbose cache add spec clone-stats@^0.0.1 -3482 silly cache add parsed spec Result { -3482 silly cache add raw: 'clone-stats@^0.0.1', -3482 silly cache add scope: null, -3482 silly cache add name: 'clone-stats', -3482 silly cache add rawSpec: '^0.0.1', -3482 silly cache add spec: '>=0.0.1 <0.0.2', -3482 silly cache add type: 'range' } -3483 silly addNamed clone-stats@>=0.0.1 <0.0.2 -3484 verbose addNamed ">=0.0.1 <0.0.2" is a valid semver range for clone-stats -3485 silly addNameRange { name: 'clone-stats', range: '>=0.0.1 <0.0.2', hasData: false } -3486 silly mapToRegistry name clone-stats -3487 silly mapToRegistry using default registry -3488 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3489 silly mapToRegistry data Result { -3489 silly mapToRegistry raw: 'clone-stats', -3489 silly mapToRegistry scope: null, -3489 silly mapToRegistry name: 'clone-stats', -3489 silly mapToRegistry rawSpec: '', -3489 silly mapToRegistry spec: 'latest', -3489 silly mapToRegistry type: 'tag' } -3490 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/clone-stats -3491 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/clone-stats not in flight; fetching -3492 silly gunzTarPerm modes [ '755', '644' ] -3493 silly gunzTarPerm extractEntry browser.js -3494 silly gunzTarPerm extractEntry node.js -3495 silly gunzTarPerm extractEntry inherits.js -3496 silly gunzTarPerm extractEntry inherits_browser.js -3497 http 304 http://registry.npm.alibaba-inc.com/end-of-stream -3498 verbose headers { server: 'Tengine', -3498 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3498 verbose headers connection: 'keep-alive', -3498 verbose headers etag: '"2b37-lC4Q3xDLsfexs8mFXY5tgw"', -3498 verbose headers 'x-readtime': '22' } -3499 silly get cb [ 304, -3499 silly get { server: 'Tengine', -3499 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3499 silly get connection: 'keep-alive', -3499 silly get etag: '"2b37-lC4Q3xDLsfexs8mFXY5tgw"', -3499 silly get 'x-readtime': '22' } ] -3500 verbose etag http://registry.npm.alibaba-inc.com/end-of-stream from cache -3501 verbose get saving end-of-stream to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/end-of-stream/.cache.json -3502 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3503 silly gunzTarPerm extractEntry .travis.yml -3504 silly gunzTarPerm extractEntry license.md -3505 silly gunzTarPerm extractEntry test.js -3506 silly gunzTarPerm extractEntry float.patch -3507 silly gunzTarPerm extractEntry index.js -3508 silly gunzTarPerm extractEntry test.js -3509 silly gunzTarPerm extractEntry LICENSE -3510 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ] -3511 silly gunzTarPerm extractEntry index.js -3512 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ] -3513 silly gunzTarPerm extractEntry .jshintrc -3514 silly gunzTarPerm modified mode [ '.jshintrc', 436, 420 ] -3515 silly gunzTarPerm extractEntry Makefile -3516 silly gunzTarPerm modified mode [ 'Makefile', 436, 420 ] -3517 silly gunzTarPerm extractEntry code-of-conduct.md -3518 silly gunzTarPerm modified mode [ 'code-of-conduct.md', 384, 420 ] -3519 silly gunzTarPerm extractEntry .coveralls.yml -3520 verbose afterAdd /home/ruanyf/.tnpm/micromatch/2.3.8/package/package.json written -3521 silly gunzTarPerm extractEntry test/end.js -3522 verbose request uri http://registry.npm.alibaba-inc.com/replace-ext -3523 verbose request no auth needed -3524 info attempt registry request try #1 at 上午9:12:29 -3525 verbose etag "d79-GYBSaDhg5TuKvHAumQnYpQ" -3526 http request GET http://registry.npm.alibaba-inc.com/replace-ext -3527 verbose request uri http://registry.npm.alibaba-inc.com/clone -3528 verbose request no auth needed -3529 info attempt registry request try #1 at 上午9:12:29 -3530 verbose etag "e7e0-KXN0RDf0KYD4qYqwymjlGg" -3531 http request GET http://registry.npm.alibaba-inc.com/clone -3532 silly gunzTarPerm extractEntry deburr.js -3533 verbose request uri http://registry.npm.alibaba-inc.com/clone-stats -3534 verbose request no auth needed -3535 info attempt registry request try #1 at 上午9:12:29 -3536 verbose etag "f7f-q74EEwP+QRm1cugmBw7xVQ" -3537 http request GET http://registry.npm.alibaba-inc.com/clone-stats -3538 silly gunzTarPerm extractEntry package.json -3539 silly gunzTarPerm extractEntry defaults.js -3540 silly gunzTarPerm extractEntry is-utf8.js -3541 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream/package.json -3542 silly gunzTarPerm extractEntry History.md -3543 silly gunzTarPerm extractEntry .npmignore -3544 silly gunzTarPerm extractEntry README.md -3545 silly gunzTarPerm extractEntry lib/util.js -3546 silly gunzTarPerm extractEntry test.js -3547 silly gunzTarPerm extractEntry .travis.yml -3548 silly gunzTarPerm extractEntry Makefile -3549 silly gunzTarPerm extractEntry readme.md -3550 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/package.json -3551 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/package.json -3552 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/package.json -3553 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/package.json -3554 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes/package.json -3555 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/package.json -3556 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/package.json -3557 silly gunzTarPerm extractEntry contributing.md -3558 silly gunzTarPerm modified mode [ 'contributing.md', 384, 420 ] -3559 silly gunzTarPerm extractEntry test/index.js -3560 info preinstall lazystream@1.0.0 -3561 silly gunzTarPerm extractEntry defaultsDeep.js -3562 silly gunzTarPerm extractEntry defer.js -3563 info preinstall cli-cursor@1.0.2 -3564 info preinstall pinkie-promise@2.0.1 -3565 info preinstall strip-ansi@3.0.1 -3566 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream/package.json -3567 silly cache afterAdd end-of-stream@1.0.0 -3568 verbose afterAdd /home/ruanyf/.tnpm/end-of-stream/1.0.0/package/package.json not in flight; writing -3569 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3570 info preinstall string-width@1.0.1 -3571 info preinstall ansi-escapes@1.4.0 -3572 info preinstall figures@1.7.0 -3573 info preinstall chalk@1.1.3 -3574 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/package.json -3575 http 304 http://registry.npm.alibaba-inc.com/replace-ext -3576 verbose headers { server: 'Tengine', -3576 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3576 verbose headers connection: 'keep-alive', -3576 verbose headers etag: '"d79-GYBSaDhg5TuKvHAumQnYpQ"', -3576 verbose headers 'x-readtime': '21' } -3577 silly get cb [ 304, -3577 silly get { server: 'Tengine', -3577 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3577 silly get connection: 'keep-alive', -3577 silly get etag: '"d79-GYBSaDhg5TuKvHAumQnYpQ"', -3577 silly get 'x-readtime': '21' } ] -3578 verbose etag http://registry.npm.alibaba-inc.com/replace-ext from cache -3579 verbose get saving replace-ext to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/replace-ext/.cache.json -3580 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3581 http fetch 200 http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz -3582 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/package.json -3583 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/package.json -3584 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/package.json -3585 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes/package.json -3586 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/package.json -3587 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/package.json -3588 silly gunzTarPerm extractEntry LICENSE -3589 silly gunzTarPerm extractEntry index.js -3590 silly gunzTarPerm extractEntry component.json -3591 http 200 http://registry.npm.alibaba-inc.com/clone-stats -3592 verbose headers { server: 'Tengine', -3592 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3592 verbose headers 'content-type': 'application/json; charset=utf-8', -3592 verbose headers 'transfer-encoding': 'chunked', -3592 verbose headers connection: 'keep-alive', -3592 verbose headers vary: 'Accept-Encoding', -3592 verbose headers 'x-readtime': '22', -3592 verbose headers 'content-encoding': 'gzip' } -3593 silly get cb [ 200, -3593 silly get { server: 'Tengine', -3593 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3593 silly get 'content-type': 'application/json; charset=utf-8', -3593 silly get 'transfer-encoding': 'chunked', -3593 silly get connection: 'keep-alive', -3593 silly get vary: 'Accept-Encoding', -3593 silly get 'x-readtime': '22', -3593 silly get 'content-encoding': 'gzip' } ] -3594 verbose get saving clone-stats to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/clone-stats/.cache.json -3595 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3596 silly gunzTarPerm extractEntry dist/rx.aggregates.js -3597 silly gunzTarPerm extractEntry dist/rx.binding.min.js -3598 verbose afterAdd /home/ruanyf/.tnpm/end-of-stream/1.0.0/package/package.json written -3599 silly install resolved [ { name: 'inherits', -3599 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', -3599 silly install resolved version: '2.0.1', -3599 silly install resolved keywords: -3599 silly install resolved [ 'inheritance', -3599 silly install resolved 'class', -3599 silly install resolved 'klass', -3599 silly install resolved 'oop', -3599 silly install resolved 'object-oriented', -3599 silly install resolved 'inherits', -3599 silly install resolved 'browser', -3599 silly install resolved 'browserify' ], -3599 silly install resolved main: './inherits.js', -3599 silly install resolved browser: './inherits_browser.js', -3599 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, -3599 silly install resolved license: 'ISC', -3599 silly install resolved scripts: { test: 'node test' }, -3599 silly install resolved readmeFilename: 'README.md', -3599 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, -3599 silly install resolved _id: 'inherits@2.0.1', -3599 silly install resolved dist: -3599 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -3599 silly install resolved size: 2122, -3599 silly install resolved noattachment: false, -3599 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', -3599 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, -3599 silly install resolved _from: 'inherits@>=2.0.1 <3.0.0', -3599 silly install resolved _npmVersion: '1.3.8', -3599 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -3599 silly install resolved maintainers: [ [Object] ], -3599 silly install resolved directories: {}, -3599 silly install resolved publish_time: 1376950220463, -3599 silly install resolved _cnpm_publish_time: 1376950220463, -3599 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -3599 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', -3599 silly install resolved readme: 'ERROR: No README data found!', -3599 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' }, -3599 silly install resolved { name: 'end-of-stream', -3599 silly install resolved version: '1.0.0', -3599 silly install resolved description: 'Call a callback when a readable/writable/duplex stream has completed or failed.', -3599 silly install resolved repository: -3599 silly install resolved { type: 'git', -3599 silly install resolved url: 'git://github.com/mafintosh/end-of-stream.git' }, -3599 silly install resolved dependencies: { once: '~1.3.0' }, -3599 silly install resolved scripts: { test: 'node test.js' }, -3599 silly install resolved keywords: [ 'stream', 'streams', 'callback', 'finish', 'close', 'end', 'wait' ], -3599 silly install resolved bugs: { url: 'https://github.com/mafintosh/end-of-stream/issues' }, -3599 silly install resolved homepage: 'https://github.com/mafintosh/end-of-stream', -3599 silly install resolved main: 'index.js', -3599 silly install resolved author: { name: 'Mathias Buus', email: 'mathiasbuus@gmail.com' }, -3599 silly install resolved license: 'MIT', -3599 silly install resolved _id: 'end-of-stream@1.0.0', -3599 silly install resolved _shasum: 'd4596e702734a93e40e9af864319eabd99ff2f0e', -3599 silly install resolved _from: 'end-of-stream@1.0.0', -3599 silly install resolved _npmVersion: '1.4.9', -3599 silly install resolved _npmUser: { name: 'mafintosh', email: 'mathiasbuus@gmail.com' }, -3599 silly install resolved maintainers: [ [Object] ], -3599 silly install resolved dist: -3599 silly install resolved { shasum: 'd4596e702734a93e40e9af864319eabd99ff2f0e', -3599 silly install resolved size: 1702, -3599 silly install resolved noattachment: false, -3599 silly install resolved key: 'end-of-stream/-/end-of-stream-1.0.0.tgz', -3599 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/end-of-stream/download/end-of-stream-1.0.0.tgz' }, -3599 silly install resolved directories: {}, -3599 silly install resolved publish_time: 1405940672385, -3599 silly install resolved _cnpm_publish_time: 1405940672385, -3599 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/end-of-stream/download/end-of-stream-1.0.0.tgz', -3599 silly install resolved readme: 'ERROR: No README data found!' } ] -3600 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify -3601 info install end-of-stream@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify -3602 info installOne inherits@2.0.1 -3603 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify not in flight; installing -3604 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3605 info installOne end-of-stream@1.0.0 -3606 verbose installOne of end-of-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify not in flight; installing -3607 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3608 silly fetchAndShaCheck shasum 30e1b3bd98e54d6a0611991812685b6bc47cb63b -3609 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream/package.json -3610 silly gunzTarPerm extractEntry delay.js -3611 silly gunzTarPerm extractEntry core.min.js -3612 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-5220b4c05119a294.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits -3613 verbose lock using /home/ruanyf/.tnpm/_locks/end-of-stream-202720a5c8d9dbba.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -3614 silly prepareForInstallMany adding restore-cursor@^1.0.1 from cli-cursor dependencies -3615 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/package.json -3616 silly prepareForInstallMany adding pinkie@^2.0.0 from pinkie-promise dependencies -3617 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/package.json -3618 silly prepareForInstallMany adding ansi-regex@^2.0.0 from strip-ansi dependencies -3619 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/package.json -3620 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes/package.json -3621 silly prepareForInstallMany adding code-point-at@^1.0.0 from string-width dependencies -3622 silly prepareForInstallMany adding is-fullwidth-code-point@^1.0.0 from string-width dependencies -3623 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/package.json -3624 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits -3625 silly install write writing end-of-stream 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -3626 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz not in flight; adding -3627 verbose addTmpTarball already have metadata; skipping unpack for lodash.keys@4.0.7 -3628 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3629 silly prepareForInstallMany adding ansi-styles@^2.2.1 from chalk dependencies -3630 silly prepareForInstallMany adding escape-string-regexp@^1.0.2 from chalk dependencies -3631 silly prepareForInstallMany adding has-ansi@^2.0.0 from chalk dependencies -3632 silly prepareForInstallMany adding supports-color@^2.0.0 from chalk dependencies -3633 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/package.json -3634 http 200 http://registry.npm.alibaba-inc.com/glob -3635 verbose headers { server: 'Tengine', -3635 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3635 verbose headers 'content-type': 'application/json; charset=utf-8', -3635 verbose headers 'transfer-encoding': 'chunked', -3635 verbose headers connection: 'keep-alive', -3635 verbose headers vary: 'Accept-Encoding', -3635 verbose headers 'x-readtime': '183', -3635 verbose headers 'content-encoding': 'gzip' } -3636 silly get cb [ 200, -3636 silly get { server: 'Tengine', -3636 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3636 silly get 'content-type': 'application/json; charset=utf-8', -3636 silly get 'transfer-encoding': 'chunked', -3636 silly get connection: 'keep-alive', -3636 silly get vary: 'Accept-Encoding', -3636 silly get 'x-readtime': '183', -3636 silly get 'content-encoding': 'gzip' } ] -3637 verbose get saving glob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/glob/.cache.json -3638 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3639 silly gunzTarPerm extractEntry .travis.yml -3640 silly gunzTarPerm extractEntry example/comment-to-json.js -3641 silly gunzTarPerm extractEntry test/comment-regex.js -3642 silly gunzTarPerm extractEntry test/convert-source-map.js -3643 silly gunzTarPerm extractEntry test/map-file-comment.js -3644 silly gunzTarPerm extractEntry test/fixtures/map-file-comment-double-slash.css -3645 silly gunzTarPerm extractEntry test/fixtures/map-file-comment-inline.css -3646 silly gunzTarPerm extractEntry test/fixtures/map-file-comment.css -3647 silly gunzTarPerm extractEntry test/fixtures/map-file-comment.css.map -3648 silly install resolved [] -3649 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream -3650 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream -3651 silly addNameRange number 2 { name: 'clone-stats', range: '>=0.0.1 <0.0.2', hasData: true } -3652 silly addNameRange versions [ 'clone-stats', [ '1.0.0', '0.0.1', '0.0.0' ] ] -3653 silly addNamed clone-stats@0.0.1 -3654 verbose addNamed "0.0.1" is a plain semver version for clone-stats -3655 silly gunzTarPerm extractEntry dist/rx.coincidence.js -3656 silly gunzTarPerm extractEntry dist/rx.sorting.js -3657 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits -3658 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -3659 silly prepareForInstallMany adding escape-string-regexp@^1.0.5 from figures dependencies -3660 silly prepareForInstallMany adding object-assign@^4.1.0 from figures dependencies -3661 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/package.json -3662 http 304 http://registry.npm.alibaba-inc.com/clone -3663 verbose headers { server: 'Tengine', -3663 verbose headers date: 'Fri, 20 May 2016 01:12:29 GMT', -3663 verbose headers connection: 'keep-alive', -3663 verbose headers etag: '"e7e0-KXN0RDf0KYD4qYqwymjlGg"', -3663 verbose headers 'x-readtime': '61' } -3664 silly get cb [ 304, -3664 silly get { server: 'Tengine', -3664 silly get date: 'Fri, 20 May 2016 01:12:29 GMT', -3664 silly get connection: 'keep-alive', -3664 silly get etag: '"e7e0-KXN0RDf0KYD4qYqwymjlGg"', -3664 silly get 'x-readtime': '61' } ] -3665 verbose etag http://registry.npm.alibaba-inc.com/clone from cache -3666 verbose get saving clone to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/clone/.cache.json -3667 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3668 silly install resolved [] -3669 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes -3670 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes -3671 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream/package.json -3672 silly cache add args [ 'restore-cursor@^1.0.1', null ] -3673 verbose cache add spec restore-cursor@^1.0.1 -3674 silly cache add parsed spec Result { -3674 silly cache add raw: 'restore-cursor@^1.0.1', -3674 silly cache add scope: null, -3674 silly cache add name: 'restore-cursor', -3674 silly cache add rawSpec: '^1.0.1', -3674 silly cache add spec: '>=1.0.1 <2.0.0', -3674 silly cache add type: 'range' } -3675 silly addNamed restore-cursor@>=1.0.1 <2.0.0 -3676 verbose addNamed ">=1.0.1 <2.0.0" is a valid semver range for restore-cursor -3677 silly addNameRange { name: 'restore-cursor', -3677 silly addNameRange range: '>=1.0.1 <2.0.0', -3677 silly addNameRange hasData: false } -3678 silly mapToRegistry name restore-cursor -3679 silly mapToRegistry using default registry -3680 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3681 silly mapToRegistry data Result { -3681 silly mapToRegistry raw: 'restore-cursor', -3681 silly mapToRegistry scope: null, -3681 silly mapToRegistry name: 'restore-cursor', -3681 silly mapToRegistry rawSpec: '', -3681 silly mapToRegistry spec: 'latest', -3681 silly mapToRegistry type: 'tag' } -3682 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/restore-cursor -3683 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/restore-cursor not in flight; fetching -3684 silly gunzTarPerm extractEntry difference.js -3685 silly gunzTarPerm extractEntry core.js -3686 silly cache add args [ 'code-point-at@^1.0.0', null ] -3687 verbose cache add spec code-point-at@^1.0.0 -3688 silly cache add args [ 'pinkie@^2.0.0', null ] -3689 verbose cache add spec pinkie@^2.0.0 -3690 silly cache add args [ 'ansi-regex@^2.0.0', null ] -3691 verbose cache add spec ansi-regex@^2.0.0 -3692 silly cache add parsed spec Result { -3692 silly cache add raw: 'code-point-at@^1.0.0', -3692 silly cache add scope: null, -3692 silly cache add name: 'code-point-at', -3692 silly cache add rawSpec: '^1.0.0', -3692 silly cache add spec: '>=1.0.0 <2.0.0', -3692 silly cache add type: 'range' } -3693 silly addNamed code-point-at@>=1.0.0 <2.0.0 -3694 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for code-point-at -3695 silly addNameRange { name: 'code-point-at', -3695 silly addNameRange range: '>=1.0.0 <2.0.0', -3695 silly addNameRange hasData: false } -3696 silly mapToRegistry name code-point-at -3697 silly mapToRegistry using default registry -3698 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3699 silly mapToRegistry data Result { -3699 silly mapToRegistry raw: 'code-point-at', -3699 silly mapToRegistry scope: null, -3699 silly mapToRegistry name: 'code-point-at', -3699 silly mapToRegistry rawSpec: '', -3699 silly mapToRegistry spec: 'latest', -3699 silly mapToRegistry type: 'tag' } -3700 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/code-point-at -3701 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/code-point-at not in flight; fetching -3702 silly cache add parsed spec Result { -3702 silly cache add raw: 'pinkie@^2.0.0', -3702 silly cache add scope: null, -3702 silly cache add name: 'pinkie', -3702 silly cache add rawSpec: '^2.0.0', -3702 silly cache add spec: '>=2.0.0 <3.0.0', -3702 silly cache add type: 'range' } -3703 silly addNamed pinkie@>=2.0.0 <3.0.0 -3704 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for pinkie -3705 silly addNameRange { name: 'pinkie', range: '>=2.0.0 <3.0.0', hasData: false } -3706 silly mapToRegistry name pinkie -3707 silly mapToRegistry using default registry -3708 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3709 silly mapToRegistry data Result { -3709 silly mapToRegistry raw: 'pinkie', -3709 silly mapToRegistry scope: null, -3709 silly mapToRegistry name: 'pinkie', -3709 silly mapToRegistry rawSpec: '', -3709 silly mapToRegistry spec: 'latest', -3709 silly mapToRegistry type: 'tag' } -3710 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/pinkie -3711 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/pinkie not in flight; fetching -3712 silly cache add parsed spec Result { -3712 silly cache add raw: 'ansi-regex@^2.0.0', -3712 silly cache add scope: null, -3712 silly cache add name: 'ansi-regex', -3712 silly cache add rawSpec: '^2.0.0', -3712 silly cache add spec: '>=2.0.0 <3.0.0', -3712 silly cache add type: 'range' } -3713 silly addNamed ansi-regex@>=2.0.0 <3.0.0 -3714 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for ansi-regex -3715 silly addNameRange { name: 'ansi-regex', range: '>=2.0.0 <3.0.0', hasData: false } -3716 silly mapToRegistry name ansi-regex -3717 silly mapToRegistry using default registry -3718 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3719 silly mapToRegistry data Result { -3719 silly mapToRegistry raw: 'ansi-regex', -3719 silly mapToRegistry scope: null, -3719 silly mapToRegistry name: 'ansi-regex', -3719 silly mapToRegistry rawSpec: '', -3719 silly mapToRegistry spec: 'latest', -3719 silly mapToRegistry type: 'tag' } -3720 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/ansi-regex -3721 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/ansi-regex not in flight; fetching -3722 silly cache add args [ 'is-fullwidth-code-point@^1.0.0', null ] -3723 verbose cache add spec is-fullwidth-code-point@^1.0.0 -3724 silly cache add parsed spec Result { -3724 silly cache add raw: 'is-fullwidth-code-point@^1.0.0', -3724 silly cache add scope: null, -3724 silly cache add name: 'is-fullwidth-code-point', -3724 silly cache add rawSpec: '^1.0.0', -3724 silly cache add spec: '>=1.0.0 <2.0.0', -3724 silly cache add type: 'range' } -3725 silly addNamed is-fullwidth-code-point@>=1.0.0 <2.0.0 -3726 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for is-fullwidth-code-point -3727 silly addNameRange { name: 'is-fullwidth-code-point', -3727 silly addNameRange range: '>=1.0.0 <2.0.0', -3727 silly addNameRange hasData: false } -3728 silly mapToRegistry name is-fullwidth-code-point -3729 silly mapToRegistry using default registry -3730 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3731 silly mapToRegistry data Result { -3731 silly mapToRegistry raw: 'is-fullwidth-code-point', -3731 silly mapToRegistry scope: null, -3731 silly mapToRegistry name: 'is-fullwidth-code-point', -3731 silly mapToRegistry rawSpec: '', -3731 silly mapToRegistry spec: 'latest', -3731 silly mapToRegistry type: 'tag' } -3732 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-fullwidth-code-point -3733 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-fullwidth-code-point not in flight; fetching -3734 silly cache afterAdd replace-ext@0.0.1 -3735 verbose afterAdd /home/ruanyf/.tnpm/replace-ext/0.0.1/package/package.json not in flight; writing -3736 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3737 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits is being purged from base /home/ruanyf/npm-global -3738 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits -3739 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream is being purged from base /home/ruanyf/npm-global -3740 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -3741 silly cache add args [ 'has-ansi@^2.0.0', null ] -3742 verbose cache add spec has-ansi@^2.0.0 -3743 silly cache add parsed spec Result { -3743 silly cache add raw: 'has-ansi@^2.0.0', -3743 silly cache add scope: null, -3743 silly cache add name: 'has-ansi', -3743 silly cache add rawSpec: '^2.0.0', -3743 silly cache add spec: '>=2.0.0 <3.0.0', -3743 silly cache add type: 'range' } -3744 silly addNamed has-ansi@>=2.0.0 <3.0.0 -3745 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for has-ansi -3746 silly addNameRange { name: 'has-ansi', range: '>=2.0.0 <3.0.0', hasData: false } -3747 silly mapToRegistry name has-ansi -3748 silly mapToRegistry using default registry -3749 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3750 silly mapToRegistry data Result { -3750 silly mapToRegistry raw: 'has-ansi', -3750 silly mapToRegistry scope: null, -3750 silly mapToRegistry name: 'has-ansi', -3750 silly mapToRegistry rawSpec: '', -3750 silly mapToRegistry spec: 'latest', -3750 silly mapToRegistry type: 'tag' } -3751 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/has-ansi -3752 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/has-ansi not in flight; fetching -3753 info linkStuff lazystream@1.0.0 -3754 silly linkStuff lazystream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -3755 silly linkStuff lazystream@1.0.0 is part of a global install -3756 silly linkStuff lazystream@1.0.0 is installed into a global node_modules -3757 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz -3758 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits -3759 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits is being purged -3760 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits -3761 verbose tar unpack /home/ruanyf/.tnpm/end-of-stream/1.0.0/package.tgz -3762 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -3763 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream is being purged -3764 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -3765 silly cache add args [ 'ansi-styles@^2.2.1', null ] -3766 verbose cache add spec ansi-styles@^2.2.1 -3767 silly cache add parsed spec Result { -3767 silly cache add raw: 'ansi-styles@^2.2.1', -3767 silly cache add scope: null, -3767 silly cache add name: 'ansi-styles', -3767 silly cache add rawSpec: '^2.2.1', -3767 silly cache add spec: '>=2.2.1 <3.0.0', -3767 silly cache add type: 'range' } -3768 silly addNamed ansi-styles@>=2.2.1 <3.0.0 -3769 verbose addNamed ">=2.2.1 <3.0.0" is a valid semver range for ansi-styles -3770 silly addNameRange { name: 'ansi-styles', range: '>=2.2.1 <3.0.0', hasData: false } -3771 silly mapToRegistry name ansi-styles -3772 silly mapToRegistry using default registry -3773 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3774 silly mapToRegistry data Result { -3774 silly mapToRegistry raw: 'ansi-styles', -3774 silly mapToRegistry scope: null, -3774 silly mapToRegistry name: 'ansi-styles', -3774 silly mapToRegistry rawSpec: '', -3774 silly mapToRegistry spec: 'latest', -3774 silly mapToRegistry type: 'tag' } -3775 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/ansi-styles -3776 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/ansi-styles not in flight; fetching -3777 silly cache add args [ 'escape-string-regexp@^1.0.2', null ] -3778 verbose cache add spec escape-string-regexp@^1.0.2 -3779 silly cache add parsed spec Result { -3779 silly cache add raw: 'escape-string-regexp@^1.0.2', -3779 silly cache add scope: null, -3779 silly cache add name: 'escape-string-regexp', -3779 silly cache add rawSpec: '^1.0.2', -3779 silly cache add spec: '>=1.0.2 <2.0.0', -3779 silly cache add type: 'range' } -3780 silly addNamed escape-string-regexp@>=1.0.2 <2.0.0 -3781 verbose addNamed ">=1.0.2 <2.0.0" is a valid semver range for escape-string-regexp -3782 silly addNameRange { name: 'escape-string-regexp', -3782 silly addNameRange range: '>=1.0.2 <2.0.0', -3782 silly addNameRange hasData: false } -3783 silly mapToRegistry name escape-string-regexp -3784 silly mapToRegistry using default registry -3785 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3786 silly mapToRegistry data Result { -3786 silly mapToRegistry raw: 'escape-string-regexp', -3786 silly mapToRegistry scope: null, -3786 silly mapToRegistry name: 'escape-string-regexp', -3786 silly mapToRegistry rawSpec: '', -3786 silly mapToRegistry spec: 'latest', -3786 silly mapToRegistry type: 'tag' } -3787 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/escape-string-regexp -3788 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/escape-string-regexp not in flight; fetching -3789 silly cache add args [ 'supports-color@^2.0.0', null ] -3790 verbose cache add spec supports-color@^2.0.0 -3791 silly cache add parsed spec Result { -3791 silly cache add raw: 'supports-color@^2.0.0', -3791 silly cache add scope: null, -3791 silly cache add name: 'supports-color', -3791 silly cache add rawSpec: '^2.0.0', -3791 silly cache add spec: '>=2.0.0 <3.0.0', -3791 silly cache add type: 'range' } -3792 silly addNamed supports-color@>=2.0.0 <3.0.0 -3793 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for supports-color -3794 silly addNameRange { name: 'supports-color', -3794 silly addNameRange range: '>=2.0.0 <3.0.0', -3794 silly addNameRange hasData: false } -3795 silly mapToRegistry name supports-color -3796 silly mapToRegistry using default registry -3797 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3798 silly mapToRegistry data Result { -3798 silly mapToRegistry raw: 'supports-color', -3798 silly mapToRegistry scope: null, -3798 silly mapToRegistry name: 'supports-color', -3798 silly mapToRegistry rawSpec: '', -3798 silly mapToRegistry spec: 'latest', -3798 silly mapToRegistry type: 'tag' } -3799 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/supports-color -3800 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/supports-color not in flight; fetching -3801 silly addNameRange number 2 { name: 'glob', range: '>=5.0.3 <6.0.0', hasData: true } -3802 silly addNameRange versions [ 'glob', -3802 silly addNameRange [ '7.0.3', -3802 silly addNameRange '7.0.1', -3802 silly addNameRange '7.0.0', -3802 silly addNameRange '6.0.4', -3802 silly addNameRange '6.0.3', -3802 silly addNameRange '6.0.2', -3802 silly addNameRange '6.0.1', -3802 silly addNameRange '5.0.15', -3802 silly addNameRange '5.0.14', -3802 silly addNameRange '5.0.13', -3802 silly addNameRange '5.0.12', -3802 silly addNameRange '5.0.11', -3802 silly addNameRange '5.0.10', -3802 silly addNameRange '5.0.9', -3802 silly addNameRange '5.0.7', -3802 silly addNameRange '5.0.6', -3802 silly addNameRange '5.0.5', -3802 silly addNameRange '5.0.4', -3802 silly addNameRange '5.0.3', -3802 silly addNameRange '4.5.3', -3802 silly addNameRange '5.0.2', -3802 silly addNameRange '4.5.2', -3802 silly addNameRange '5.0.1', -3802 silly addNameRange '4.5.1', -3802 silly addNameRange '5.0.0', -3802 silly addNameRange '4.5.0', -3802 silly addNameRange '4.4.2', -3802 silly addNameRange '4.4.0', -3802 silly addNameRange '4.3.5', -3802 silly addNameRange '4.3.4', -3802 silly addNameRange '4.3.3', -3802 silly addNameRange '4.3.2', -3802 silly addNameRange '4.3.1', -3802 silly addNameRange '4.3.0', -3802 silly addNameRange '4.2.2', -3802 silly addNameRange '4.2.1', -3802 silly addNameRange '4.2.0', -3802 silly addNameRange '4.1.6', -3802 silly addNameRange '4.1.5', -3802 silly addNameRange '4.1.4', -3802 silly addNameRange '4.1.3', -3802 silly addNameRange '4.1.2', -3802 silly addNameRange '4.1.2-beta', -3802 silly addNameRange '4.0.6', -3802 silly addNameRange '4.0.5', -3802 silly addNameRange '4.0.4', -3802 silly addNameRange '4.0.3', -3802 silly addNameRange '4.0.2', -3802 silly addNameRange '4.0.1', -3802 silly addNameRange '4.0.0', -3802 silly addNameRange '3.2.11', -3802 silly addNameRange '3.2.10', -3802 silly addNameRange '3.2.9', -3802 silly addNameRange '3.2.8', -3802 silly addNameRange '3.2.7', -3802 silly addNameRange '3.2.6', -3802 silly addNameRange '3.2.5', -3802 silly addNameRange '3.2.4', -3802 silly addNameRange '3.2.3', -3802 silly addNameRange '3.2.1', -3802 silly addNameRange '3.2.0', -3802 silly addNameRange '3.1.21', -3802 silly addNameRange '3.1.20', -3802 silly addNameRange '3.1.19', -3802 silly addNameRange '3.1.18', -3802 silly addNameRange '3.1.17', -3802 silly addNameRange '3.1.16', -3802 silly addNameRange '3.1.15', -3802 silly addNameRange '3.1.14', -3802 silly addNameRange '3.1.13', -3802 silly addNameRange '3.1.12', -3802 silly addNameRange '3.1.11', -3802 silly addNameRange '3.1.10', -3802 silly addNameRange '3.1.9', -3802 silly addNameRange '3.1.7', -3802 silly addNameRange '3.1.6', -3802 silly addNameRange '3.1.5', -3802 silly addNameRange '3.1.4', -3802 silly addNameRange '3.1.3', -3802 silly addNameRange '3.1.2', -3802 silly addNameRange '3.1.1', -3802 silly addNameRange '3.1.0', -3802 silly addNameRange '3.0.1', -3802 silly addNameRange '3.0.0', -3802 silly addNameRange '2.1.0', -3802 silly addNameRange '2.0.9', -3802 silly addNameRange '2.0.8', -3802 silly addNameRange '2.0.7', -3802 silly addNameRange '1.1.0' ] ] -3803 silly addNamed glob@5.0.15 -3804 verbose addNamed "5.0.15" is a plain semver version for glob -3805 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream/package.json -3806 silly gunzTarPerm modes [ '755', '644' ] -3807 silly gunzTarPerm modes [ '755', '644' ] -3808 info preinstall mute-stream@0.0.6 -3809 silly cache afterAdd clone-stats@0.0.1 -3810 verbose afterAdd /home/ruanyf/.tnpm/clone-stats/0.0.1/package/package.json not in flight; writing -3811 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3812 info linkStuff ansi-escapes@1.4.0 -3813 silly linkStuff ansi-escapes@1.4.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -3814 silly linkStuff ansi-escapes@1.4.0 is part of a global install -3815 silly linkStuff ansi-escapes@1.4.0 is installed into a global node_modules -3816 verbose request uri http://registry.npm.alibaba-inc.com/restore-cursor -3817 verbose request no auth needed -3818 info attempt registry request try #1 at 上午9:12:30 -3819 verbose etag "f26-Rf1QwcpBseL8XjodWQLZjA" -3820 http request GET http://registry.npm.alibaba-inc.com/restore-cursor -3821 verbose linkBins lazystream@1.0.0 -3822 verbose linkMans lazystream@1.0.0 -3823 verbose rebuildBundles lazystream@1.0.0 -3824 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream/package.json -3825 verbose request uri http://registry.npm.alibaba-inc.com/code-point-at -3826 verbose request no auth needed -3827 info attempt registry request try #1 at 上午9:12:30 -3828 verbose etag "ac1-y0V/VwUraFfH/214avn1Yg" -3829 http request GET http://registry.npm.alibaba-inc.com/code-point-at -3830 verbose request uri http://registry.npm.alibaba-inc.com/is-fullwidth-code-point -3831 verbose request no auth needed -3832 info attempt registry request try #1 at 上午9:12:30 -3833 verbose etag "c8d-adF4SQbWgTWwNcpSmYQtiA" -3834 http request GET http://registry.npm.alibaba-inc.com/is-fullwidth-code-point -3835 info install lazystream@1.0.0 -3836 verbose request uri http://registry.npm.alibaba-inc.com/ansi-regex -3837 verbose request no auth needed -3838 info attempt registry request try #1 at 上午9:12:30 -3839 verbose etag "2d1c-dmT9K8nM6zxZeXqlgMlsdw" -3840 http request GET http://registry.npm.alibaba-inc.com/ansi-regex -3841 verbose request uri http://registry.npm.alibaba-inc.com/pinkie -3842 verbose request no auth needed -3843 info attempt registry request try #1 at 上午9:12:30 -3844 verbose etag "3c63-xICIHhtMas1sNNinkFjRqg" -3845 http request GET http://registry.npm.alibaba-inc.com/pinkie -3846 verbose afterAdd /home/ruanyf/.tnpm/replace-ext/0.0.1/package/package.json written -3847 silly gunzTarPerm extractEntry dist/rx.sorting.min.js -3848 silly gunzTarPerm extractEntry dist/rx.compat.js -3849 silly addNameRange number 2 { name: 'clone', range: '>=1.0.0 <2.0.0', hasData: true } -3850 silly addNameRange versions [ 'clone', -3850 silly addNameRange [ '1.0.2', -3850 silly addNameRange '1.0.1', -3850 silly addNameRange '1.0.0', -3850 silly addNameRange '0.1.19', -3850 silly addNameRange '0.2.0', -3850 silly addNameRange '0.1.18', -3850 silly addNameRange '0.1.17', -3850 silly addNameRange '0.1.16', -3850 silly addNameRange '0.1.15', -3850 silly addNameRange '0.1.14', -3850 silly addNameRange '0.1.13', -3850 silly addNameRange '0.1.12', -3850 silly addNameRange '0.1.11', -3850 silly addNameRange '0.1.10', -3850 silly addNameRange '0.1.9', -3850 silly addNameRange '0.1.8', -3850 silly addNameRange '0.1.7', -3850 silly addNameRange '0.1.6', -3850 silly addNameRange '0.1.5', -3850 silly addNameRange '0.1.4', -3850 silly addNameRange '0.1.3', -3850 silly addNameRange '0.1.2', -3850 silly addNameRange '0.1.1', -3850 silly addNameRange '0.1.0', -3850 silly addNameRange '0.0.7', -3850 silly addNameRange '0.0.6', -3850 silly addNameRange '0.0.5', -3850 silly addNameRange '0.0.4', -3850 silly addNameRange '0.0.3', -3850 silly addNameRange '0.0.2', -3850 silly addNameRange '0.0.1', -3850 silly addNameRange '0.0.0' ] ] -3851 silly addNamed clone@1.0.2 -3852 verbose addNamed "1.0.2" is a plain semver version for clone -3853 verbose request uri http://registry.npm.alibaba-inc.com/has-ansi -3854 verbose request no auth needed -3855 info attempt registry request try #1 at 上午9:12:30 -3856 verbose etag "29af-WEge/oRG6eXrMQh9zEsSSQ" -3857 http request GET http://registry.npm.alibaba-inc.com/has-ansi -3858 info preinstall first-chunk-stream@1.0.0 -3859 verbose linkBins ansi-escapes@1.4.0 -3860 verbose linkMans ansi-escapes@1.4.0 -3861 verbose rebuildBundles ansi-escapes@1.4.0 -3862 verbose request uri http://registry.npm.alibaba-inc.com/ansi-styles -3863 verbose request no auth needed -3864 info attempt registry request try #1 at 上午9:12:30 -3865 verbose etag "407f-fOsiImONKsV1JPJQ0LbRjw" -3866 http request GET http://registry.npm.alibaba-inc.com/ansi-styles -3867 verbose request uri http://registry.npm.alibaba-inc.com/escape-string-regexp -3868 verbose request no auth needed -3869 info attempt registry request try #1 at 上午9:12:30 -3870 verbose etag "2773-u+1hVS8w+la4QX/BkxESDA" -3871 http request GET http://registry.npm.alibaba-inc.com/escape-string-regexp -3872 silly cache afterAdd lodash.keys@4.0.7 -3873 verbose afterAdd /home/ruanyf/.tnpm/lodash.keys/4.0.7/package/package.json not in flight; writing -3874 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3875 verbose request uri http://registry.npm.alibaba-inc.com/supports-color -3876 verbose request no auth needed -3877 info attempt registry request try #1 at 上午9:12:30 -3878 verbose etag "56fa-xdGFAzmi7C4qzdas+C7J9w" -3879 http request GET http://registry.npm.alibaba-inc.com/supports-color -3880 info postinstall lazystream@1.0.0 -3881 silly gunzTarPerm extractEntry differenceBy.js -3882 silly gunzTarPerm extractEntry constant.js -3883 info install ansi-escapes@1.4.0 -3884 silly gunzTarPerm extractEntry package.json -3885 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream/package.json -3886 silly cache afterAdd glob@5.0.15 -3887 verbose afterAdd /home/ruanyf/.tnpm/glob/5.0.15/package/package.json not in flight; writing -3888 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3889 verbose afterAdd /home/ruanyf/.tnpm/clone-stats/0.0.1/package/package.json written -3890 silly gunzTarPerm extractEntry package.json -3891 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8/package.json -3892 info postinstall ansi-escapes@1.4.0 -3893 silly cache add args [ 'escape-string-regexp@^1.0.5', null ] -3894 verbose cache add spec escape-string-regexp@^1.0.5 -3895 silly cache add args [ 'object-assign@^4.1.0', null ] -3896 verbose cache add spec object-assign@^4.1.0 -3897 silly cache add parsed spec Result { -3897 silly cache add raw: 'escape-string-regexp@^1.0.5', -3897 silly cache add scope: null, -3897 silly cache add name: 'escape-string-regexp', -3897 silly cache add rawSpec: '^1.0.5', -3897 silly cache add spec: '>=1.0.5 <2.0.0', -3897 silly cache add type: 'range' } -3898 silly addNamed escape-string-regexp@>=1.0.5 <2.0.0 -3899 verbose addNamed ">=1.0.5 <2.0.0" is a valid semver range for escape-string-regexp -3900 silly addNameRange { name: 'escape-string-regexp', -3900 silly addNameRange range: '>=1.0.5 <2.0.0', -3900 silly addNameRange hasData: false } -3901 silly mapToRegistry name escape-string-regexp -3902 silly mapToRegistry using default registry -3903 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3904 silly mapToRegistry data Result { -3904 silly mapToRegistry raw: 'escape-string-regexp', -3904 silly mapToRegistry scope: null, -3904 silly mapToRegistry name: 'escape-string-regexp', -3904 silly mapToRegistry rawSpec: '', -3904 silly mapToRegistry spec: 'latest', -3904 silly mapToRegistry type: 'tag' } -3905 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/escape-string-regexp -3906 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/escape-string-regexp already in flight; waiting -3907 silly cache add parsed spec Result { -3907 silly cache add raw: 'object-assign@^4.1.0', -3907 silly cache add scope: null, -3907 silly cache add name: 'object-assign', -3907 silly cache add rawSpec: '^4.1.0', -3907 silly cache add spec: '>=4.1.0 <5.0.0', -3907 silly cache add type: 'range' } -3908 silly addNamed object-assign@>=4.1.0 <5.0.0 -3909 verbose addNamed ">=4.1.0 <5.0.0" is a valid semver range for object-assign -3910 silly addNameRange { name: 'object-assign', -3910 silly addNameRange range: '>=4.1.0 <5.0.0', -3910 silly addNameRange hasData: false } -3911 silly mapToRegistry name object-assign -3912 silly mapToRegistry using default registry -3913 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -3914 silly mapToRegistry data Result { -3914 silly mapToRegistry raw: 'object-assign', -3914 silly mapToRegistry scope: null, -3914 silly mapToRegistry name: 'object-assign', -3914 silly mapToRegistry rawSpec: '', -3914 silly mapToRegistry spec: 'latest', -3914 silly mapToRegistry type: 'tag' } -3915 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/object-assign -3916 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/object-assign not in flight; fetching -3917 verbose unlock done using /home/ruanyf/.tnpm/_locks/lazystream-2a93ce1452b50114.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lazystream -3918 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream/package.json -3919 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json -3920 silly gunzTarPerm extractEntry README.md -3921 silly gunzTarPerm extractEntry LICENSE -3922 verbose afterAdd /home/ruanyf/.tnpm/lodash.keys/4.0.7/package/package.json written -3923 silly install resolved [ { name: 'lodash._root', -3923 silly install resolved version: '3.0.1', -3923 silly install resolved description: 'The internal lodash function `root` exported as a module.', -3923 silly install resolved homepage: 'https://lodash.com/', -3923 silly install resolved icon: 'https://lodash.com/icon.svg', -3923 silly install resolved license: 'MIT', -3923 silly install resolved author: -3923 silly install resolved { name: 'John-David Dalton', -3923 silly install resolved email: 'john.david.dalton@gmail.com', -3923 silly install resolved url: 'http://allyoucanleet.com/' }, -3923 silly install resolved contributors: [ [Object], [Object], [Object] ], -3923 silly install resolved repository: { type: 'git', url: 'git+https://github.com/lodash/lodash.git' }, -3923 silly install resolved scripts: { test: 'echo "See https://travis-ci.org/lodash/lodash-cli for testing details."' }, -3923 silly install resolved bugs: { url: 'https://github.com/lodash/lodash/issues' }, -3923 silly install resolved _id: 'lodash._root@3.0.1', -3923 silly install resolved _shasum: 'fba1c4524c19ee9a5f8136b4609f017cf4ded692', -3923 silly install resolved _from: 'lodash._root@>=3.0.0 <3.1.0', -3923 silly install resolved _npmVersion: '2.14.18', -3923 silly install resolved _nodeVersion: '5.5.0', -3923 silly install resolved _npmUser: { name: 'jdalton', email: 'john.david.dalton@gmail.com' }, -3923 silly install resolved dist: -3923 silly install resolved { shasum: 'fba1c4524c19ee9a5f8136b4609f017cf4ded692', -3923 silly install resolved size: 2128, -3923 silly install resolved noattachment: false, -3923 silly install resolved key: 'lodash._root/-/lodash._root-3.0.1.tgz', -3923 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/lodash._root/download/lodash._root-3.0.1.tgz' }, -3923 silly install resolved maintainers: [ [Object], [Object], [Object] ], -3923 silly install resolved _npmOperationalInternal: -3923 silly install resolved { host: 'packages-6-west.internal.npmjs.com', -3923 silly install resolved tmp: 'tmp/lodash._root-3.0.1.tgz_1455615057559_0.24128212919458747' }, -3923 silly install resolved directories: {}, -3923 silly install resolved publish_time: 1455615059518, -3923 silly install resolved _cnpm_publish_time: 1455615059518, -3923 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/lodash._root/download/lodash._root-3.0.1.tgz', -3923 silly install resolved readme: 'ERROR: No README data found!' }, -3923 silly install resolved { name: 'lodash.keys', -3923 silly install resolved version: '4.0.7', -3923 silly install resolved description: 'The lodash method `_.keys` exported as a module.', -3923 silly install resolved homepage: 'https://lodash.com/', -3923 silly install resolved icon: 'https://lodash.com/icon.svg', -3923 silly install resolved license: 'MIT', -3923 silly install resolved keywords: [ 'lodash-modularized', 'keys' ], -3923 silly install resolved author: -3923 silly install resolved { name: 'John-David Dalton', -3923 silly install resolved email: 'john.david.dalton@gmail.com', -3923 silly install resolved url: 'http://allyoucanleet.com/' }, -3923 silly install resolved contributors: [ [Object], [Object], [Object] ], -3923 silly install resolved repository: { type: 'git', url: 'git+https://github.com/lodash/lodash.git' }, -3923 silly install resolved scripts: { test: 'echo "See https://travis-ci.org/lodash/lodash-cli for testing details."' }, -3923 silly install resolved bugs: { url: 'https://github.com/lodash/lodash/issues' }, -3923 silly install resolved _id: 'lodash.keys@4.0.7', -3923 silly install resolved _shasum: '30e1b3bd98e54d6a0611991812685b6bc47cb63b', -3923 silly install resolved _from: 'lodash.keys@>=4.0.0 <5.0.0', -3923 silly install resolved _npmVersion: '2.15.5', -3923 silly install resolved _nodeVersion: '5.5.0', -3923 silly install resolved _npmUser: { name: 'jdalton', email: 'john.david.dalton@gmail.com' }, -3923 silly install resolved dist: -3923 silly install resolved { shasum: '30e1b3bd98e54d6a0611991812685b6bc47cb63b', -3923 silly install resolved size: 4876, -3923 silly install resolved noattachment: false, -3923 silly install resolved key: 'lodash.keys/-/lodash.keys-4.0.7.tgz', -3923 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz' }, -3923 silly install resolved maintainers: [ [Object], [Object], [Object] ], -3923 silly install resolved _npmOperationalInternal: -3923 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -3923 silly install resolved tmp: 'tmp/lodash.keys-4.0.7.tgz_1463062346790_0.19413627637550235' }, -3923 silly install resolved directories: {}, -3923 silly install resolved publish_time: 1463062349907, -3923 silly install resolved _cnpm_publish_time: 1463062349907, -3923 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/lodash.keys/download/lodash.keys-4.0.7.tgz' } ] -3924 info install lodash._root@3.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal -3925 info install lodash.keys@4.0.7 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal -3926 info installOne lodash._root@3.0.1 -3927 verbose installOne of lodash._root to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal not in flight; installing -3928 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3929 info installOne lodash.keys@4.0.7 -3930 verbose installOne of lodash.keys to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal not in flight; installing -3931 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3932 silly cache afterAdd clone@1.0.2 -3933 verbose afterAdd /home/ruanyf/.tnpm/clone/1.0.2/package/package.json not in flight; writing -3934 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3935 verbose unlock done using /home/ruanyf/.tnpm/_locks/ansi-escapes-e3b00eb232f4df7f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/ansi-escapes -3936 silly gunzTarPerm extractEntry .npmignore -3937 silly gunzTarPerm extractEntry README.md -3938 http 304 http://registry.npm.alibaba-inc.com/restore-cursor -3939 verbose headers { server: 'Tengine', -3939 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -3939 verbose headers connection: 'keep-alive', -3939 verbose headers etag: '"f26-Rf1QwcpBseL8XjodWQLZjA"', -3939 verbose headers 'x-readtime': '16' } -3940 silly get cb [ 304, -3940 silly get { server: 'Tengine', -3940 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -3940 silly get connection: 'keep-alive', -3940 silly get etag: '"f26-Rf1QwcpBseL8XjodWQLZjA"', -3940 silly get 'x-readtime': '16' } ] -3941 verbose etag http://registry.npm.alibaba-inc.com/restore-cursor from cache -3942 verbose get saving restore-cursor to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/restore-cursor/.cache.json -3943 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3944 info preinstall is-utf8@0.2.1 -3945 verbose afterAdd /home/ruanyf/.tnpm/glob/5.0.15/package/package.json written -3946 silly install resolved [ { name: 'through2', -3946 silly install resolved version: '0.6.5', -3946 silly install resolved description: 'A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise', -3946 silly install resolved main: 'through2.js', -3946 silly install resolved scripts: -3946 silly install resolved { test: 'node test/test.js', -3946 silly install resolved 'test-local': 'brtapsauce-local test/basic-test.js' }, -3946 silly install resolved repository: -3946 silly install resolved { type: 'git', -3946 silly install resolved url: 'git+https://github.com/rvagg/through2.git' }, -3946 silly install resolved keywords: [ 'stream', 'streams2', 'through', 'transform' ], -3946 silly install resolved author: -3946 silly install resolved { name: 'Rod Vagg', -3946 silly install resolved email: 'r@va.gg', -3946 silly install resolved url: 'https://github.com/rvagg' }, -3946 silly install resolved license: 'MIT', -3946 silly install resolved dependencies: -3946 silly install resolved { 'readable-stream': '>=1.0.33-1 <1.1.0-0', -3946 silly install resolved xtend: '>=4.0.0 <4.1.0-0' }, -3946 silly install resolved devDependencies: -3946 silly install resolved { bl: '>=0.9.0 <0.10.0-0', -3946 silly install resolved 'stream-spigot': '>=3.0.4 <3.1.0-0', -3946 silly install resolved tape: '>=2.14.0 <2.15.0-0' }, -3946 silly install resolved gitHead: 'ba4a87875f2c82323c10023e36f4ae4b386c1bf8', -3946 silly install resolved bugs: { url: 'https://github.com/rvagg/through2/issues' }, -3946 silly install resolved homepage: 'https://github.com/rvagg/through2', -3946 silly install resolved _id: 'through2@0.6.5', -3946 silly install resolved _shasum: '41ab9c67b29d57209071410e1d7a7a968cd3ad48', -3946 silly install resolved _from: 'through2@>=0.6.0 <0.7.0', -3946 silly install resolved _npmVersion: '1.4.28', -3946 silly install resolved _npmUser: { name: 'bryce', email: 'bryce@ravenwall.com' }, -3946 silly install resolved maintainers: [ [Object], [Object] ], -3946 silly install resolved dist: -3946 silly install resolved { shasum: '41ab9c67b29d57209071410e1d7a7a968cd3ad48', -3946 silly install resolved size: 4380, -3946 silly install resolved noattachment: false, -3946 silly install resolved key: 'through2/-/through2-0.6.5.tgz', -3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/through2/download/through2-0.6.5.tgz' }, -3946 silly install resolved directories: {}, -3946 silly install resolved publish_time: 1428601327435, -3946 silly install resolved _cnpm_publish_time: 1428601327435, -3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/through2/download/through2-0.6.5.tgz', -3946 silly install resolved readme: 'ERROR: No README data found!' }, -3946 silly install resolved { name: 'glob-parent', -3946 silly install resolved version: '2.0.0', -3946 silly install resolved description: 'Strips glob magic from a string to provide the parent path', -3946 silly install resolved main: 'index.js', -3946 silly install resolved scripts: { test: 'istanbul cover _mocha && cat ./coverage/lcov.info | coveralls' }, -3946 silly install resolved repository: -3946 silly install resolved { type: 'git', -3946 silly install resolved url: 'git+https://github.com/es128/glob-parent.git' }, -3946 silly install resolved keywords: [ 'glob', 'parent', 'strip', 'path', 'directory', 'base' ], -3946 silly install resolved author: { name: 'Elan Shanker' }, -3946 silly install resolved license: 'ISC', -3946 silly install resolved bugs: { url: 'https://github.com/es128/glob-parent/issues' }, -3946 silly install resolved homepage: 'https://github.com/es128/glob-parent', -3946 silly install resolved dependencies: { 'is-glob': '^2.0.0' }, -3946 silly install resolved devDependencies: { coveralls: '^2.11.2', istanbul: '^0.3.5', mocha: '^2.1.0' }, -3946 silly install resolved gitHead: 'a956910c7ccb5eafd1b3fe900ceb6335cc5b6d3d', -3946 silly install resolved _id: 'glob-parent@2.0.0', -3946 silly install resolved _shasum: '81383d72db054fcccf5336daa902f182f6edbb28', -3946 silly install resolved _from: 'glob-parent@>=2.0.0 <3.0.0', -3946 silly install resolved _npmVersion: '2.13.3', -3946 silly install resolved _nodeVersion: '3.0.0', -3946 silly install resolved _npmUser: { name: 'es128', email: 'elan.shanker+npm@gmail.com' }, -3946 silly install resolved dist: -3946 silly install resolved { shasum: '81383d72db054fcccf5336daa902f182f6edbb28', -3946 silly install resolved size: 2017, -3946 silly install resolved noattachment: false, -3946 silly install resolved key: 'glob-parent/-/glob-parent-2.0.0.tgz', -3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/glob-parent/download/glob-parent-2.0.0.tgz' }, -3946 silly install resolved maintainers: [ [Object] ], -3946 silly install resolved directories: {}, -3946 silly install resolved publish_time: 1442588350292, -3946 silly install resolved _cnpm_publish_time: 1442588350292, -3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/glob-parent/download/glob-parent-2.0.0.tgz', -3946 silly install resolved readme: 'ERROR: No README data found!' }, -3946 silly install resolved { name: 'unique-stream', -3946 silly install resolved version: '2.2.1', -3946 silly install resolved description: 'node.js through stream that emits a unique stream of objects based on criteria', -3946 silly install resolved repository: -3946 silly install resolved { type: 'git', -3946 silly install resolved url: 'git+https://github.com/eugeneware/unique-stream.git' }, -3946 silly install resolved author: { name: 'Eugene Ware', email: 'eugene@noblesamurai.com' }, -3946 silly install resolved license: 'MIT', -3946 silly install resolved files: [ 'index.js' ], -3946 silly install resolved scripts: -3946 silly install resolved { test: 'mocha', -3946 silly install resolved coverage: 'istanbul cover _mocha', -3946 silly install resolved coveralls: '${npm_package_scripts_coverage} && istanbul-coveralls' }, -3946 silly install resolved keywords: [ 'unique', 'stream', 'unique-stream', 'streaming', 'streams' ], -3946 silly install resolved dependencies: -3946 silly install resolved { 'json-stable-stringify': '^1.0.0', -3946 silly install resolved 'through2-filter': '^2.0.0' }, -3946 silly install resolved devDependencies: -3946 silly install resolved { after: '~0.8.1', -3946 silly install resolved chai: '^3.0.0', -3946 silly install resolved istanbul: '^0.4.2', -3946 silly install resolved 'istanbul-coveralls': '^1.0.3', -3946 silly install resolved mocha: '^2.1.0' }, -3946 silly install resolved gitHead: '44bb895ede1645668c4f62a81c7af8edaf47bff9', -3946 silly install resolved bugs: { url: 'https://github.com/eugeneware/unique-stream/issues' }, -3946 silly install resolved homepage: 'https://github.com/eugeneware/unique-stream#readme', -3946 silly install resolved _id: 'unique-stream@2.2.1', -3946 silly install resolved _shasum: '5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369', -3946 silly install resolved _from: 'unique-stream@>=2.0.2 <3.0.0', -3946 silly install resolved _npmVersion: '3.7.2', -3946 silly install resolved _nodeVersion: '5.6.0', -3946 silly install resolved _npmUser: { name: 'shinnn', email: 'snnskwtnb@gmail.com' }, -3946 silly install resolved dist: -3946 silly install resolved { shasum: '5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369', -3946 silly install resolved size: 2809, -3946 silly install resolved noattachment: false, -3946 silly install resolved key: 'unique-stream/-/unique-stream-2.2.1.tgz', -3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/unique-stream/download/unique-stream-2.2.1.tgz' }, -3946 silly install resolved maintainers: [ [Object], [Object] ], -3946 silly install resolved _npmOperationalInternal: -3946 silly install resolved { host: 'packages-6-west.internal.npmjs.com', -3946 silly install resolved tmp: 'tmp/unique-stream-2.2.1.tgz_1455624338144_0.2851575950626284' }, -3946 silly install resolved directories: {}, -3946 silly install resolved publish_time: 1455624340106, -3946 silly install resolved _cnpm_publish_time: 1455624340106, -3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/unique-stream/download/unique-stream-2.2.1.tgz', -3946 silly install resolved readme: 'ERROR: No README data found!' }, -3946 silly install resolved { name: 'to-absolute-glob', -3946 silly install resolved description: 'Make a glob pattern absolute, ensuring that negative globs and patterns with trailing slashes are correctly handled.', -3946 silly install resolved version: '0.1.1', -3946 silly install resolved homepage: 'https://github.com/jonschlinkert/to-absolute-glob', -3946 silly install resolved author: -3946 silly install resolved { name: 'Jon Schlinkert', -3946 silly install resolved url: 'https://github.com/jonschlinkert' }, -3946 silly install resolved repository: -3946 silly install resolved { type: 'git', -3946 silly install resolved url: 'git+https://github.com/jonschlinkert/to-absolute-glob.git' }, -3946 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/to-absolute-glob/issues' }, -3946 silly install resolved license: 'MIT', -3946 silly install resolved files: [ 'index.js' ], -3946 silly install resolved main: 'index.js', -3946 silly install resolved engines: { node: '>=0.10.0' }, -3946 silly install resolved scripts: { test: 'mocha' }, -3946 silly install resolved dependencies: { 'extend-shallow': '^2.0.1' }, -3946 silly install resolved devDependencies: { mocha: '*' }, -3946 silly install resolved keywords: [ 'resolve', 'pattern', 'absolute', 'glob' ], -3946 silly install resolved verb: { related: [Object] }, -3946 silly install resolved gitHead: '42428d988edb8c0cd7d97fbc0622b9720dc57437', -3946 silly install resolved _id: 'to-absolute-glob@0.1.1', -3946 silly install resolved _shasum: '1cdfa472a9ef50c239ee66999b662ca0eb39937f', -3946 silly install resolved _from: 'to-absolute-glob@>=0.1.1 <0.2.0', -3946 silly install resolved _npmVersion: '3.3.6', -3946 silly install resolved _nodeVersion: '5.0.0', -3946 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -3946 silly install resolved maintainers: [ [Object] ], -3946 silly install resolved dist: -3946 silly install resolved { shasum: '1cdfa472a9ef50c239ee66999b662ca0eb39937f', -3946 silly install resolved size: 2341, -3946 silly install resolved noattachment: false, -3946 silly install resolved key: 'to-absolute-glob/-/to-absolute-glob-0.1.1.tgz', -3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/to-absolute-glob/download/to-absolute-glob-0.1.1.tgz' }, -3946 silly install resolved directories: {}, -3946 silly install resolved publish_time: 1446757436171, -3946 silly install resolved _cnpm_publish_time: 1446757436171, -3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/to-absolute-glob/download/to-absolute-glob-0.1.1.tgz', -3946 silly install resolved readme: 'ERROR: No README data found!' }, -3946 silly install resolved { name: 'ordered-read-streams', -3946 silly install resolved version: '0.3.0', -3946 silly install resolved description: 'Combines array of streams into one read stream in strict order', -3946 silly install resolved files: [ 'index.js' ], -3946 silly install resolved scripts: { test: 'jshint *.js test/*.js && mocha' }, -3946 silly install resolved repository: -3946 silly install resolved { type: 'git', -3946 silly install resolved url: 'git+https://github.com/armed/ordered-read-streams.git' }, -3946 silly install resolved author: -3946 silly install resolved { name: 'Artem Medeusheyev', -3946 silly install resolved email: 'artem.medeusheyev@gmail.com' }, -3946 silly install resolved license: 'MIT', -3946 silly install resolved dependencies: { 'is-stream': '^1.0.1', 'readable-stream': '^2.0.1' }, -3946 silly install resolved devDependencies: -3946 silly install resolved { should: '^7.0.1', -3946 silly install resolved mocha: '^2.2.5', -3946 silly install resolved through2: '^2.0.0', -3946 silly install resolved jshint: '^2.8.0', -3946 silly install resolved 'pre-commit': '^1.0.10' }, -3946 silly install resolved gitHead: 'd1d4cb9437b1afc750fb0cb7f8f438ba6d9c4406', -3946 silly install resolved bugs: { url: 'https://github.com/armed/ordered-read-streams/issues' }, -3946 silly install resolved homepage: 'https://github.com/armed/ordered-read-streams#readme', -3946 silly install resolved _id: 'ordered-read-streams@0.3.0', -3946 silly install resolved _shasum: '7137e69b3298bb342247a1bbee3881c80e2fd78b', -3946 silly install resolved _from: 'ordered-read-streams@>=0.3.0 <0.4.0', -3946 silly install resolved _npmVersion: '2.11.2', -3946 silly install resolved _nodeVersion: '2.2.1', -3946 silly install resolved _npmUser: { name: 'armed', email: 'artem.medeusheyev@gmail.com' }, -3946 silly install resolved maintainers: [ [Object] ], -3946 silly install resolved dist: -3946 silly install resolved { shasum: '7137e69b3298bb342247a1bbee3881c80e2fd78b', -3946 silly install resolved size: 2183, -3946 silly install resolved noattachment: false, -3946 silly install resolved key: 'ordered-read-streams/-/ordered-read-streams-0.3.0.tgz', -3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ordered-read-streams/download/ordered-read-streams-0.3.0.tgz' }, -3946 silly install resolved directories: {}, -3946 silly install resolved publish_time: 1436013631826, -3946 silly install resolved _cnpm_publish_time: 1436013631826, -3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ordered-read-streams/download/ordered-read-streams-0.3.0.tgz', -3946 silly install resolved readme: 'ERROR: No README data found!' }, -3946 silly install resolved { name: 'extend', -3946 silly install resolved author: -3946 silly install resolved { name: 'Stefan Thomas', -3946 silly install resolved email: 'justmoon@members.fsf.org', -3946 silly install resolved url: 'http://www.justmoon.net' }, -3946 silly install resolved version: '3.0.0', -3946 silly install resolved description: 'Port of jQuery.extend for node.js and the browser', -3946 silly install resolved main: 'index', -3946 silly install resolved scripts: -3946 silly install resolved { test: 'npm run lint && node test/index.js && npm run coverage-quiet', -3946 silly install resolved coverage: 'covert test/index.js', -3946 silly install resolved 'coverage-quiet': 'covert test/index.js --quiet', -3946 silly install resolved lint: 'npm run jscs && npm run eslint', -3946 silly install resolved jscs: 'jscs *.js */*.js', -3946 silly install resolved eslint: 'eslint *.js */*.js' }, -3946 silly install resolved contributors: [ [Object] ], -3946 silly install resolved keywords: [ 'extend', 'clone', 'merge' ], -3946 silly install resolved repository: -3946 silly install resolved { type: 'git', -3946 silly install resolved url: 'git+https://github.com/justmoon/node-extend.git' }, -3946 silly install resolved dependencies: {}, -3946 silly install resolved devDependencies: -3946 silly install resolved { tape: '^4.0.0', -3946 silly install resolved covert: '^1.1.0', -3946 silly install resolved jscs: '^1.13.1', -3946 silly install resolved eslint: '^0.24.0' }, -3946 silly install resolved license: 'MIT', -3946 silly install resolved gitHead: '148e7270cab2e9413af2cd0cab147070d755ed6d', -3946 silly install resolved bugs: { url: 'https://github.com/justmoon/node-extend/issues' }, -3946 silly install resolved homepage: 'https://github.com/justmoon/node-extend#readme', -3946 silly install resolved _id: 'extend@3.0.0', -3946 silly install resolved _shasum: '5a474353b9f3353ddd8176dfd37b91c83a46f1d4', -3946 silly install resolved _from: 'extend@>=3.0.0 <4.0.0', -3946 silly install resolved _npmVersion: '2.11.3', -3946 silly install resolved _nodeVersion: '2.3.1', -3946 silly install resolved _npmUser: { name: 'ljharb', email: 'ljharb@gmail.com' }, -3946 silly install resolved dist: -3946 silly install resolved { shasum: '5a474353b9f3353ddd8176dfd37b91c83a46f1d4', -3946 silly install resolved size: 6771, -3946 silly install resolved noattachment: false, -3946 silly install resolved key: 'extend/-/extend-3.0.0.tgz', -3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/extend/download/extend-3.0.0.tgz' }, -3946 silly install resolved maintainers: [ [Object], [Object] ], -3946 silly install resolved directories: {}, -3946 silly install resolved publish_time: 1435783626834, -3946 silly install resolved _cnpm_publish_time: 1435783626834, -3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/extend/download/extend-3.0.0.tgz', -3946 silly install resolved readme: 'ERROR: No README data found!' }, -3946 silly install resolved { name: 'micromatch', -3946 silly install resolved description: 'Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.', -3946 silly install resolved version: '2.3.8', -3946 silly install resolved homepage: 'https://github.com/jonschlinkert/micromatch', -3946 silly install resolved author: -3946 silly install resolved { name: 'Jon Schlinkert', -3946 silly install resolved url: 'https://github.com/jonschlinkert' }, -3946 silly install resolved repository: -3946 silly install resolved { type: 'git', -3946 silly install resolved url: 'git+https://github.com/jonschlinkert/micromatch.git' }, -3946 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/micromatch/issues' }, -3946 silly install resolved license: 'MIT', -3946 silly install resolved files: [ 'index.js', 'lib/' ], -3946 silly install resolved main: 'index.js', -3946 silly install resolved engines: { node: '>=0.10.0' }, -3946 silly install resolved scripts: { test: 'mocha' }, -3946 silly install resolved dependencies: -3946 silly install resolved { 'arr-diff': '^2.0.0', -3946 silly install resolved 'array-unique': '^0.2.1', -3946 silly install resolved braces: '^1.8.2', -3946 silly install resolved 'expand-brackets': '^0.1.4', -3946 silly install resolved extglob: '^0.3.1', -3946 silly install resolved 'filename-regex': '^2.0.0', -3946 silly install resolved 'is-extglob': '^1.0.0', -3946 silly install resolved 'is-glob': '^2.0.1', -3946 silly install resolved 'kind-of': '^3.0.2', -3946 silly install resolved 'normalize-path': '^2.0.1', -3946 silly install resolved 'object.omit': '^2.0.0', -3946 silly install resolved 'parse-glob': '^3.0.4', -3946 silly install resolved 'regex-cache': '^0.4.2' }, -3946 silly install resolved devDependencies: -3946 silly install resolved { benchmarked: '^0.1.4', -3946 silly install resolved chalk: '^1.1.1', -3946 silly install resolved gulp: '^3.9.0', -3946 silly install resolved 'gulp-eslint': '^1.1.1', -3946 silly install resolved 'gulp-format-md': '^0.1.8', -3946 silly install resolved 'gulp-istanbul': '^0.10.1', -3946 silly install resolved 'gulp-mocha': '^2.1.3', -3946 silly install resolved minimatch: '^3.0.0', -3946 silly install resolved minimist: '^1.2.0', -3946 silly install resolved mocha: '^2', -3946 silly install resolved multimatch: '^2.0.0', -3946 silly install resolved should: '^8', -3946 silly install resolved write: '^0.2.1' }, -3946 silly install resolved keywords: -3946 silly install resolved [ 'bash', -3946 silly install resolved 'expand', -3946 silly install resolved 'expansion', -3946 silly install resolved 'expression', -3946 silly install resolved 'file', -3946 silly install resolved 'files', -3946 silly install resolved 'filter', -3946 silly install resolved 'find', -3946 silly install resolved 'glob', -3946 silly install resolved 'globbing', -3946 silly install resolved 'globs', -3946 silly install resolved 'globstar', -3946 silly install resolved 'match', -3946 silly install resolved 'matcher', -3946 silly install resolved 'matches', -3946 silly install resolved 'matching', -3946 silly install resolved 'minimatch', -3946 silly install resolved 'multimatch', -3946 silly install resolved 'path', -3946 silly install resolved 'pattern', -3946 silly install resolved 'patterns', -3946 silly install resolved 'regex', -3946 silly install resolved 'regexp', -3946 silly install resolved 'regular', -3946 silly install resolved 'shell', -3946 silly install resolved 'wildcard' ], -3946 silly install resolved verb: -3946 silly install resolved { related: [Object], -3946 silly install resolved reflinks: [Object], -3946 silly install resolved toc: false, -3946 silly install resolved layout: false, -3946 silly install resolved tasks: [Object], -3946 silly install resolved plugins: [Object], -3946 silly install resolved lint: [Object] }, -3946 silly install resolved gitHead: 'dc5e49fc2d665bfc5e9c06c6c8e5db74e14311b7', -3946 silly install resolved _id: 'micromatch@2.3.8', -3946 silly install resolved _shasum: '94fbf8f37ed9edeca06bf1c8f7b743fb5f6f5854', -3946 silly install resolved _from: 'micromatch@>=2.3.7 <3.0.0', -3946 silly install resolved _npmVersion: '3.6.0', -3946 silly install resolved _nodeVersion: '5.5.0', -3946 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -3946 silly install resolved maintainers: [ [Object], [Object], [Object] ], -3946 silly install resolved dist: -3946 silly install resolved { shasum: '94fbf8f37ed9edeca06bf1c8f7b743fb5f6f5854', -3946 silly install resolved size: 14434, -3946 silly install resolved noattachment: false, -3946 silly install resolved key: 'micromatch/-/micromatch-2.3.8.tgz', -3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/micromatch/download/micromatch-2.3.8.tgz' }, -3946 silly install resolved _npmOperationalInternal: -3946 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -3946 silly install resolved tmp: 'tmp/micromatch-2.3.8.tgz_1461361550189_0.8745819758623838' }, -3946 silly install resolved directories: {}, -3946 silly install resolved publish_time: 1461361552692, -3946 silly install resolved _cnpm_publish_time: 1461361552692, -3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/micromatch/download/micromatch-2.3.8.tgz', -3946 silly install resolved readme: 'ERROR: No README data found!' }, -3946 silly install resolved { author: -3946 silly install resolved { name: 'Isaac Z. Schlueter', -3946 silly install resolved email: 'i@izs.me', -3946 silly install resolved url: 'http://blog.izs.me/' }, -3946 silly install resolved name: 'glob', -3946 silly install resolved description: 'a little globber', -3946 silly install resolved version: '5.0.15', -3946 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/node-glob.git' }, -3946 silly install resolved main: 'glob.js', -3946 silly install resolved files: [ 'glob.js', 'sync.js', 'common.js' ], -3946 silly install resolved engines: { node: '*' }, -3946 silly install resolved dependencies: -3946 silly install resolved { inflight: '^1.0.4', -3946 silly install resolved inherits: '2', -3946 silly install resolved minimatch: '2 || 3', -3946 silly install resolved once: '^1.3.0', -3946 silly install resolved 'path-is-absolute': '^1.0.0' }, -3946 silly install resolved devDependencies: { mkdirp: '0', rimraf: '^2.2.8', tap: '^1.1.4', tick: '0.0.6' }, -3946 silly install resolved scripts: -3946 silly install resolved { prepublish: 'npm run benchclean', -3946 silly install resolved profclean: 'rm -f v8.log profile.txt', -3946 silly install resolved test: 'tap test/*.js --cov', -3946 silly install resolved 'test-regen': 'npm run profclean && TEST_REGEN=1 node test/00-setup.js', -3946 silly install resolved bench: 'bash benchmark.sh', -3946 silly install resolved prof: 'bash prof.sh && cat profile.txt', -3946 silly install resolved benchclean: 'node benchclean.js' }, -3946 silly install resolved license: 'ISC', -3946 silly install resolved gitHead: '3a7e71d453dd80e75b196fd262dd23ed54beeceb', -3946 silly install resolved bugs: { url: 'https://github.com/isaacs/node-glob/issues' }, -3946 silly install resolved homepage: 'https://github.com/isaacs/node-glob#readme', -3946 silly install resolved _id: 'glob@5.0.15', -3946 silly install resolved _shasum: '1bc936b9e02f4a603fcc222ecf7633d30b8b93b1', -3946 silly install resolved _from: 'glob@>=5.0.3 <6.0.0', -3946 silly install resolved _npmVersion: '3.3.2', -3946 silly install resolved _nodeVersion: '4.0.0', -3946 silly install resolved _npmUser: { name: 'isaacs', email: 'isaacs@npmjs.com' }, -3946 silly install resolved dist: -3946 silly install resolved { shasum: '1bc936b9e02f4a603fcc222ecf7633d30b8b93b1', -3946 silly install resolved size: 14800, -3946 silly install resolved noattachment: false, -3946 silly install resolved key: 'glob/-/glob-5.0.15.tgz', -3946 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/glob/download/glob-5.0.15.tgz' }, -3946 silly install resolved maintainers: [ [Object] ], -3946 silly install resolved directories: {}, -3946 silly install resolved publish_time: 1443378062495, -3946 silly install resolved _cnpm_publish_time: 1443378062495, -3946 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/glob/download/glob-5.0.15.tgz', -3946 silly install resolved readme: 'ERROR: No README data found!' } ] -3947 info install through2@0.6.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -3948 info install glob-parent@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -3949 info install unique-stream@2.2.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -3950 info install to-absolute-glob@0.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -3951 info install ordered-read-streams@0.3.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -3952 info install extend@3.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -3953 info install micromatch@2.3.8 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -3954 info install glob@5.0.15 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -3955 info installOne through2@0.6.5 -3956 verbose installOne of through2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing -3957 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3958 info installOne glob-parent@2.0.0 -3959 verbose installOne of glob-parent to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing -3960 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3961 info installOne unique-stream@2.2.1 -3962 verbose installOne of unique-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing -3963 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3964 info installOne to-absolute-glob@0.1.1 -3965 verbose installOne of to-absolute-glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing -3966 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3967 info installOne ordered-read-streams@0.3.0 -3968 verbose installOne of ordered-read-streams to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing -3969 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3970 info installOne extend@3.0.0 -3971 verbose installOne of extend to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing -3972 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3973 info installOne micromatch@2.3.8 -3974 verbose installOne of micromatch to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing -3975 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3976 info installOne glob@5.0.15 -3977 verbose installOne of glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream not in flight; installing -3978 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -3979 silly gunzTarPerm extractEntry dist/rx.min.js -3980 http 304 http://registry.npm.alibaba-inc.com/is-fullwidth-code-point -3981 verbose headers { server: 'Tengine', -3981 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -3981 verbose headers connection: 'keep-alive', -3981 verbose headers etag: '"c8d-adF4SQbWgTWwNcpSmYQtiA"', -3981 verbose headers 'x-readtime': '16' } -3982 silly get cb [ 304, -3982 silly get { server: 'Tengine', -3982 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -3982 silly get connection: 'keep-alive', -3982 silly get etag: '"c8d-adF4SQbWgTWwNcpSmYQtiA"', -3982 silly get 'x-readtime': '16' } ] -3983 verbose etag http://registry.npm.alibaba-inc.com/is-fullwidth-code-point from cache -3984 verbose get saving is-fullwidth-code-point to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-fullwidth-code-point/.cache.json -3985 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3986 http 304 http://registry.npm.alibaba-inc.com/code-point-at -3987 verbose headers { server: 'Tengine', -3987 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -3987 verbose headers connection: 'keep-alive', -3987 verbose headers etag: '"ac1-y0V/VwUraFfH/214avn1Yg"', -3987 verbose headers 'x-readtime': '19' } -3988 silly get cb [ 304, -3988 silly get { server: 'Tengine', -3988 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -3988 silly get connection: 'keep-alive', -3988 silly get etag: '"ac1-y0V/VwUraFfH/214avn1Yg"', -3988 silly get 'x-readtime': '19' } ] -3989 verbose etag http://registry.npm.alibaba-inc.com/code-point-at from cache -3990 verbose get saving code-point-at to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/code-point-at/.cache.json -3991 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -3992 verbose lock using /home/ruanyf/.tnpm/_locks/lodash-root-eb8554dced03e461.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root -3993 verbose lock using /home/ruanyf/.tnpm/_locks/lodash-keys-f7eea82de372afb3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys -3994 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream/package.json -3995 silly gunzTarPerm extractEntry dist/rx.compat.min.js -3996 verbose get http://registry.npm.alibaba-inc.com/object-assign not expired, no request -3997 silly addNameRange number 2 { name: 'object-assign', range: '>=4.1.0 <5.0.0', hasData: true } -3998 silly addNameRange versions [ 'object-assign', -3998 silly addNameRange [ '4.1.0', -3998 silly addNameRange '4.0.1', -3998 silly addNameRange '4.0.0', -3998 silly addNameRange '2.1.1', -3998 silly addNameRange '3.0.0', -3998 silly addNameRange '2.0.0', -3998 silly addNameRange '1.0.0', -3998 silly addNameRange '0.4.0', -3998 silly addNameRange '0.3.1', -3998 silly addNameRange '0.3.0', -3998 silly addNameRange '0.2.2', -3998 silly addNameRange '0.2.1', -3998 silly addNameRange '0.2.0', -3998 silly addNameRange '0.1.2', -3998 silly addNameRange '0.1.1', -3998 silly addNameRange '0.1.0' ] ] -3999 silly addNamed object-assign@4.1.0 -4000 verbose addNamed "4.1.0" is a plain semver version for object-assign -4001 http 304 http://registry.npm.alibaba-inc.com/has-ansi -4002 verbose headers { server: 'Tengine', -4002 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -4002 verbose headers connection: 'keep-alive', -4002 verbose headers etag: '"29af-WEge/oRG6eXrMQh9zEsSSQ"', -4002 verbose headers 'x-readtime': '21' } -4003 silly get cb [ 304, -4003 silly get { server: 'Tengine', -4003 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -4003 silly get connection: 'keep-alive', -4003 silly get etag: '"29af-WEge/oRG6eXrMQh9zEsSSQ"', -4003 silly get 'x-readtime': '21' } ] -4004 verbose etag http://registry.npm.alibaba-inc.com/has-ansi from cache -4005 verbose get saving has-ansi to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/has-ansi/.cache.json -4006 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4007 http 304 http://registry.npm.alibaba-inc.com/pinkie -4008 verbose headers { server: 'Tengine', -4008 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -4008 verbose headers connection: 'keep-alive', -4008 verbose headers etag: '"3c63-xICIHhtMas1sNNinkFjRqg"', -4008 verbose headers 'x-readtime': '25' } -4009 silly get cb [ 304, -4009 silly get { server: 'Tengine', -4009 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -4009 silly get connection: 'keep-alive', -4009 silly get etag: '"3c63-xICIHhtMas1sNNinkFjRqg"', -4009 silly get 'x-readtime': '25' } ] -4010 verbose etag http://registry.npm.alibaba-inc.com/pinkie from cache -4011 verbose get saving pinkie to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/pinkie/.cache.json -4012 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4013 silly install write writing lodash._root 3.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root -4014 silly install write writing lodash.keys 4.0.7 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys -4015 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8/package.json -4016 verbose lock using /home/ruanyf/.tnpm/_locks/through2-a3053459c9d64905.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -4017 verbose lock using /home/ruanyf/.tnpm/_locks/glob-parent-de91b99c284b0f17.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -4018 verbose lock using /home/ruanyf/.tnpm/_locks/unique-stream-cabed25d6b4ec536.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -4019 verbose lock using /home/ruanyf/.tnpm/_locks/to-absolute-glob-a3e8296dd7adbf52.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -4020 verbose lock using /home/ruanyf/.tnpm/_locks/ordered-read-streams-c4c8dc9fe775af65.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -4021 verbose lock using /home/ruanyf/.tnpm/_locks/extend-c4c45b992dfc6b94.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend -4022 verbose lock using /home/ruanyf/.tnpm/_locks/micromatch-24c668eacc4b7001.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -4023 verbose lock using /home/ruanyf/.tnpm/_locks/glob-e1e1511196958541.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -4024 info preinstall string_decoder@0.10.31 -4025 http 304 http://registry.npm.alibaba-inc.com/ansi-regex -4026 verbose headers { server: 'Tengine', -4026 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -4026 verbose headers connection: 'keep-alive', -4026 verbose headers etag: '"2d1c-dmT9K8nM6zxZeXqlgMlsdw"', -4026 verbose headers 'x-readtime': '27' } -4027 silly get cb [ 304, -4027 silly get { server: 'Tengine', -4027 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -4027 silly get connection: 'keep-alive', -4027 silly get etag: '"2d1c-dmT9K8nM6zxZeXqlgMlsdw"', -4027 silly get 'x-readtime': '27' } ] -4028 verbose etag http://registry.npm.alibaba-inc.com/ansi-regex from cache -4029 verbose get saving ansi-regex to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/ansi-regex/.cache.json -4030 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4031 http 304 http://registry.npm.alibaba-inc.com/escape-string-regexp -4032 verbose headers { server: 'Tengine', -4032 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -4032 verbose headers connection: 'keep-alive', -4032 verbose headers etag: '"2773-u+1hVS8w+la4QX/BkxESDA"', -4032 verbose headers 'x-readtime': '21' } -4033 silly get cb [ 304, -4033 silly get { server: 'Tengine', -4033 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -4033 silly get connection: 'keep-alive', -4033 silly get etag: '"2773-u+1hVS8w+la4QX/BkxESDA"', -4033 silly get 'x-readtime': '21' } ] -4034 verbose etag http://registry.npm.alibaba-inc.com/escape-string-regexp from cache -4035 verbose get saving escape-string-regexp to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/escape-string-regexp/.cache.json -4036 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4037 http 304 http://registry.npm.alibaba-inc.com/ansi-styles -4038 verbose headers { server: 'Tengine', -4038 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -4038 verbose headers connection: 'keep-alive', -4038 verbose headers etag: '"407f-fOsiImONKsV1JPJQ0LbRjw"', -4038 verbose headers 'x-readtime': '19' } -4039 silly get cb [ 304, -4039 silly get { server: 'Tengine', -4039 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -4039 silly get connection: 'keep-alive', -4039 silly get etag: '"407f-fOsiImONKsV1JPJQ0LbRjw"', -4039 silly get 'x-readtime': '19' } ] -4040 verbose etag http://registry.npm.alibaba-inc.com/ansi-styles from cache -4041 verbose get saving ansi-styles to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/ansi-styles/.cache.json -4042 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4043 silly install write writing through2 0.6.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -4044 silly install write writing glob-parent 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -4045 silly install write writing unique-stream 2.2.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -4046 silly install write writing to-absolute-glob 0.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -4047 silly install write writing ordered-read-streams 0.3.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -4048 silly install write writing extend 3.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend -4049 silly install write writing micromatch 2.3.8 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -4050 silly install write writing glob 5.0.15 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -4051 silly gunzTarPerm extractEntry differenceWith.js -4052 silly gunzTarPerm extractEntry conforms.js -4053 silly install resolved [] -4054 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream -4055 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream -4056 verbose afterAdd /home/ruanyf/.tnpm/clone/1.0.2/package/package.json written -4057 silly install resolved [ { name: 'replace-ext', -4057 silly install resolved description: 'Replaces a file extension with another one', -4057 silly install resolved version: '0.0.1', -4057 silly install resolved homepage: 'http://github.com/wearefractal/replace-ext', -4057 silly install resolved repository: -4057 silly install resolved { type: 'git', -4057 silly install resolved url: 'git://github.com/wearefractal/replace-ext.git' }, -4057 silly install resolved author: -4057 silly install resolved { name: 'Fractal', -4057 silly install resolved email: 'contact@wearefractal.com', -4057 silly install resolved url: 'http://wearefractal.com/' }, -4057 silly install resolved main: './index.js', -4057 silly install resolved dependencies: {}, -4057 silly install resolved devDependencies: -4057 silly install resolved { mocha: '~1.17.0', -4057 silly install resolved should: '~3.1.0', -4057 silly install resolved 'mocha-lcov-reporter': '~0.0.1', -4057 silly install resolved coveralls: '~2.6.1', -4057 silly install resolved istanbul: '~0.2.3', -4057 silly install resolved rimraf: '~2.2.5', -4057 silly install resolved jshint: '~2.4.1' }, -4057 silly install resolved scripts: -4057 silly install resolved { test: 'mocha --reporter spec && jshint', -4057 silly install resolved coveralls: 'istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage' }, -4057 silly install resolved engines: { node: '>= 0.4' }, -4057 silly install resolved licenses: [ [Object] ], -4057 silly install resolved bugs: { url: 'https://github.com/wearefractal/replace-ext/issues' }, -4057 silly install resolved _id: 'replace-ext@0.0.1', -4057 silly install resolved dist: -4057 silly install resolved { shasum: '29bbd92078a739f0bcce2b4ee41e837953522924', -4057 silly install resolved size: 2238, -4057 silly install resolved noattachment: false, -4057 silly install resolved key: '/replace-ext/-/replace-ext-0.0.1.tgz', -4057 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/replace-ext/download/replace-ext-0.0.1.tgz' }, -4057 silly install resolved _from: 'replace-ext@0.0.1', -4057 silly install resolved _npmVersion: '1.4.4', -4057 silly install resolved _npmUser: { name: 'fractal', email: 'contact@wearefractal.com' }, -4057 silly install resolved maintainers: [ [Object] ], -4057 silly install resolved directories: {}, -4057 silly install resolved publish_time: 1393364054210, -4057 silly install resolved _cnpm_publish_time: 1393364054210, -4057 silly install resolved _shasum: '29bbd92078a739f0bcce2b4ee41e837953522924', -4057 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/replace-ext/download/replace-ext-0.0.1.tgz', -4057 silly install resolved readme: 'ERROR: No README data found!' }, -4057 silly install resolved { name: 'clone-stats', -4057 silly install resolved description: 'Safely clone node\'s fs.Stats instances without losing their class methods', -4057 silly install resolved version: '0.0.1', -4057 silly install resolved main: 'index.js', -4057 silly install resolved browser: 'index.js', -4057 silly install resolved dependencies: {}, -4057 silly install resolved devDependencies: { tape: '~2.3.2' }, -4057 silly install resolved scripts: { test: 'node test' }, -4057 silly install resolved author: -4057 silly install resolved { name: 'Hugh Kennedy', -4057 silly install resolved email: 'hughskennedy@gmail.com', -4057 silly install resolved url: 'http://hughsk.io/' }, -4057 silly install resolved license: 'MIT', -4057 silly install resolved repository: { type: 'git', url: 'git://github.com/hughsk/clone-stats.git' }, -4057 silly install resolved bugs: { url: 'https://github.com/hughsk/clone-stats/issues' }, -4057 silly install resolved homepage: 'https://github.com/hughsk/clone-stats', -4057 silly install resolved keywords: [ 'stats', 'fs', 'clone', 'copy', 'prototype' ], -4057 silly install resolved readmeFilename: 'README.md', -4057 silly install resolved _id: 'clone-stats@0.0.1', -4057 silly install resolved dist: -4057 silly install resolved { shasum: 'b88f94a82cf38b8791d58046ea4029ad88ca99d1', -4057 silly install resolved size: 2009, -4057 silly install resolved noattachment: false, -4057 silly install resolved key: '/clone-stats/-/clone-stats-0.0.1.tgz', -4057 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/clone-stats/download/clone-stats-0.0.1.tgz' }, -4057 silly install resolved _from: 'clone-stats@>=0.0.1 <0.0.2', -4057 silly install resolved _npmVersion: '1.3.22', -4057 silly install resolved _npmUser: { name: 'hughsk', email: 'hughskennedy@gmail.com' }, -4057 silly install resolved maintainers: [ [Object] ], -4057 silly install resolved directories: {}, -4057 silly install resolved publish_time: 1389423795565, -4057 silly install resolved _cnpm_publish_time: 1389423795565, -4057 silly install resolved _shasum: 'b88f94a82cf38b8791d58046ea4029ad88ca99d1', -4057 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/clone-stats/download/clone-stats-0.0.1.tgz', -4057 silly install resolved readme: 'ERROR: No README data found!' }, -4057 silly install resolved { name: 'clone', -4057 silly install resolved description: 'deep cloning of objects and arrays', -4057 silly install resolved tags: [ 'clone', 'object', 'array', 'function', 'date' ], -4057 silly install resolved version: '1.0.2', -4057 silly install resolved repository: { type: 'git', url: 'git://github.com/pvorb/node-clone.git' }, -4057 silly install resolved bugs: { url: 'https://github.com/pvorb/node-clone/issues' }, -4057 silly install resolved main: 'clone.js', -4057 silly install resolved author: -4057 silly install resolved { name: 'Paul Vorbach', -4057 silly install resolved email: 'paul@vorba.ch', -4057 silly install resolved url: 'http://paul.vorba.ch/' }, -4057 silly install resolved contributors: -4057 silly install resolved [ [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object], -4057 silly install resolved [Object] ], -4057 silly install resolved license: 'MIT', -4057 silly install resolved engines: { node: '>=0.8' }, -4057 silly install resolved dependencies: {}, -4057 silly install resolved devDependencies: { nodeunit: '~0.9.0' }, -4057 silly install resolved optionalDependencies: {}, -4057 silly install resolved scripts: { test: 'nodeunit test.js' }, -4057 silly install resolved gitHead: '0e8216efc672496b612fd7ab62159117d16ec4a0', -4057 silly install resolved homepage: 'https://github.com/pvorb/node-clone', -4057 silly install resolved _id: 'clone@1.0.2', -4057 silly install resolved _shasum: '260b7a99ebb1edfe247538175f783243cb19d149', -4057 silly install resolved _from: 'clone@>=1.0.0 <2.0.0', -4057 silly install resolved _npmVersion: '1.4.14', -4057 silly install resolved _npmUser: { name: 'pvorb', email: 'paul@vorba.ch' }, -4057 silly install resolved maintainers: [ [Object] ], -4057 silly install resolved dist: -4057 silly install resolved { shasum: '260b7a99ebb1edfe247538175f783243cb19d149', -4057 silly install resolved size: 7631, -4057 silly install resolved noattachment: false, -4057 silly install resolved key: 'clone/-/clone-1.0.2.tgz', -4057 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/clone/download/clone-1.0.2.tgz' }, -4057 silly install resolved directories: {}, -4057 silly install resolved publish_time: 1427326650099, -4057 silly install resolved _cnpm_publish_time: 1427326650099, -4057 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/clone/download/clone-1.0.2.tgz', -4057 silly install resolved readme: 'ERROR: No README data found!' } ] -4058 info install replace-ext@0.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl -4059 info install clone-stats@0.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl -4060 info install clone@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl -4061 info installOne replace-ext@0.0.1 -4062 verbose installOne of replace-ext to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl not in flight; installing -4063 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4064 info installOne clone-stats@0.0.1 -4065 verbose installOne of clone-stats to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl not in flight; installing -4066 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4067 info installOne clone@1.0.2 -4068 verbose installOne of clone to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl not in flight; installing -4069 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4070 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json -4071 http 304 http://registry.npm.alibaba-inc.com/supports-color -4072 verbose headers { server: 'Tengine', -4072 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -4072 verbose headers connection: 'keep-alive', -4072 verbose headers etag: '"56fa-xdGFAzmi7C4qzdas+C7J9w"', -4072 verbose headers 'x-readtime': '30' } -4073 silly get cb [ 304, -4073 silly get { server: 'Tengine', -4073 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -4073 silly get connection: 'keep-alive', -4073 silly get etag: '"56fa-xdGFAzmi7C4qzdas+C7J9w"', -4073 silly get 'x-readtime': '30' } ] -4074 verbose etag http://registry.npm.alibaba-inc.com/supports-color from cache -4075 verbose get saving supports-color to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/supports-color/.cache.json -4076 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4077 verbose lock using /home/ruanyf/.tnpm/_locks/replace-ext-c39d86c5b44d8ff0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext -4078 verbose lock using /home/ruanyf/.tnpm/_locks/clone-stats-37c782b238fb79f0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats -4079 verbose lock using /home/ruanyf/.tnpm/_locks/clone-9e12a0eea285225b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone -4080 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json -4081 silly gunzTarPerm extractEntry inherits.js -4082 silly gunzTarPerm extractEntry inherits_browser.js -4083 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root -4084 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys -4085 silly install write writing replace-ext 0.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext -4086 silly install write writing clone-stats 0.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats -4087 silly install write writing clone 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone -4088 silly install resolved [] -4089 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream -4090 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream -4091 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args/package.json -4092 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate/package.json -4093 silly cache afterAdd object-assign@4.1.0 -4094 verbose afterAdd /home/ruanyf/.tnpm/object-assign/4.1.0/package/package.json not in flight; writing -4095 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4096 silly addNameRange number 2 { name: 'restore-cursor', -4096 silly addNameRange range: '>=1.0.1 <2.0.0', -4096 silly addNameRange hasData: true } -4097 silly addNameRange versions [ 'restore-cursor', [ '1.0.1', '1.0.0' ] ] -4098 silly addNamed restore-cursor@1.0.1 -4099 verbose addNamed "1.0.1" is a plain semver version for restore-cursor -4100 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8/package.json -4101 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -4102 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -4103 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -4104 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -4105 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -4106 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend -4107 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -4108 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -4109 silly gunzTarPerm extractEntry index.js -4110 silly gunzTarPerm extractEntry test.js -4111 silly addNameRange number 2 { name: 'is-fullwidth-code-point', -4111 silly addNameRange range: '>=1.0.0 <2.0.0', -4111 silly addNameRange hasData: true } -4112 silly addNameRange versions [ 'is-fullwidth-code-point', [ '1.0.0' ] ] -4113 silly addNamed is-fullwidth-code-point@1.0.0 -4114 verbose addNamed "1.0.0" is a plain semver version for is-fullwidth-code-point -4115 silly addNameRange number 2 { name: 'code-point-at', range: '>=1.0.0 <2.0.0', hasData: true } -4116 silly addNameRange versions [ 'code-point-at', [ '1.0.0' ] ] -4117 silly addNamed code-point-at@1.0.0 -4118 verbose addNamed "1.0.0" is a plain semver version for code-point-at -4119 info linkStuff mute-stream@0.0.6 -4120 silly linkStuff mute-stream@0.0.6 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -4121 silly linkStuff mute-stream@0.0.6 is part of a global install -4122 silly linkStuff mute-stream@0.0.6 is installed into a global node_modules -4123 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/package.json -4124 silly gunzTarPerm extractEntry dist/rx.core.binding.js -4125 silly gunzTarPerm extractEntry dist/rx.lite.min.js -4126 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json -4127 silly addNameRange number 2 { name: 'has-ansi', range: '>=2.0.0 <3.0.0', hasData: true } -4128 silly addNameRange versions [ 'has-ansi', -4128 silly addNameRange [ '2.0.0', '1.0.3', '1.0.2', '1.0.1', '1.0.0', '0.1.0' ] ] -4129 silly addNamed has-ansi@2.0.0 -4130 verbose addNamed "2.0.0" is a plain semver version for has-ansi -4131 silly addNameRange number 2 { name: 'pinkie', range: '>=2.0.0 <3.0.0', hasData: true } -4132 silly addNameRange versions [ 'pinkie', -4132 silly addNameRange [ '2.0.4', -4132 silly addNameRange '2.0.3', -4132 silly addNameRange '2.0.2', -4132 silly addNameRange '2.0.1', -4132 silly addNameRange '2.0.0', -4132 silly addNameRange '1.0.0', -4132 silly addNameRange '0.0.2', -4132 silly addNameRange '0.0.1', -4132 silly addNameRange '0.0.0' ] ] -4133 silly addNamed pinkie@2.0.4 -4134 verbose addNamed "2.0.4" is a plain semver version for pinkie -4135 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root is being purged from base /home/ruanyf/npm-global -4136 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root -4137 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys is being purged from base /home/ruanyf/npm-global -4138 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys -4139 info preinstall inherits@2.0.1 -4140 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json -4141 silly addNameRange number 2 { name: 'escape-string-regexp', -4141 silly addNameRange range: '>=1.0.2 <2.0.0', -4141 silly addNameRange hasData: true } -4142 silly addNameRange versions [ 'escape-string-regexp', -4142 silly addNameRange [ '1.0.5', '1.0.4', '1.0.3', '1.0.2', '1.0.1', '1.0.0' ] ] -4143 silly addNamed escape-string-regexp@1.0.5 -4144 verbose addNamed "1.0.5" is a plain semver version for escape-string-regexp -4145 silly addNameRange number 2 { name: 'escape-string-regexp', -4145 silly addNameRange range: '>=1.0.5 <2.0.0', -4145 silly addNameRange hasData: true } -4146 silly addNameRange versions [ 'escape-string-regexp', -4146 silly addNameRange [ '1.0.5', '1.0.4', '1.0.3', '1.0.2', '1.0.1', '1.0.0' ] ] -4147 silly addNamed escape-string-regexp@1.0.5 -4148 verbose addNamed "1.0.5" is a plain semver version for escape-string-regexp -4149 silly addNameRange number 2 { name: 'ansi-regex', range: '>=2.0.0 <3.0.0', hasData: true } -4150 silly addNameRange versions [ 'ansi-regex', -4150 silly addNameRange [ '2.0.0', '1.1.1', '1.1.0', '1.0.0', '0.2.1', '0.2.0', '0.1.0' ] ] -4151 silly addNamed ansi-regex@2.0.0 -4152 verbose addNamed "2.0.0" is a plain semver version for ansi-regex -4153 silly addNameRange number 2 { name: 'ansi-styles', range: '>=2.2.1 <3.0.0', hasData: true } -4154 silly addNameRange versions [ 'ansi-styles', -4154 silly addNameRange [ '2.2.1', -4154 silly addNameRange '2.1.0', -4154 silly addNameRange '2.0.1', -4154 silly addNameRange '2.0.0', -4154 silly addNameRange '1.1.0', -4154 silly addNameRange '1.0.0', -4154 silly addNameRange '0.2.0', -4154 silly addNameRange '0.1.2', -4154 silly addNameRange '0.1.1', -4154 silly addNameRange '0.1.0' ] ] -4155 silly addNamed ansi-styles@2.2.1 -4156 verbose addNamed "2.2.1" is a plain semver version for ansi-styles -4157 verbose tar unpack /home/ruanyf/.tnpm/lodash._root/3.0.1/package.tgz -4158 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root -4159 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root is being purged -4160 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root -4161 verbose tar unpack /home/ruanyf/.tnpm/lodash.keys/4.0.7/package.tgz -4162 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys -4163 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys is being purged -4164 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys -4165 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 is being purged from base /home/ruanyf/npm-global -4166 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -4167 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent is being purged from base /home/ruanyf/npm-global -4168 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -4169 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream is being purged from base /home/ruanyf/npm-global -4170 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -4171 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob is being purged from base /home/ruanyf/npm-global -4172 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -4173 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams is being purged from base /home/ruanyf/npm-global -4174 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -4175 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend is being purged from base /home/ruanyf/npm-global -4176 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend -4177 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch is being purged from base /home/ruanyf/npm-global -4178 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -4179 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob is being purged from base /home/ruanyf/npm-global -4180 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -4181 info preinstall process-nextick-args@1.0.7 -4182 info preinstall util-deprecate@1.0.2 -4183 verbose linkBins mute-stream@0.0.6 -4184 verbose linkMans mute-stream@0.0.6 -4185 verbose rebuildBundles mute-stream@0.0.6 -4186 silly gunzTarPerm modes [ '755', '644' ] -4187 silly gunzTarPerm modes [ '755', '644' ] -4188 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext -4189 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone -4190 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats -4191 info linkStuff first-chunk-stream@1.0.0 -4192 silly linkStuff first-chunk-stream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules as its parent node_modules -4193 silly linkStuff first-chunk-stream@1.0.0 is part of a global install -4194 silly linkStuff first-chunk-stream@1.0.0 is installed into a global node_modules -4195 verbose tar unpack /home/ruanyf/.tnpm/through2/0.6.5/package.tgz -4196 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -4197 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 is being purged -4198 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -4199 verbose tar unpack /home/ruanyf/.tnpm/glob-parent/2.0.0/package.tgz -4200 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -4201 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent is being purged -4202 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -4203 verbose tar unpack /home/ruanyf/.tnpm/unique-stream/2.2.1/package.tgz -4204 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -4205 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream is being purged -4206 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -4207 verbose tar unpack /home/ruanyf/.tnpm/to-absolute-glob/0.1.1/package.tgz -4208 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -4209 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob is being purged -4210 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -4211 verbose tar unpack /home/ruanyf/.tnpm/ordered-read-streams/0.3.0/package.tgz -4212 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -4213 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams is being purged -4214 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -4215 verbose tar unpack /home/ruanyf/.tnpm/extend/3.0.0/package.tgz -4216 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend -4217 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend is being purged -4218 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend -4219 verbose tar unpack /home/ruanyf/.tnpm/micromatch/2.3.8/package.tgz -4220 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -4221 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch is being purged -4222 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -4223 verbose tar unpack /home/ruanyf/.tnpm/glob/5.0.15/package.tgz -4224 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -4225 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob is being purged -4226 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -4227 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json -4228 silly gunzTarPerm extractEntry divide.js -4229 silly gunzTarPerm extractEntry cond.js -4230 verbose afterAdd /home/ruanyf/.tnpm/object-assign/4.1.0/package/package.json written -4231 info install mute-stream@0.0.6 -4232 silly addNameRange number 2 { name: 'supports-color', -4232 silly addNameRange range: '>=2.0.0 <3.0.0', -4232 silly addNameRange hasData: true } -4233 silly addNameRange versions [ 'supports-color', -4233 silly addNameRange [ '3.1.2', -4233 silly addNameRange '3.1.1', -4233 silly addNameRange '3.1.0', -4233 silly addNameRange '3.0.1', -4233 silly addNameRange '3.0.0', -4233 silly addNameRange '2.0.0', -4233 silly addNameRange '1.3.1', -4233 silly addNameRange '1.3.0', -4233 silly addNameRange '1.2.1', -4233 silly addNameRange '1.2.0', -4233 silly addNameRange '1.1.0', -4233 silly addNameRange '1.0.0', -4233 silly addNameRange '0.2.0' ] ] -4234 silly addNamed supports-color@2.0.0 -4235 verbose addNamed "2.0.0" is a plain semver version for supports-color -4236 info preinstall readable-stream@2.1.4 -4237 silly gunzTarPerm modes [ '755', '644' ] -4238 silly gunzTarPerm modes [ '755', '644' ] -4239 silly gunzTarPerm modes [ '755', '644' ] -4240 silly gunzTarPerm modes [ '755', '644' ] -4241 silly gunzTarPerm modes [ '755', '644' ] -4242 silly gunzTarPerm modes [ '755', '644' ] -4243 silly gunzTarPerm modes [ '755', '644' ] -4244 silly gunzTarPerm modes [ '755', '644' ] -4245 info preinstall core-util-is@1.0.2 -4246 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args/package.json -4247 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate/package.json -4248 silly install resolved [] -4249 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 -4250 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 -4251 silly cache afterAdd restore-cursor@1.0.1 -4252 verbose afterAdd /home/ruanyf/.tnpm/restore-cursor/1.0.1/package/package.json not in flight; writing -4253 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4254 info postinstall mute-stream@0.0.6 -4255 silly cache afterAdd is-fullwidth-code-point@1.0.0 -4256 verbose afterAdd /home/ruanyf/.tnpm/is-fullwidth-code-point/1.0.0/package/package.json not in flight; writing -4257 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4258 silly cache afterAdd code-point-at@1.0.0 -4259 verbose afterAdd /home/ruanyf/.tnpm/code-point-at/1.0.0/package/package.json not in flight; writing -4260 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4261 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext is being purged from base /home/ruanyf/npm-global -4262 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext -4263 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone is being purged from base /home/ruanyf/npm-global -4264 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone -4265 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats is being purged from base /home/ruanyf/npm-global -4266 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats -4267 verbose linkBins first-chunk-stream@1.0.0 -4268 verbose linkMans first-chunk-stream@1.0.0 -4269 verbose rebuildBundles first-chunk-stream@1.0.0 -4270 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/package.json -4271 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json -4272 silly gunzTarPerm extractEntry test.js -4273 silly cache afterAdd pinkie@2.0.4 -4274 verbose afterAdd /home/ruanyf/.tnpm/pinkie/2.0.4/package/package.json not in flight; writing -4275 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4276 silly cache afterAdd has-ansi@2.0.0 -4277 verbose afterAdd /home/ruanyf/.tnpm/has-ansi/2.0.0/package/package.json not in flight; writing -4278 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4279 verbose tar unpack /home/ruanyf/.tnpm/replace-ext/0.0.1/package.tgz -4280 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext -4281 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext is being purged -4282 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext -4283 verbose tar unpack /home/ruanyf/.tnpm/clone/1.0.2/package.tgz -4284 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone -4285 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone is being purged -4286 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone -4287 verbose tar unpack /home/ruanyf/.tnpm/clone-stats/0.0.1/package.tgz -4288 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats -4289 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats is being purged -4290 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats -4291 info install first-chunk-stream@1.0.0 -4292 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/package.json -4293 silly install resolved [] -4294 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -4295 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -4296 silly cache afterAdd ansi-regex@2.0.0 -4297 verbose afterAdd /home/ruanyf/.tnpm/ansi-regex/2.0.0/package/package.json not in flight; writing -4298 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4299 silly cache afterAdd escape-string-regexp@1.0.5 -4300 verbose afterAdd /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package/package.json not in flight; writing -4301 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4302 silly cache afterAdd escape-string-regexp@1.0.5 -4303 verbose afterAdd /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package/package.json already in flight; not writing -4304 silly cache afterAdd ansi-styles@2.2.1 -4305 verbose afterAdd /home/ruanyf/.tnpm/ansi-styles/2.2.1/package/package.json not in flight; writing -4306 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4307 silly gunzTarPerm extractEntry package.json -4308 silly gunzTarPerm modes [ '755', '644' ] -4309 silly gunzTarPerm modes [ '755', '644' ] -4310 silly gunzTarPerm modes [ '755', '644' ] -4311 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend/package.json -4312 silly gunzTarPerm extractEntry dist/rx.binding.js -4313 silly gunzTarPerm extractEntry dist/rx.core.binding.min.js -4314 verbose unlock done using /home/ruanyf/.tnpm/_locks/mute-stream-2084b951161707d7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/mute-stream -4315 silly gunzTarPerm extractEntry package.json -4316 info postinstall first-chunk-stream@1.0.0 -4317 silly gunzTarPerm extractEntry package.json -4318 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json -4319 silly cache afterAdd supports-color@2.0.0 -4320 verbose afterAdd /home/ruanyf/.tnpm/supports-color/2.0.0/package/package.json not in flight; writing -4321 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4322 info linkStuff is-utf8@0.2.1 -4323 silly linkStuff is-utf8@0.2.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules as its parent node_modules -4324 silly linkStuff is-utf8@0.2.1 is part of a global install -4325 silly linkStuff is-utf8@0.2.1 is installed into a global node_modules -4326 verbose afterAdd /home/ruanyf/.tnpm/restore-cursor/1.0.1/package/package.json written -4327 silly install resolved [ { name: 'restore-cursor', -4327 silly install resolved version: '1.0.1', -4327 silly install resolved description: 'Gracefully restore the CLI cursor on exit', -4327 silly install resolved license: 'MIT', -4327 silly install resolved repository: -4327 silly install resolved { type: 'git', -4327 silly install resolved url: 'git+https://github.com/sindresorhus/restore-cursor.git' }, -4327 silly install resolved author: -4327 silly install resolved { name: 'Sindre Sorhus', -4327 silly install resolved email: 'sindresorhus@gmail.com', -4327 silly install resolved url: 'http://sindresorhus.com' }, -4327 silly install resolved engines: { node: '>=0.10.0' }, -4327 silly install resolved files: [ 'index.js' ], -4327 silly install resolved keywords: -4327 silly install resolved [ 'exit', -4327 silly install resolved 'quit', -4327 silly install resolved 'process', -4327 silly install resolved 'graceful', -4327 silly install resolved 'shutdown', -4327 silly install resolved 'sigterm', -4327 silly install resolved 'sigint', -4327 silly install resolved 'terminate', -4327 silly install resolved 'kill', -4327 silly install resolved 'stop', -4327 silly install resolved 'cli', -4327 silly install resolved 'cursor', -4327 silly install resolved 'ansi', -4327 silly install resolved 'show', -4327 silly install resolved 'term', -4327 silly install resolved 'terminal', -4327 silly install resolved 'console', -4327 silly install resolved 'tty', -4327 silly install resolved 'shell', -4327 silly install resolved 'command-line' ], -4327 silly install resolved dependencies: { 'exit-hook': '^1.0.0', onetime: '^1.0.0' }, -4327 silly install resolved gitHead: '91542e5be16d7ccda8e42a63d56cc783d2cfaba2', -4327 silly install resolved bugs: { url: 'https://github.com/sindresorhus/restore-cursor/issues' }, -4327 silly install resolved homepage: 'https://github.com/sindresorhus/restore-cursor#readme', -4327 silly install resolved _id: 'restore-cursor@1.0.1', -4327 silly install resolved scripts: {}, -4327 silly install resolved _shasum: '34661f46886327fed2991479152252df92daa541', -4327 silly install resolved _from: 'restore-cursor@>=1.0.1 <2.0.0', -4327 silly install resolved _npmVersion: '2.14.3', -4327 silly install resolved _nodeVersion: '4.1.0', -4327 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -4327 silly install resolved dist: -4327 silly install resolved { shasum: '34661f46886327fed2991479152252df92daa541', -4327 silly install resolved size: 1465, -4327 silly install resolved noattachment: false, -4327 silly install resolved key: 'restore-cursor/-/restore-cursor-1.0.1.tgz', -4327 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/restore-cursor/download/restore-cursor-1.0.1.tgz' }, -4327 silly install resolved maintainers: [ [Object] ], -4327 silly install resolved directories: {}, -4327 silly install resolved publish_time: 1442583494630, -4327 silly install resolved _cnpm_publish_time: 1442583494630, -4327 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/restore-cursor/download/restore-cursor-1.0.1.tgz', -4327 silly install resolved readme: 'ERROR: No README data found!' } ] -4328 info install restore-cursor@1.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -4329 info installOne restore-cursor@1.0.1 -4330 verbose installOne of restore-cursor to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor not in flight; installing -4331 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4332 silly gunzTarPerm extractEntry package.json -4333 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] -4334 silly gunzTarPerm extractEntry package.json -4335 silly gunzTarPerm extractEntry package.json -4336 silly gunzTarPerm extractEntry package.json -4337 silly gunzTarPerm extractEntry package.json -4338 silly gunzTarPerm extractEntry package.json -4339 silly gunzTarPerm extractEntry package.json -4340 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args/package.json -4341 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate/package.json -4342 verbose afterAdd /home/ruanyf/.tnpm/code-point-at/1.0.0/package/package.json written -4343 verbose afterAdd /home/ruanyf/.tnpm/is-fullwidth-code-point/1.0.0/package/package.json written -4344 silly install resolved [ { name: 'code-point-at', -4344 silly install resolved version: '1.0.0', -4344 silly install resolved description: 'ES2015 String#codePointAt() ponyfill', -4344 silly install resolved license: 'MIT', -4344 silly install resolved repository: -4344 silly install resolved { type: 'git', -4344 silly install resolved url: 'git+https://github.com/sindresorhus/code-point-at.git' }, -4344 silly install resolved author: -4344 silly install resolved { name: 'Sindre Sorhus', -4344 silly install resolved email: 'sindresorhus@gmail.com', -4344 silly install resolved url: 'sindresorhus.com' }, -4344 silly install resolved engines: { node: '>=0.10.0' }, -4344 silly install resolved scripts: { test: 'node test.js' }, -4344 silly install resolved files: [ 'index.js' ], -4344 silly install resolved keywords: -4344 silly install resolved [ 'es2015', -4344 silly install resolved 'es6', -4344 silly install resolved 'ponyfill', -4344 silly install resolved 'polyfill', -4344 silly install resolved 'shim', -4344 silly install resolved 'string', -4344 silly install resolved 'str', -4344 silly install resolved 'code', -4344 silly install resolved 'point', -4344 silly install resolved 'at', -4344 silly install resolved 'codepoint', -4344 silly install resolved 'unicode' ], -4344 silly install resolved dependencies: { 'number-is-nan': '^1.0.0' }, -4344 silly install resolved devDependencies: { ava: '0.0.4' }, -4344 silly install resolved gitHead: 'c2ffa4064718b37c84c73a633abeeed5b486a469', -4344 silly install resolved bugs: { url: 'https://github.com/sindresorhus/code-point-at/issues' }, -4344 silly install resolved homepage: 'https://github.com/sindresorhus/code-point-at', -4344 silly install resolved _id: 'code-point-at@1.0.0', -4344 silly install resolved _shasum: 'f69b192d3f7d91e382e4b71bddb77878619ab0c6', -4344 silly install resolved _from: 'code-point-at@>=1.0.0 <2.0.0', -4344 silly install resolved _npmVersion: '2.11.2', -4344 silly install resolved _nodeVersion: '0.12.5', -4344 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -4344 silly install resolved dist: -4344 silly install resolved { shasum: 'f69b192d3f7d91e382e4b71bddb77878619ab0c6', -4344 silly install resolved size: 1795, -4344 silly install resolved noattachment: false, -4344 silly install resolved key: 'code-point-at/-/code-point-at-1.0.0.tgz', -4344 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/code-point-at/download/code-point-at-1.0.0.tgz' }, -4344 silly install resolved maintainers: [ [Object] ], -4344 silly install resolved directories: {}, -4344 silly install resolved publish_time: 1437083487313, -4344 silly install resolved _cnpm_publish_time: 1437083487313, -4344 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/code-point-at/download/code-point-at-1.0.0.tgz', -4344 silly install resolved readme: 'ERROR: No README data found!' }, -4344 silly install resolved { name: 'is-fullwidth-code-point', -4344 silly install resolved version: '1.0.0', -4344 silly install resolved description: 'Check if the character represented by a given Unicode code point is fullwidth', -4344 silly install resolved license: 'MIT', -4344 silly install resolved repository: -4344 silly install resolved { type: 'git', -4344 silly install resolved url: 'git+https://github.com/sindresorhus/is-fullwidth-code-point.git' }, -4344 silly install resolved author: -4344 silly install resolved { name: 'Sindre Sorhus', -4344 silly install resolved email: 'sindresorhus@gmail.com', -4344 silly install resolved url: 'sindresorhus.com' }, -4344 silly install resolved engines: { node: '>=0.10.0' }, -4344 silly install resolved scripts: { test: 'node test.js' }, -4344 silly install resolved files: [ 'index.js' ], -4344 silly install resolved keywords: -4344 silly install resolved [ 'fullwidth', -4344 silly install resolved 'full-width', -4344 silly install resolved 'full', -4344 silly install resolved 'width', -4344 silly install resolved 'unicode', -4344 silly install resolved 'character', -4344 silly install resolved 'char', -4344 silly install resolved 'string', -4344 silly install resolved 'str', -4344 silly install resolved 'codepoint', -4344 silly install resolved 'code', -4344 silly install resolved 'point', -4344 silly install resolved 'is', -4344 silly install resolved 'detect', -4344 silly install resolved 'check' ], -4344 silly install resolved dependencies: { 'number-is-nan': '^1.0.0' }, -4344 silly install resolved devDependencies: { ava: '0.0.4', 'code-point-at': '^1.0.0' }, -4344 silly install resolved gitHead: 'f2152d357f41f82785436d428e4f8ede143b7548', -4344 silly install resolved bugs: { url: 'https://github.com/sindresorhus/is-fullwidth-code-point/issues' }, -4344 silly install resolved homepage: 'https://github.com/sindresorhus/is-fullwidth-code-point', -4344 silly install resolved _id: 'is-fullwidth-code-point@1.0.0', -4344 silly install resolved _shasum: 'ef9e31386f031a7f0d643af82fde50c457ef00cb', -4344 silly install resolved _from: 'is-fullwidth-code-point@>=1.0.0 <2.0.0', -4344 silly install resolved _npmVersion: '2.11.2', -4344 silly install resolved _nodeVersion: '0.12.5', -4344 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -4344 silly install resolved dist: -4344 silly install resolved { shasum: 'ef9e31386f031a7f0d643af82fde50c457ef00cb', -4344 silly install resolved size: 2124, -4344 silly install resolved noattachment: false, -4344 silly install resolved key: 'is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz', -4344 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz' }, -4344 silly install resolved maintainers: [ [Object] ], -4344 silly install resolved directories: {}, -4344 silly install resolved publish_time: 1437084018162, -4344 silly install resolved _cnpm_publish_time: 1437084018162, -4344 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz', -4344 silly install resolved readme: 'ERROR: No README data found!' } ] -4345 info install code-point-at@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -4346 info install is-fullwidth-code-point@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -4347 info installOne code-point-at@1.0.0 -4348 verbose installOne of code-point-at to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width not in flight; installing -4349 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4350 info installOne is-fullwidth-code-point@1.0.0 -4351 verbose installOne of is-fullwidth-code-point to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width not in flight; installing -4352 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4353 info preinstall run-async@2.2.0 -4354 verbose afterAdd /home/ruanyf/.tnpm/pinkie/2.0.4/package/package.json written -4355 silly install resolved [ { name: 'pinkie', -4355 silly install resolved version: '2.0.4', -4355 silly install resolved description: 'Itty bitty little widdle twinkie pinkie ES2015 Promise implementation', -4355 silly install resolved license: 'MIT', -4355 silly install resolved repository: -4355 silly install resolved { type: 'git', -4355 silly install resolved url: 'git+https://github.com/floatdrop/pinkie.git' }, -4355 silly install resolved author: -4355 silly install resolved { name: 'Vsevolod Strukchinsky', -4355 silly install resolved email: 'floatdrop@gmail.com', -4355 silly install resolved url: 'github.com/floatdrop' }, -4355 silly install resolved engines: { node: '>=0.10.0' }, -4355 silly install resolved scripts: -4355 silly install resolved { test: 'xo && nyc mocha', -4355 silly install resolved coverage: 'nyc report --reporter=text-lcov | coveralls' }, -4355 silly install resolved files: [ 'index.js' ], -4355 silly install resolved keywords: [ 'promise', 'promises', 'es2015', 'es6' ], -4355 silly install resolved devDependencies: -4355 silly install resolved { 'core-assert': '^0.1.1', -4355 silly install resolved coveralls: '^2.11.4', -4355 silly install resolved mocha: '*', -4355 silly install resolved nyc: '^3.2.2', -4355 silly install resolved 'promises-aplus-tests': '*', -4355 silly install resolved xo: '^0.10.1' }, -4355 silly install resolved gitHead: '8d4a92447a5c62bff9f89756caeb4c9c8770579b', -4355 silly install resolved bugs: { url: 'https://github.com/floatdrop/pinkie/issues' }, -4355 silly install resolved homepage: 'https://github.com/floatdrop/pinkie', -4355 silly install resolved _id: 'pinkie@2.0.4', -4355 silly install resolved _shasum: '72556b80cfa0d48a974e80e77248e80ed4f7f870', -4355 silly install resolved _from: 'pinkie@>=2.0.0 <3.0.0', -4355 silly install resolved _npmVersion: '2.14.12', -4355 silly install resolved _nodeVersion: '4.2.4', -4355 silly install resolved _npmUser: { name: 'floatdrop', email: 'floatdrop@gmail.com' }, -4355 silly install resolved dist: -4355 silly install resolved { shasum: '72556b80cfa0d48a974e80e77248e80ed4f7f870', -4355 silly install resolved size: 3935, -4355 silly install resolved noattachment: false, -4355 silly install resolved key: 'pinkie/-/pinkie-2.0.4.tgz', -4355 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/pinkie/download/pinkie-2.0.4.tgz' }, -4355 silly install resolved maintainers: [ [Object] ], -4355 silly install resolved directories: {}, -4355 silly install resolved publish_time: 1454324926357, -4355 silly install resolved _cnpm_publish_time: 1454324926357, -4355 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/pinkie/download/pinkie-2.0.4.tgz', -4355 silly install resolved readme: 'ERROR: No README data found!' } ] -4356 info install pinkie@2.0.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -4357 info installOne pinkie@2.0.4 -4358 verbose installOne of pinkie to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise not in flight; installing -4359 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4360 verbose afterAdd /home/ruanyf/.tnpm/has-ansi/2.0.0/package/package.json written -4361 silly gunzTarPerm extractEntry README.md -4362 silly gunzTarPerm extractEntry LICENSE -4363 verbose lock using /home/ruanyf/.tnpm/_locks/restore-cursor-adaa1e73f0b61457.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -4364 verbose unlock done using /home/ruanyf/.tnpm/_locks/first-chunk-stream-8f8e638611f67384.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream/node_modules/first-chunk-stream -4365 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream -4366 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream -4367 info preinstall xtend@4.0.1 -4368 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json -4369 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json -4370 silly gunzTarPerm extractEntry drop.js -4371 silly gunzTarPerm extractEntry concat.js -4372 info linkStuff string_decoder@0.10.31 -4373 silly linkStuff string_decoder@0.10.31 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -4374 silly linkStuff string_decoder@0.10.31 is part of a global install -4375 silly linkStuff string_decoder@0.10.31 is installed into a global node_modules -4376 verbose afterAdd /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package/package.json written -4377 silly install resolved [ { name: 'object-assign', -4377 silly install resolved version: '4.1.0', -4377 silly install resolved description: 'ES2015 Object.assign() ponyfill', -4377 silly install resolved license: 'MIT', -4377 silly install resolved repository: -4377 silly install resolved { type: 'git', -4377 silly install resolved url: 'git+https://github.com/sindresorhus/object-assign.git' }, -4377 silly install resolved author: -4377 silly install resolved { name: 'Sindre Sorhus', -4377 silly install resolved email: 'sindresorhus@gmail.com', -4377 silly install resolved url: 'sindresorhus.com' }, -4377 silly install resolved engines: { node: '>=0.10.0' }, -4377 silly install resolved scripts: { test: 'xo && mocha', bench: 'matcha bench.js' }, -4377 silly install resolved files: [ 'index.js' ], -4377 silly install resolved keywords: -4377 silly install resolved [ 'object', -4377 silly install resolved 'assign', -4377 silly install resolved 'extend', -4377 silly install resolved 'properties', -4377 silly install resolved 'es2015', -4377 silly install resolved 'ecmascript', -4377 silly install resolved 'harmony', -4377 silly install resolved 'ponyfill', -4377 silly install resolved 'prollyfill', -4377 silly install resolved 'polyfill', -4377 silly install resolved 'shim', -4377 silly install resolved 'browser' ], -4377 silly install resolved devDependencies: { lodash: '^4.8.2', matcha: '^0.7.0', mocha: '*', xo: '*' }, -4377 silly install resolved gitHead: '72fe21c86911758f3342fdf41c2a57860d5829bc', -4377 silly install resolved bugs: { url: 'https://github.com/sindresorhus/object-assign/issues' }, -4377 silly install resolved homepage: 'https://github.com/sindresorhus/object-assign#readme', -4377 silly install resolved _id: 'object-assign@4.1.0', -4377 silly install resolved _shasum: '7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0', -4377 silly install resolved _from: 'object-assign@>=4.1.0 <5.0.0', -4377 silly install resolved _npmVersion: '2.14.19', -4377 silly install resolved _nodeVersion: '4.1.0', -4377 silly install resolved _npmUser: { name: 'spicyj', email: 'ben@benalpert.com' }, -4377 silly install resolved maintainers: [ [Object], [Object] ], -4377 silly install resolved dist: -4377 silly install resolved { shasum: '7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0', -4377 silly install resolved size: 3247, -4377 silly install resolved noattachment: false, -4377 silly install resolved key: 'object-assign/-/object-assign-4.1.0.tgz', -4377 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.0.tgz' }, -4377 silly install resolved _npmOperationalInternal: -4377 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -4377 silly install resolved tmp: 'tmp/object-assign-4.1.0.tgz_1462212593641_0.3332549517508596' }, -4377 silly install resolved directories: {}, -4377 silly install resolved publish_time: 1462212595804, -4377 silly install resolved _cnpm_publish_time: 1462212595804, -4377 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.0.tgz', -4377 silly install resolved readme: 'ERROR: No README data found!' }, -4377 silly install resolved { name: 'escape-string-regexp', -4377 silly install resolved version: '1.0.5', -4377 silly install resolved description: 'Escape RegExp special characters', -4377 silly install resolved license: 'MIT', -4377 silly install resolved repository: -4377 silly install resolved { type: 'git', -4377 silly install resolved url: 'git+https://github.com/sindresorhus/escape-string-regexp.git' }, -4377 silly install resolved author: -4377 silly install resolved { name: 'Sindre Sorhus', -4377 silly install resolved email: 'sindresorhus@gmail.com', -4377 silly install resolved url: 'sindresorhus.com' }, -4377 silly install resolved maintainers: [ [Object], [Object] ], -4377 silly install resolved engines: { node: '>=0.8.0' }, -4377 silly install resolved scripts: { test: 'xo && ava' }, -4377 silly install resolved files: [ 'index.js' ], -4377 silly install resolved keywords: -4377 silly install resolved [ 'escape', -4377 silly install resolved 'regex', -4377 silly install resolved 'regexp', -4377 silly install resolved 're', -4377 silly install resolved 'regular', -4377 silly install resolved 'expression', -4377 silly install resolved 'string', -4377 silly install resolved 'str', -4377 silly install resolved 'special', -4377 silly install resolved 'characters' ], -4377 silly install resolved devDependencies: { ava: '*', xo: '*' }, -4377 silly install resolved gitHead: 'db124a3e1aae9d692c4899e42a5c6c3e329eaa20', -4377 silly install resolved bugs: { url: 'https://github.com/sindresorhus/escape-string-regexp/issues' }, -4377 silly install resolved homepage: 'https://github.com/sindresorhus/escape-string-regexp', -4377 silly install resolved _id: 'escape-string-regexp@1.0.5', -4377 silly install resolved _shasum: '1b61c0562190a8dff6ae3bb2cf0200ca130b86d4', -4377 silly install resolved _from: 'escape-string-regexp@>=1.0.2 <2.0.0', -4377 silly install resolved _npmVersion: '2.14.12', -4377 silly install resolved _nodeVersion: '4.2.6', -4377 silly install resolved _npmUser: { name: 'jbnicolai', email: 'jappelman@xebia.com' }, -4377 silly install resolved dist: -4377 silly install resolved { shasum: '1b61c0562190a8dff6ae3bb2cf0200ca130b86d4', -4377 silly install resolved size: 1578, -4377 silly install resolved noattachment: false, -4377 silly install resolved key: 'escape-string-regexp/-/escape-string-regexp-1.0.5.tgz', -4377 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz' }, -4377 silly install resolved _npmOperationalInternal: -4377 silly install resolved { host: 'packages-9-west.internal.npmjs.com', -4377 silly install resolved tmp: 'tmp/escape-string-regexp-1.0.5.tgz_1456059312074_0.7245344955008477' }, -4377 silly install resolved directories: {}, -4377 silly install resolved publish_time: 1456059317074, -4377 silly install resolved _cnpm_publish_time: 1456059317074, -4377 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz', -4377 silly install resolved readme: 'ERROR: No README data found!' } ] -4378 info install object-assign@4.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -4379 info install escape-string-regexp@1.0.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -4380 info installOne object-assign@4.1.0 -4381 verbose installOne of object-assign to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures not in flight; installing -4382 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4383 info installOne escape-string-regexp@1.0.5 -4384 verbose installOne of escape-string-regexp to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures not in flight; installing -4385 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4386 verbose afterAdd /home/ruanyf/.tnpm/ansi-regex/2.0.0/package/package.json written -4387 silly install resolved [ { name: 'ansi-regex', -4387 silly install resolved version: '2.0.0', -4387 silly install resolved description: 'Regular expression for matching ANSI escape codes', -4387 silly install resolved license: 'MIT', -4387 silly install resolved repository: -4387 silly install resolved { type: 'git', -4387 silly install resolved url: 'git+https://github.com/sindresorhus/ansi-regex.git' }, -4387 silly install resolved author: -4387 silly install resolved { name: 'Sindre Sorhus', -4387 silly install resolved email: 'sindresorhus@gmail.com', -4387 silly install resolved url: 'sindresorhus.com' }, -4387 silly install resolved maintainers: [ [Object], [Object] ], -4387 silly install resolved engines: { node: '>=0.10.0' }, -4387 silly install resolved scripts: -4387 silly install resolved { test: 'mocha test/test.js', -4387 silly install resolved 'view-supported': 'node test/viewCodes.js' }, -4387 silly install resolved files: [ 'index.js' ], -4387 silly install resolved keywords: -4387 silly install resolved [ 'ansi', -4387 silly install resolved 'styles', -4387 silly install resolved 'color', -4387 silly install resolved 'colour', -4387 silly install resolved 'colors', -4387 silly install resolved 'terminal', -4387 silly install resolved 'console', -4387 silly install resolved 'cli', -4387 silly install resolved 'string', -4387 silly install resolved 'tty', -4387 silly install resolved 'escape', -4387 silly install resolved 'formatting', -4387 silly install resolved 'rgb', -4387 silly install resolved '256', -4387 silly install resolved 'shell', -4387 silly install resolved 'xterm', -4387 silly install resolved 'command-line', -4387 silly install resolved 'text', -4387 silly install resolved 'regex', -4387 silly install resolved 'regexp', -4387 silly install resolved 're', -4387 silly install resolved 'match', -4387 silly install resolved 'test', -4387 silly install resolved 'find', -4387 silly install resolved 'pattern' ], -4387 silly install resolved devDependencies: { mocha: '*' }, -4387 silly install resolved gitHead: '57c3f2941a73079fa8b081e02a522e3d29913e2f', -4387 silly install resolved bugs: { url: 'https://github.com/sindresorhus/ansi-regex/issues' }, -4387 silly install resolved homepage: 'https://github.com/sindresorhus/ansi-regex', -4387 silly install resolved _id: 'ansi-regex@2.0.0', -4387 silly install resolved _shasum: 'c5061b6e0ef8a81775e50f5d66151bf6bf371107', -4387 silly install resolved _from: 'ansi-regex@>=2.0.0 <3.0.0', -4387 silly install resolved _npmVersion: '2.11.2', -4387 silly install resolved _nodeVersion: '0.12.5', -4387 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -4387 silly install resolved dist: -4387 silly install resolved { shasum: 'c5061b6e0ef8a81775e50f5d66151bf6bf371107', -4387 silly install resolved size: 1665, -4387 silly install resolved noattachment: false, -4387 silly install resolved key: 'ansi-regex/-/ansi-regex-2.0.0.tgz', -4387 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-2.0.0.tgz' }, -4387 silly install resolved directories: {}, -4387 silly install resolved publish_time: 1435680439279, -4387 silly install resolved _cnpm_publish_time: 1435680439279, -4387 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-2.0.0.tgz', -4387 silly install resolved readme: 'ERROR: No README data found!' } ] -4388 info install ansi-regex@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -4389 info installOne ansi-regex@2.0.0 -4390 verbose installOne of ansi-regex to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi not in flight; installing -4391 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4392 verbose lock using /home/ruanyf/.tnpm/_locks/code-point-at-d5ee80b89d077134.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -4393 verbose afterAdd /home/ruanyf/.tnpm/ansi-styles/2.2.1/package/package.json written -4394 silly gunzTarPerm extractEntry package.json -4395 verbose lock using /home/ruanyf/.tnpm/_locks/is-fullwidth-code-point-8af8b37bbc384528.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -4396 verbose linkBins is-utf8@0.2.1 -4397 verbose linkMans is-utf8@0.2.1 -4398 verbose rebuildBundles is-utf8@0.2.1 -4399 silly install write writing restore-cursor 1.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -4400 silly gunzTarPerm extractEntry README.md -4401 silly gunzTarPerm extractEntry LICENSE -4402 silly gunzTarPerm extractEntry README.md -4403 silly gunzTarPerm extractEntry LICENSE -4404 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/package.json -4405 verbose lock using /home/ruanyf/.tnpm/_locks/pinkie-2602c6197036fe75.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie -4406 silly install write writing code-point-at 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -4407 silly gunzTarPerm extractEntry package.json -4408 silly gunzTarPerm modified mode [ 'package.json', 438, 420 ] -4409 silly gunzTarPerm extractEntry package.json -4410 silly install write writing is-fullwidth-code-point 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -4411 info install is-utf8@0.2.1 -4412 silly gunzTarPerm extractEntry .npmignore -4413 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] -4414 silly gunzTarPerm extractEntry README.md -4415 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] -4416 silly gunzTarPerm extractEntry .npmignore -4417 silly gunzTarPerm extractEntry README.md -4418 silly gunzTarPerm extractEntry LICENSE -4419 silly gunzTarPerm extractEntry index.js -4420 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend/package.json -4421 silly gunzTarPerm extractEntry README.md -4422 silly gunzTarPerm extractEntry LICENSE -4423 silly gunzTarPerm extractEntry .npmignore -4424 silly gunzTarPerm extractEntry README.md -4425 silly gunzTarPerm extractEntry README.md -4426 silly gunzTarPerm extractEntry LICENSE -4427 silly gunzTarPerm extractEntry common.js -4428 silly gunzTarPerm extractEntry glob.js -4429 silly gunzTarPerm extractEntry sync.js -4430 silly gunzTarPerm extractEntry README.md -4431 silly gunzTarPerm extractEntry LICENSE -4432 silly gunzTarPerm extractEntry index.js -4433 silly gunzTarPerm extractEntry lib/chars.js -4434 silly gunzTarPerm extractEntry lib/expand.js -4435 silly gunzTarPerm extractEntry lib/glob.js -4436 silly gunzTarPerm extractEntry lib/utils.js -4437 verbose lock using /home/ruanyf/.tnpm/_locks/object-assign-eafc798024093e48.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign -4438 verbose lock using /home/ruanyf/.tnpm/_locks/escape-string-regexp-e55ea98c78fe1e1c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp -4439 silly install write writing pinkie 2.0.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie -4440 verbose lock using /home/ruanyf/.tnpm/_locks/ansi-regex-984f03aa752cf33a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex -4441 verbose afterAdd /home/ruanyf/.tnpm/supports-color/2.0.0/package/package.json written -4442 silly install resolved [ { name: 'has-ansi', -4442 silly install resolved version: '2.0.0', -4442 silly install resolved description: 'Check if a string has ANSI escape codes', -4442 silly install resolved license: 'MIT', -4442 silly install resolved repository: -4442 silly install resolved { type: 'git', -4442 silly install resolved url: 'git+https://github.com/sindresorhus/has-ansi.git' }, -4442 silly install resolved author: -4442 silly install resolved { name: 'Sindre Sorhus', -4442 silly install resolved email: 'sindresorhus@gmail.com', -4442 silly install resolved url: 'sindresorhus.com' }, -4442 silly install resolved maintainers: [ [Object], [Object] ], -4442 silly install resolved engines: { node: '>=0.10.0' }, -4442 silly install resolved scripts: { test: 'node test.js' }, -4442 silly install resolved files: [ 'index.js' ], -4442 silly install resolved keywords: -4442 silly install resolved [ 'ansi', -4442 silly install resolved 'styles', -4442 silly install resolved 'color', -4442 silly install resolved 'colour', -4442 silly install resolved 'colors', -4442 silly install resolved 'terminal', -4442 silly install resolved 'console', -4442 silly install resolved 'string', -4442 silly install resolved 'tty', -4442 silly install resolved 'escape', -4442 silly install resolved 'shell', -4442 silly install resolved 'xterm', -4442 silly install resolved 'command-line', -4442 silly install resolved 'text', -4442 silly install resolved 'regex', -4442 silly install resolved 'regexp', -4442 silly install resolved 're', -4442 silly install resolved 'match', -4442 silly install resolved 'test', -4442 silly install resolved 'find', -4442 silly install resolved 'pattern', -4442 silly install resolved 'has' ], -4442 silly install resolved dependencies: { 'ansi-regex': '^2.0.0' }, -4442 silly install resolved devDependencies: { ava: '0.0.4' }, -4442 silly install resolved gitHead: '0722275e1bef139fcd09137da6e5550c3cd368b9', -4442 silly install resolved bugs: { url: 'https://github.com/sindresorhus/has-ansi/issues' }, -4442 silly install resolved homepage: 'https://github.com/sindresorhus/has-ansi', -4442 silly install resolved _id: 'has-ansi@2.0.0', -4442 silly install resolved _shasum: '34f5049ce1ecdf2b0649af3ef24e45ed35416d91', -4442 silly install resolved _from: 'has-ansi@>=2.0.0 <3.0.0', -4442 silly install resolved _npmVersion: '2.11.2', -4442 silly install resolved _nodeVersion: '0.12.5', -4442 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -4442 silly install resolved dist: -4442 silly install resolved { shasum: '34f5049ce1ecdf2b0649af3ef24e45ed35416d91', -4442 silly install resolved size: 1702, -4442 silly install resolved noattachment: false, -4442 silly install resolved key: 'has-ansi/-/has-ansi-2.0.0.tgz', -4442 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/has-ansi/download/has-ansi-2.0.0.tgz' }, -4442 silly install resolved directories: {}, -4442 silly install resolved publish_time: 1435681054067, -4442 silly install resolved _cnpm_publish_time: 1435681054067, -4442 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/has-ansi/download/has-ansi-2.0.0.tgz', -4442 silly install resolved readme: 'ERROR: No README data found!' }, -4442 silly install resolved { name: 'escape-string-regexp', -4442 silly install resolved version: '1.0.5', -4442 silly install resolved description: 'Escape RegExp special characters', -4442 silly install resolved license: 'MIT', -4442 silly install resolved repository: -4442 silly install resolved { type: 'git', -4442 silly install resolved url: 'git+https://github.com/sindresorhus/escape-string-regexp.git' }, -4442 silly install resolved author: -4442 silly install resolved { name: 'Sindre Sorhus', -4442 silly install resolved email: 'sindresorhus@gmail.com', -4442 silly install resolved url: 'sindresorhus.com' }, -4442 silly install resolved maintainers: [ [Object], [Object] ], -4442 silly install resolved engines: { node: '>=0.8.0' }, -4442 silly install resolved scripts: { test: 'xo && ava' }, -4442 silly install resolved files: [ 'index.js' ], -4442 silly install resolved keywords: -4442 silly install resolved [ 'escape', -4442 silly install resolved 'regex', -4442 silly install resolved 'regexp', -4442 silly install resolved 're', -4442 silly install resolved 'regular', -4442 silly install resolved 'expression', -4442 silly install resolved 'string', -4442 silly install resolved 'str', -4442 silly install resolved 'special', -4442 silly install resolved 'characters' ], -4442 silly install resolved devDependencies: { ava: '*', xo: '*' }, -4442 silly install resolved gitHead: 'db124a3e1aae9d692c4899e42a5c6c3e329eaa20', -4442 silly install resolved bugs: { url: 'https://github.com/sindresorhus/escape-string-regexp/issues' }, -4442 silly install resolved homepage: 'https://github.com/sindresorhus/escape-string-regexp', -4442 silly install resolved _id: 'escape-string-regexp@1.0.5', -4442 silly install resolved _shasum: '1b61c0562190a8dff6ae3bb2cf0200ca130b86d4', -4442 silly install resolved _from: 'escape-string-regexp@>=1.0.2 <2.0.0', -4442 silly install resolved _npmVersion: '2.14.12', -4442 silly install resolved _nodeVersion: '4.2.6', -4442 silly install resolved _npmUser: { name: 'jbnicolai', email: 'jappelman@xebia.com' }, -4442 silly install resolved dist: -4442 silly install resolved { shasum: '1b61c0562190a8dff6ae3bb2cf0200ca130b86d4', -4442 silly install resolved size: 1578, -4442 silly install resolved noattachment: false, -4442 silly install resolved key: 'escape-string-regexp/-/escape-string-regexp-1.0.5.tgz', -4442 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz' }, -4442 silly install resolved _npmOperationalInternal: -4442 silly install resolved { host: 'packages-9-west.internal.npmjs.com', -4442 silly install resolved tmp: 'tmp/escape-string-regexp-1.0.5.tgz_1456059312074_0.7245344955008477' }, -4442 silly install resolved directories: {}, -4442 silly install resolved publish_time: 1456059317074, -4442 silly install resolved _cnpm_publish_time: 1456059317074, -4442 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz', -4442 silly install resolved readme: 'ERROR: No README data found!' }, -4442 silly install resolved { name: 'ansi-styles', -4442 silly install resolved version: '2.2.1', -4442 silly install resolved description: 'ANSI escape codes for styling strings in the terminal', -4442 silly install resolved license: 'MIT', -4442 silly install resolved repository: -4442 silly install resolved { type: 'git', -4442 silly install resolved url: 'git+https://github.com/chalk/ansi-styles.git' }, -4442 silly install resolved author: -4442 silly install resolved { name: 'Sindre Sorhus', -4442 silly install resolved email: 'sindresorhus@gmail.com', -4442 silly install resolved url: 'sindresorhus.com' }, -4442 silly install resolved maintainers: [ [Object], [Object] ], -4442 silly install resolved engines: { node: '>=0.10.0' }, -4442 silly install resolved scripts: { test: 'mocha' }, -4442 silly install resolved files: [ 'index.js' ], -4442 silly install resolved keywords: -4442 silly install resolved [ 'ansi', -4442 silly install resolved 'styles', -4442 silly install resolved 'color', -4442 silly install resolved 'colour', -4442 silly install resolved 'colors', -4442 silly install resolved 'terminal', -4442 silly install resolved 'console', -4442 silly install resolved 'cli', -4442 silly install resolved 'string', -4442 silly install resolved 'tty', -4442 silly install resolved 'escape', -4442 silly install resolved 'formatting', -4442 silly install resolved 'rgb', -4442 silly install resolved '256', -4442 silly install resolved 'shell', -4442 silly install resolved 'xterm', -4442 silly install resolved 'log', -4442 silly install resolved 'logging', -4442 silly install resolved 'command-line', -4442 silly install resolved 'text' ], -4442 silly install resolved devDependencies: { mocha: '*' }, -4442 silly install resolved gitHead: '95c59b23be760108b6530ca1c89477c21b258032', -4442 silly install resolved bugs: { url: 'https://github.com/chalk/ansi-styles/issues' }, -4442 silly install resolved homepage: 'https://github.com/chalk/ansi-styles#readme', -4442 silly install resolved _id: 'ansi-styles@2.2.1', -4442 silly install resolved _shasum: 'b432dd3358b634cf75e1e4664368240533c1ddbe', -4442 silly install resolved _from: 'ansi-styles@>=2.2.1 <3.0.0', -4442 silly install resolved _npmVersion: '3.8.3', -4442 silly install resolved _nodeVersion: '4.3.0', -4442 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -4442 silly install resolved dist: -4442 silly install resolved { shasum: 'b432dd3358b634cf75e1e4664368240533c1ddbe', -4442 silly install resolved size: 2443, -4442 silly install resolved noattachment: false, -4442 silly install resolved key: 'ansi-styles/-/ansi-styles-2.2.1.tgz', -4442 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ansi-styles/download/ansi-styles-2.2.1.tgz' }, -4442 silly install resolved _npmOperationalInternal: -4442 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -4442 silly install resolved tmp: 'tmp/ansi-styles-2.2.1.tgz_1459197317833_0.9694824463222176' }, -4442 silly install resolved directories: {}, -4442 silly install resolved publish_time: 1459197318267, -4442 silly install resolved _cnpm_publish_time: 1459197318267, -4442 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ansi-styles/download/ansi-styles-2.2.1.tgz', -4442 silly install resolved readme: 'ERROR: No README data found!' }, -4442 silly install resolved { name: 'supports-color', -4442 silly install resolved version: '2.0.0', -4442 silly install resolved description: 'Detect whether a terminal supports color', -4442 silly install resolved license: 'MIT', -4442 silly install resolved repository: -4442 silly install resolved { type: 'git', -4442 silly install resolved url: 'git+https://github.com/chalk/supports-color.git' }, -4442 silly install resolved author: -4442 silly install resolved { name: 'Sindre Sorhus', -4442 silly install resolved email: 'sindresorhus@gmail.com', -4442 silly install resolved url: 'sindresorhus.com' }, -4442 silly install resolved maintainers: [ [Object], [Object] ], -4442 silly install resolved engines: { node: '>=0.8.0' }, -4442 silly install resolved scripts: { test: 'mocha' }, -4442 silly install resolved files: [ 'index.js' ], -4442 silly install resolved keywords: -4442 silly install resolved [ 'color', -4442 silly install resolved 'colour', -4442 silly install resolved 'colors', -4442 silly install resolved 'terminal', -4442 silly install resolved 'console', -4442 silly install resolved 'cli', -4442 silly install resolved 'ansi', -4442 silly install resolved 'styles', -4442 silly install resolved 'tty', -4442 silly install resolved 'rgb', -4442 silly install resolved '256', -4442 silly install resolved 'shell', -4442 silly install resolved 'xterm', -4442 silly install resolved 'command-line', -4442 silly install resolved 'support', -4442 silly install resolved 'supports', -4442 silly install resolved 'capability', -4442 silly install resolved 'detect' ], -4442 silly install resolved devDependencies: { mocha: '*', 'require-uncached': '^1.0.2' }, -4442 silly install resolved gitHead: '8400d98ade32b2adffd50902c06d9e725a5c6588', -4442 silly install resolved bugs: { url: 'https://github.com/chalk/supports-color/issues' }, -4442 silly install resolved homepage: 'https://github.com/chalk/supports-color', -4442 silly install resolved _id: 'supports-color@2.0.0', -4442 silly install resolved _shasum: '535d045ce6b6363fa40117084629995e9df324c7', -4442 silly install resolved _from: 'supports-color@>=2.0.0 <3.0.0', -4442 silly install resolved _npmVersion: '2.11.2', -4442 silly install resolved _nodeVersion: '0.12.5', -4442 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -4442 silly install resolved dist: -4442 silly install resolved { shasum: '535d045ce6b6363fa40117084629995e9df324c7', -4442 silly install resolved size: 1951, -4442 silly install resolved noattachment: false, -4442 silly install resolved key: 'supports-color/-/supports-color-2.0.0.tgz', -4442 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/supports-color/download/supports-color-2.0.0.tgz' }, -4442 silly install resolved directories: {}, -4442 silly install resolved publish_time: 1435705114955, -4442 silly install resolved _cnpm_publish_time: 1435705114955, -4442 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/supports-color/download/supports-color-2.0.0.tgz', -4442 silly install resolved readme: 'ERROR: No README data found!' } ] -4443 info install has-ansi@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -4444 info install escape-string-regexp@1.0.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -4445 info install ansi-styles@2.2.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -4446 info install supports-color@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -4447 info installOne has-ansi@2.0.0 -4448 verbose installOne of has-ansi to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk not in flight; installing -4449 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4450 info installOne escape-string-regexp@1.0.5 -4451 verbose installOne of escape-string-regexp to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk not in flight; installing -4452 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4453 info installOne ansi-styles@2.2.1 -4454 verbose installOne of ansi-styles to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk not in flight; installing -4455 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4456 info installOne supports-color@2.0.0 -4457 verbose installOne of supports-color to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk not in flight; installing -4458 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -4459 silly install resolved [] -4460 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits -4461 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits -4462 verbose linkBins string_decoder@0.10.31 -4463 verbose linkMans string_decoder@0.10.31 -4464 verbose rebuildBundles string_decoder@0.10.31 -4465 silly install write writing object-assign 4.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign -4466 silly install write writing escape-string-regexp 1.0.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp -4467 silly install write writing ansi-regex 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex -4468 info postinstall is-utf8@0.2.1 -4469 silly gunzTarPerm extractEntry dist/rx.backpressure.min.js -4470 silly gunzTarPerm extractEntry dist/rx.core.js -4471 silly gunzTarPerm extractEntry dist/rx.testing.js -4472 silly install resolved [] -4473 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args -4474 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args -4475 silly install resolved [] -4476 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate -4477 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate -4478 info install string_decoder@0.10.31 -4479 verbose lock using /home/ruanyf/.tnpm/_locks/has-ansi-add0ceae132370e9.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -4480 silly gunzTarPerm extractEntry .npmignore -4481 silly gunzTarPerm extractEntry README.md -4482 info preinstall isarray@1.0.0 -4483 silly prepareForInstallMany adding buffer-shims@^1.0.0 from readable-stream dependencies -4484 silly prepareForInstallMany adding core-util-is@~1.0.0 from readable-stream dependencies -4485 silly prepareForInstallMany adding inherits@~2.0.1 from readable-stream dependencies -4486 silly prepareForInstallMany adding isarray@~1.0.0 from readable-stream dependencies -4487 silly prepareForInstallMany adding process-nextick-args@~1.0.6 from readable-stream dependencies -4488 silly prepareForInstallMany adding string_decoder@~0.10.x from readable-stream dependencies -4489 silly prepareForInstallMany adding util-deprecate@~1.0.1 from readable-stream dependencies -4490 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/package.json -4491 verbose lock using /home/ruanyf/.tnpm/_locks/escape-string-regexp-b8d42e784d559946.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp -4492 info linkStuff strip-bom-stream@1.0.0 -4493 silly linkStuff strip-bom-stream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -4494 silly linkStuff strip-bom-stream@1.0.0 is part of a global install -4495 silly linkStuff strip-bom-stream@1.0.0 is installed into a global node_modules -4496 verbose lock using /home/ruanyf/.tnpm/_locks/ansi-styles-fc6f7da6acaeb14f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles -4497 silly install write writing has-ansi 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -4498 silly gunzTarPerm extractEntry .npmignore -4499 silly gunzTarPerm modified mode [ '.npmignore', 438, 420 ] -4500 silly gunzTarPerm extractEntry README.md -4501 silly gunzTarPerm modified mode [ 'README.md', 438, 420 ] -4502 silly gunzTarPerm extractEntry README.md -4503 silly gunzTarPerm extractEntry index.js -4504 verbose lock using /home/ruanyf/.tnpm/_locks/supports-color-cce39b409b837f7c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color -4505 silly install write writing escape-string-regexp 1.0.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp -4506 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -4507 silly install write writing ansi-styles 2.2.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles -4508 silly install resolved [] -4509 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -4510 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -4511 info postinstall string_decoder@0.10.31 -4512 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -4513 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -4514 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json -4515 silly install write writing supports-color 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color -4516 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-utf8-3fff051c3e4a800b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8 -4517 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom -4518 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom -4519 silly prepareForInstallMany adding is-promise@^2.1.0 from run-async dependencies -4520 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/package.json -4521 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie -4522 verbose linkBins strip-bom-stream@1.0.0 -4523 verbose linkMans strip-bom-stream@1.0.0 -4524 verbose rebuildBundles strip-bom-stream@1.0.0 -4525 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend/package.json -4526 silly gunzTarPerm extractEntry dist/rx.lite.js -4527 info linkStuff inherits@2.0.1 -4528 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -4529 silly linkStuff inherits@2.0.1 is part of a global install -4530 silly linkStuff inherits@2.0.1 is installed into a global node_modules -4531 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign -4532 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp -4533 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex -4534 silly gunzTarPerm extractEntry index.js -4535 verbose rebuildBundles [ 'first-chunk-stream' ] -4536 info install strip-bom-stream@1.0.0 -4537 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor is being purged from base /home/ruanyf/npm-global -4538 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -4539 info linkStuff process-nextick-args@1.0.7 -4540 silly linkStuff process-nextick-args@1.0.7 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -4541 silly linkStuff process-nextick-args@1.0.7 is part of a global install -4542 silly linkStuff process-nextick-args@1.0.7 is installed into a global node_modules -4543 info linkStuff util-deprecate@1.0.2 -4544 silly linkStuff util-deprecate@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -4545 silly linkStuff util-deprecate@1.0.2 is part of a global install -4546 silly linkStuff util-deprecate@1.0.2 is installed into a global node_modules -4547 silly gunzTarPerm extractEntry dropRight.js -4548 silly gunzTarPerm extractEntry compact.js -4549 verbose unlock done using /home/ruanyf/.tnpm/_locks/string-decoder-e42dd0bbb825ea12.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -4550 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at is being purged from base /home/ruanyf/npm-global -4551 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -4552 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point is being purged from base /home/ruanyf/npm-global -4553 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -4554 silly gunzTarPerm extractEntry index.js -4555 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through/package.json -4556 verbose tar unpack /home/ruanyf/.tnpm/restore-cursor/1.0.1/package.tgz -4557 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -4558 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor is being purged -4559 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -4560 silly gunzTarPerm extractEntry index.js -4561 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie is being purged from base /home/ruanyf/npm-global -4562 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie -4563 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -4564 verbose tar unpack /home/ruanyf/.tnpm/code-point-at/1.0.0/package.tgz -4565 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -4566 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at is being purged -4567 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -4568 verbose tar unpack /home/ruanyf/.tnpm/is-fullwidth-code-point/1.0.0/package.tgz -4569 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -4570 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point is being purged -4571 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -4572 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp -4573 info postinstall strip-bom-stream@1.0.0 -4574 silly gunzTarPerm modes [ '755', '644' ] -4575 silly gunzTarPerm extractEntry readme.md -4576 silly gunzTarPerm extractEntry LICENSE -4577 silly gunzTarPerm extractEntry index.js -4578 silly gunzTarPerm extractEntry index.js -4579 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles -4580 silly gunzTarPerm extractEntry LICENSE -4581 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ] -4582 silly gunzTarPerm extractEntry through2.js -4583 silly gunzTarPerm modified mode [ 'through2.js', 436, 420 ] -4584 silly gunzTarPerm extractEntry LICENSE -4585 silly gunzTarPerm extractEntry index.js -4586 info linkStuff core-util-is@1.0.2 -4587 silly linkStuff core-util-is@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -4588 silly linkStuff core-util-is@1.0.2 is part of a global install -4589 silly linkStuff core-util-is@1.0.2 is installed into a global node_modules -4590 verbose linkBins inherits@2.0.1 -4591 verbose linkMans inherits@2.0.1 -4592 verbose rebuildBundles inherits@2.0.1 -4593 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign is being purged from base /home/ruanyf/npm-global -4594 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign -4595 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp is being purged from base /home/ruanyf/npm-global -4596 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp -4597 verbose tar unpack /home/ruanyf/.tnpm/pinkie/2.0.4/package.tgz -4598 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie -4599 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie is being purged -4600 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie -4601 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex is being purged from base /home/ruanyf/npm-global -4602 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex -4603 silly gunzTarPerm modes [ '755', '644' ] -4604 silly gunzTarPerm modes [ '755', '644' ] -4605 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color -4606 info linkStuff strip-bom@2.0.0 -4607 silly linkStuff strip-bom@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -4608 silly linkStuff strip-bom@2.0.0 is part of a global install -4609 silly linkStuff strip-bom@2.0.0 is installed into a global node_modules -4610 verbose linkBins process-nextick-args@1.0.7 -4611 verbose linkMans process-nextick-args@1.0.7 -4612 verbose rebuildBundles process-nextick-args@1.0.7 -4613 verbose linkBins util-deprecate@1.0.2 -4614 verbose linkMans util-deprecate@1.0.2 -4615 verbose rebuildBundles util-deprecate@1.0.2 -4616 info install inherits@2.0.1 -4617 verbose tar unpack /home/ruanyf/.tnpm/object-assign/4.1.0/package.tgz -4618 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign -4619 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign is being purged -4620 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign -4621 verbose tar unpack /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package.tgz -4622 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp -4623 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp is being purged -4624 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp -4625 silly gunzTarPerm modes [ '755', '644' ] -4626 verbose tar unpack /home/ruanyf/.tnpm/ansi-regex/2.0.0/package.tgz -4627 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex -4628 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex is being purged -4629 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex -4630 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json -4631 info install process-nextick-args@1.0.7 -4632 info install util-deprecate@1.0.2 -4633 silly gunzTarPerm modes [ '755', '644' ] -4634 silly gunzTarPerm modes [ '755', '644' ] -4635 silly gunzTarPerm modes [ '755', '644' ] -4636 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi is being purged from base /home/ruanyf/npm-global -4637 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -4638 silly gunzTarPerm extractEntry LICENSE -4639 silly gunzTarPerm extractEntry index.js -4640 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp is being purged from base /home/ruanyf/npm-global -4641 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp -4642 verbose unlock done using /home/ruanyf/.tnpm/_locks/strip-bom-stream-3514f47f3087cb04.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom-stream -4643 info preinstall through@2.3.8 -4644 silly install resolved [] -4645 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend -4646 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend -4647 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles is being purged from base /home/ruanyf/npm-global -4648 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles -4649 verbose linkBins core-util-is@1.0.2 -4650 verbose linkMans core-util-is@1.0.2 -4651 verbose rebuildBundles core-util-is@1.0.2 -4652 info postinstall inherits@2.0.1 -4653 verbose tar unpack /home/ruanyf/.tnpm/has-ansi/2.0.0/package.tgz -4654 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -4655 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi is being purged -4656 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -4657 silly gunzTarPerm extractEntry LICENSE -4658 silly gunzTarPerm modified mode [ 'LICENSE', 438, 420 ] -4659 silly gunzTarPerm extractEntry test.js -4660 silly gunzTarPerm modified mode [ 'test.js', 438, 420 ] -4661 silly gunzTarPerm extractEntry test.js -4662 silly gunzTarPerm extractEntry LICENSE.md -4663 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color is being purged from base /home/ruanyf/npm-global -4664 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color -4665 verbose tar unpack /home/ruanyf/.tnpm/escape-string-regexp/1.0.5/package.tgz -4666 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp -4667 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp is being purged -4668 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp -4669 verbose linkBins strip-bom@2.0.0 -4670 verbose linkMans strip-bom@2.0.0 -4671 verbose rebuildBundles strip-bom@2.0.0 -4672 silly cache add args [ 'is-promise@^2.1.0', null ] -4673 verbose cache add spec is-promise@^2.1.0 -4674 silly cache add parsed spec Result { -4674 silly cache add raw: 'is-promise@^2.1.0', -4674 silly cache add scope: null, -4674 silly cache add name: 'is-promise', -4674 silly cache add rawSpec: '^2.1.0', -4674 silly cache add spec: '>=2.1.0 <3.0.0', -4674 silly cache add type: 'range' } -4675 silly addNamed is-promise@>=2.1.0 <3.0.0 -4676 verbose addNamed ">=2.1.0 <3.0.0" is a valid semver range for is-promise -4677 silly addNameRange { name: 'is-promise', range: '>=2.1.0 <3.0.0', hasData: false } -4678 silly mapToRegistry name is-promise -4679 silly mapToRegistry using default registry -4680 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -4681 silly mapToRegistry data Result { -4681 silly mapToRegistry raw: 'is-promise', -4681 silly mapToRegistry scope: null, -4681 silly mapToRegistry name: 'is-promise', -4681 silly mapToRegistry rawSpec: '', -4681 silly mapToRegistry spec: 'latest', -4681 silly mapToRegistry type: 'tag' } -4682 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-promise -4683 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-promise not in flight; fetching -4684 verbose tar unpack /home/ruanyf/.tnpm/ansi-styles/2.2.1/package.tgz -4685 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles -4686 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles is being purged -4687 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles -4688 info postinstall process-nextick-args@1.0.7 -4689 info install core-util-is@1.0.2 -4690 info postinstall util-deprecate@1.0.2 -4691 silly gunzTarPerm modes [ '755', '644' ] -4692 verbose tar unpack /home/ruanyf/.tnpm/supports-color/2.0.0/package.tgz -4693 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color -4694 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color is being purged -4695 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color -4696 silly gunzTarPerm modes [ '755', '644' ] -4697 verbose rebuildBundles [ 'is-utf8' ] -4698 info install strip-bom@2.0.0 -4699 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through/package.json -4700 silly gunzTarPerm extractEntry package.json -4701 silly gunzTarPerm modes [ '755', '644' ] -4702 silly gunzTarPerm extractEntry package.json -4703 silly gunzTarPerm modes [ '755', '644' ] -4704 silly cache add args [ 'inherits@~2.0.1', null ] -4705 verbose cache add spec inherits@~2.0.1 -4706 silly cache add parsed spec Result { -4706 silly cache add raw: 'inherits@~2.0.1', -4706 silly cache add scope: null, -4706 silly cache add name: 'inherits', -4706 silly cache add rawSpec: '~2.0.1', -4706 silly cache add spec: '>=2.0.1 <2.1.0', -4706 silly cache add type: 'range' } -4707 silly addNamed inherits@>=2.0.1 <2.1.0 -4708 verbose addNamed ">=2.0.1 <2.1.0" is a valid semver range for inherits -4709 silly addNameRange { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: false } -4710 silly mapToRegistry name inherits -4711 silly mapToRegistry using default registry -4712 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -4713 silly mapToRegistry data Result { -4713 silly mapToRegistry raw: 'inherits', -4713 silly mapToRegistry scope: null, -4713 silly mapToRegistry name: 'inherits', -4713 silly mapToRegistry rawSpec: '', -4713 silly mapToRegistry spec: 'latest', -4713 silly mapToRegistry type: 'tag' } -4714 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits -4715 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching -4716 silly cache add args [ 'isarray@~1.0.0', null ] -4717 verbose cache add spec isarray@~1.0.0 -4718 silly cache add parsed spec Result { -4718 silly cache add raw: 'isarray@~1.0.0', -4718 silly cache add scope: null, -4718 silly cache add name: 'isarray', -4718 silly cache add rawSpec: '~1.0.0', -4718 silly cache add spec: '>=1.0.0 <1.1.0', -4718 silly cache add type: 'range' } -4719 silly addNamed isarray@>=1.0.0 <1.1.0 -4720 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for isarray -4721 silly addNameRange { name: 'isarray', range: '>=1.0.0 <1.1.0', hasData: false } -4722 silly mapToRegistry name isarray -4723 silly mapToRegistry using default registry -4724 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -4725 silly mapToRegistry data Result { -4725 silly mapToRegistry raw: 'isarray', -4725 silly mapToRegistry scope: null, -4725 silly mapToRegistry name: 'isarray', -4725 silly mapToRegistry rawSpec: '', -4725 silly mapToRegistry spec: 'latest', -4725 silly mapToRegistry type: 'tag' } -4726 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isarray -4727 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/isarray not in flight; fetching -4728 silly cache add args [ 'process-nextick-args@~1.0.6', null ] -4729 verbose cache add spec process-nextick-args@~1.0.6 -4730 silly cache add parsed spec Result { -4730 silly cache add raw: 'process-nextick-args@~1.0.6', -4730 silly cache add scope: null, -4730 silly cache add name: 'process-nextick-args', -4730 silly cache add rawSpec: '~1.0.6', -4730 silly cache add spec: '>=1.0.6 <1.1.0', -4730 silly cache add type: 'range' } -4731 silly addNamed process-nextick-args@>=1.0.6 <1.1.0 -4732 verbose addNamed ">=1.0.6 <1.1.0" is a valid semver range for process-nextick-args -4733 silly addNameRange { name: 'process-nextick-args', -4733 silly addNameRange range: '>=1.0.6 <1.1.0', -4733 silly addNameRange hasData: false } -4734 silly mapToRegistry name process-nextick-args -4735 silly mapToRegistry using default registry -4736 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -4737 silly mapToRegistry data Result { -4737 silly mapToRegistry raw: 'process-nextick-args', -4737 silly mapToRegistry scope: null, -4737 silly mapToRegistry name: 'process-nextick-args', -4737 silly mapToRegistry rawSpec: '', -4737 silly mapToRegistry spec: 'latest', -4737 silly mapToRegistry type: 'tag' } -4738 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/process-nextick-args -4739 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/process-nextick-args not in flight; fetching -4740 silly cache add args [ 'string_decoder@~0.10.x', null ] -4741 verbose cache add spec string_decoder@~0.10.x -4742 silly cache add parsed spec Result { -4742 silly cache add raw: 'string_decoder@~0.10.x', -4742 silly cache add scope: null, -4742 silly cache add name: 'string_decoder', -4742 silly cache add rawSpec: '~0.10.x', -4742 silly cache add spec: '>=0.10.0 <0.11.0', -4742 silly cache add type: 'range' } -4743 silly addNamed string_decoder@>=0.10.0 <0.11.0 -4744 verbose addNamed ">=0.10.0 <0.11.0" is a valid semver range for string_decoder -4745 silly addNameRange { name: 'string_decoder', -4745 silly addNameRange range: '>=0.10.0 <0.11.0', -4745 silly addNameRange hasData: false } -4746 silly mapToRegistry name string_decoder -4747 silly mapToRegistry using default registry -4748 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -4749 silly mapToRegistry data Result { -4749 silly mapToRegistry raw: 'string_decoder', -4749 silly mapToRegistry scope: null, -4749 silly mapToRegistry name: 'string_decoder', -4749 silly mapToRegistry rawSpec: '', -4749 silly mapToRegistry spec: 'latest', -4749 silly mapToRegistry type: 'tag' } -4750 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/string_decoder -4751 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/string_decoder not in flight; fetching -4752 silly cache add args [ 'util-deprecate@~1.0.1', null ] -4753 verbose cache add spec util-deprecate@~1.0.1 -4754 silly cache add parsed spec Result { -4754 silly cache add raw: 'util-deprecate@~1.0.1', -4754 silly cache add scope: null, -4754 silly cache add name: 'util-deprecate', -4754 silly cache add rawSpec: '~1.0.1', -4754 silly cache add spec: '>=1.0.1 <1.1.0', -4754 silly cache add type: 'range' } -4755 silly addNamed util-deprecate@>=1.0.1 <1.1.0 -4756 verbose addNamed ">=1.0.1 <1.1.0" is a valid semver range for util-deprecate -4757 silly addNameRange { name: 'util-deprecate', -4757 silly addNameRange range: '>=1.0.1 <1.1.0', -4757 silly addNameRange hasData: false } -4758 silly mapToRegistry name util-deprecate -4759 silly mapToRegistry using default registry -4760 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -4761 silly mapToRegistry data Result { -4761 silly mapToRegistry raw: 'util-deprecate', -4761 silly mapToRegistry scope: null, -4761 silly mapToRegistry name: 'util-deprecate', -4761 silly mapToRegistry rawSpec: '', -4761 silly mapToRegistry spec: 'latest', -4761 silly mapToRegistry type: 'tag' } -4762 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/util-deprecate -4763 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/util-deprecate not in flight; fetching -4764 silly cache add args [ 'buffer-shims@^1.0.0', null ] -4765 verbose cache add spec buffer-shims@^1.0.0 -4766 silly cache add parsed spec Result { -4766 silly cache add raw: 'buffer-shims@^1.0.0', -4766 silly cache add scope: null, -4766 silly cache add name: 'buffer-shims', -4766 silly cache add rawSpec: '^1.0.0', -4766 silly cache add spec: '>=1.0.0 <2.0.0', -4766 silly cache add type: 'range' } -4767 silly addNamed buffer-shims@>=1.0.0 <2.0.0 -4768 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for buffer-shims -4769 silly addNameRange { name: 'buffer-shims', range: '>=1.0.0 <2.0.0', hasData: false } -4770 silly mapToRegistry name buffer-shims -4771 silly mapToRegistry using default registry -4772 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -4773 silly mapToRegistry data Result { -4773 silly mapToRegistry raw: 'buffer-shims', -4773 silly mapToRegistry scope: null, -4773 silly mapToRegistry name: 'buffer-shims', -4773 silly mapToRegistry rawSpec: '', -4773 silly mapToRegistry spec: 'latest', -4773 silly mapToRegistry type: 'tag' } -4774 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/buffer-shims -4775 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/buffer-shims not in flight; fetching -4776 silly cache add args [ 'core-util-is@~1.0.0', null ] -4777 verbose cache add spec core-util-is@~1.0.0 -4778 silly cache add parsed spec Result { -4778 silly cache add raw: 'core-util-is@~1.0.0', -4778 silly cache add scope: null, -4778 silly cache add name: 'core-util-is', -4778 silly cache add rawSpec: '~1.0.0', -4778 silly cache add spec: '>=1.0.0 <1.1.0', -4778 silly cache add type: 'range' } -4779 silly addNamed core-util-is@>=1.0.0 <1.1.0 -4780 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for core-util-is -4781 silly addNameRange { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: false } -4782 silly mapToRegistry name core-util-is -4783 silly mapToRegistry using default registry -4784 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -4785 silly mapToRegistry data Result { -4785 silly mapToRegistry raw: 'core-util-is', -4785 silly mapToRegistry scope: null, -4785 silly mapToRegistry name: 'core-util-is', -4785 silly mapToRegistry rawSpec: '', -4785 silly mapToRegistry spec: 'latest', -4785 silly mapToRegistry type: 'tag' } -4786 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/core-util-is -4787 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/core-util-is not in flight; fetching -4788 info postinstall core-util-is@1.0.2 -4789 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-5a31eb8d44663059.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/inherits -4790 silly gunzTarPerm extractEntry package.json -4791 silly gunzTarPerm extractEntry package.json -4792 info postinstall strip-bom@2.0.0 -4793 verbose request uri http://registry.npm.alibaba-inc.com/buffer-shims -4794 verbose request no auth needed -4795 info attempt registry request try #1 at 上午9:12:30 -4796 http request GET http://registry.npm.alibaba-inc.com/buffer-shims -4797 verbose unlock done using /home/ruanyf/.tnpm/_locks/process-nextick-args-640681cf1f951d3d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/process-nextick-args -4798 verbose unlock done using /home/ruanyf/.tnpm/_locks/util-deprecate-da6ff6e24a0a44c8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/util-deprecate -4799 silly gunzTarPerm extractEntry dropRightWhile.js -4800 silly gunzTarPerm extractEntry commit.js -4801 silly gunzTarPerm extractEntry package.json -4802 silly gunzTarPerm extractEntry package.json -4803 silly install resolved [] -4804 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray -4805 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray -4806 silly gunzTarPerm extractEntry test.js -4807 silly gunzTarPerm extractEntry .travis.yml -4808 info linkStuff xtend@4.0.1 -4809 silly linkStuff xtend@4.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules as its parent node_modules -4810 silly linkStuff xtend@4.0.1 is part of a global install -4811 silly linkStuff xtend@4.0.1 is installed into a global node_modules -4812 silly gunzTarPerm extractEntry CHANGELOG.md -4813 silly gunzTarPerm extractEntry .jscs.json -4814 silly gunzTarPerm extractEntry dist/rx.backpressure.js -4815 silly gunzTarPerm extractEntry dist/rx.core.min.js -4816 silly gunzTarPerm extractEntry package.json -4817 verbose request uri http://registry.npm.alibaba-inc.com/is-promise -4818 verbose request no auth needed -4819 info attempt registry request try #1 at 上午9:12:30 -4820 verbose etag "1738-EhyMPiWgAtQw36379g38fA" -4821 http request GET http://registry.npm.alibaba-inc.com/is-promise -4822 silly gunzTarPerm extractEntry index.js -4823 silly gunzTarPerm extractEntry license -4824 verbose unlock done using /home/ruanyf/.tnpm/_locks/core-util-is-43b8c89985671e22.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -4825 silly gunzTarPerm extractEntry package.json -4826 silly gunzTarPerm extractEntry index.js -4827 silly gunzTarPerm extractEntry license -4828 verbose unlock done using /home/ruanyf/.tnpm/_locks/strip-bom-254e130643bfa36f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/strip-bom -4829 silly gunzTarPerm extractEntry index.js -4830 silly gunzTarPerm extractEntry license -4831 silly gunzTarPerm extractEntry .travis.yml -4832 silly gunzTarPerm extractEntry test/main.js -4833 silly gunzTarPerm extractEntry index.js -4834 silly gunzTarPerm extractEntry license -4835 silly gunzTarPerm extractEntry package.json -4836 verbose get http://registry.npm.alibaba-inc.com/inherits not expired, no request -4837 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: true } -4838 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] -4839 silly addNamed inherits@2.0.1 -4840 verbose addNamed "2.0.1" is a plain semver version for inherits -4841 verbose get http://registry.npm.alibaba-inc.com/isarray not expired, no request -4842 silly addNameRange number 2 { name: 'isarray', range: '>=1.0.0 <1.1.0', hasData: true } -4843 silly addNameRange versions [ 'isarray', [ '1.0.0', '0.0.1', '0.0.0' ] ] -4844 silly addNamed isarray@1.0.0 -4845 verbose addNamed "1.0.0" is a plain semver version for isarray -4846 verbose get http://registry.npm.alibaba-inc.com/process-nextick-args not expired, no request -4847 silly addNameRange number 2 { name: 'process-nextick-args', -4847 silly addNameRange range: '>=1.0.6 <1.1.0', -4847 silly addNameRange hasData: true } -4848 silly addNameRange versions [ 'process-nextick-args', -4848 silly addNameRange [ '1.0.7', -4848 silly addNameRange '1.0.6', -4848 silly addNameRange '1.0.5', -4848 silly addNameRange '1.0.4', -4848 silly addNameRange '1.0.3', -4848 silly addNameRange '1.0.2', -4848 silly addNameRange '1.0.1', -4848 silly addNameRange '1.0.0' ] ] -4849 silly addNamed process-nextick-args@1.0.7 -4850 verbose addNamed "1.0.7" is a plain semver version for process-nextick-args -4851 verbose get http://registry.npm.alibaba-inc.com/string_decoder not expired, no request -4852 silly addNameRange number 2 { name: 'string_decoder', -4852 silly addNameRange range: '>=0.10.0 <0.11.0', -4852 silly addNameRange hasData: true } -4853 silly addNameRange versions [ 'string_decoder', -4853 silly addNameRange [ '0.10.31', -4853 silly addNameRange '0.10.25-1', -4853 silly addNameRange '0.11.10-1', -4853 silly addNameRange '0.10.25', -4853 silly addNameRange '0.11.10', -4853 silly addNameRange '0.10.24', -4853 silly addNameRange '0.0.1', -4853 silly addNameRange '0.0.0' ] ] -4854 silly addNamed string_decoder@0.10.31 -4855 verbose addNamed "0.10.31" is a plain semver version for string_decoder -4856 verbose get http://registry.npm.alibaba-inc.com/util-deprecate not expired, no request -4857 silly addNameRange number 2 { name: 'util-deprecate', -4857 silly addNameRange range: '>=1.0.1 <1.1.0', -4857 silly addNameRange hasData: true } -4858 silly addNameRange versions [ 'util-deprecate', [ '1.0.2', '1.0.1', '1.0.0' ] ] -4859 silly addNamed util-deprecate@1.0.2 -4860 verbose addNamed "1.0.2" is a plain semver version for util-deprecate -4861 verbose get http://registry.npm.alibaba-inc.com/core-util-is not expired, no request -4862 silly addNameRange number 2 { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: true } -4863 silly addNameRange versions [ 'core-util-is', [ '1.0.2', '1.0.1', '1.0.0' ] ] -4864 silly addNamed core-util-is@1.0.2 -4865 verbose addNamed "1.0.2" is a plain semver version for core-util-is -4866 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through/package.json -4867 verbose linkBins xtend@4.0.1 -4868 verbose linkMans xtend@4.0.1 -4869 verbose rebuildBundles xtend@4.0.1 -4870 silly gunzTarPerm extractEntry package.json -4871 silly gunzTarPerm extractEntry index.js -4872 silly gunzTarPerm extractEntry license -4873 silly gunzTarPerm extractEntry index.js -4874 silly gunzTarPerm extractEntry license -4875 silly gunzTarPerm extractEntry clone.js -4876 silly gunzTarPerm modified mode [ 'clone.js', 438, 420 ] -4877 silly gunzTarPerm extractEntry package.json -4878 info install xtend@4.0.1 -4879 silly gunzTarPerm extractEntry index.js -4880 silly gunzTarPerm extractEntry license -4881 info linkStuff isarray@1.0.0 -4882 silly linkStuff isarray@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -4883 silly linkStuff isarray@1.0.0 is part of a global install -4884 silly linkStuff isarray@1.0.0 is installed into a global node_modules -4885 silly gunzTarPerm extractEntry index.js -4886 silly gunzTarPerm extractEntry license -4887 http 200 http://registry.npm.alibaba-inc.com/buffer-shims -4888 verbose headers { server: 'Tengine', -4888 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -4888 verbose headers 'content-type': 'application/json; charset=utf-8', -4888 verbose headers 'transfer-encoding': 'chunked', -4888 verbose headers connection: 'keep-alive', -4888 verbose headers vary: 'Accept-Encoding', -4888 verbose headers 'x-readtime': '13', -4888 verbose headers 'content-encoding': 'gzip' } -4889 silly get cb [ 200, -4889 silly get { server: 'Tengine', -4889 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -4889 silly get 'content-type': 'application/json; charset=utf-8', -4889 silly get 'transfer-encoding': 'chunked', -4889 silly get connection: 'keep-alive', -4889 silly get vary: 'Accept-Encoding', -4889 silly get 'x-readtime': '13', -4889 silly get 'content-encoding': 'gzip' } ] -4890 verbose get saving buffer-shims to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/buffer-shims/.cache.json -4891 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4892 info postinstall xtend@4.0.1 -4893 silly gunzTarPerm extractEntry index.js -4894 silly gunzTarPerm extractEntry license -4895 silly gunzTarPerm extractEntry index.js -4896 silly gunzTarPerm extractEntry license -4897 verbose linkBins isarray@1.0.0 -4898 verbose linkMans isarray@1.0.0 -4899 verbose rebuildBundles isarray@1.0.0 -4900 silly gunzTarPerm extractEntry index.js -4901 silly gunzTarPerm extractEntry license -4902 silly gunzTarPerm extractEntry dropWhile.js -4903 silly gunzTarPerm extractEntry collection.js -4904 info install isarray@1.0.0 -4905 silly cache afterAdd inherits@2.0.1 -4906 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing -4907 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4908 silly cache afterAdd isarray@1.0.0 -4909 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json not in flight; writing -4910 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4911 silly cache afterAdd process-nextick-args@1.0.7 -4912 verbose afterAdd /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package/package.json not in flight; writing -4913 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4914 silly cache afterAdd string_decoder@0.10.31 -4915 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json not in flight; writing -4916 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4917 silly cache afterAdd util-deprecate@1.0.2 -4918 verbose afterAdd /home/ruanyf/.tnpm/util-deprecate/1.0.2/package/package.json not in flight; writing -4919 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4920 silly cache afterAdd core-util-is@1.0.2 -4921 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json not in flight; writing -4922 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4923 silly install resolved [] -4924 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through -4925 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through -4926 verbose unlock done using /home/ruanyf/.tnpm/_locks/xtend-b1f074d35a78cd4c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter/node_modules/xtend -4927 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter -4928 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter -4929 silly gunzTarPerm extractEntry component.json -4930 silly gunzTarPerm extractEntry dist/rx.async.min.js -4931 silly gunzTarPerm extractEntry dist/rx.core.testing.js -4932 silly gunzTarPerm extractEntry dist/rx.testing.min.js -4933 http 304 http://registry.npm.alibaba-inc.com/is-promise -4934 verbose headers { server: 'Tengine', -4934 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -4934 verbose headers connection: 'keep-alive', -4934 verbose headers etag: '"1738-EhyMPiWgAtQw36379g38fA"', -4934 verbose headers 'x-readtime': '14' } -4935 silly get cb [ 304, -4935 silly get { server: 'Tengine', -4935 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -4935 silly get connection: 'keep-alive', -4935 silly get etag: '"1738-EhyMPiWgAtQw36379g38fA"', -4935 silly get 'x-readtime': '14' } ] -4936 verbose etag http://registry.npm.alibaba-inc.com/is-promise from cache -4937 verbose get saving is-promise to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-promise/.cache.json -4938 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -4939 silly gunzTarPerm extractEntry readme.md -4940 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/package.json -4941 silly gunzTarPerm extractEntry readme.md -4942 info postinstall isarray@1.0.0 -4943 silly gunzTarPerm extractEntry readme.md -4944 silly gunzTarPerm extractEntry readme.md -4945 silly gunzTarPerm extractEntry dist/rx.lite.extras.min.js -4946 silly gunzTarPerm extractEntry readme.md -4947 silly gunzTarPerm extractEntry readme.md -4948 silly gunzTarPerm extractEntry .travis.yml -4949 silly gunzTarPerm modified mode [ '.travis.yml', 438, 420 ] -4950 silly gunzTarPerm extractEntry test-apart-ctx.html -4951 silly gunzTarPerm modified mode [ 'test-apart-ctx.html', 438, 420 ] -4952 silly gunzTarPerm extractEntry readme.md -4953 verbose unlock done using /home/ruanyf/.tnpm/_locks/isarray-62ce9f5052cd7d81.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream/node_modules/isarray -4954 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream -4955 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream -4956 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json written -4957 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written -4958 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json written -4959 verbose afterAdd /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package/package.json written -4960 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json written -4961 verbose afterAdd /home/ruanyf/.tnpm/util-deprecate/1.0.2/package/package.json written -4962 info linkStuff through@2.3.8 -4963 silly linkStuff through@2.3.8 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -4964 silly linkStuff through@2.3.8 is part of a global install -4965 silly linkStuff through@2.3.8 is installed into a global node_modules -4966 info linkStuff through2-filter@2.0.0 -4967 silly linkStuff through2-filter@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -4968 silly linkStuff through2-filter@2.0.0 is part of a global install -4969 silly linkStuff through2-filter@2.0.0 is installed into a global node_modules -4970 info preinstall end-of-stream@1.0.0 -4971 silly gunzTarPerm extractEntry readme.md -4972 silly gunzTarPerm extractEntry readme.md -4973 silly addNameRange number 2 { name: 'buffer-shims', range: '>=1.0.0 <2.0.0', hasData: true } -4974 silly addNameRange versions [ 'buffer-shims', [ '1.0.0' ] ] -4975 silly addNamed buffer-shims@1.0.0 -4976 verbose addNamed "1.0.0" is a plain semver version for buffer-shims -4977 silly gunzTarPerm extractEntry readme.md -4978 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/package.json -4979 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/package.json -4980 silly gunzTarPerm extractEntry readme.md -4981 silly mapToRegistry name buffer-shims -4982 silly mapToRegistry using default registry -4983 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -4984 silly mapToRegistry data Result { -4984 silly mapToRegistry raw: 'buffer-shims', -4984 silly mapToRegistry scope: null, -4984 silly mapToRegistry name: 'buffer-shims', -4984 silly mapToRegistry rawSpec: '', -4984 silly mapToRegistry spec: 'latest', -4984 silly mapToRegistry type: 'tag' } -4985 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/buffer-shims -4986 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz not in flight; adding -4987 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz', -4987 verbose addRemoteTarball '9978ce317388c649ad8793028c3477ef044a8b51' ] -4988 verbose linkBins through@2.3.8 -4989 verbose linkMans through@2.3.8 -4990 verbose rebuildBundles through@2.3.8 -4991 verbose linkBins through2-filter@2.0.0 -4992 verbose linkMans through2-filter@2.0.0 -4993 verbose rebuildBundles through2-filter@2.0.0 -4994 silly gunzTarPerm extractEntry each.js -4995 silly gunzTarPerm extractEntry cloneWith.js -4996 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits/package.json -4997 info install through@2.3.8 -4998 verbose rebuildBundles [ 'xtend' ] -4999 info install through2-filter@2.0.0 -5000 silly addNameRange number 2 { name: 'is-promise', range: '>=2.1.0 <3.0.0', hasData: true } -5001 silly addNameRange versions [ 'is-promise', [ '2.1.0', '2.0.0', '1.0.1', '1.0.0' ] ] -5002 silly addNamed is-promise@2.1.0 -5003 verbose addNamed "2.1.0" is a plain semver version for is-promise -5004 silly gunzTarPerm extractEntry .eslintrc -5005 silly gunzTarPerm extractEntry .travis.yml -5006 info linkStuff readable-stream@2.0.6 -5007 silly linkStuff readable-stream@2.0.6 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules as its parent node_modules -5008 silly linkStuff readable-stream@2.0.6 is part of a global install -5009 silly linkStuff readable-stream@2.0.6 is installed into a global node_modules -5010 info retry fetch attempt 1 at 上午9:12:30 -5011 info attempt registry request try #1 at 上午9:12:30 -5012 http fetch GET http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz -5013 info postinstall through@2.3.8 -5014 info postinstall through2-filter@2.0.0 -5015 silly gunzTarPerm extractEntry dist/rx.async.js -5016 silly gunzTarPerm extractEntry dist/rx.core.testing.min.js -5017 info preinstall mkdirp@0.5.1 -5018 info preinstall inherits@2.0.1 -5019 silly gunzTarPerm extractEntry test.html -5020 silly gunzTarPerm modified mode [ 'test.html', 438, 420 ] -5021 verbose linkBins readable-stream@2.0.6 -5022 verbose linkMans readable-stream@2.0.6 -5023 verbose rebuildBundles readable-stream@2.0.6 -5024 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/package.json -5025 silly prepareForInstallMany adding once@~1.3.0 from end-of-stream dependencies -5026 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/package.json -5027 verbose rebuildBundles [ 'core-util-is', -5027 verbose rebuildBundles 'inherits', -5027 verbose rebuildBundles 'isarray', -5027 verbose rebuildBundles 'process-nextick-args', -5027 verbose rebuildBundles 'string_decoder', -5027 verbose rebuildBundles 'util-deprecate' ] -5028 info install readable-stream@2.0.6 -5029 verbose unlock done using /home/ruanyf/.tnpm/_locks/through-a3c6e237a9a7f49c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/through -5030 verbose unlock done using /home/ruanyf/.tnpm/_locks/through2-filter-70dc8f93679832ec.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/through2-filter -5031 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits/package.json -5032 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys/package.json -5033 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root/package.json -5034 silly cache afterAdd is-promise@2.1.0 -5035 verbose afterAdd /home/ruanyf/.tnpm/is-promise/2.1.0/package/package.json not in flight; writing -5036 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5037 info postinstall readable-stream@2.0.6 -5038 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/package.json -5039 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/package.json -5040 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/package.json -5041 silly gunzTarPerm extractEntry eachRight.js -5042 silly gunzTarPerm extractEntry cloneDeepWith.js -5043 silly gunzTarPerm extractEntry endsWith.js -5044 info preinstall lodash.keys@4.0.7 -5045 verbose unlock done using /home/ruanyf/.tnpm/_locks/readable-stream-37828330509bd5f4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2/node_modules/readable-stream -5046 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2 -5047 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2 -5048 info preinstall lodash._root@3.0.1 -5049 silly gunzTarPerm extractEntry cloneDeep.js -5050 silly gunzTarPerm extractEntry dist/rx.async.compat.min.js -5051 silly gunzTarPerm extractEntry dist/rx.experimental.js -5052 verbose afterAdd /home/ruanyf/.tnpm/is-promise/2.1.0/package/package.json written -5053 silly install resolved [ { name: 'is-promise', -5053 silly install resolved version: '2.1.0', -5053 silly install resolved description: 'Test whether an object looks like a promises-a+ promise', -5053 silly install resolved main: 'index.js', -5053 silly install resolved scripts: { test: 'mocha -R spec' }, -5053 silly install resolved repository: -5053 silly install resolved { type: 'git', -5053 silly install resolved url: 'git+https://github.com/then/is-promise.git' }, -5053 silly install resolved author: { name: 'ForbesLindesay' }, -5053 silly install resolved license: 'MIT', -5053 silly install resolved devDependencies: { 'better-assert': '~0.1.0', mocha: '~1.7.4' }, -5053 silly install resolved gitHead: '056f8ac12eed91886ac4f0f7d872a176f6ed698f', -5053 silly install resolved bugs: { url: 'https://github.com/then/is-promise/issues' }, -5053 silly install resolved homepage: 'https://github.com/then/is-promise', -5053 silly install resolved _id: 'is-promise@2.1.0', -5053 silly install resolved _shasum: '79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa', -5053 silly install resolved _from: 'is-promise@>=2.1.0 <3.0.0', -5053 silly install resolved _npmVersion: '2.7.1', -5053 silly install resolved _nodeVersion: '1.6.2', -5053 silly install resolved _npmUser: { name: 'forbeslindesay', email: 'forbes@lindesay.co.uk' }, -5053 silly install resolved maintainers: [ [Object], [Object] ], -5053 silly install resolved dist: -5053 silly install resolved { shasum: '79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa', -5053 silly install resolved size: 2283, -5053 silly install resolved noattachment: false, -5053 silly install resolved key: 'is-promise/-/is-promise-2.1.0.tgz', -5053 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-promise/download/is-promise-2.1.0.tgz' }, -5053 silly install resolved directories: {}, -5053 silly install resolved publish_time: 1441562796412, -5053 silly install resolved _cnpm_publish_time: 1441562796412, -5053 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-promise/download/is-promise-2.1.0.tgz', -5053 silly install resolved readme: 'ERROR: No README data found!' } ] -5054 info install is-promise@2.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -5055 info installOne is-promise@2.1.0 -5056 verbose installOne of is-promise to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async not in flight; installing -5057 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5058 silly prepareForInstallMany adding minimist@0.0.8 from mkdirp dependencies -5059 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/package.json -5060 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits/package.json -5061 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys/package.json -5062 silly cache add args [ 'once@~1.3.0', null ] -5063 verbose cache add spec once@~1.3.0 -5064 silly cache add parsed spec Result { -5064 silly cache add raw: 'once@~1.3.0', -5064 silly cache add scope: null, -5064 silly cache add name: 'once', -5064 silly cache add rawSpec: '~1.3.0', -5064 silly cache add spec: '>=1.3.0 <1.4.0', -5064 silly cache add type: 'range' } -5065 silly addNamed once@>=1.3.0 <1.4.0 -5066 verbose addNamed ">=1.3.0 <1.4.0" is a valid semver range for once -5067 silly addNameRange { name: 'once', range: '>=1.3.0 <1.4.0', hasData: false } -5068 silly mapToRegistry name once -5069 silly mapToRegistry using default registry -5070 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5071 silly mapToRegistry data Result { -5071 silly mapToRegistry raw: 'once', -5071 silly mapToRegistry scope: null, -5071 silly mapToRegistry name: 'once', -5071 silly mapToRegistry rawSpec: '', -5071 silly mapToRegistry spec: 'latest', -5071 silly mapToRegistry type: 'tag' } -5072 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/once -5073 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/once not in flight; fetching -5074 info preinstall to-absolute-glob@0.1.1 -5075 info preinstall unique-stream@2.2.1 -5076 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root/package.json -5077 info preinstall ordered-read-streams@0.3.0 -5078 silly gunzTarPerm extractEntry entries.js -5079 http fetch 200 http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz -5080 verbose lock using /home/ruanyf/.tnpm/_locks/is-promise-42edfdb63885d862.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise -5081 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/package.json -5082 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/package.json -5083 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/package.json -5084 silly install write writing is-promise 2.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise -5085 silly gunzTarPerm extractEntry clone.js -5086 info linkStuff through2@2.0.1 -5087 silly linkStuff through2@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules as its parent node_modules -5088 silly linkStuff through2@2.0.1 is part of a global install -5089 silly linkStuff through2@2.0.1 is installed into a global node_modules -5090 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/package.json -5091 silly gunzTarPerm extractEntry entriesIn.js -5092 silly fetchAndShaCheck shasum 9978ce317388c649ad8793028c3477ef044a8b51 -5093 verbose request uri http://registry.npm.alibaba-inc.com/once -5094 verbose request no auth needed -5095 info attempt registry request try #1 at 上午9:12:30 -5096 verbose etag "2053-cQ/iFzfNocPaJqrU2XPTLg" -5097 http request GET http://registry.npm.alibaba-inc.com/once -5098 silly install resolved [] -5099 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits -5100 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits -5101 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width/package.json -5102 verbose linkBins through2@2.0.1 -5103 verbose linkMans through2@2.0.1 -5104 verbose rebuildBundles through2@2.0.1 -5105 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root/package.json -5106 silly gunzTarPerm extractEntry clamp.js -5107 verbose rebuildBundles [ 'readable-stream', 'xtend' ] -5108 info install through2@2.0.1 -5109 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise -5110 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json -5111 silly cache add args [ 'minimist@0.0.8', null ] -5112 verbose cache add spec minimist@0.0.8 -5113 silly cache add parsed spec Result { -5113 silly cache add raw: 'minimist@0.0.8', -5113 silly cache add scope: null, -5113 silly cache add name: 'minimist', -5113 silly cache add rawSpec: '0.0.8', -5113 silly cache add spec: '0.0.8', -5113 silly cache add type: 'version' } -5114 silly addNamed minimist@0.0.8 -5115 verbose addNamed "0.0.8" is a plain semver version for minimist -5116 silly mapToRegistry name minimist -5117 silly mapToRegistry using default registry -5118 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5119 silly mapToRegistry data Result { -5119 silly mapToRegistry raw: 'minimist', -5119 silly mapToRegistry scope: null, -5119 silly mapToRegistry name: 'minimist', -5119 silly mapToRegistry rawSpec: '', -5119 silly mapToRegistry spec: 'latest', -5119 silly mapToRegistry type: 'tag' } -5120 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/minimist -5121 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/minimist not in flight; fetching -5122 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz not in flight; adding -5123 verbose addTmpTarball already have metadata; skipping unpack for buffer-shims@1.0.0 -5124 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5125 silly prepareForInstallMany adding json-stable-stringify@^1.0.0 from unique-stream dependencies -5126 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/package.json -5127 silly prepareForInstallMany adding extend-shallow@^2.0.1 from to-absolute-glob dependencies -5128 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/package.json -5129 silly prepareForInstallMany adding is-stream@^1.0.1 from ordered-read-streams dependencies -5130 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/package.json -5131 info preinstall through2@0.6.5 -5132 silly gunzTarPerm extractEntry dist/rx.time.js -5133 silly gunzTarPerm extractEntry dist/rx.lite.extras.js -5134 silly gunzTarPerm extractEntry dist/rx.async.compat.js -5135 silly gunzTarPerm extractEntry eq.js -5136 info postinstall through2@2.0.1 -5137 info preinstall cli-width@2.1.0 -5138 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/package.json -5139 silly gunzTarPerm extractEntry dist/rx.experimental.min.js -5140 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise is being purged from base /home/ruanyf/npm-global -5141 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise -5142 silly gunzTarPerm extractEntry chunk.js -5143 info linkStuff inherits@2.0.1 -5144 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules as its parent node_modules -5145 silly linkStuff inherits@2.0.1 is part of a global install -5146 silly linkStuff inherits@2.0.1 is installed into a global node_modules -5147 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys/package.json -5148 verbose tar unpack /home/ruanyf/.tnpm/is-promise/2.1.0/package.tgz -5149 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise -5150 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise is being purged -5151 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise -5152 info preinstall clone-stats@0.0.1 -5153 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width/package.json -5154 verbose unlock done using /home/ruanyf/.tnpm/_locks/through2-4310595aca71b05a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/through2 -5155 silly install resolved [] -5156 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root -5157 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root -5158 silly gunzTarPerm extractEntry dist/rx.all.min.js -5159 silly gunzTarPerm modes [ '755', '644' ] -5160 verbose request uri http://registry.npm.alibaba-inc.com/minimist -5161 verbose request no auth needed -5162 info attempt registry request try #1 at 上午9:12:30 -5163 http request GET http://registry.npm.alibaba-inc.com/minimist -5164 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/package.json -5165 verbose linkBins inherits@2.0.1 -5166 verbose linkMans inherits@2.0.1 -5167 verbose rebuildBundles inherits@2.0.1 -5168 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json -5169 silly gunzTarPerm extractEntry dist/rx.joinpatterns.js -5170 info install inherits@2.0.1 -5171 http 304 http://registry.npm.alibaba-inc.com/once -5172 verbose headers { server: 'Tengine', -5172 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -5172 verbose headers connection: 'keep-alive', -5172 verbose headers etag: '"2053-cQ/iFzfNocPaJqrU2XPTLg"', -5172 verbose headers 'x-readtime': '20' } -5173 silly get cb [ 304, -5173 silly get { server: 'Tengine', -5173 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -5173 silly get connection: 'keep-alive', -5173 silly get etag: '"2053-cQ/iFzfNocPaJqrU2XPTLg"', -5173 silly get 'x-readtime': '20' } ] -5174 verbose etag http://registry.npm.alibaba-inc.com/once from cache -5175 verbose get saving once to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/once/.cache.json -5176 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5177 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/package.json -5178 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json -5179 silly cache add args [ 'json-stable-stringify@^1.0.0', null ] -5180 verbose cache add spec json-stable-stringify@^1.0.0 -5181 silly cache add args [ 'extend-shallow@^2.0.1', null ] -5182 verbose cache add spec extend-shallow@^2.0.1 -5183 silly cache add args [ 'is-stream@^1.0.1', null ] -5184 verbose cache add spec is-stream@^1.0.1 -5185 silly cache add parsed spec Result { -5185 silly cache add raw: 'json-stable-stringify@^1.0.0', -5185 silly cache add scope: null, -5185 silly cache add name: 'json-stable-stringify', -5185 silly cache add rawSpec: '^1.0.0', -5185 silly cache add spec: '>=1.0.0 <2.0.0', -5185 silly cache add type: 'range' } -5186 silly addNamed json-stable-stringify@>=1.0.0 <2.0.0 -5187 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for json-stable-stringify -5188 silly addNameRange { name: 'json-stable-stringify', -5188 silly addNameRange range: '>=1.0.0 <2.0.0', -5188 silly addNameRange hasData: false } -5189 silly mapToRegistry name json-stable-stringify -5190 silly mapToRegistry using default registry -5191 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5192 silly mapToRegistry data Result { -5192 silly mapToRegistry raw: 'json-stable-stringify', -5192 silly mapToRegistry scope: null, -5192 silly mapToRegistry name: 'json-stable-stringify', -5192 silly mapToRegistry rawSpec: '', -5192 silly mapToRegistry spec: 'latest', -5192 silly mapToRegistry type: 'tag' } -5193 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/json-stable-stringify -5194 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/json-stable-stringify not in flight; fetching -5195 silly cache add parsed spec Result { -5195 silly cache add raw: 'extend-shallow@^2.0.1', -5195 silly cache add scope: null, -5195 silly cache add name: 'extend-shallow', -5195 silly cache add rawSpec: '^2.0.1', -5195 silly cache add spec: '>=2.0.1 <3.0.0', -5195 silly cache add type: 'range' } -5196 silly addNamed extend-shallow@>=2.0.1 <3.0.0 -5197 verbose addNamed ">=2.0.1 <3.0.0" is a valid semver range for extend-shallow -5198 silly addNameRange { name: 'extend-shallow', -5198 silly addNameRange range: '>=2.0.1 <3.0.0', -5198 silly addNameRange hasData: false } -5199 silly mapToRegistry name extend-shallow -5200 silly mapToRegistry using default registry -5201 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5202 silly mapToRegistry data Result { -5202 silly mapToRegistry raw: 'extend-shallow', -5202 silly mapToRegistry scope: null, -5202 silly mapToRegistry name: 'extend-shallow', -5202 silly mapToRegistry rawSpec: '', -5202 silly mapToRegistry spec: 'latest', -5202 silly mapToRegistry type: 'tag' } -5203 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/extend-shallow -5204 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/extend-shallow not in flight; fetching -5205 silly cache add parsed spec Result { -5205 silly cache add raw: 'is-stream@^1.0.1', -5205 silly cache add scope: null, -5205 silly cache add name: 'is-stream', -5205 silly cache add rawSpec: '^1.0.1', -5205 silly cache add spec: '>=1.0.1 <2.0.0', -5205 silly cache add type: 'range' } -5206 silly addNamed is-stream@>=1.0.1 <2.0.0 -5207 verbose addNamed ">=1.0.1 <2.0.0" is a valid semver range for is-stream -5208 silly addNameRange { name: 'is-stream', range: '>=1.0.1 <2.0.0', hasData: false } -5209 silly mapToRegistry name is-stream -5210 silly mapToRegistry using default registry -5211 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5212 silly mapToRegistry data Result { -5212 silly mapToRegistry raw: 'is-stream', -5212 silly mapToRegistry scope: null, -5212 silly mapToRegistry name: 'is-stream', -5212 silly mapToRegistry rawSpec: '', -5212 silly mapToRegistry spec: 'latest', -5212 silly mapToRegistry type: 'tag' } -5213 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-stream -5214 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-stream not in flight; fetching -5215 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/package.json -5216 silly prepareForInstallMany adding readable-stream@>=1.0.33-1 <1.1.0-0 from through2 dependencies -5217 silly prepareForInstallMany adding xtend@>=4.0.0 <4.1.0-0 from through2 dependencies -5218 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/package.json -5219 info postinstall inherits@2.0.1 -5220 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie/package.json -5221 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex/package.json -5222 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp/package.json -5223 info linkStuff lodash._root@3.0.1 -5224 silly linkStuff lodash._root@3.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules as its parent node_modules -5225 silly linkStuff lodash._root@3.0.1 is part of a global install -5226 silly linkStuff lodash._root@3.0.1 is installed into a global node_modules -5227 info preinstall restore-cursor@1.0.1 -5228 silly gunzTarPerm extractEntry package.json -5229 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign/package.json -5230 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width/package.json -5231 silly gunzTarPerm extractEntry dist/rx.time.min.js -5232 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/package.json -5233 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp/package.json -5234 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/package.json -5235 silly gunzTarPerm extractEntry escape.js -5236 silly gunzTarPerm extractEntry chain.js -5237 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-5220b4c05119a294.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/inherits -5238 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json -5239 info preinstall is-fullwidth-code-point@1.0.0 -5240 info preinstall code-point-at@1.0.0 -5241 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/package.json -5242 verbose linkBins lodash._root@3.0.1 -5243 verbose linkMans lodash._root@3.0.1 -5244 verbose rebuildBundles lodash._root@3.0.1 -5245 info preinstall glob@5.0.15 -5246 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles/package.json -5247 silly gunzTarPerm extractEntry dist/rx.lite.extras.compat.min.js -5248 info preinstall pinkie@2.0.4 -5249 info preinstall ansi-regex@2.0.0 -5250 info preinstall escape-string-regexp@1.0.5 -5251 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color/package.json -5252 info install lodash._root@3.0.1 -5253 verbose request uri http://registry.npm.alibaba-inc.com/json-stable-stringify -5254 verbose request no auth needed -5255 info attempt registry request try #1 at 上午9:12:30 -5256 verbose etag "3ced-ANb110mqWnC+hIe62SGyWg" -5257 http request GET http://registry.npm.alibaba-inc.com/json-stable-stringify -5258 verbose request uri http://registry.npm.alibaba-inc.com/extend-shallow -5259 verbose request no auth needed -5260 info attempt registry request try #1 at 上午9:12:30 -5261 verbose etag "49e6-GE7Yn4YonbyD9fuWi6qa1Q" -5262 http request GET http://registry.npm.alibaba-inc.com/extend-shallow -5263 verbose request uri http://registry.npm.alibaba-inc.com/is-stream -5264 verbose request no auth needed -5265 info attempt registry request try #1 at 上午9:12:30 -5266 verbose etag "1537-KUcGKAXBFuKhGNLVFzDRhQ" -5267 http request GET http://registry.npm.alibaba-inc.com/is-stream -5268 silly gunzTarPerm extractEntry .npmignore -5269 silly gunzTarPerm extractEntry LICENSE -5270 info preinstall object-assign@4.1.0 -5271 silly install resolved [] -5272 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys -5273 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys -5274 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json -5275 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/package.json -5276 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/package.json -5277 silly gunzTarPerm extractEntry dist/rx.all.js -5278 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie/package.json -5279 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex/package.json -5280 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp/package.json -5281 info preinstall has-ansi@2.0.0 -5282 info preinstall escape-string-regexp@1.0.5 -5283 silly addNameRange number 2 { name: 'once', range: '>=1.3.0 <1.4.0', hasData: true } -5284 silly addNameRange versions [ 'once', -5284 silly addNameRange [ '1.3.3', '1.3.2', '1.3.1', '1.3.0', '1.2.0', '1.1.1' ] ] -5285 silly addNamed once@1.3.3 -5286 verbose addNamed "1.3.3" is a plain semver version for once -5287 info postinstall lodash._root@3.0.1 -5288 silly install resolved [] -5289 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width -5290 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width -5291 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign/package.json -5292 silly cache add args [ 'readable-stream@>=1.0.33-1 <1.1.0-0', null ] -5293 verbose cache add spec readable-stream@>=1.0.33-1 <1.1.0-0 -5294 silly cache add parsed spec Result { -5294 silly cache add raw: 'readable-stream@>=1.0.33-1 <1.1.0-0', -5294 silly cache add scope: null, -5294 silly cache add name: 'readable-stream', -5294 silly cache add rawSpec: '>=1.0.33-1 <1.1.0-0', -5294 silly cache add spec: '>=1.0.33-1 <1.1.0-0', -5294 silly cache add type: 'range' } -5295 silly addNamed readable-stream@>=1.0.33-1 <1.1.0-0 -5296 verbose addNamed ">=1.0.33-1 <1.1.0-0" is a valid semver range for readable-stream -5297 silly addNameRange { name: 'readable-stream', -5297 silly addNameRange range: '>=1.0.33-1 <1.1.0-0', -5297 silly addNameRange hasData: false } -5298 silly mapToRegistry name readable-stream -5299 silly mapToRegistry using default registry -5300 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5301 silly mapToRegistry data Result { -5301 silly mapToRegistry raw: 'readable-stream', -5301 silly mapToRegistry scope: null, -5301 silly mapToRegistry name: 'readable-stream', -5301 silly mapToRegistry rawSpec: '', -5301 silly mapToRegistry spec: 'latest', -5301 silly mapToRegistry type: 'tag' } -5302 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/readable-stream -5303 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/readable-stream not in flight; fetching -5304 silly cache add args [ 'xtend@>=4.0.0 <4.1.0-0', null ] -5305 verbose cache add spec xtend@>=4.0.0 <4.1.0-0 -5306 silly cache add parsed spec Result { -5306 silly cache add raw: 'xtend@>=4.0.0 <4.1.0-0', -5306 silly cache add scope: null, -5306 silly cache add name: 'xtend', -5306 silly cache add rawSpec: '>=4.0.0 <4.1.0-0', -5306 silly cache add spec: '>=4.0.0 <4.1.0-0', -5306 silly cache add type: 'range' } -5307 silly addNamed xtend@>=4.0.0 <4.1.0-0 -5308 verbose addNamed ">=4.0.0 <4.1.0-0" is a valid semver range for xtend -5309 silly addNameRange { name: 'xtend', range: '>=4.0.0 <4.1.0-0', hasData: false } -5310 silly mapToRegistry name xtend -5311 silly mapToRegistry using default registry -5312 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5313 silly mapToRegistry data Result { -5313 silly mapToRegistry raw: 'xtend', -5313 silly mapToRegistry scope: null, -5313 silly mapToRegistry name: 'xtend', -5313 silly mapToRegistry rawSpec: '', -5313 silly mapToRegistry spec: 'latest', -5313 silly mapToRegistry type: 'tag' } -5314 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/xtend -5315 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/xtend not in flight; fetching -5316 info preinstall glob-parent@2.0.0 -5317 info preinstall ansi-styles@2.2.1 -5318 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext/package.json -5319 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/package.json -5320 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp/package.json -5321 info preinstall supports-color@2.0.0 -5322 silly prepareForInstallMany adding exit-hook@^1.0.0 from restore-cursor dependencies -5323 silly prepareForInstallMany adding onetime@^1.0.0 from restore-cursor dependencies -5324 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/package.json -5325 silly install resolved [] -5326 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats -5327 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats -5328 verbose unlock done using /home/ruanyf/.tnpm/_locks/lodash-root-eb8554dced03e461.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash._root -5329 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/package.json -5330 silly gunzTarPerm extractEntry dist/rx.joinpatterns.min.js -5331 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles/package.json -5332 silly cache afterAdd buffer-shims@1.0.0 -5333 verbose afterAdd /home/ruanyf/.tnpm/buffer-shims/1.0.0/package/package.json not in flight; writing -5334 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5335 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color/package.json -5336 silly prepareForInstallMany adding number-is-nan@^1.0.0 from is-fullwidth-code-point dependencies -5337 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json -5338 silly prepareForInstallMany adding number-is-nan@^1.0.0 from code-point-at dependencies -5339 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/package.json -5340 silly prepareForInstallMany adding inflight@^1.0.4 from glob dependencies -5341 silly prepareForInstallMany adding inherits@2 from glob dependencies -5342 silly prepareForInstallMany adding minimatch@2 || 3 from glob dependencies -5343 silly prepareForInstallMany adding once@^1.3.0 from glob dependencies -5344 silly prepareForInstallMany adding path-is-absolute@^1.0.0 from glob dependencies -5345 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/package.json -5346 silly gunzTarPerm extractEntry dist/rx.all.compat.min.js -5347 silly gunzTarPerm extractEntry escapeRegExp.js -5348 silly gunzTarPerm extractEntry ceil.js -5349 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map/package.json -5350 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie/package.json -5351 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex/package.json -5352 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp/package.json -5353 info preinstall replace-ext@0.0.1 -5354 info linkStuff cli-width@2.1.0 -5355 silly linkStuff cli-width@2.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -5356 silly linkStuff cli-width@2.1.0 is part of a global install -5357 silly linkStuff cli-width@2.1.0 is installed into a global node_modules -5358 verbose get http://registry.npm.alibaba-inc.com/readable-stream not expired, no request -5359 silly addNameRange number 2 { name: 'readable-stream', -5359 silly addNameRange range: '>=1.0.33-1 <1.1.0-0', -5359 silly addNameRange hasData: true } -5360 silly addNameRange versions [ 'readable-stream', -5360 silly addNameRange [ '2.1.4', -5360 silly addNameRange '2.1.3', -5360 silly addNameRange '2.1.2', -5360 silly addNameRange '2.1.1', -5360 silly addNameRange '2.1.0', -5360 silly addNameRange '1.1.14', -5360 silly addNameRange '1.0.34', -5360 silly addNameRange '2.0.6', -5360 silly addNameRange '2.0.5', -5360 silly addNameRange '2.0.4', -5360 silly addNameRange '2.0.3', -5360 silly addNameRange '2.0.2', -5360 silly addNameRange '2.0.1', -5360 silly addNameRange '2.0.0', -5360 silly addNameRange '1.0.33', -5360 silly addNameRange '1.0.33-2', -5360 silly addNameRange '1.0.33-1', -5360 silly addNameRange '1.0.32-1', -5360 silly addNameRange '1.0.32', -5360 silly addNameRange '1.1.13', -5360 silly addNameRange '1.0.31', -5360 silly addNameRange '1.1.13-1', -5360 silly addNameRange '1.0.27-1', -5360 silly addNameRange '1.1.12-1', -5360 silly addNameRange '1.0.26-4', -5360 silly addNameRange '1.0.26-3', -5360 silly addNameRange '1.1.12', -5360 silly addNameRange '1.0.26-2', -5360 silly addNameRange '1.1.11-1', -5360 silly addNameRange '1.0.26-1', -5360 silly addNameRange '1.0.26', -5360 silly addNameRange '1.1.11', -5360 silly addNameRange '1.0.25-1', -5360 silly addNameRange '1.0.25', -5360 silly addNameRange '1.1.10', -5360 silly addNameRange '1.0.24', -5360 silly addNameRange '1.1.9', -5360 silly addNameRange '1.1.8', -5360 silly addNameRange '1.1.7', -5360 silly addNameRange '1.0.17', -5360 silly addNameRange '1.0.15', -5360 silly addNameRange '1.0.2', -5360 silly addNameRange '1.0.1', -5360 silly addNameRange '1.0.0', -5360 silly addNameRange '0.3.1', -5360 silly addNameRange '0.3.0', -5360 silly addNameRange '0.2.0', -5360 silly addNameRange '0.1.0', -5360 silly addNameRange '0.0.4', -5360 silly addNameRange '0.0.3', -5360 silly addNameRange '0.0.2', -5360 silly addNameRange '0.0.1' ] ] -5361 silly addNamed readable-stream@1.0.34 -5362 verbose addNamed "1.0.34" is a plain semver version for readable-stream -5363 verbose get http://registry.npm.alibaba-inc.com/xtend not expired, no request -5364 silly addNameRange number 2 { name: 'xtend', range: '>=4.0.0 <4.1.0-0', hasData: true } -5365 silly addNameRange versions [ 'xtend', -5365 silly addNameRange [ '4.0.1', -5365 silly addNameRange '4.0.0', -5365 silly addNameRange '3.0.0', -5365 silly addNameRange '2.2.0', -5365 silly addNameRange '2.1.2', -5365 silly addNameRange '2.1.1', -5365 silly addNameRange '2.0.6', -5365 silly addNameRange '2.0.5', -5365 silly addNameRange '2.0.4', -5365 silly addNameRange '2.0.3', -5365 silly addNameRange '2.0.2', -5365 silly addNameRange '2.0.1', -5365 silly addNameRange '1.0.3', -5365 silly addNameRange '1.0.2', -5365 silly addNameRange '1.0.1', -5365 silly addNameRange '1.0.0' ] ] -5366 silly addNamed xtend@4.0.1 -5367 verbose addNamed "4.0.1" is a plain semver version for xtend -5368 silly cache afterAdd once@1.3.3 -5369 verbose afterAdd /home/ruanyf/.tnpm/once/1.3.3/package/package.json not in flight; writing -5370 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5371 silly gunzTarPerm extractEntry index.js -5372 silly gunzTarPerm extractEntry .travis.yml -5373 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign/package.json -5374 info linkStuff clone-stats@0.0.1 -5375 silly linkStuff clone-stats@0.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules as its parent node_modules -5376 silly linkStuff clone-stats@0.0.1 is part of a global install -5377 silly linkStuff clone-stats@0.0.1 is installed into a global node_modules -5378 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext/package.json -5379 silly prepareForInstallMany adding ansi-regex@^2.0.0 from has-ansi dependencies -5380 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/package.json -5381 http 304 http://registry.npm.alibaba-inc.com/is-stream -5382 verbose headers { server: 'Tengine', -5382 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -5382 verbose headers connection: 'keep-alive', -5382 verbose headers etag: '"1537-KUcGKAXBFuKhGNLVFzDRhQ"', -5382 verbose headers 'x-readtime': '19' } -5383 silly get cb [ 304, -5383 silly get { server: 'Tengine', -5383 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -5383 silly get connection: 'keep-alive', -5383 silly get etag: '"1537-KUcGKAXBFuKhGNLVFzDRhQ"', -5383 silly get 'x-readtime': '19' } ] -5384 verbose etag http://registry.npm.alibaba-inc.com/is-stream from cache -5385 verbose get saving is-stream to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-stream/.cache.json -5386 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5387 http 304 http://registry.npm.alibaba-inc.com/json-stable-stringify -5388 verbose headers { server: 'Tengine', -5388 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -5388 verbose headers connection: 'keep-alive', -5388 verbose headers etag: '"3ced-ANb110mqWnC+hIe62SGyWg"', -5388 verbose headers 'x-readtime': '20' } -5389 silly get cb [ 304, -5389 silly get { server: 'Tengine', -5389 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -5389 silly get connection: 'keep-alive', -5389 silly get etag: '"3ced-ANb110mqWnC+hIe62SGyWg"', -5389 silly get 'x-readtime': '20' } ] -5390 verbose etag http://registry.npm.alibaba-inc.com/json-stable-stringify from cache -5391 verbose get saving json-stable-stringify to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/json-stable-stringify/.cache.json -5392 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5393 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp/package.json -5394 verbose linkBins cli-width@2.1.0 -5395 verbose linkMans cli-width@2.1.0 -5396 verbose rebuildBundles cli-width@2.1.0 -5397 info linkStuff lodash.keys@4.0.7 -5398 silly linkStuff lodash.keys@4.0.7 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules as its parent node_modules -5399 silly linkStuff lodash.keys@4.0.7 is part of a global install -5400 silly linkStuff lodash.keys@4.0.7 is installed into a global node_modules -5401 http 304 http://registry.npm.alibaba-inc.com/extend-shallow -5402 verbose headers { server: 'Tengine', -5402 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -5402 verbose headers connection: 'keep-alive', -5402 verbose headers etag: '"49e6-GE7Yn4YonbyD9fuWi6qa1Q"', -5402 verbose headers 'x-readtime': '26' } -5403 silly get cb [ 304, -5403 silly get { server: 'Tengine', -5403 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -5403 silly get connection: 'keep-alive', -5403 silly get etag: '"49e6-GE7Yn4YonbyD9fuWi6qa1Q"', -5403 silly get 'x-readtime': '26' } ] -5404 verbose etag http://registry.npm.alibaba-inc.com/extend-shallow from cache -5405 verbose get saving extend-shallow to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/extend-shallow/.cache.json -5406 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5407 silly prepareForInstallMany adding is-glob@^2.0.0 from glob-parent dependencies -5408 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/package.json -5409 verbose afterAdd /home/ruanyf/.tnpm/buffer-shims/1.0.0/package/package.json written -5410 silly install resolved [ { name: 'isarray', -5410 silly install resolved description: 'Array#isArray for older browsers', -5410 silly install resolved version: '1.0.0', -5410 silly install resolved repository: -5410 silly install resolved { type: 'git', -5410 silly install resolved url: 'git://github.com/juliangruber/isarray.git' }, -5410 silly install resolved homepage: 'https://github.com/juliangruber/isarray', -5410 silly install resolved main: 'index.js', -5410 silly install resolved dependencies: {}, -5410 silly install resolved devDependencies: { tape: '~2.13.4' }, -5410 silly install resolved keywords: [ 'browser', 'isarray', 'array' ], -5410 silly install resolved author: -5410 silly install resolved { name: 'Julian Gruber', -5410 silly install resolved email: 'mail@juliangruber.com', -5410 silly install resolved url: 'http://juliangruber.com' }, -5410 silly install resolved license: 'MIT', -5410 silly install resolved testling: { files: 'test.js', browsers: [Object] }, -5410 silly install resolved scripts: { test: 'tape test.js' }, -5410 silly install resolved gitHead: '2a23a281f369e9ae06394c0fb4d2381355a6ba33', -5410 silly install resolved bugs: { url: 'https://github.com/juliangruber/isarray/issues' }, -5410 silly install resolved _id: 'isarray@1.0.0', -5410 silly install resolved _shasum: 'bb935d48582cba168c06834957a54a3e07124f11', -5410 silly install resolved _from: 'isarray@>=1.0.0 <1.1.0', -5410 silly install resolved _npmVersion: '3.3.12', -5410 silly install resolved _nodeVersion: '5.1.0', -5410 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, -5410 silly install resolved dist: -5410 silly install resolved { shasum: 'bb935d48582cba168c06834957a54a3e07124f11', -5410 silly install resolved size: 2021, -5410 silly install resolved noattachment: false, -5410 silly install resolved key: 'isarray/-/isarray-1.0.0.tgz', -5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz' }, -5410 silly install resolved maintainers: [ [Object] ], -5410 silly install resolved directories: {}, -5410 silly install resolved publish_time: 1449741907067, -5410 silly install resolved _cnpm_publish_time: 1449741907067, -5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz', -5410 silly install resolved readme: 'ERROR: No README data found!' }, -5410 silly install resolved { name: 'inherits', -5410 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', -5410 silly install resolved version: '2.0.1', -5410 silly install resolved keywords: -5410 silly install resolved [ 'inheritance', -5410 silly install resolved 'class', -5410 silly install resolved 'klass', -5410 silly install resolved 'oop', -5410 silly install resolved 'object-oriented', -5410 silly install resolved 'inherits', -5410 silly install resolved 'browser', -5410 silly install resolved 'browserify' ], -5410 silly install resolved main: './inherits.js', -5410 silly install resolved browser: './inherits_browser.js', -5410 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, -5410 silly install resolved license: 'ISC', -5410 silly install resolved scripts: { test: 'node test' }, -5410 silly install resolved readmeFilename: 'README.md', -5410 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, -5410 silly install resolved _id: 'inherits@2.0.1', -5410 silly install resolved dist: -5410 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -5410 silly install resolved size: 2122, -5410 silly install resolved noattachment: false, -5410 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', -5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, -5410 silly install resolved _from: 'inherits@>=2.0.1 <2.1.0', -5410 silly install resolved _npmVersion: '1.3.8', -5410 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -5410 silly install resolved maintainers: [ [Object] ], -5410 silly install resolved directories: {}, -5410 silly install resolved publish_time: 1376950220463, -5410 silly install resolved _cnpm_publish_time: 1376950220463, -5410 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', -5410 silly install resolved readme: 'ERROR: No README data found!', -5410 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' }, -5410 silly install resolved { name: 'string_decoder', -5410 silly install resolved version: '0.10.31', -5410 silly install resolved description: 'The string_decoder module from Node core', -5410 silly install resolved main: 'index.js', -5410 silly install resolved dependencies: {}, -5410 silly install resolved devDependencies: { tap: '~0.4.8' }, -5410 silly install resolved scripts: { test: 'tap test/simple/*.js' }, -5410 silly install resolved repository: -5410 silly install resolved { type: 'git', -5410 silly install resolved url: 'git://github.com/rvagg/string_decoder.git' }, -5410 silly install resolved homepage: 'https://github.com/rvagg/string_decoder', -5410 silly install resolved keywords: [ 'string', 'decoder', 'browser', 'browserify' ], -5410 silly install resolved license: 'MIT', -5410 silly install resolved gitHead: 'd46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0', -5410 silly install resolved bugs: { url: 'https://github.com/rvagg/string_decoder/issues' }, -5410 silly install resolved _id: 'string_decoder@0.10.31', -5410 silly install resolved _shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', -5410 silly install resolved _from: 'string_decoder@>=0.10.0 <0.11.0', -5410 silly install resolved _npmVersion: '1.4.23', -5410 silly install resolved _npmUser: { name: 'rvagg', email: 'rod@vagg.org' }, -5410 silly install resolved maintainers: [ [Object], [Object] ], -5410 silly install resolved dist: -5410 silly install resolved { shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', -5410 silly install resolved size: 3608, -5410 silly install resolved noattachment: false, -5410 silly install resolved key: 'string_decoder/-/string_decoder-0.10.31.tgz', -5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz' }, -5410 silly install resolved directories: {}, -5410 silly install resolved publish_time: 1408767919329, -5410 silly install resolved _cnpm_publish_time: 1408767919329, -5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz', -5410 silly install resolved readme: 'ERROR: No README data found!' }, -5410 silly install resolved { name: 'process-nextick-args', -5410 silly install resolved version: '1.0.7', -5410 silly install resolved description: 'process.nextTick but always with args', -5410 silly install resolved main: 'index.js', -5410 silly install resolved scripts: { test: 'node test.js' }, -5410 silly install resolved repository: -5410 silly install resolved { type: 'git', -5410 silly install resolved url: 'git+https://github.com/calvinmetcalf/process-nextick-args.git' }, -5410 silly install resolved author: '', -5410 silly install resolved license: 'MIT', -5410 silly install resolved bugs: { url: 'https://github.com/calvinmetcalf/process-nextick-args/issues' }, -5410 silly install resolved homepage: 'https://github.com/calvinmetcalf/process-nextick-args', -5410 silly install resolved devDependencies: { tap: '~0.2.6' }, -5410 silly install resolved gitHead: '5c00899ab01dd32f93ad4b5743da33da91404f39', -5410 silly install resolved _id: 'process-nextick-args@1.0.7', -5410 silly install resolved _shasum: '150e20b756590ad3f91093f25a4f2ad8bff30ba3', -5410 silly install resolved _from: 'process-nextick-args@>=1.0.6 <1.1.0', -5410 silly install resolved _npmVersion: '3.8.6', -5410 silly install resolved _nodeVersion: '5.11.0', -5410 silly install resolved _npmUser: { name: 'cwmma', email: 'calvin.metcalf@gmail.com' }, -5410 silly install resolved dist: -5410 silly install resolved { shasum: '150e20b756590ad3f91093f25a4f2ad8bff30ba3', -5410 silly install resolved size: 1923, -5410 silly install resolved noattachment: false, -5410 silly install resolved key: 'process-nextick-args/-/process-nextick-args-1.0.7.tgz', -5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/process-nextick-args/download/process-nextick-args-1.0.7.tgz' }, -5410 silly install resolved maintainers: [ [Object] ], -5410 silly install resolved _npmOperationalInternal: -5410 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -5410 silly install resolved tmp: 'tmp/process-nextick-args-1.0.7.tgz_1462394251778_0.36989671061746776' }, -5410 silly install resolved directories: {}, -5410 silly install resolved publish_time: 1462394254467, -5410 silly install resolved _cnpm_publish_time: 1462394254467, -5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/process-nextick-args/download/process-nextick-args-1.0.7.tgz', -5410 silly install resolved readme: 'ERROR: No README data found!' }, -5410 silly install resolved { name: 'core-util-is', -5410 silly install resolved version: '1.0.2', -5410 silly install resolved description: 'The `util.is*` functions introduced in Node v0.12.', -5410 silly install resolved main: 'lib/util.js', -5410 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/core-util-is.git' }, -5410 silly install resolved keywords: -5410 silly install resolved [ 'util', -5410 silly install resolved 'isBuffer', -5410 silly install resolved 'isArray', -5410 silly install resolved 'isNumber', -5410 silly install resolved 'isString', -5410 silly install resolved 'isRegExp', -5410 silly install resolved 'isThis', -5410 silly install resolved 'isThat', -5410 silly install resolved 'polyfill' ], -5410 silly install resolved author: -5410 silly install resolved { name: 'Isaac Z. Schlueter', -5410 silly install resolved email: 'i@izs.me', -5410 silly install resolved url: 'http://blog.izs.me/' }, -5410 silly install resolved license: 'MIT', -5410 silly install resolved bugs: { url: 'https://github.com/isaacs/core-util-is/issues' }, -5410 silly install resolved scripts: { test: 'tap test.js' }, -5410 silly install resolved devDependencies: { tap: '^2.3.0' }, -5410 silly install resolved gitHead: 'a177da234df5638b363ddc15fa324619a38577c8', -5410 silly install resolved homepage: 'https://github.com/isaacs/core-util-is#readme', -5410 silly install resolved _id: 'core-util-is@1.0.2', -5410 silly install resolved _shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', -5410 silly install resolved _from: 'core-util-is@>=1.0.0 <1.1.0', -5410 silly install resolved _npmVersion: '3.3.2', -5410 silly install resolved _nodeVersion: '4.0.0', -5410 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -5410 silly install resolved dist: -5410 silly install resolved { shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', -5410 silly install resolved size: 7016, -5410 silly install resolved noattachment: false, -5410 silly install resolved key: 'core-util-is/-/core-util-is-1.0.2.tgz', -5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz' }, -5410 silly install resolved maintainers: [ [Object] ], -5410 silly install resolved directories: {}, -5410 silly install resolved publish_time: 1447979853081, -5410 silly install resolved _cnpm_publish_time: 1447979853081, -5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz', -5410 silly install resolved readme: 'ERROR: No README data found!' }, -5410 silly install resolved { name: 'util-deprecate', -5410 silly install resolved version: '1.0.2', -5410 silly install resolved description: 'The Node.js `util.deprecate()` function with browser support', -5410 silly install resolved main: 'node.js', -5410 silly install resolved browser: 'browser.js', -5410 silly install resolved scripts: { test: 'echo "Error: no test specified" && exit 1' }, -5410 silly install resolved repository: -5410 silly install resolved { type: 'git', -5410 silly install resolved url: 'git://github.com/TooTallNate/util-deprecate.git' }, -5410 silly install resolved keywords: [ 'util', 'deprecate', 'browserify', 'browser', 'node' ], -5410 silly install resolved author: -5410 silly install resolved { name: 'Nathan Rajlich', -5410 silly install resolved email: 'nathan@tootallnate.net', -5410 silly install resolved url: 'http://n8.io/' }, -5410 silly install resolved license: 'MIT', -5410 silly install resolved bugs: { url: 'https://github.com/TooTallNate/util-deprecate/issues' }, -5410 silly install resolved homepage: 'https://github.com/TooTallNate/util-deprecate', -5410 silly install resolved gitHead: '475fb6857cd23fafff20c1be846c1350abf8e6d4', -5410 silly install resolved _id: 'util-deprecate@1.0.2', -5410 silly install resolved _shasum: '450d4dc9fa70de732762fbd2d4a28981419a0ccf', -5410 silly install resolved _from: 'util-deprecate@>=1.0.1 <1.1.0', -5410 silly install resolved _npmVersion: '2.14.4', -5410 silly install resolved _nodeVersion: '4.1.2', -5410 silly install resolved _npmUser: { name: 'tootallnate', email: 'nathan@tootallnate.net' }, -5410 silly install resolved maintainers: [ [Object] ], -5410 silly install resolved dist: -5410 silly install resolved { shasum: '450d4dc9fa70de732762fbd2d4a28981419a0ccf', -5410 silly install resolved size: 2246, -5410 silly install resolved noattachment: false, -5410 silly install resolved key: 'util-deprecate/-/util-deprecate-1.0.2.tgz', -5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz' }, -5410 silly install resolved directories: {}, -5410 silly install resolved publish_time: 1444243060665, -5410 silly install resolved _cnpm_publish_time: 1444243060665, -5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz', -5410 silly install resolved readme: 'ERROR: No README data found!' }, -5410 silly install resolved { name: 'buffer-shims', -5410 silly install resolved version: '1.0.0', -5410 silly install resolved description: 'some shims for node buffers', -5410 silly install resolved main: 'index.js', -5410 silly install resolved scripts: { test: 'tape test/*.js' }, -5410 silly install resolved files: [ 'index.js' ], -5410 silly install resolved license: 'MIT', -5410 silly install resolved devDependencies: { tape: '^4.5.1' }, -5410 silly install resolved repository: -5410 silly install resolved { type: 'git', -5410 silly install resolved url: 'git@github.com:calvinmetcalf/buffer-shims.git' }, -5410 silly install resolved gitHead: 'ea89b3857ab5b8203957922a84e9a48cf4c47e0a', -5410 silly install resolved bugs: { url: 'https://github.com/calvinmetcalf/buffer-shims/issues' }, -5410 silly install resolved _id: 'buffer-shims@1.0.0', -5410 silly install resolved _shasum: '9978ce317388c649ad8793028c3477ef044a8b51', -5410 silly install resolved _from: 'buffer-shims@>=1.0.0 <2.0.0', -5410 silly install resolved _npmVersion: '3.8.6', -5410 silly install resolved _nodeVersion: '5.11.0', -5410 silly install resolved _npmUser: { name: 'cwmma', email: 'calvin.metcalf@gmail.com' }, -5410 silly install resolved dist: -5410 silly install resolved { shasum: '9978ce317388c649ad8793028c3477ef044a8b51', -5410 silly install resolved size: 2156, -5410 silly install resolved noattachment: false, -5410 silly install resolved key: 'buffer-shims/-/buffer-shims-1.0.0.tgz', -5410 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz' }, -5410 silly install resolved maintainers: [ [Object] ], -5410 silly install resolved _npmOperationalInternal: -5410 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -5410 silly install resolved tmp: 'tmp/buffer-shims-1.0.0.tgz_1462560889323_0.8640750856138766' }, -5410 silly install resolved directories: {}, -5410 silly install resolved publish_time: 1462560891096, -5410 silly install resolved _cnpm_publish_time: 1462560891096, -5410 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/buffer-shims/download/buffer-shims-1.0.0.tgz' } ] -5411 info install isarray@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -5412 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -5413 info install string_decoder@0.10.31 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -5414 info install process-nextick-args@1.0.7 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -5415 info install core-util-is@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -5416 info install util-deprecate@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -5417 info install buffer-shims@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -5418 info installOne isarray@1.0.0 -5419 verbose installOne of isarray to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing -5420 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5421 info installOne inherits@2.0.1 -5422 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing -5423 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5424 info installOne string_decoder@0.10.31 -5425 verbose installOne of string_decoder to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing -5426 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5427 info installOne process-nextick-args@1.0.7 -5428 verbose installOne of process-nextick-args to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing -5429 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5430 info installOne core-util-is@1.0.2 -5431 verbose installOne of core-util-is to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing -5432 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5433 info installOne util-deprecate@1.0.2 -5434 verbose installOne of util-deprecate to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing -5435 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5436 info installOne buffer-shims@1.0.0 -5437 verbose installOne of buffer-shims to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream not in flight; installing -5438 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5439 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles/package.json -5440 info preinstall convert-source-map@1.2.0 -5441 info install cli-width@2.1.0 -5442 silly cache add args [ 'exit-hook@^1.0.0', null ] -5443 verbose cache add spec exit-hook@^1.0.0 -5444 silly cache add parsed spec Result { -5444 silly cache add raw: 'exit-hook@^1.0.0', -5444 silly cache add scope: null, -5444 silly cache add name: 'exit-hook', -5444 silly cache add rawSpec: '^1.0.0', -5444 silly cache add spec: '>=1.0.0 <2.0.0', -5444 silly cache add type: 'range' } -5445 silly addNamed exit-hook@>=1.0.0 <2.0.0 -5446 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for exit-hook -5447 silly addNameRange { name: 'exit-hook', range: '>=1.0.0 <2.0.0', hasData: false } -5448 silly mapToRegistry name exit-hook -5449 silly mapToRegistry using default registry -5450 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5451 silly mapToRegistry data Result { -5451 silly mapToRegistry raw: 'exit-hook', -5451 silly mapToRegistry scope: null, -5451 silly mapToRegistry name: 'exit-hook', -5451 silly mapToRegistry rawSpec: '', -5451 silly mapToRegistry spec: 'latest', -5451 silly mapToRegistry type: 'tag' } -5452 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/exit-hook -5453 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/exit-hook not in flight; fetching -5454 silly cache add args [ 'onetime@^1.0.0', null ] -5455 verbose cache add spec onetime@^1.0.0 -5456 silly cache add parsed spec Result { -5456 silly cache add raw: 'onetime@^1.0.0', -5456 silly cache add scope: null, -5456 silly cache add name: 'onetime', -5456 silly cache add rawSpec: '^1.0.0', -5456 silly cache add spec: '>=1.0.0 <2.0.0', -5456 silly cache add type: 'range' } -5457 silly addNamed onetime@>=1.0.0 <2.0.0 -5458 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for onetime -5459 silly addNameRange { name: 'onetime', range: '>=1.0.0 <2.0.0', hasData: false } -5460 silly mapToRegistry name onetime -5461 silly mapToRegistry using default registry -5462 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5463 silly mapToRegistry data Result { -5463 silly mapToRegistry raw: 'onetime', -5463 silly mapToRegistry scope: null, -5463 silly mapToRegistry name: 'onetime', -5463 silly mapToRegistry rawSpec: '', -5463 silly mapToRegistry spec: 'latest', -5463 silly mapToRegistry type: 'tag' } -5464 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/onetime -5465 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/onetime not in flight; fetching -5466 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color/package.json -5467 verbose linkBins clone-stats@0.0.1 -5468 verbose linkMans clone-stats@0.0.1 -5469 verbose rebuildBundles clone-stats@0.0.1 -5470 verbose lock using /home/ruanyf/.tnpm/_locks/isarray-3f8fc3c76d274bae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray -5471 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-f6ef6acc91466ebe.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits -5472 verbose lock using /home/ruanyf/.tnpm/_locks/string-decoder-41a36a35d7546451.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder -5473 verbose lock using /home/ruanyf/.tnpm/_locks/process-nextick-args-53c0069f7053538d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args -5474 verbose lock using /home/ruanyf/.tnpm/_locks/core-util-is-fd2215fcc21f4f15.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is -5475 verbose lock using /home/ruanyf/.tnpm/_locks/util-deprecate-b30e99e036e007f1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate -5476 verbose lock using /home/ruanyf/.tnpm/_locks/buffer-shims-8211e13276fdb335.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims -5477 verbose afterAdd /home/ruanyf/.tnpm/once/1.3.3/package/package.json written -5478 silly install resolved [ { name: 'once', -5478 silly install resolved version: '1.3.3', -5478 silly install resolved description: 'Run a function exactly one time', -5478 silly install resolved main: 'once.js', -5478 silly install resolved directories: { test: 'test' }, -5478 silly install resolved dependencies: { wrappy: '1' }, -5478 silly install resolved devDependencies: { tap: '^1.2.0' }, -5478 silly install resolved scripts: { test: 'tap test/*.js' }, -5478 silly install resolved files: [ 'once.js' ], -5478 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/once.git' }, -5478 silly install resolved keywords: [ 'once', 'function', 'one', 'single' ], -5478 silly install resolved author: -5478 silly install resolved { name: 'Isaac Z. Schlueter', -5478 silly install resolved email: 'i@izs.me', -5478 silly install resolved url: 'http://blog.izs.me/' }, -5478 silly install resolved license: 'ISC', -5478 silly install resolved gitHead: '2ad558657e17fafd24803217ba854762842e4178', -5478 silly install resolved bugs: { url: 'https://github.com/isaacs/once/issues' }, -5478 silly install resolved homepage: 'https://github.com/isaacs/once#readme', -5478 silly install resolved _id: 'once@1.3.3', -5478 silly install resolved _shasum: 'b2e261557ce4c314ec8304f3fa82663e4297ca20', -5478 silly install resolved _from: 'once@>=1.3.0 <1.4.0', -5478 silly install resolved _npmVersion: '3.3.2', -5478 silly install resolved _nodeVersion: '4.0.0', -5478 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -5478 silly install resolved dist: -5478 silly install resolved { shasum: 'b2e261557ce4c314ec8304f3fa82663e4297ca20', -5478 silly install resolved size: 1573, -5478 silly install resolved noattachment: false, -5478 silly install resolved key: 'once/-/once-1.3.3.tgz', -5478 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/once/download/once-1.3.3.tgz' }, -5478 silly install resolved maintainers: [ [Object] ], -5478 silly install resolved publish_time: 1448055914765, -5478 silly install resolved _cnpm_publish_time: 1448055914765, -5478 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/once/download/once-1.3.3.tgz', -5478 silly install resolved readme: 'ERROR: No README data found!' } ] -5479 info install once@1.3.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -5480 info installOne once@1.3.3 -5481 verbose installOne of once to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream not in flight; installing -5482 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5483 silly install resolved [] -5484 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex -5485 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex -5486 silly install resolved [] -5487 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp -5488 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp -5489 silly install resolved [] -5490 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie -5491 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie -5492 info install clone-stats@0.0.1 -5493 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map/package.json -5494 info postinstall cli-width@2.1.0 -5495 verbose linkBins lodash.keys@4.0.7 -5496 verbose linkMans lodash.keys@4.0.7 -5497 verbose rebuildBundles lodash.keys@4.0.7 -5498 silly cache add args [ 'number-is-nan@^1.0.0', null ] -5499 verbose cache add spec number-is-nan@^1.0.0 -5500 silly cache add args [ 'number-is-nan@^1.0.0', null ] -5501 verbose cache add spec number-is-nan@^1.0.0 -5502 silly cache add parsed spec Result { -5502 silly cache add raw: 'number-is-nan@^1.0.0', -5502 silly cache add scope: null, -5502 silly cache add name: 'number-is-nan', -5502 silly cache add rawSpec: '^1.0.0', -5502 silly cache add spec: '>=1.0.0 <2.0.0', -5502 silly cache add type: 'range' } -5503 silly addNamed number-is-nan@>=1.0.0 <2.0.0 -5504 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for number-is-nan -5505 silly addNameRange { name: 'number-is-nan', -5505 silly addNameRange range: '>=1.0.0 <2.0.0', -5505 silly addNameRange hasData: false } -5506 silly mapToRegistry name number-is-nan -5507 silly mapToRegistry using default registry -5508 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5509 silly mapToRegistry data Result { -5509 silly mapToRegistry raw: 'number-is-nan', -5509 silly mapToRegistry scope: null, -5509 silly mapToRegistry name: 'number-is-nan', -5509 silly mapToRegistry rawSpec: '', -5509 silly mapToRegistry spec: 'latest', -5509 silly mapToRegistry type: 'tag' } -5510 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/number-is-nan -5511 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/number-is-nan not in flight; fetching -5512 silly cache add parsed spec Result { -5512 silly cache add raw: 'number-is-nan@^1.0.0', -5512 silly cache add scope: null, -5512 silly cache add name: 'number-is-nan', -5512 silly cache add rawSpec: '^1.0.0', -5512 silly cache add spec: '>=1.0.0 <2.0.0', -5512 silly cache add type: 'range' } -5513 silly addNamed number-is-nan@>=1.0.0 <2.0.0 -5514 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for number-is-nan -5515 silly addNameRange { name: 'number-is-nan', -5515 silly addNameRange range: '>=1.0.0 <2.0.0', -5515 silly addNameRange hasData: false } -5516 silly mapToRegistry name number-is-nan -5517 silly mapToRegistry using default registry -5518 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5519 silly mapToRegistry data Result { -5519 silly mapToRegistry raw: 'number-is-nan', -5519 silly mapToRegistry scope: null, -5519 silly mapToRegistry name: 'number-is-nan', -5519 silly mapToRegistry rawSpec: '', -5519 silly mapToRegistry spec: 'latest', -5519 silly mapToRegistry type: 'tag' } -5520 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/number-is-nan -5521 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/number-is-nan already in flight; waiting -5522 silly cache afterAdd xtend@4.0.1 -5523 verbose afterAdd /home/ruanyf/.tnpm/xtend/4.0.1/package/package.json not in flight; writing -5524 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5525 silly install write writing isarray 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray -5526 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits -5527 silly install write writing string_decoder 0.10.31 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder -5528 silly install write writing process-nextick-args 1.0.7 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args -5529 silly install write writing core-util-is 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is -5530 silly install write writing util-deprecate 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate -5531 silly install write writing buffer-shims 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims -5532 silly cache afterAdd readable-stream@1.0.34 -5533 verbose afterAdd /home/ruanyf/.tnpm/readable-stream/1.0.34/package/package.json not in flight; writing -5534 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5535 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/package.json -5536 silly gunzTarPerm extractEntry dist/rx.js -5537 info install lodash.keys@4.0.7 -5538 silly install resolved [] -5539 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign -5540 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign -5541 silly cache add args [ 'inflight@^1.0.4', null ] -5542 verbose cache add spec inflight@^1.0.4 -5543 silly cache add parsed spec Result { -5543 silly cache add raw: 'inflight@^1.0.4', -5543 silly cache add scope: null, -5543 silly cache add name: 'inflight', -5543 silly cache add rawSpec: '^1.0.4', -5543 silly cache add spec: '>=1.0.4 <2.0.0', -5543 silly cache add type: 'range' } -5544 silly addNamed inflight@>=1.0.4 <2.0.0 -5545 verbose addNamed ">=1.0.4 <2.0.0" is a valid semver range for inflight -5546 silly addNameRange { name: 'inflight', range: '>=1.0.4 <2.0.0', hasData: false } -5547 silly mapToRegistry name inflight -5548 silly mapToRegistry using default registry -5549 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5550 silly mapToRegistry data Result { -5550 silly mapToRegistry raw: 'inflight', -5550 silly mapToRegistry scope: null, -5550 silly mapToRegistry name: 'inflight', -5550 silly mapToRegistry rawSpec: '', -5550 silly mapToRegistry spec: 'latest', -5550 silly mapToRegistry type: 'tag' } -5551 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inflight -5552 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inflight not in flight; fetching -5553 silly cache add args [ 'inherits@2', null ] -5554 verbose cache add spec inherits@2 -5555 silly cache add parsed spec Result { -5555 silly cache add raw: 'inherits@2', -5555 silly cache add scope: null, -5555 silly cache add name: 'inherits', -5555 silly cache add rawSpec: '2', -5555 silly cache add spec: '>=2.0.0 <3.0.0', -5555 silly cache add type: 'range' } -5556 silly addNamed inherits@>=2.0.0 <3.0.0 -5557 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for inherits -5558 silly addNameRange { name: 'inherits', range: '>=2.0.0 <3.0.0', hasData: false } -5559 silly mapToRegistry name inherits -5560 silly mapToRegistry using default registry -5561 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5562 silly mapToRegistry data Result { -5562 silly mapToRegistry raw: 'inherits', -5562 silly mapToRegistry scope: null, -5562 silly mapToRegistry name: 'inherits', -5562 silly mapToRegistry rawSpec: '', -5562 silly mapToRegistry spec: 'latest', -5562 silly mapToRegistry type: 'tag' } -5563 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits -5564 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching -5565 silly cache add args [ 'minimatch@2 || 3', null ] -5566 verbose cache add spec minimatch@2 || 3 -5567 silly cache add parsed spec Result { -5567 silly cache add raw: 'minimatch@2 || 3', -5567 silly cache add scope: null, -5567 silly cache add name: 'minimatch', -5567 silly cache add rawSpec: '2 || 3', -5567 silly cache add spec: '>=2.0.0 <3.0.0||>=3.0.0 <4.0.0', -5567 silly cache add type: 'range' } -5568 silly addNamed minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0 -5569 verbose addNamed ">=2.0.0 <3.0.0||>=3.0.0 <4.0.0" is a valid semver range for minimatch -5570 silly addNameRange { name: 'minimatch', -5570 silly addNameRange range: '>=2.0.0 <3.0.0||>=3.0.0 <4.0.0', -5570 silly addNameRange hasData: false } -5571 silly mapToRegistry name minimatch -5572 silly mapToRegistry using default registry -5573 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5574 silly mapToRegistry data Result { -5574 silly mapToRegistry raw: 'minimatch', -5574 silly mapToRegistry scope: null, -5574 silly mapToRegistry name: 'minimatch', -5574 silly mapToRegistry rawSpec: '', -5574 silly mapToRegistry spec: 'latest', -5574 silly mapToRegistry type: 'tag' } -5575 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/minimatch -5576 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/minimatch not in flight; fetching -5577 silly cache add args [ 'once@^1.3.0', null ] -5578 verbose cache add spec once@^1.3.0 -5579 silly cache add parsed spec Result { -5579 silly cache add raw: 'once@^1.3.0', -5579 silly cache add scope: null, -5579 silly cache add name: 'once', -5579 silly cache add rawSpec: '^1.3.0', -5579 silly cache add spec: '>=1.3.0 <2.0.0', -5579 silly cache add type: 'range' } -5580 silly addNamed once@>=1.3.0 <2.0.0 -5581 verbose addNamed ">=1.3.0 <2.0.0" is a valid semver range for once -5582 silly addNameRange { name: 'once', range: '>=1.3.0 <2.0.0', hasData: false } -5583 silly mapToRegistry name once -5584 silly mapToRegistry using default registry -5585 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5586 silly mapToRegistry data Result { -5586 silly mapToRegistry raw: 'once', -5586 silly mapToRegistry scope: null, -5586 silly mapToRegistry name: 'once', -5586 silly mapToRegistry rawSpec: '', -5586 silly mapToRegistry spec: 'latest', -5586 silly mapToRegistry type: 'tag' } -5587 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/once -5588 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/once not in flight; fetching -5589 silly cache add args [ 'path-is-absolute@^1.0.0', null ] -5590 verbose cache add spec path-is-absolute@^1.0.0 -5591 silly cache add parsed spec Result { -5591 silly cache add raw: 'path-is-absolute@^1.0.0', -5591 silly cache add scope: null, -5591 silly cache add name: 'path-is-absolute', -5591 silly cache add rawSpec: '^1.0.0', -5591 silly cache add spec: '>=1.0.0 <2.0.0', -5591 silly cache add type: 'range' } -5592 silly addNamed path-is-absolute@>=1.0.0 <2.0.0 -5593 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for path-is-absolute -5594 silly addNameRange { name: 'path-is-absolute', -5594 silly addNameRange range: '>=1.0.0 <2.0.0', -5594 silly addNameRange hasData: false } -5595 silly mapToRegistry name path-is-absolute -5596 silly mapToRegistry using default registry -5597 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5598 silly mapToRegistry data Result { -5598 silly mapToRegistry raw: 'path-is-absolute', -5598 silly mapToRegistry scope: null, -5598 silly mapToRegistry name: 'path-is-absolute', -5598 silly mapToRegistry rawSpec: '', -5598 silly mapToRegistry spec: 'latest', -5598 silly mapToRegistry type: 'tag' } -5599 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/path-is-absolute -5600 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/path-is-absolute not in flight; fetching -5601 verbose lock using /home/ruanyf/.tnpm/_locks/once-80d6dab4b7675236.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -5602 silly gunzTarPerm extractEntry every.js -5603 silly gunzTarPerm extractEntry castArray.js -5604 info postinstall clone-stats@0.0.1 -5605 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext/package.json -5606 silly install resolved [] -5607 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp -5608 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp -5609 silly install write writing once 1.3.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -5610 silly gunzTarPerm extractEntry readme.md -5611 verbose unlock done using /home/ruanyf/.tnpm/_locks/cli-width-56eac2007d3e9b43.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-width -5612 info postinstall lodash.keys@4.0.7 -5613 verbose request uri http://registry.npm.alibaba-inc.com/exit-hook -5614 verbose request no auth needed -5615 info attempt registry request try #1 at 上午9:12:30 -5616 verbose etag "1404-ikN0KFdIx9MgokDvwK4w7g" -5617 http request GET http://registry.npm.alibaba-inc.com/exit-hook -5618 silly cache add args [ 'ansi-regex@^2.0.0', null ] -5619 verbose cache add spec ansi-regex@^2.0.0 -5620 silly cache add parsed spec Result { -5620 silly cache add raw: 'ansi-regex@^2.0.0', -5620 silly cache add scope: null, -5620 silly cache add name: 'ansi-regex', -5620 silly cache add rawSpec: '^2.0.0', -5620 silly cache add spec: '>=2.0.0 <3.0.0', -5620 silly cache add type: 'range' } -5621 silly addNamed ansi-regex@>=2.0.0 <3.0.0 -5622 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for ansi-regex -5623 silly addNameRange { name: 'ansi-regex', range: '>=2.0.0 <3.0.0', hasData: false } -5624 silly mapToRegistry name ansi-regex -5625 silly mapToRegistry using default registry -5626 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5627 silly mapToRegistry data Result { -5627 silly mapToRegistry raw: 'ansi-regex', -5627 silly mapToRegistry scope: null, -5627 silly mapToRegistry name: 'ansi-regex', -5627 silly mapToRegistry rawSpec: '', -5627 silly mapToRegistry spec: 'latest', -5627 silly mapToRegistry type: 'tag' } -5628 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/ansi-regex -5629 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/ansi-regex not in flight; fetching -5630 verbose request uri http://registry.npm.alibaba-inc.com/onetime -5631 verbose request no auth needed -5632 info attempt registry request try #1 at 上午9:12:30 -5633 verbose etag "19a0-O0eNPUCiVJQCmRDCk3W/tA" -5634 http request GET http://registry.npm.alibaba-inc.com/onetime -5635 silly install resolved [] -5636 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles -5637 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles -5638 silly addNameRange number 2 { name: 'is-stream', range: '>=1.0.1 <2.0.0', hasData: true } -5639 silly addNameRange versions [ 'is-stream', [ '1.1.0', '1.0.1', '1.0.0' ] ] -5640 silly addNamed is-stream@1.1.0 -5641 verbose addNamed "1.1.0" is a plain semver version for is-stream -5642 silly addNameRange number 2 { name: 'json-stable-stringify', -5642 silly addNameRange range: '>=1.0.0 <2.0.0', -5642 silly addNameRange hasData: true } -5643 silly addNameRange versions [ 'json-stable-stringify', -5643 silly addNameRange [ '1.0.1', -5643 silly addNameRange '1.0.0', -5643 silly addNameRange '0.1.3', -5643 silly addNameRange '0.1.2', -5643 silly addNameRange '0.1.1', -5643 silly addNameRange '0.1.0', -5643 silly addNameRange '0.0.1', -5643 silly addNameRange '0.0.0' ] ] -5644 silly addNamed json-stable-stringify@1.0.1 -5645 verbose addNamed "1.0.1" is a plain semver version for json-stable-stringify -5646 silly install resolved [] -5647 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color -5648 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color -5649 info preinstall micromatch@2.3.8 -5650 info linkStuff ansi-regex@2.0.0 -5651 silly linkStuff ansi-regex@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules as its parent node_modules -5652 silly linkStuff ansi-regex@2.0.0 is part of a global install -5653 silly linkStuff ansi-regex@2.0.0 is installed into a global node_modules -5654 info linkStuff escape-string-regexp@1.0.5 -5655 silly linkStuff escape-string-regexp@1.0.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules as its parent node_modules -5656 silly linkStuff escape-string-regexp@1.0.5 is part of a global install -5657 silly linkStuff escape-string-regexp@1.0.5 is installed into a global node_modules -5658 info linkStuff pinkie@2.0.4 -5659 silly linkStuff pinkie@2.0.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules as its parent node_modules -5660 silly linkStuff pinkie@2.0.4 is part of a global install -5661 silly linkStuff pinkie@2.0.4 is installed into a global node_modules -5662 verbose unlock done using /home/ruanyf/.tnpm/_locks/clone-stats-37c782b238fb79f0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats -5663 verbose request uri http://registry.npm.alibaba-inc.com/number-is-nan -5664 verbose request no auth needed -5665 info attempt registry request try #1 at 上午9:12:30 -5666 verbose etag "a5a-fGMcfSEf8TDHFV1Rcknlag" -5667 http request GET http://registry.npm.alibaba-inc.com/number-is-nan -5668 silly cache add args [ 'is-glob@^2.0.0', null ] -5669 verbose cache add spec is-glob@^2.0.0 -5670 silly cache add parsed spec Result { -5670 silly cache add raw: 'is-glob@^2.0.0', -5670 silly cache add scope: null, -5670 silly cache add name: 'is-glob', -5670 silly cache add rawSpec: '^2.0.0', -5670 silly cache add spec: '>=2.0.0 <3.0.0', -5670 silly cache add type: 'range' } -5671 silly addNamed is-glob@>=2.0.0 <3.0.0 -5672 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for is-glob -5673 silly addNameRange { name: 'is-glob', range: '>=2.0.0 <3.0.0', hasData: false } -5674 silly mapToRegistry name is-glob -5675 silly mapToRegistry using default registry -5676 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -5677 silly mapToRegistry data Result { -5677 silly mapToRegistry raw: 'is-glob', -5677 silly mapToRegistry scope: null, -5677 silly mapToRegistry name: 'is-glob', -5677 silly mapToRegistry rawSpec: '', -5677 silly mapToRegistry spec: 'latest', -5677 silly mapToRegistry type: 'tag' } -5678 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-glob -5679 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-glob not in flight; fetching -5680 silly addNameRange number 2 { name: 'extend-shallow', -5680 silly addNameRange range: '>=2.0.1 <3.0.0', -5680 silly addNameRange hasData: true } -5681 silly addNameRange versions [ 'extend-shallow', -5681 silly addNameRange [ '2.0.1', -5681 silly addNameRange '2.0.0', -5681 silly addNameRange '1.1.4', -5681 silly addNameRange '1.1.2', -5681 silly addNameRange '1.1.1', -5681 silly addNameRange '1.0.1', -5681 silly addNameRange '1.0.0', -5681 silly addNameRange '0.2.0', -5681 silly addNameRange '0.1.1', -5681 silly addNameRange '0.1.0' ] ] -5682 silly addNamed extend-shallow@2.0.1 -5683 verbose addNamed "2.0.1" is a plain semver version for extend-shallow -5684 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray -5685 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits -5686 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args -5687 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder -5688 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is -5689 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate -5690 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims -5691 verbose afterAdd /home/ruanyf/.tnpm/xtend/4.0.1/package/package.json written -5692 verbose afterAdd /home/ruanyf/.tnpm/readable-stream/1.0.34/package/package.json written -5693 silly install resolved [ { name: 'xtend', -5693 silly install resolved version: '4.0.1', -5693 silly install resolved description: 'extend like a boss', -5693 silly install resolved keywords: [ 'extend', 'merge', 'options', 'opts', 'object', 'array' ], -5693 silly install resolved author: { name: 'Raynos', email: 'raynos2@gmail.com' }, -5693 silly install resolved repository: { type: 'git', url: 'git://github.com/Raynos/xtend.git' }, -5693 silly install resolved main: 'immutable', -5693 silly install resolved scripts: { test: 'node test' }, -5693 silly install resolved dependencies: {}, -5693 silly install resolved devDependencies: { tape: '~1.1.0' }, -5693 silly install resolved homepage: 'https://github.com/Raynos/xtend', -5693 silly install resolved contributors: [ [Object], [Object] ], -5693 silly install resolved bugs: -5693 silly install resolved { url: 'https://github.com/Raynos/xtend/issues', -5693 silly install resolved email: 'raynos2@gmail.com' }, -5693 silly install resolved license: 'MIT', -5693 silly install resolved testling: { files: 'test.js', browsers: [Object] }, -5693 silly install resolved engines: { node: '>=0.4' }, -5693 silly install resolved gitHead: '23dc302a89756da89c1897bc732a752317e35390', -5693 silly install resolved _id: 'xtend@4.0.1', -5693 silly install resolved _shasum: 'a5c6d532be656e23db820efb943a1f04998d63af', -5693 silly install resolved _from: 'xtend@>=4.0.0 <4.1.0-0', -5693 silly install resolved _npmVersion: '2.14.1', -5693 silly install resolved _nodeVersion: '0.10.32', -5693 silly install resolved _npmUser: { name: 'raynos', email: 'raynos2@gmail.com' }, -5693 silly install resolved dist: -5693 silly install resolved { shasum: 'a5c6d532be656e23db820efb943a1f04998d63af', -5693 silly install resolved size: 2542, -5693 silly install resolved noattachment: false, -5693 silly install resolved key: 'xtend/-/xtend-4.0.1.tgz', -5693 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.1.tgz' }, -5693 silly install resolved maintainers: [ [Object] ], -5693 silly install resolved directories: {}, -5693 silly install resolved publish_time: 1446502761923, -5693 silly install resolved _cnpm_publish_time: 1446502761923, -5693 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.1.tgz', -5693 silly install resolved readme: 'ERROR: No README data found!' }, -5693 silly install resolved { name: 'readable-stream', -5693 silly install resolved version: '1.0.34', -5693 silly install resolved description: 'Streams2, a user-land copy of the stream library from Node.js v0.10.x', -5693 silly install resolved main: 'readable.js', -5693 silly install resolved dependencies: -5693 silly install resolved { 'core-util-is': '~1.0.0', -5693 silly install resolved isarray: '0.0.1', -5693 silly install resolved string_decoder: '~0.10.x', -5693 silly install resolved inherits: '~2.0.1' }, -5693 silly install resolved devDependencies: { tap: '~0.2.6' }, -5693 silly install resolved scripts: { test: 'tap test/simple/*.js' }, -5693 silly install resolved repository: -5693 silly install resolved { type: 'git', -5693 silly install resolved url: 'git://github.com/isaacs/readable-stream.git' }, -5693 silly install resolved keywords: [ 'readable', 'stream', 'pipe' ], -5693 silly install resolved browser: { util: false }, -5693 silly install resolved author: -5693 silly install resolved { name: 'Isaac Z. Schlueter', -5693 silly install resolved email: 'i@izs.me', -5693 silly install resolved url: 'http://blog.izs.me/' }, -5693 silly install resolved license: 'MIT', -5693 silly install resolved gitHead: '1227c7b66deedb1dc5284a89425854d5f7ad9576', -5693 silly install resolved bugs: { url: 'https://github.com/isaacs/readable-stream/issues' }, -5693 silly install resolved _id: 'readable-stream@1.0.34', -5693 silly install resolved _shasum: '125820e34bc842d2f2aaafafe4c2916ee32c157c', -5693 silly install resolved _from: 'readable-stream@>=1.0.33-1 <1.1.0-0', -5693 silly install resolved _npmVersion: '3.8.3', -5693 silly install resolved _nodeVersion: '5.10.1', -5693 silly install resolved _npmUser: { name: 'cwmma', email: 'calvin.metcalf@gmail.com' }, -5693 silly install resolved dist: -5693 silly install resolved { shasum: '125820e34bc842d2f2aaafafe4c2916ee32c157c', -5693 silly install resolved size: 15447, -5693 silly install resolved noattachment: false, -5693 silly install resolved key: 'readable-stream/-/readable-stream-1.0.34.tgz', -5693 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/readable-stream/download/readable-stream-1.0.34.tgz' }, -5693 silly install resolved maintainers: [ [Object], [Object], [Object], [Object] ], -5693 silly install resolved _npmOperationalInternal: -5693 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -5693 silly install resolved tmp: 'tmp/readable-stream-1.0.34.tgz_1460562521506_0.019665231462568045' }, -5693 silly install resolved directories: {}, -5693 silly install resolved publish_time: 1460562524049, -5693 silly install resolved _cnpm_publish_time: 1460562524049, -5693 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/readable-stream/download/readable-stream-1.0.34.tgz', -5693 silly install resolved readme: 'ERROR: No README data found!', -5693 silly install resolved homepage: 'https://github.com/isaacs/readable-stream#readme' } ] -5694 info install xtend@4.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -5695 info install readable-stream@1.0.34 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -5696 info installOne xtend@4.0.1 -5697 verbose installOne of xtend to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 not in flight; installing -5698 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5699 info installOne readable-stream@1.0.34 -5700 verbose installOne of readable-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 not in flight; installing -5701 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5702 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map/package.json -5703 verbose unlock done using /home/ruanyf/.tnpm/_locks/lodash-keys-f7eea82de372afb3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal/node_modules/lodash.keys -5704 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal -5705 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal -5706 info linkStuff object-assign@4.1.0 -5707 silly linkStuff object-assign@4.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules as its parent node_modules -5708 silly linkStuff object-assign@4.1.0 is part of a global install -5709 silly linkStuff object-assign@4.1.0 is installed into a global node_modules -5710 verbose get http://registry.npm.alibaba-inc.com/inherits not expired, no request -5711 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.0 <3.0.0', hasData: true } -5712 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] -5713 silly addNamed inherits@2.0.1 -5714 verbose addNamed "2.0.1" is a plain semver version for inherits -5715 verbose get http://registry.npm.alibaba-inc.com/once not expired, no request -5716 silly addNameRange number 2 { name: 'once', range: '>=1.3.0 <2.0.0', hasData: true } -5717 silly addNameRange versions [ 'once', -5717 silly addNameRange [ '1.3.3', '1.3.2', '1.3.1', '1.3.0', '1.2.0', '1.1.1' ] ] -5718 silly addNamed once@1.3.3 -5719 verbose addNamed "1.3.3" is a plain semver version for once -5720 verbose request uri http://registry.npm.alibaba-inc.com/inflight -5721 verbose request no auth needed -5722 info attempt registry request try #1 at 上午9:12:30 -5723 verbose etag "1ec6-BuuPYubrWaNZg79belMxGw" -5724 http request GET http://registry.npm.alibaba-inc.com/inflight -5725 verbose request uri http://registry.npm.alibaba-inc.com/minimatch -5726 verbose request no auth needed -5727 info attempt registry request try #1 at 上午9:12:30 -5728 http request GET http://registry.npm.alibaba-inc.com/minimatch -5729 verbose request uri http://registry.npm.alibaba-inc.com/path-is-absolute -5730 verbose request no auth needed -5731 info attempt registry request try #1 at 上午9:12:30 -5732 verbose etag "c50-19QW3RZWN2t8mvNGLl3rdQ" -5733 http request GET http://registry.npm.alibaba-inc.com/path-is-absolute -5734 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/package.json -5735 http 304 http://registry.npm.alibaba-inc.com/exit-hook -5736 verbose headers { server: 'Tengine', -5736 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -5736 verbose headers connection: 'keep-alive', -5736 verbose headers etag: '"1404-ikN0KFdIx9MgokDvwK4w7g"', -5736 verbose headers 'x-readtime': '15' } -5737 silly get cb [ 304, -5737 silly get { server: 'Tengine', -5737 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -5737 silly get connection: 'keep-alive', -5737 silly get etag: '"1404-ikN0KFdIx9MgokDvwK4w7g"', -5737 silly get 'x-readtime': '15' } ] -5738 verbose etag http://registry.npm.alibaba-inc.com/exit-hook from cache -5739 verbose get saving exit-hook to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/exit-hook/.cache.json -5740 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5741 info linkStuff escape-string-regexp@1.0.5 -5742 silly linkStuff escape-string-regexp@1.0.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules as its parent node_modules -5743 silly linkStuff escape-string-regexp@1.0.5 is part of a global install -5744 silly linkStuff escape-string-regexp@1.0.5 is installed into a global node_modules -5745 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -5746 verbose lock using /home/ruanyf/.tnpm/_locks/xtend-0b3d1bcac6730436.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend -5747 verbose lock using /home/ruanyf/.tnpm/_locks/readable-stream-68221f11311704f0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -5748 verbose linkBins ansi-regex@2.0.0 -5749 verbose linkMans ansi-regex@2.0.0 -5750 verbose rebuildBundles ansi-regex@2.0.0 -5751 verbose linkBins escape-string-regexp@1.0.5 -5752 verbose linkMans escape-string-regexp@1.0.5 -5753 verbose rebuildBundles escape-string-regexp@1.0.5 -5754 verbose linkBins pinkie@2.0.4 -5755 verbose linkMans pinkie@2.0.4 -5756 verbose rebuildBundles pinkie@2.0.4 -5757 silly install resolved [] -5758 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext -5759 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext -5760 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json -5761 verbose get http://registry.npm.alibaba-inc.com/ansi-regex not expired, no request -5762 silly addNameRange number 2 { name: 'ansi-regex', range: '>=2.0.0 <3.0.0', hasData: true } -5763 silly addNameRange versions [ 'ansi-regex', -5763 silly addNameRange [ '2.0.0', '1.1.1', '1.1.0', '1.0.0', '0.2.1', '0.2.0', '0.1.0' ] ] -5764 silly addNamed ansi-regex@2.0.0 -5765 verbose addNamed "2.0.0" is a plain semver version for ansi-regex -5766 http 304 http://registry.npm.alibaba-inc.com/onetime -5767 verbose headers { server: 'Tengine', -5767 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -5767 verbose headers connection: 'keep-alive', -5767 verbose headers etag: '"19a0-O0eNPUCiVJQCmRDCk3W/tA"', -5767 verbose headers 'x-readtime': '16' } -5768 silly get cb [ 304, -5768 silly get { server: 'Tengine', -5768 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -5768 silly get connection: 'keep-alive', -5768 silly get etag: '"19a0-O0eNPUCiVJQCmRDCk3W/tA"', -5768 silly get 'x-readtime': '16' } ] -5769 verbose etag http://registry.npm.alibaba-inc.com/onetime from cache -5770 verbose get saving onetime to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/onetime/.cache.json -5771 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5772 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray is being purged from base /home/ruanyf/npm-global -5773 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray -5774 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits is being purged from base /home/ruanyf/npm-global -5775 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits -5776 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args is being purged from base /home/ruanyf/npm-global -5777 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args -5778 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder is being purged from base /home/ruanyf/npm-global -5779 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder -5780 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is is being purged from base /home/ruanyf/npm-global -5781 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is -5782 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate is being purged from base /home/ruanyf/npm-global -5783 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate -5784 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims is being purged from base /home/ruanyf/npm-global -5785 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims -5786 info linkStuff ansi-styles@2.2.1 -5787 silly linkStuff ansi-styles@2.2.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules as its parent node_modules -5788 silly linkStuff ansi-styles@2.2.1 is part of a global install -5789 silly linkStuff ansi-styles@2.2.1 is installed into a global node_modules -5790 silly install write writing xtend 4.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend -5791 silly install write writing readable-stream 1.0.34 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -5792 info install ansi-regex@2.0.0 -5793 info install escape-string-regexp@1.0.5 -5794 info install pinkie@2.0.4 -5795 verbose linkBins object-assign@4.1.0 -5796 verbose linkMans object-assign@4.1.0 -5797 verbose rebuildBundles object-assign@4.1.0 -5798 http 304 http://registry.npm.alibaba-inc.com/number-is-nan -5799 verbose headers { server: 'Tengine', -5799 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -5799 verbose headers connection: 'keep-alive', -5799 verbose headers etag: '"a5a-fGMcfSEf8TDHFV1Rcknlag"', -5799 verbose headers 'x-readtime': '16' } -5800 silly get cb [ 304, -5800 silly get { server: 'Tengine', -5800 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -5800 silly get connection: 'keep-alive', -5800 silly get etag: '"a5a-fGMcfSEf8TDHFV1Rcknlag"', -5800 silly get 'x-readtime': '16' } ] -5801 verbose etag http://registry.npm.alibaba-inc.com/number-is-nan from cache -5802 verbose get saving number-is-nan to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/number-is-nan/.cache.json -5803 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5804 verbose tar unpack /home/ruanyf/.tnpm/isarray/1.0.0/package.tgz -5805 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray -5806 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray is being purged -5807 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray -5808 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz -5809 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits -5810 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits is being purged -5811 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits -5812 verbose tar unpack /home/ruanyf/.tnpm/process-nextick-args/1.0.7/package.tgz -5813 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args -5814 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args is being purged -5815 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args -5816 verbose tar unpack /home/ruanyf/.tnpm/string_decoder/0.10.31/package.tgz -5817 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder -5818 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder is being purged -5819 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder -5820 verbose tar unpack /home/ruanyf/.tnpm/core-util-is/1.0.2/package.tgz -5821 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is -5822 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is is being purged -5823 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is -5824 verbose tar unpack /home/ruanyf/.tnpm/util-deprecate/1.0.2/package.tgz -5825 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate -5826 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate is being purged -5827 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate -5828 verbose tar unpack /home/ruanyf/.tnpm/buffer-shims/1.0.0/package.tgz -5829 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims -5830 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims is being purged -5831 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims -5832 info linkStuff supports-color@2.0.0 -5833 silly linkStuff supports-color@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules as its parent node_modules -5834 silly linkStuff supports-color@2.0.0 is part of a global install -5835 silly linkStuff supports-color@2.0.0 is installed into a global node_modules -5836 info install object-assign@4.1.0 -5837 silly cache afterAdd json-stable-stringify@1.0.1 -5838 verbose afterAdd /home/ruanyf/.tnpm/json-stable-stringify/1.0.1/package/package.json not in flight; writing -5839 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5840 silly cache afterAdd is-stream@1.1.0 -5841 verbose afterAdd /home/ruanyf/.tnpm/is-stream/1.1.0/package/package.json not in flight; writing -5842 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5843 verbose linkBins escape-string-regexp@1.0.5 -5844 verbose linkMans escape-string-regexp@1.0.5 -5845 verbose rebuildBundles escape-string-regexp@1.0.5 -5846 silly gunzTarPerm modes [ '755', '644' ] -5847 silly gunzTarPerm modes [ '755', '644' ] -5848 verbose request uri http://registry.npm.alibaba-inc.com/is-glob -5849 verbose request no auth needed -5850 info attempt registry request try #1 at 上午9:12:30 -5851 verbose etag "4907-2Wl8x3/z/CL/UjIQNUc6AQ" -5852 http request GET http://registry.npm.alibaba-inc.com/is-glob -5853 silly gunzTarPerm modes [ '755', '644' ] -5854 silly gunzTarPerm modes [ '755', '644' ] -5855 silly gunzTarPerm modes [ '755', '644' ] -5856 silly gunzTarPerm modes [ '755', '644' ] -5857 silly gunzTarPerm modes [ '755', '644' ] -5858 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once is being purged from base /home/ruanyf/npm-global -5859 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -5860 info postinstall ansi-regex@2.0.0 -5861 info postinstall escape-string-regexp@1.0.5 -5862 info postinstall pinkie@2.0.4 -5863 silly gunzTarPerm extractEntry extend.js -5864 silly gunzTarPerm extractEntry capitalize.js -5865 info install escape-string-regexp@1.0.5 -5866 silly cache afterAdd extend-shallow@2.0.1 -5867 verbose afterAdd /home/ruanyf/.tnpm/extend-shallow/2.0.1/package/package.json not in flight; writing -5868 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5869 verbose tar unpack /home/ruanyf/.tnpm/once/1.3.3/package.tgz -5870 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -5871 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once is being purged -5872 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -5873 verbose linkBins ansi-styles@2.2.1 -5874 verbose linkMans ansi-styles@2.2.1 -5875 verbose rebuildBundles ansi-styles@2.2.1 -5876 silly install resolved [] -5877 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map -5878 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map -5879 silly cache afterAdd inherits@2.0.1 -5880 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing -5881 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5882 silly cache afterAdd once@1.3.3 -5883 verbose afterAdd /home/ruanyf/.tnpm/once/1.3.3/package/package.json not in flight; writing -5884 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5885 info preinstall clone@1.0.2 -5886 info postinstall object-assign@4.1.0 -5887 http 304 http://registry.npm.alibaba-inc.com/path-is-absolute -5888 verbose headers { server: 'Tengine', -5888 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -5888 verbose headers connection: 'keep-alive', -5888 verbose headers etag: '"c50-19QW3RZWN2t8mvNGLl3rdQ"', -5888 verbose headers 'x-readtime': '21' } -5889 silly get cb [ 304, -5889 silly get { server: 'Tengine', -5889 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -5889 silly get connection: 'keep-alive', -5889 silly get etag: '"c50-19QW3RZWN2t8mvNGLl3rdQ"', -5889 silly get 'x-readtime': '21' } ] -5890 verbose etag http://registry.npm.alibaba-inc.com/path-is-absolute from cache -5891 verbose get saving path-is-absolute to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/path-is-absolute/.cache.json -5892 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5893 verbose linkBins supports-color@2.0.0 -5894 verbose linkMans supports-color@2.0.0 -5895 verbose rebuildBundles supports-color@2.0.0 -5896 silly gunzTarPerm modes [ '755', '644' ] -5897 info install ansi-styles@2.2.1 -5898 silly prepareForInstallMany adding arr-diff@^2.0.0 from micromatch dependencies -5899 silly prepareForInstallMany adding array-unique@^0.2.1 from micromatch dependencies -5900 silly prepareForInstallMany adding braces@^1.8.2 from micromatch dependencies -5901 silly prepareForInstallMany adding expand-brackets@^0.1.4 from micromatch dependencies -5902 silly prepareForInstallMany adding extglob@^0.3.1 from micromatch dependencies -5903 silly prepareForInstallMany adding filename-regex@^2.0.0 from micromatch dependencies -5904 silly prepareForInstallMany adding is-extglob@^1.0.0 from micromatch dependencies -5905 silly prepareForInstallMany adding is-glob@^2.0.1 from micromatch dependencies -5906 silly prepareForInstallMany adding kind-of@^3.0.2 from micromatch dependencies -5907 silly prepareForInstallMany adding normalize-path@^2.0.1 from micromatch dependencies -5908 silly prepareForInstallMany adding object.omit@^2.0.0 from micromatch dependencies -5909 silly prepareForInstallMany adding parse-glob@^3.0.4 from micromatch dependencies -5910 silly prepareForInstallMany adding regex-cache@^0.4.2 from micromatch dependencies -5911 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/package.json -5912 info linkStuff replace-ext@0.0.1 -5913 silly linkStuff replace-ext@0.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules as its parent node_modules -5914 silly linkStuff replace-ext@0.0.1 is part of a global install -5915 silly linkStuff replace-ext@0.0.1 is installed into a global node_modules -5916 http 200 http://registry.npm.alibaba-inc.com/inflight -5917 verbose headers { server: 'Tengine', -5917 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -5917 verbose headers 'content-type': 'application/json; charset=utf-8', -5917 verbose headers 'transfer-encoding': 'chunked', -5917 verbose headers connection: 'keep-alive', -5917 verbose headers vary: 'Accept-Encoding', -5917 verbose headers 'x-readtime': '21', -5917 verbose headers 'content-encoding': 'gzip' } -5918 silly get cb [ 200, -5918 silly get { server: 'Tengine', -5918 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -5918 silly get 'content-type': 'application/json; charset=utf-8', -5918 silly get 'transfer-encoding': 'chunked', -5918 silly get connection: 'keep-alive', -5918 silly get vary: 'Accept-Encoding', -5918 silly get 'x-readtime': '21', -5918 silly get 'content-encoding': 'gzip' } ] -5919 verbose get saving inflight to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/inflight/.cache.json -5920 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5921 info postinstall escape-string-regexp@1.0.5 -5922 info install supports-color@2.0.0 -5923 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -5924 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend -5925 verbose unlock done using /home/ruanyf/.tnpm/_locks/ansi-regex-984f03aa752cf33a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex -5926 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -5927 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -5928 verbose unlock done using /home/ruanyf/.tnpm/_locks/escape-string-regexp-e55ea98c78fe1e1c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/escape-string-regexp -5929 verbose unlock done using /home/ruanyf/.tnpm/_locks/pinkie-2602c6197036fe75.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise/node_modules/pinkie -5930 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -5931 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -5932 silly cache afterAdd ansi-regex@2.0.0 -5933 verbose afterAdd /home/ruanyf/.tnpm/ansi-regex/2.0.0/package/package.json not in flight; writing -5934 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -5935 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json -5936 info postinstall ansi-styles@2.2.1 -5937 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend/package.json -5938 verbose unlock done using /home/ruanyf/.tnpm/_locks/object-assign-eafc798024093e48.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures/node_modules/object-assign -5939 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -5940 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -5941 verbose afterAdd /home/ruanyf/.tnpm/json-stable-stringify/1.0.1/package/package.json written -5942 silly install resolved [ { name: 'json-stable-stringify', -5942 silly install resolved version: '1.0.1', -5942 silly install resolved description: 'deterministic JSON.stringify() with custom sorting to get deterministic hashes from stringified results', -5942 silly install resolved main: 'index.js', -5942 silly install resolved dependencies: { jsonify: '~0.0.0' }, -5942 silly install resolved devDependencies: { tape: '~1.0.4' }, -5942 silly install resolved scripts: { test: 'tape test/*.js' }, -5942 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, -5942 silly install resolved repository: -5942 silly install resolved { type: 'git', -5942 silly install resolved url: 'git://github.com/substack/json-stable-stringify.git' }, -5942 silly install resolved homepage: 'https://github.com/substack/json-stable-stringify', -5942 silly install resolved keywords: [ 'json', 'stringify', 'deterministic', 'hash', 'sort', 'stable' ], -5942 silly install resolved author: -5942 silly install resolved { name: 'James Halliday', -5942 silly install resolved email: 'mail@substack.net', -5942 silly install resolved url: 'http://substack.net' }, -5942 silly install resolved license: 'MIT', -5942 silly install resolved gitHead: '4a3ac9cc006a91e64901f8ebe78d23bf9fc9fbd0', -5942 silly install resolved bugs: { url: 'https://github.com/substack/json-stable-stringify/issues' }, -5942 silly install resolved _id: 'json-stable-stringify@1.0.1', -5942 silly install resolved _shasum: '9a759d39c5f2ff503fd5300646ed445f88c4f9af', -5942 silly install resolved _from: 'json-stable-stringify@>=1.0.0 <2.0.0', -5942 silly install resolved _npmVersion: '3.4.1', -5942 silly install resolved _nodeVersion: '4.2.1', -5942 silly install resolved _npmUser: { name: 'substack', email: 'substack@gmail.com' }, -5942 silly install resolved dist: -5942 silly install resolved { shasum: '9a759d39c5f2ff503fd5300646ed445f88c4f9af', -5942 silly install resolved size: 4527, -5942 silly install resolved noattachment: false, -5942 silly install resolved key: 'json-stable-stringify/-/json-stable-stringify-1.0.1.tgz', -5942 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz' }, -5942 silly install resolved maintainers: [ [Object] ], -5942 silly install resolved _npmOperationalInternal: -5942 silly install resolved { host: 'packages-5-east.internal.npmjs.com', -5942 silly install resolved tmp: 'tmp/json-stable-stringify-1.0.1.tgz_1454436356521_0.9410459187347442' }, -5942 silly install resolved directories: {}, -5942 silly install resolved publish_time: 1454436358629, -5942 silly install resolved _cnpm_publish_time: 1454436358629, -5942 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz', -5942 silly install resolved readme: 'ERROR: No README data found!' } ] -5943 info install json-stable-stringify@1.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -5944 info installOne json-stable-stringify@1.0.1 -5945 verbose installOne of json-stable-stringify to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream not in flight; installing -5946 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5947 verbose afterAdd /home/ruanyf/.tnpm/is-stream/1.1.0/package/package.json written -5948 silly install resolved [ { name: 'is-stream', -5948 silly install resolved version: '1.1.0', -5948 silly install resolved description: 'Check if something is a Node.js stream', -5948 silly install resolved license: 'MIT', -5948 silly install resolved repository: -5948 silly install resolved { type: 'git', -5948 silly install resolved url: 'git+https://github.com/sindresorhus/is-stream.git' }, -5948 silly install resolved author: -5948 silly install resolved { name: 'Sindre Sorhus', -5948 silly install resolved email: 'sindresorhus@gmail.com', -5948 silly install resolved url: 'sindresorhus.com' }, -5948 silly install resolved engines: { node: '>=0.10.0' }, -5948 silly install resolved scripts: { test: 'xo && ava' }, -5948 silly install resolved files: [ 'index.js' ], -5948 silly install resolved keywords: -5948 silly install resolved [ 'stream', -5948 silly install resolved 'type', -5948 silly install resolved 'streams', -5948 silly install resolved 'writable', -5948 silly install resolved 'readable', -5948 silly install resolved 'duplex', -5948 silly install resolved 'transform', -5948 silly install resolved 'check', -5948 silly install resolved 'detect', -5948 silly install resolved 'is' ], -5948 silly install resolved devDependencies: { ava: '*', tempfile: '^1.1.0', xo: '*' }, -5948 silly install resolved gitHead: 'e21d73f1028c189d16150cea52641059b0936310', -5948 silly install resolved bugs: { url: 'https://github.com/sindresorhus/is-stream/issues' }, -5948 silly install resolved homepage: 'https://github.com/sindresorhus/is-stream#readme', -5948 silly install resolved _id: 'is-stream@1.1.0', -5948 silly install resolved _shasum: '12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44', -5948 silly install resolved _from: 'is-stream@>=1.0.1 <2.0.0', -5948 silly install resolved _npmVersion: '2.15.0', -5948 silly install resolved _nodeVersion: '4.4.2', -5948 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -5948 silly install resolved dist: -5948 silly install resolved { shasum: '12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44', -5948 silly install resolved size: 1616, -5948 silly install resolved noattachment: false, -5948 silly install resolved key: 'is-stream/-/is-stream-1.1.0.tgz', -5948 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-stream/download/is-stream-1.1.0.tgz' }, -5948 silly install resolved maintainers: [ [Object] ], -5948 silly install resolved _npmOperationalInternal: -5948 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -5948 silly install resolved tmp: 'tmp/is-stream-1.1.0.tgz_1460446915184_0.806101513793692' }, -5948 silly install resolved directories: {}, -5948 silly install resolved publish_time: 1460446915666, -5948 silly install resolved _cnpm_publish_time: 1460446915666, -5948 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-stream/download/is-stream-1.1.0.tgz', -5948 silly install resolved readme: 'ERROR: No README data found!' } ] -5949 info install is-stream@1.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -5950 info installOne is-stream@1.1.0 -5951 verbose installOne of is-stream to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams not in flight; installing -5952 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5953 silly addNameRange number 2 { name: 'exit-hook', range: '>=1.0.0 <2.0.0', hasData: true } -5954 silly addNameRange versions [ 'exit-hook', [ '1.1.1', '1.1.0', '1.0.0' ] ] -5955 silly addNamed exit-hook@1.1.1 -5956 verbose addNamed "1.1.1" is a plain semver version for exit-hook -5957 silly gunzTarPerm extractEntry package.json -5958 info postinstall supports-color@2.0.0 -5959 verbose linkBins replace-ext@0.0.1 -5960 verbose linkMans replace-ext@0.0.1 -5961 verbose rebuildBundles replace-ext@0.0.1 -5962 info linkStuff lodash.isequal@4.2.0 -5963 silly linkStuff lodash.isequal@4.2.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -5964 silly linkStuff lodash.isequal@4.2.0 is part of a global install -5965 silly linkStuff lodash.isequal@4.2.0 is installed into a global node_modules -5966 verbose unlock done using /home/ruanyf/.tnpm/_locks/escape-string-regexp-b8d42e784d559946.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/escape-string-regexp -5967 silly addNameRange number 2 { name: 'onetime', range: '>=1.0.0 <2.0.0', hasData: true } -5968 silly addNameRange versions [ 'onetime', [ '1.1.0', '1.0.0', '0.1.1', '0.1.0' ] ] -5969 silly addNamed onetime@1.1.0 -5970 verbose addNamed "1.1.0" is a plain semver version for onetime -5971 silly gunzTarPerm extractEntry package.json -5972 silly gunzTarPerm extractEntry package.json -5973 silly gunzTarPerm extractEntry package.json -5974 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] -5975 silly gunzTarPerm extractEntry package.json -5976 silly gunzTarPerm extractEntry package.json -5977 silly gunzTarPerm extractEntry package.json -5978 verbose afterAdd /home/ruanyf/.tnpm/extend-shallow/2.0.1/package/package.json written -5979 silly install resolved [ { name: 'extend-shallow', -5979 silly install resolved description: 'Extend an object with the properties of additional objects. node.js/javascript util.', -5979 silly install resolved version: '2.0.1', -5979 silly install resolved homepage: 'https://github.com/jonschlinkert/extend-shallow', -5979 silly install resolved author: -5979 silly install resolved { name: 'Jon Schlinkert', -5979 silly install resolved url: 'https://github.com/jonschlinkert' }, -5979 silly install resolved repository: -5979 silly install resolved { type: 'git', -5979 silly install resolved url: 'git+https://github.com/jonschlinkert/extend-shallow.git' }, -5979 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/extend-shallow/issues' }, -5979 silly install resolved license: 'MIT', -5979 silly install resolved files: [ 'index.js' ], -5979 silly install resolved main: 'index.js', -5979 silly install resolved engines: { node: '>=0.10.0' }, -5979 silly install resolved scripts: { test: 'mocha' }, -5979 silly install resolved dependencies: { 'is-extendable': '^0.1.0' }, -5979 silly install resolved devDependencies: -5979 silly install resolved { 'array-slice': '^0.2.3', -5979 silly install resolved benchmarked: '^0.1.4', -5979 silly install resolved chalk: '^1.0.0', -5979 silly install resolved 'for-own': '^0.1.3', -5979 silly install resolved glob: '^5.0.12', -5979 silly install resolved 'is-plain-object': '^2.0.1', -5979 silly install resolved 'kind-of': '^2.0.0', -5979 silly install resolved minimist: '^1.1.1', -5979 silly install resolved mocha: '^2.2.5', -5979 silly install resolved should: '^7.0.1' }, -5979 silly install resolved keywords: -5979 silly install resolved [ 'assign', -5979 silly install resolved 'extend', -5979 silly install resolved 'javascript', -5979 silly install resolved 'js', -5979 silly install resolved 'keys', -5979 silly install resolved 'merge', -5979 silly install resolved 'obj', -5979 silly install resolved 'object', -5979 silly install resolved 'prop', -5979 silly install resolved 'properties', -5979 silly install resolved 'property', -5979 silly install resolved 'props', -5979 silly install resolved 'shallow', -5979 silly install resolved 'util', -5979 silly install resolved 'utility', -5979 silly install resolved 'utils', -5979 silly install resolved 'value' ], -5979 silly install resolved gitHead: 'e9b1f1d2ff9d2990ec4a127afa7c14732d1eec8a', -5979 silly install resolved _id: 'extend-shallow@2.0.1', -5979 silly install resolved _shasum: '51af7d614ad9a9f610ea1bafbb989d6b1c56890f', -5979 silly install resolved _from: 'extend-shallow@>=2.0.1 <3.0.0', -5979 silly install resolved _npmVersion: '2.10.1', -5979 silly install resolved _nodeVersion: '0.12.4', -5979 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -5979 silly install resolved maintainers: [ [Object] ], -5979 silly install resolved dist: -5979 silly install resolved { shasum: '51af7d614ad9a9f610ea1bafbb989d6b1c56890f', -5979 silly install resolved size: 2221, -5979 silly install resolved noattachment: false, -5979 silly install resolved key: 'extend-shallow/-/extend-shallow-2.0.1.tgz', -5979 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz' }, -5979 silly install resolved directories: {}, -5979 silly install resolved publish_time: 1437089316775, -5979 silly install resolved _cnpm_publish_time: 1437089316775, -5979 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz', -5979 silly install resolved readme: 'ERROR: No README data found!' } ] -5980 info install extend-shallow@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -5981 info installOne extend-shallow@2.0.1 -5982 verbose installOne of extend-shallow to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob not in flight; installing -5983 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -5984 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream is being purged from base /home/ruanyf/npm-global -5985 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -5986 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend is being purged from base /home/ruanyf/npm-global -5987 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend -5988 info linkStuff convert-source-map@1.2.0 -5989 silly linkStuff convert-source-map@1.2.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules as its parent node_modules -5990 silly linkStuff convert-source-map@1.2.0 is part of a global install -5991 silly linkStuff convert-source-map@1.2.0 is installed into a global node_modules -5992 info install replace-ext@0.0.1 -5993 verbose afterAdd /home/ruanyf/.tnpm/once/1.3.3/package/package.json written -5994 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written -5995 verbose lock using /home/ruanyf/.tnpm/_locks/json-stable-stringify-37de4acd438df36d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -5996 verbose lock using /home/ruanyf/.tnpm/_locks/is-stream-bcdd8d548190a97a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream -5997 silly addNameRange number 2 { name: 'number-is-nan', range: '>=1.0.0 <2.0.0', hasData: true } -5998 silly addNameRange versions [ 'number-is-nan', [ '1.0.0' ] ] -5999 silly addNamed number-is-nan@1.0.0 -6000 verbose addNamed "1.0.0" is a plain semver version for number-is-nan -6001 silly addNameRange number 2 { name: 'number-is-nan', range: '>=1.0.0 <2.0.0', hasData: true } -6002 silly addNameRange versions [ 'number-is-nan', [ '1.0.0' ] ] -6003 silly addNamed number-is-nan@1.0.0 -6004 verbose addNamed "1.0.0" is a plain semver version for number-is-nan -6005 http 304 http://registry.npm.alibaba-inc.com/is-glob -6006 verbose headers { server: 'Tengine', -6006 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6006 verbose headers connection: 'keep-alive', -6006 verbose headers etag: '"4907-2Wl8x3/z/CL/UjIQNUc6AQ"', -6006 verbose headers 'x-readtime': '18' } -6007 silly get cb [ 304, -6007 silly get { server: 'Tengine', -6007 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6007 silly get connection: 'keep-alive', -6007 silly get etag: '"4907-2Wl8x3/z/CL/UjIQNUc6AQ"', -6007 silly get 'x-readtime': '18' } ] -6008 verbose etag http://registry.npm.alibaba-inc.com/is-glob from cache -6009 verbose get saving is-glob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-glob/.cache.json -6010 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6011 silly gunzTarPerm extractEntry package.json -6012 verbose unlock done using /home/ruanyf/.tnpm/_locks/ansi-styles-fc6f7da6acaeb14f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/ansi-styles -6013 verbose tar unpack /home/ruanyf/.tnpm/readable-stream/1.0.34/package.tgz -6014 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -6015 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream is being purged -6016 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -6017 verbose tar unpack /home/ruanyf/.tnpm/xtend/4.0.1/package.tgz -6018 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend -6019 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend is being purged -6020 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend -6021 silly install write writing json-stable-stringify 1.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -6022 silly install write writing is-stream 1.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream -6023 verbose unlock done using /home/ruanyf/.tnpm/_locks/supports-color-cce39b409b837f7c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/supports-color -6024 verbose lock using /home/ruanyf/.tnpm/_locks/extend-shallow-c1525cdc47b1c1fa.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -6025 info preinstall extend@3.0.0 -6026 silly gunzTarPerm modes [ '755', '644' ] -6027 silly gunzTarPerm modes [ '755', '644' ] -6028 info linkStuff strip-ansi@3.0.1 -6029 silly linkStuff strip-ansi@3.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -6030 silly linkStuff strip-ansi@3.0.1 is part of a global install -6031 silly linkStuff strip-ansi@3.0.1 is installed into a global node_modules -6032 info linkStuff pinkie-promise@2.0.1 -6033 silly linkStuff pinkie-promise@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -6034 silly linkStuff pinkie-promise@2.0.1 is part of a global install -6035 silly linkStuff pinkie-promise@2.0.1 is installed into a global node_modules -6036 info postinstall replace-ext@0.0.1 -6037 verbose linkBins lodash.isequal@4.2.0 -6038 verbose linkMans lodash.isequal@4.2.0 -6039 verbose rebuildBundles lodash.isequal@4.2.0 -6040 verbose afterAdd /home/ruanyf/.tnpm/ansi-regex/2.0.0/package/package.json written -6041 silly install resolved [ { name: 'ansi-regex', -6041 silly install resolved version: '2.0.0', -6041 silly install resolved description: 'Regular expression for matching ANSI escape codes', -6041 silly install resolved license: 'MIT', -6041 silly install resolved repository: -6041 silly install resolved { type: 'git', -6041 silly install resolved url: 'git+https://github.com/sindresorhus/ansi-regex.git' }, -6041 silly install resolved author: -6041 silly install resolved { name: 'Sindre Sorhus', -6041 silly install resolved email: 'sindresorhus@gmail.com', -6041 silly install resolved url: 'sindresorhus.com' }, -6041 silly install resolved maintainers: [ [Object], [Object] ], -6041 silly install resolved engines: { node: '>=0.10.0' }, -6041 silly install resolved scripts: -6041 silly install resolved { test: 'mocha test/test.js', -6041 silly install resolved 'view-supported': 'node test/viewCodes.js' }, -6041 silly install resolved files: [ 'index.js' ], -6041 silly install resolved keywords: -6041 silly install resolved [ 'ansi', -6041 silly install resolved 'styles', -6041 silly install resolved 'color', -6041 silly install resolved 'colour', -6041 silly install resolved 'colors', -6041 silly install resolved 'terminal', -6041 silly install resolved 'console', -6041 silly install resolved 'cli', -6041 silly install resolved 'string', -6041 silly install resolved 'tty', -6041 silly install resolved 'escape', -6041 silly install resolved 'formatting', -6041 silly install resolved 'rgb', -6041 silly install resolved '256', -6041 silly install resolved 'shell', -6041 silly install resolved 'xterm', -6041 silly install resolved 'command-line', -6041 silly install resolved 'text', -6041 silly install resolved 'regex', -6041 silly install resolved 'regexp', -6041 silly install resolved 're', -6041 silly install resolved 'match', -6041 silly install resolved 'test', -6041 silly install resolved 'find', -6041 silly install resolved 'pattern' ], -6041 silly install resolved devDependencies: { mocha: '*' }, -6041 silly install resolved gitHead: '57c3f2941a73079fa8b081e02a522e3d29913e2f', -6041 silly install resolved bugs: { url: 'https://github.com/sindresorhus/ansi-regex/issues' }, -6041 silly install resolved homepage: 'https://github.com/sindresorhus/ansi-regex', -6041 silly install resolved _id: 'ansi-regex@2.0.0', -6041 silly install resolved _shasum: 'c5061b6e0ef8a81775e50f5d66151bf6bf371107', -6041 silly install resolved _from: 'ansi-regex@>=2.0.0 <3.0.0', -6041 silly install resolved _npmVersion: '2.11.2', -6041 silly install resolved _nodeVersion: '0.12.5', -6041 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -6041 silly install resolved dist: -6041 silly install resolved { shasum: 'c5061b6e0ef8a81775e50f5d66151bf6bf371107', -6041 silly install resolved size: 1665, -6041 silly install resolved noattachment: false, -6041 silly install resolved key: 'ansi-regex/-/ansi-regex-2.0.0.tgz', -6041 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-2.0.0.tgz' }, -6041 silly install resolved directories: {}, -6041 silly install resolved publish_time: 1435680439279, -6041 silly install resolved _cnpm_publish_time: 1435680439279, -6041 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-2.0.0.tgz', -6041 silly install resolved readme: 'ERROR: No README data found!' } ] -6042 info install ansi-regex@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -6043 info installOne ansi-regex@2.0.0 -6044 verbose installOne of ansi-regex to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi not in flight; installing -6045 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6046 silly gunzTarPerm extractEntry dist/rx.virtualtime.js -6047 silly gunzTarPerm extractEntry .npmignore -6048 silly gunzTarPerm extractEntry README.md -6049 silly install write writing extend-shallow 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -6050 silly gunzTarPerm extractEntry extendWith.js -6051 silly gunzTarPerm extractEntry camelCase.js -6052 verbose linkBins convert-source-map@1.2.0 -6053 verbose linkMans convert-source-map@1.2.0 -6054 verbose rebuildBundles convert-source-map@1.2.0 -6055 verbose rebuildBundles [ 'lodash._root', 'lodash.keys' ] -6056 info install lodash.isequal@4.2.0 -6057 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json -6058 silly cache add args [ 'filename-regex@^2.0.0', null ] -6059 verbose cache add spec filename-regex@^2.0.0 -6060 silly cache add parsed spec Result { -6060 silly cache add raw: 'filename-regex@^2.0.0', -6060 silly cache add scope: null, -6060 silly cache add name: 'filename-regex', -6060 silly cache add rawSpec: '^2.0.0', -6060 silly cache add spec: '>=2.0.0 <3.0.0', -6060 silly cache add type: 'range' } -6061 silly addNamed filename-regex@>=2.0.0 <3.0.0 -6062 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for filename-regex -6063 silly addNameRange { name: 'filename-regex', -6063 silly addNameRange range: '>=2.0.0 <3.0.0', -6063 silly addNameRange hasData: false } -6064 silly mapToRegistry name filename-regex -6065 silly mapToRegistry using default registry -6066 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6067 silly mapToRegistry data Result { -6067 silly mapToRegistry raw: 'filename-regex', -6067 silly mapToRegistry scope: null, -6067 silly mapToRegistry name: 'filename-regex', -6067 silly mapToRegistry rawSpec: '', -6067 silly mapToRegistry spec: 'latest', -6067 silly mapToRegistry type: 'tag' } -6068 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/filename-regex -6069 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/filename-regex not in flight; fetching -6070 silly cache add args [ 'is-extglob@^1.0.0', null ] -6071 verbose cache add spec is-extglob@^1.0.0 -6072 silly cache add parsed spec Result { -6072 silly cache add raw: 'is-extglob@^1.0.0', -6072 silly cache add scope: null, -6072 silly cache add name: 'is-extglob', -6072 silly cache add rawSpec: '^1.0.0', -6072 silly cache add spec: '>=1.0.0 <2.0.0', -6072 silly cache add type: 'range' } -6073 silly addNamed is-extglob@>=1.0.0 <2.0.0 -6074 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for is-extglob -6075 silly addNameRange { name: 'is-extglob', range: '>=1.0.0 <2.0.0', hasData: false } -6076 silly mapToRegistry name is-extglob -6077 silly mapToRegistry using default registry -6078 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6079 silly mapToRegistry data Result { -6079 silly mapToRegistry raw: 'is-extglob', -6079 silly mapToRegistry scope: null, -6079 silly mapToRegistry name: 'is-extglob', -6079 silly mapToRegistry rawSpec: '', -6079 silly mapToRegistry spec: 'latest', -6079 silly mapToRegistry type: 'tag' } -6080 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-extglob -6081 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-extglob not in flight; fetching -6082 silly cache add args [ 'is-glob@^2.0.1', null ] -6083 verbose cache add spec is-glob@^2.0.1 -6084 silly cache add parsed spec Result { -6084 silly cache add raw: 'is-glob@^2.0.1', -6084 silly cache add scope: null, -6084 silly cache add name: 'is-glob', -6084 silly cache add rawSpec: '^2.0.1', -6084 silly cache add spec: '>=2.0.1 <3.0.0', -6084 silly cache add type: 'range' } -6085 silly addNamed is-glob@>=2.0.1 <3.0.0 -6086 verbose addNamed ">=2.0.1 <3.0.0" is a valid semver range for is-glob -6087 silly addNameRange { name: 'is-glob', range: '>=2.0.1 <3.0.0', hasData: false } -6088 silly mapToRegistry name is-glob -6089 silly mapToRegistry using default registry -6090 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6091 silly mapToRegistry data Result { -6091 silly mapToRegistry raw: 'is-glob', -6091 silly mapToRegistry scope: null, -6091 silly mapToRegistry name: 'is-glob', -6091 silly mapToRegistry rawSpec: '', -6091 silly mapToRegistry spec: 'latest', -6091 silly mapToRegistry type: 'tag' } -6092 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-glob -6093 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-glob already in flight; waiting -6094 silly cache add args [ 'kind-of@^3.0.2', null ] -6095 verbose cache add spec kind-of@^3.0.2 -6096 silly cache add parsed spec Result { -6096 silly cache add raw: 'kind-of@^3.0.2', -6096 silly cache add scope: null, -6096 silly cache add name: 'kind-of', -6096 silly cache add rawSpec: '^3.0.2', -6096 silly cache add spec: '>=3.0.2 <4.0.0', -6096 silly cache add type: 'range' } -6097 silly addNamed kind-of@>=3.0.2 <4.0.0 -6098 verbose addNamed ">=3.0.2 <4.0.0" is a valid semver range for kind-of -6099 silly addNameRange { name: 'kind-of', range: '>=3.0.2 <4.0.0', hasData: false } -6100 silly mapToRegistry name kind-of -6101 silly mapToRegistry using default registry -6102 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6103 silly mapToRegistry data Result { -6103 silly mapToRegistry raw: 'kind-of', -6103 silly mapToRegistry scope: null, -6103 silly mapToRegistry name: 'kind-of', -6103 silly mapToRegistry rawSpec: '', -6103 silly mapToRegistry spec: 'latest', -6103 silly mapToRegistry type: 'tag' } -6104 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/kind-of -6105 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/kind-of not in flight; fetching -6106 silly cache add args [ 'normalize-path@^2.0.1', null ] -6107 verbose cache add spec normalize-path@^2.0.1 -6108 silly cache add parsed spec Result { -6108 silly cache add raw: 'normalize-path@^2.0.1', -6108 silly cache add scope: null, -6108 silly cache add name: 'normalize-path', -6108 silly cache add rawSpec: '^2.0.1', -6108 silly cache add spec: '>=2.0.1 <3.0.0', -6108 silly cache add type: 'range' } -6109 silly addNamed normalize-path@>=2.0.1 <3.0.0 -6110 verbose addNamed ">=2.0.1 <3.0.0" is a valid semver range for normalize-path -6111 silly addNameRange { name: 'normalize-path', -6111 silly addNameRange range: '>=2.0.1 <3.0.0', -6111 silly addNameRange hasData: false } -6112 silly mapToRegistry name normalize-path -6113 silly mapToRegistry using default registry -6114 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6115 silly mapToRegistry data Result { -6115 silly mapToRegistry raw: 'normalize-path', -6115 silly mapToRegistry scope: null, -6115 silly mapToRegistry name: 'normalize-path', -6115 silly mapToRegistry rawSpec: '', -6115 silly mapToRegistry spec: 'latest', -6115 silly mapToRegistry type: 'tag' } -6116 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/normalize-path -6117 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/normalize-path not in flight; fetching -6118 silly cache add args [ 'object.omit@^2.0.0', null ] -6119 verbose cache add spec object.omit@^2.0.0 -6120 silly cache add parsed spec Result { -6120 silly cache add raw: 'object.omit@^2.0.0', -6120 silly cache add scope: null, -6120 silly cache add name: 'object.omit', -6120 silly cache add rawSpec: '^2.0.0', -6120 silly cache add spec: '>=2.0.0 <3.0.0', -6120 silly cache add type: 'range' } -6121 silly addNamed object.omit@>=2.0.0 <3.0.0 -6122 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for object.omit -6123 silly addNameRange { name: 'object.omit', range: '>=2.0.0 <3.0.0', hasData: false } -6124 silly mapToRegistry name object.omit -6125 silly mapToRegistry using default registry -6126 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6127 silly mapToRegistry data Result { -6127 silly mapToRegistry raw: 'object.omit', -6127 silly mapToRegistry scope: null, -6127 silly mapToRegistry name: 'object.omit', -6127 silly mapToRegistry rawSpec: '', -6127 silly mapToRegistry spec: 'latest', -6127 silly mapToRegistry type: 'tag' } -6128 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/object.omit -6129 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/object.omit not in flight; fetching -6130 silly cache add args [ 'parse-glob@^3.0.4', null ] -6131 verbose cache add spec parse-glob@^3.0.4 -6132 silly cache add parsed spec Result { -6132 silly cache add raw: 'parse-glob@^3.0.4', -6132 silly cache add scope: null, -6132 silly cache add name: 'parse-glob', -6132 silly cache add rawSpec: '^3.0.4', -6132 silly cache add spec: '>=3.0.4 <4.0.0', -6132 silly cache add type: 'range' } -6133 silly addNamed parse-glob@>=3.0.4 <4.0.0 -6134 verbose addNamed ">=3.0.4 <4.0.0" is a valid semver range for parse-glob -6135 silly addNameRange { name: 'parse-glob', range: '>=3.0.4 <4.0.0', hasData: false } -6136 silly mapToRegistry name parse-glob -6137 silly mapToRegistry using default registry -6138 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6139 silly mapToRegistry data Result { -6139 silly mapToRegistry raw: 'parse-glob', -6139 silly mapToRegistry scope: null, -6139 silly mapToRegistry name: 'parse-glob', -6139 silly mapToRegistry rawSpec: '', -6139 silly mapToRegistry spec: 'latest', -6139 silly mapToRegistry type: 'tag' } -6140 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/parse-glob -6141 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/parse-glob not in flight; fetching -6142 silly cache add args [ 'regex-cache@^0.4.2', null ] -6143 verbose cache add spec regex-cache@^0.4.2 -6144 silly cache add parsed spec Result { -6144 silly cache add raw: 'regex-cache@^0.4.2', -6144 silly cache add scope: null, -6144 silly cache add name: 'regex-cache', -6144 silly cache add rawSpec: '^0.4.2', -6144 silly cache add spec: '>=0.4.2 <0.5.0', -6144 silly cache add type: 'range' } -6145 silly addNamed regex-cache@>=0.4.2 <0.5.0 -6146 verbose addNamed ">=0.4.2 <0.5.0" is a valid semver range for regex-cache -6147 silly addNameRange { name: 'regex-cache', range: '>=0.4.2 <0.5.0', hasData: false } -6148 silly mapToRegistry name regex-cache -6149 silly mapToRegistry using default registry -6150 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6151 silly mapToRegistry data Result { -6151 silly mapToRegistry raw: 'regex-cache', -6151 silly mapToRegistry scope: null, -6151 silly mapToRegistry name: 'regex-cache', -6151 silly mapToRegistry rawSpec: '', -6151 silly mapToRegistry spec: 'latest', -6151 silly mapToRegistry type: 'tag' } -6152 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/regex-cache -6153 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/regex-cache not in flight; fetching -6154 silly gunzTarPerm extractEntry README.md -6155 silly gunzTarPerm extractEntry LICENSE -6156 silly gunzTarPerm extractEntry index.js -6157 silly gunzTarPerm extractEntry test.js -6158 silly gunzTarPerm extractEntry .npmignore -6159 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] -6160 silly gunzTarPerm extractEntry README.md -6161 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] -6162 silly gunzTarPerm extractEntry README.md -6163 silly gunzTarPerm extractEntry LICENSE -6164 silly addNameRange number 2 { name: 'path-is-absolute', -6164 silly addNameRange range: '>=1.0.0 <2.0.0', -6164 silly addNameRange hasData: true } -6165 silly addNameRange versions [ 'path-is-absolute', [ '1.0.0' ] ] -6166 silly addNamed path-is-absolute@1.0.0 -6167 verbose addNamed "1.0.0" is a plain semver version for path-is-absolute -6168 silly gunzTarPerm extractEntry index.js -6169 silly gunzTarPerm extractEntry license.md -6170 silly gunzTarPerm extractEntry README.md -6171 silly gunzTarPerm extractEntry LICENSE -6172 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend/package.json -6173 info install convert-source-map@1.2.0 -6174 verbose lock using /home/ruanyf/.tnpm/_locks/ansi-regex-9bff194e757db787.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex -6175 silly addNameRange number 2 { name: 'inflight', range: '>=1.0.4 <2.0.0', hasData: true } -6176 silly addNameRange versions [ 'inflight', -6176 silly addNameRange [ '1.0.5', '1.0.4', '1.0.3', '1.0.2', '1.0.1', '1.0.0' ] ] -6177 silly addNamed inflight@1.0.5 -6178 verbose addNamed "1.0.5" is a plain semver version for inflight -6179 silly cache afterAdd exit-hook@1.1.1 -6180 verbose afterAdd /home/ruanyf/.tnpm/exit-hook/1.1.1/package/package.json not in flight; writing -6181 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6182 silly gunzTarPerm extractEntry README.md -6183 silly gunzTarPerm extractEntry LICENSE -6184 verbose linkBins strip-ansi@3.0.1 -6185 verbose linkMans strip-ansi@3.0.1 -6186 verbose rebuildBundles strip-ansi@3.0.1 -6187 verbose linkBins pinkie-promise@2.0.1 -6188 verbose linkMans pinkie-promise@2.0.1 -6189 verbose rebuildBundles pinkie-promise@2.0.1 -6190 verbose unlock done using /home/ruanyf/.tnpm/_locks/replace-ext-c39d86c5b44d8ff0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/replace-ext -6191 info postinstall lodash.isequal@4.2.0 -6192 silly install write writing ansi-regex 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex -6193 silly cache add args [ 'arr-diff@^2.0.0', null ] -6194 verbose cache add spec arr-diff@^2.0.0 -6195 silly cache add parsed spec Result { -6195 silly cache add raw: 'arr-diff@^2.0.0', -6195 silly cache add scope: null, -6195 silly cache add name: 'arr-diff', -6195 silly cache add rawSpec: '^2.0.0', -6195 silly cache add spec: '>=2.0.0 <3.0.0', -6195 silly cache add type: 'range' } -6196 silly addNamed arr-diff@>=2.0.0 <3.0.0 -6197 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for arr-diff -6198 silly addNameRange { name: 'arr-diff', range: '>=2.0.0 <3.0.0', hasData: false } -6199 silly mapToRegistry name arr-diff -6200 silly mapToRegistry using default registry -6201 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6202 silly mapToRegistry data Result { -6202 silly mapToRegistry raw: 'arr-diff', -6202 silly mapToRegistry scope: null, -6202 silly mapToRegistry name: 'arr-diff', -6202 silly mapToRegistry rawSpec: '', -6202 silly mapToRegistry spec: 'latest', -6202 silly mapToRegistry type: 'tag' } -6203 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/arr-diff -6204 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/arr-diff not in flight; fetching -6205 silly cache add args [ 'array-unique@^0.2.1', null ] -6206 verbose cache add spec array-unique@^0.2.1 -6207 silly cache add parsed spec Result { -6207 silly cache add raw: 'array-unique@^0.2.1', -6207 silly cache add scope: null, -6207 silly cache add name: 'array-unique', -6207 silly cache add rawSpec: '^0.2.1', -6207 silly cache add spec: '>=0.2.1 <0.3.0', -6207 silly cache add type: 'range' } -6208 silly addNamed array-unique@>=0.2.1 <0.3.0 -6209 verbose addNamed ">=0.2.1 <0.3.0" is a valid semver range for array-unique -6210 silly addNameRange { name: 'array-unique', range: '>=0.2.1 <0.3.0', hasData: false } -6211 silly mapToRegistry name array-unique -6212 silly mapToRegistry using default registry -6213 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6214 silly mapToRegistry data Result { -6214 silly mapToRegistry raw: 'array-unique', -6214 silly mapToRegistry scope: null, -6214 silly mapToRegistry name: 'array-unique', -6214 silly mapToRegistry rawSpec: '', -6214 silly mapToRegistry spec: 'latest', -6214 silly mapToRegistry type: 'tag' } -6215 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/array-unique -6216 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/array-unique not in flight; fetching -6217 silly cache add args [ 'braces@^1.8.2', null ] -6218 verbose cache add spec braces@^1.8.2 -6219 silly cache add parsed spec Result { -6219 silly cache add raw: 'braces@^1.8.2', -6219 silly cache add scope: null, -6219 silly cache add name: 'braces', -6219 silly cache add rawSpec: '^1.8.2', -6219 silly cache add spec: '>=1.8.2 <2.0.0', -6219 silly cache add type: 'range' } -6220 silly addNamed braces@>=1.8.2 <2.0.0 -6221 verbose addNamed ">=1.8.2 <2.0.0" is a valid semver range for braces -6222 silly addNameRange { name: 'braces', range: '>=1.8.2 <2.0.0', hasData: false } -6223 silly mapToRegistry name braces -6224 silly mapToRegistry using default registry -6225 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6226 silly mapToRegistry data Result { -6226 silly mapToRegistry raw: 'braces', -6226 silly mapToRegistry scope: null, -6226 silly mapToRegistry name: 'braces', -6226 silly mapToRegistry rawSpec: '', -6226 silly mapToRegistry spec: 'latest', -6226 silly mapToRegistry type: 'tag' } -6227 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/braces -6228 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/braces not in flight; fetching -6229 silly cache add args [ 'expand-brackets@^0.1.4', null ] -6230 verbose cache add spec expand-brackets@^0.1.4 -6231 silly cache add parsed spec Result { -6231 silly cache add raw: 'expand-brackets@^0.1.4', -6231 silly cache add scope: null, -6231 silly cache add name: 'expand-brackets', -6231 silly cache add rawSpec: '^0.1.4', -6231 silly cache add spec: '>=0.1.4 <0.2.0', -6231 silly cache add type: 'range' } -6232 silly addNamed expand-brackets@>=0.1.4 <0.2.0 -6233 verbose addNamed ">=0.1.4 <0.2.0" is a valid semver range for expand-brackets -6234 silly addNameRange { name: 'expand-brackets', -6234 silly addNameRange range: '>=0.1.4 <0.2.0', -6234 silly addNameRange hasData: false } -6235 silly mapToRegistry name expand-brackets -6236 silly mapToRegistry using default registry -6237 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6238 silly mapToRegistry data Result { -6238 silly mapToRegistry raw: 'expand-brackets', -6238 silly mapToRegistry scope: null, -6238 silly mapToRegistry name: 'expand-brackets', -6238 silly mapToRegistry rawSpec: '', -6238 silly mapToRegistry spec: 'latest', -6238 silly mapToRegistry type: 'tag' } -6239 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/expand-brackets -6240 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/expand-brackets not in flight; fetching -6241 silly cache add args [ 'extglob@^0.3.1', null ] -6242 verbose cache add spec extglob@^0.3.1 -6243 silly cache add parsed spec Result { -6243 silly cache add raw: 'extglob@^0.3.1', -6243 silly cache add scope: null, -6243 silly cache add name: 'extglob', -6243 silly cache add rawSpec: '^0.3.1', -6243 silly cache add spec: '>=0.3.1 <0.4.0', -6243 silly cache add type: 'range' } -6244 silly addNamed extglob@>=0.3.1 <0.4.0 -6245 verbose addNamed ">=0.3.1 <0.4.0" is a valid semver range for extglob -6246 silly addNameRange { name: 'extglob', range: '>=0.3.1 <0.4.0', hasData: false } -6247 silly mapToRegistry name extglob -6248 silly mapToRegistry using default registry -6249 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6250 silly mapToRegistry data Result { -6250 silly mapToRegistry raw: 'extglob', -6250 silly mapToRegistry scope: null, -6250 silly mapToRegistry name: 'extglob', -6250 silly mapToRegistry rawSpec: '', -6250 silly mapToRegistry spec: 'latest', -6250 silly mapToRegistry type: 'tag' } -6251 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/extglob -6252 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/extglob not in flight; fetching -6253 silly mapToRegistry name inflight -6254 silly mapToRegistry using default registry -6255 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6256 silly mapToRegistry data Result { -6256 silly mapToRegistry raw: 'inflight', -6256 silly mapToRegistry scope: null, -6256 silly mapToRegistry name: 'inflight', -6256 silly mapToRegistry rawSpec: '', -6256 silly mapToRegistry spec: 'latest', -6256 silly mapToRegistry type: 'tag' } -6257 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inflight -6258 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz not in flight; adding -6259 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz', -6259 verbose addRemoteTarball 'db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a' ] -6260 silly cache afterAdd onetime@1.1.0 -6261 verbose afterAdd /home/ruanyf/.tnpm/onetime/1.1.0/package/package.json not in flight; writing -6262 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6263 verbose rebuildBundles [ 'ansi-regex' ] -6264 info install strip-ansi@3.0.1 -6265 verbose rebuildBundles [ 'pinkie' ] -6266 info install pinkie-promise@2.0.1 -6267 info postinstall convert-source-map@1.2.0 -6268 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -6269 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream -6270 silly cache afterAdd number-is-nan@1.0.0 -6271 verbose afterAdd /home/ruanyf/.tnpm/number-is-nan/1.0.0/package/package.json not in flight; writing -6272 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6273 silly cache afterAdd number-is-nan@1.0.0 -6274 verbose afterAdd /home/ruanyf/.tnpm/number-is-nan/1.0.0/package/package.json already in flight; not writing -6275 http 200 http://registry.npm.alibaba-inc.com/minimatch -6276 verbose headers { server: 'Tengine', -6276 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6276 verbose headers 'content-type': 'application/json; charset=utf-8', -6276 verbose headers 'transfer-encoding': 'chunked', -6276 verbose headers connection: 'keep-alive', -6276 verbose headers vary: 'Accept-Encoding', -6276 verbose headers 'x-readtime': '47', -6276 verbose headers 'content-encoding': 'gzip' } -6277 silly get cb [ 200, -6277 silly get { server: 'Tengine', -6277 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6277 silly get 'content-type': 'application/json; charset=utf-8', -6277 silly get 'transfer-encoding': 'chunked', -6277 silly get connection: 'keep-alive', -6277 silly get vary: 'Accept-Encoding', -6277 silly get 'x-readtime': '47', -6277 silly get 'content-encoding': 'gzip' } ] -6278 verbose get saving minimatch to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/minimatch/.cache.json -6279 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6280 silly gunzTarPerm extractEntry package.json -6281 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] -6282 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -6283 info postinstall strip-ansi@3.0.1 -6284 info postinstall pinkie-promise@2.0.1 -6285 silly gunzTarPerm extractEntry package.json -6286 verbose unlock done using /home/ruanyf/.tnpm/_locks/lodash-isequal-1be595e320d00e72.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/lodash.isequal -6287 info linkStuff figures@1.7.0 -6288 silly linkStuff figures@1.7.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -6289 silly linkStuff figures@1.7.0 is part of a global install -6290 silly linkStuff figures@1.7.0 is installed into a global node_modules -6291 silly addNameRange number 2 { name: 'is-glob', range: '>=2.0.0 <3.0.0', hasData: true } -6292 silly addNameRange versions [ 'is-glob', -6292 silly addNameRange [ '2.0.1', -6292 silly addNameRange '2.0.0', -6292 silly addNameRange '1.1.3', -6292 silly addNameRange '1.1.2', -6292 silly addNameRange '1.1.1', -6292 silly addNameRange '1.1.0', -6292 silly addNameRange '1.0.0', -6292 silly addNameRange '0.3.0', -6292 silly addNameRange '0.2.0', -6292 silly addNameRange '0.1.0' ] ] -6293 silly addNamed is-glob@2.0.1 -6294 verbose addNamed "2.0.1" is a plain semver version for is-glob -6295 silly addNameRange number 2 { name: 'is-glob', range: '>=2.0.1 <3.0.0', hasData: true } -6296 silly addNameRange versions [ 'is-glob', -6296 silly addNameRange [ '2.0.1', -6296 silly addNameRange '2.0.0', -6296 silly addNameRange '1.1.3', -6296 silly addNameRange '1.1.2', -6296 silly addNameRange '1.1.1', -6296 silly addNameRange '1.1.0', -6296 silly addNameRange '1.0.0', -6296 silly addNameRange '0.3.0', -6296 silly addNameRange '0.2.0', -6296 silly addNameRange '0.1.0' ] ] -6297 silly addNamed is-glob@2.0.1 -6298 verbose addNamed "2.0.1" is a plain semver version for is-glob -6299 verbose request uri http://registry.npm.alibaba-inc.com/is-extglob -6300 verbose request no auth needed -6301 info attempt registry request try #1 at 上午9:12:30 -6302 verbose etag "fa3-nsT25tkbXMNQ/HoUIdcx8w" -6303 http request GET http://registry.npm.alibaba-inc.com/is-extglob -6304 verbose request uri http://registry.npm.alibaba-inc.com/filename-regex -6305 verbose request no auth needed -6306 info attempt registry request try #1 at 上午9:12:30 -6307 verbose etag "1cc2-3O1TIUt9NHHbzRkx7ThNsw" -6308 http request GET http://registry.npm.alibaba-inc.com/filename-regex -6309 verbose request uri http://registry.npm.alibaba-inc.com/kind-of -6310 verbose request no auth needed -6311 info attempt registry request try #1 at 上午9:12:30 -6312 http request GET http://registry.npm.alibaba-inc.com/kind-of -6313 verbose request uri http://registry.npm.alibaba-inc.com/normalize-path -6314 verbose request no auth needed -6315 info attempt registry request try #1 at 上午9:12:30 -6316 verbose etag "435c-EGI/vTL3T/qutoMalkIGUg" -6317 http request GET http://registry.npm.alibaba-inc.com/normalize-path -6318 verbose request uri http://registry.npm.alibaba-inc.com/parse-glob -6319 verbose request no auth needed -6320 info attempt registry request try #1 at 上午9:12:30 -6321 verbose etag "6527-9OP9+cTgIU5LGQHZhMXZFw" -6322 http request GET http://registry.npm.alibaba-inc.com/parse-glob -6323 verbose request uri http://registry.npm.alibaba-inc.com/object.omit -6324 verbose request no auth needed -6325 info attempt registry request try #1 at 上午9:12:30 -6326 verbose etag "25da-gV9QjFaw2CKGhu8B16l6MQ" -6327 http request GET http://registry.npm.alibaba-inc.com/object.omit -6328 info retry fetch attempt 1 at 上午9:12:30 -6329 info attempt registry request try #1 at 上午9:12:30 -6330 http fetch GET http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz -6331 verbose request uri http://registry.npm.alibaba-inc.com/regex-cache -6332 verbose request no auth needed -6333 info attempt registry request try #1 at 上午9:12:30 -6334 verbose etag "4e4a-X+jWDoi4IAiPwZpa7T/QbQ" -6335 http request GET http://registry.npm.alibaba-inc.com/regex-cache -6336 verbose unlock done using /home/ruanyf/.tnpm/_locks/convert-source-map-1e2549d3702e64b0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps/node_modules/convert-source-map -6337 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps -6338 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps -6339 silly gunzTarPerm extractEntry dist/rx.lite.compat.js -6340 silly install resolved [] -6341 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone -6342 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone -6343 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify is being purged from base /home/ruanyf/npm-global -6344 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -6345 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream is being purged from base /home/ruanyf/npm-global -6346 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream -6347 verbose afterAdd /home/ruanyf/.tnpm/exit-hook/1.1.1/package/package.json written -6348 silly cache afterAdd path-is-absolute@1.0.0 -6349 verbose afterAdd /home/ruanyf/.tnpm/path-is-absolute/1.0.0/package/package.json not in flight; writing -6350 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6351 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend/package.json -6352 verbose tar unpack /home/ruanyf/.tnpm/json-stable-stringify/1.0.1/package.tgz -6353 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -6354 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify is being purged -6355 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -6356 verbose tar unpack /home/ruanyf/.tnpm/is-stream/1.1.0/package.tgz -6357 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream -6358 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream is being purged -6359 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream -6360 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex -6361 verbose request uri http://registry.npm.alibaba-inc.com/arr-diff -6362 verbose request no auth needed -6363 info attempt registry request try #1 at 上午9:12:30 -6364 http request GET http://registry.npm.alibaba-inc.com/arr-diff -6365 verbose request uri http://registry.npm.alibaba-inc.com/array-unique -6366 verbose request no auth needed -6367 info attempt registry request try #1 at 上午9:12:30 -6368 verbose etag "1ab0-dJwkoq1CcSTiCogvIc6FuA" -6369 http request GET http://registry.npm.alibaba-inc.com/array-unique -6370 verbose request uri http://registry.npm.alibaba-inc.com/braces -6371 verbose request no auth needed -6372 info attempt registry request try #1 at 上午9:12:30 -6373 verbose etag "a2f4-qKOTW/UiD6Z2FCBPz08ArA" -6374 http request GET http://registry.npm.alibaba-inc.com/braces -6375 verbose request uri http://registry.npm.alibaba-inc.com/expand-brackets -6376 verbose request no auth needed -6377 info attempt registry request try #1 at 上午9:12:30 -6378 verbose etag "3811-i89Oisf4IICjDuHsqn/zcg" -6379 http request GET http://registry.npm.alibaba-inc.com/expand-brackets -6380 verbose request uri http://registry.npm.alibaba-inc.com/extglob -6381 verbose request no auth needed -6382 info attempt registry request try #1 at 上午9:12:30 -6383 verbose etag "2d7e-EfWk2y1UCSFw7QWPoNzxQw" -6384 http request GET http://registry.npm.alibaba-inc.com/extglob -6385 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow is being purged from base /home/ruanyf/npm-global -6386 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -6387 silly gunzTarPerm extractEntry .npmignore -6388 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] -6389 silly gunzTarPerm extractEntry README.md -6390 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] -6391 verbose afterAdd /home/ruanyf/.tnpm/onetime/1.1.0/package/package.json written -6392 silly install resolved [ { name: 'exit-hook', -6392 silly install resolved version: '1.1.1', -6392 silly install resolved description: 'Run some code when the process exits', -6392 silly install resolved license: 'MIT', -6392 silly install resolved repository: -6392 silly install resolved { type: 'git', -6392 silly install resolved url: 'git://github.com/sindresorhus/exit-hook.git' }, -6392 silly install resolved author: -6392 silly install resolved { name: 'Sindre Sorhus', -6392 silly install resolved email: 'sindresorhus@gmail.com', -6392 silly install resolved url: 'http://sindresorhus.com' }, -6392 silly install resolved engines: { node: '>=0.10.0' }, -6392 silly install resolved scripts: { test: 'node test.js' }, -6392 silly install resolved files: [ 'index.js' ], -6392 silly install resolved keywords: -6392 silly install resolved [ 'exit', -6392 silly install resolved 'quit', -6392 silly install resolved 'process', -6392 silly install resolved 'hook', -6392 silly install resolved 'graceful', -6392 silly install resolved 'handler', -6392 silly install resolved 'shutdown', -6392 silly install resolved 'sigterm', -6392 silly install resolved 'sigint', -6392 silly install resolved 'terminate', -6392 silly install resolved 'kill', -6392 silly install resolved 'stop', -6392 silly install resolved 'event' ], -6392 silly install resolved devDependencies: { ava: '0.0.4' }, -6392 silly install resolved bugs: { url: 'https://github.com/sindresorhus/exit-hook/issues' }, -6392 silly install resolved homepage: 'https://github.com/sindresorhus/exit-hook', -6392 silly install resolved _id: 'exit-hook@1.1.1', -6392 silly install resolved _shasum: 'f05ca233b48c05d54fff07765df8507e95c02ff8', -6392 silly install resolved _from: 'exit-hook@>=1.0.0 <2.0.0', -6392 silly install resolved _npmVersion: '1.4.9', -6392 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -6392 silly install resolved maintainers: [ [Object] ], -6392 silly install resolved dist: -6392 silly install resolved { shasum: 'f05ca233b48c05d54fff07765df8507e95c02ff8', -6392 silly install resolved size: 1006, -6392 silly install resolved noattachment: false, -6392 silly install resolved key: 'exit-hook/-/exit-hook-1.1.1.tgz', -6392 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/exit-hook/download/exit-hook-1.1.1.tgz' }, -6392 silly install resolved directories: {}, -6392 silly install resolved publish_time: 1409577290788, -6392 silly install resolved _cnpm_publish_time: 1409577290788, -6392 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/exit-hook/download/exit-hook-1.1.1.tgz', -6392 silly install resolved readme: 'ERROR: No README data found!' }, -6392 silly install resolved { name: 'onetime', -6392 silly install resolved version: '1.1.0', -6392 silly install resolved description: 'Only call a function once', -6392 silly install resolved license: 'MIT', -6392 silly install resolved repository: -6392 silly install resolved { type: 'git', -6392 silly install resolved url: 'git+https://github.com/sindresorhus/onetime.git' }, -6392 silly install resolved author: -6392 silly install resolved { name: 'Sindre Sorhus', -6392 silly install resolved email: 'sindresorhus@gmail.com', -6392 silly install resolved url: 'sindresorhus.com' }, -6392 silly install resolved engines: { node: '>=0.10.0' }, -6392 silly install resolved scripts: { test: 'xo && ava' }, -6392 silly install resolved files: [ 'index.js' ], -6392 silly install resolved keywords: [ 'once', 'one', 'single', 'call', 'function', 'prevent' ], -6392 silly install resolved devDependencies: { ava: '*', xo: '*' }, -6392 silly install resolved gitHead: '6fae2fb77b95b49719d1c270d8ba07d9515bdfe8', -6392 silly install resolved bugs: { url: 'https://github.com/sindresorhus/onetime/issues' }, -6392 silly install resolved homepage: 'https://github.com/sindresorhus/onetime', -6392 silly install resolved _id: 'onetime@1.1.0', -6392 silly install resolved _shasum: 'a1f7838f8314c516f05ecefcbc4ccfe04b4ed789', -6392 silly install resolved _from: 'onetime@>=1.0.0 <2.0.0', -6392 silly install resolved _npmVersion: '2.14.7', -6392 silly install resolved _nodeVersion: '4.2.1', -6392 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -6392 silly install resolved dist: -6392 silly install resolved { shasum: 'a1f7838f8314c516f05ecefcbc4ccfe04b4ed789', -6392 silly install resolved size: 1868, -6392 silly install resolved noattachment: false, -6392 silly install resolved key: 'onetime/-/onetime-1.1.0.tgz', -6392 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/onetime/download/onetime-1.1.0.tgz' }, -6392 silly install resolved maintainers: [ [Object] ], -6392 silly install resolved directories: {}, -6392 silly install resolved publish_time: 1450398655390, -6392 silly install resolved _cnpm_publish_time: 1450398655390, -6392 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/onetime/download/onetime-1.1.0.tgz', -6392 silly install resolved readme: 'ERROR: No README data found!' } ] -6393 info install exit-hook@1.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -6394 info install onetime@1.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -6395 info installOne exit-hook@1.1.1 -6396 verbose installOne of exit-hook to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor not in flight; installing -6397 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6398 info installOne onetime@1.1.0 -6399 verbose installOne of onetime to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor not in flight; installing -6400 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6401 verbose unlock done using /home/ruanyf/.tnpm/_locks/strip-ansi-8225ce477c1ac85b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/strip-ansi -6402 verbose unlock done using /home/ruanyf/.tnpm/_locks/pinkie-promise-800bae8d19425ab2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/pinkie-promise -6403 silly gunzTarPerm extractEntry fill.js -6404 silly gunzTarPerm extractEntry bindKey.js -6405 verbose linkBins figures@1.7.0 -6406 verbose linkMans figures@1.7.0 -6407 verbose rebuildBundles figures@1.7.0 -6408 silly gunzTarPerm modes [ '755', '644' ] -6409 silly gunzTarPerm modes [ '755', '644' ] -6410 verbose afterAdd /home/ruanyf/.tnpm/number-is-nan/1.0.0/package/package.json written -6411 silly install resolved [ { name: 'number-is-nan', -6411 silly install resolved version: '1.0.0', -6411 silly install resolved description: 'ES6 Number.isNaN() ponyfill', -6411 silly install resolved license: 'MIT', -6411 silly install resolved repository: -6411 silly install resolved { type: 'git', -6411 silly install resolved url: 'git+https://github.com/sindresorhus/number-is-nan.git' }, -6411 silly install resolved author: -6411 silly install resolved { name: 'Sindre Sorhus', -6411 silly install resolved email: 'sindresorhus@gmail.com', -6411 silly install resolved url: 'sindresorhus.com' }, -6411 silly install resolved engines: { node: '>=0.10.0' }, -6411 silly install resolved scripts: { test: 'node test.js' }, -6411 silly install resolved files: [ 'index.js' ], -6411 silly install resolved keywords: -6411 silly install resolved [ 'es6', -6411 silly install resolved 'es2015', -6411 silly install resolved 'ecmascript', -6411 silly install resolved 'harmony', -6411 silly install resolved 'ponyfill', -6411 silly install resolved 'polyfill', -6411 silly install resolved 'shim', -6411 silly install resolved 'number', -6411 silly install resolved 'is', -6411 silly install resolved 'nan', -6411 silly install resolved 'not' ], -6411 silly install resolved devDependencies: { ava: '0.0.4' }, -6411 silly install resolved gitHead: '0f394b1bc33185c40304363b209e3f0588dbeeb3', -6411 silly install resolved bugs: { url: 'https://github.com/sindresorhus/number-is-nan/issues' }, -6411 silly install resolved homepage: 'https://github.com/sindresorhus/number-is-nan#readme', -6411 silly install resolved _id: 'number-is-nan@1.0.0', -6411 silly install resolved _shasum: 'c020f529c5282adfdd233d91d4b181c3d686dc4b', -6411 silly install resolved _from: 'number-is-nan@>=1.0.0 <2.0.0', -6411 silly install resolved _npmVersion: '2.10.0', -6411 silly install resolved _nodeVersion: '0.12.3', -6411 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -6411 silly install resolved dist: -6411 silly install resolved { shasum: 'c020f529c5282adfdd233d91d4b181c3d686dc4b', -6411 silly install resolved size: 1499, -6411 silly install resolved noattachment: false, -6411 silly install resolved key: 'number-is-nan/-/number-is-nan-1.0.0.tgz', -6411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/number-is-nan/download/number-is-nan-1.0.0.tgz' }, -6411 silly install resolved maintainers: [ [Object] ], -6411 silly install resolved directories: {}, -6411 silly install resolved publish_time: 1432155150474, -6411 silly install resolved _cnpm_publish_time: 1432155150474, -6411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/number-is-nan/download/number-is-nan-1.0.0.tgz', -6411 silly install resolved readme: 'ERROR: No README data found!' } ] -6412 info install number-is-nan@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -6413 info installOne number-is-nan@1.0.0 -6414 verbose installOne of number-is-nan to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point not in flight; installing -6415 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6416 silly install resolved [ { name: 'number-is-nan', -6416 silly install resolved version: '1.0.0', -6416 silly install resolved description: 'ES6 Number.isNaN() ponyfill', -6416 silly install resolved license: 'MIT', -6416 silly install resolved repository: -6416 silly install resolved { type: 'git', -6416 silly install resolved url: 'git+https://github.com/sindresorhus/number-is-nan.git' }, -6416 silly install resolved author: -6416 silly install resolved { name: 'Sindre Sorhus', -6416 silly install resolved email: 'sindresorhus@gmail.com', -6416 silly install resolved url: 'sindresorhus.com' }, -6416 silly install resolved engines: { node: '>=0.10.0' }, -6416 silly install resolved scripts: { test: 'node test.js' }, -6416 silly install resolved files: [ 'index.js' ], -6416 silly install resolved keywords: -6416 silly install resolved [ 'es6', -6416 silly install resolved 'es2015', -6416 silly install resolved 'ecmascript', -6416 silly install resolved 'harmony', -6416 silly install resolved 'ponyfill', -6416 silly install resolved 'polyfill', -6416 silly install resolved 'shim', -6416 silly install resolved 'number', -6416 silly install resolved 'is', -6416 silly install resolved 'nan', -6416 silly install resolved 'not' ], -6416 silly install resolved devDependencies: { ava: '0.0.4' }, -6416 silly install resolved gitHead: '0f394b1bc33185c40304363b209e3f0588dbeeb3', -6416 silly install resolved bugs: { url: 'https://github.com/sindresorhus/number-is-nan/issues' }, -6416 silly install resolved homepage: 'https://github.com/sindresorhus/number-is-nan#readme', -6416 silly install resolved _id: 'number-is-nan@1.0.0', -6416 silly install resolved _shasum: 'c020f529c5282adfdd233d91d4b181c3d686dc4b', -6416 silly install resolved _from: 'number-is-nan@>=1.0.0 <2.0.0', -6416 silly install resolved _npmVersion: '2.10.0', -6416 silly install resolved _nodeVersion: '0.12.3', -6416 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -6416 silly install resolved dist: -6416 silly install resolved { shasum: 'c020f529c5282adfdd233d91d4b181c3d686dc4b', -6416 silly install resolved size: 1499, -6416 silly install resolved noattachment: false, -6416 silly install resolved key: 'number-is-nan/-/number-is-nan-1.0.0.tgz', -6416 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/number-is-nan/download/number-is-nan-1.0.0.tgz' }, -6416 silly install resolved maintainers: [ [Object] ], -6416 silly install resolved directories: {}, -6416 silly install resolved publish_time: 1432155150474, -6416 silly install resolved _cnpm_publish_time: 1432155150474, -6416 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/number-is-nan/download/number-is-nan-1.0.0.tgz', -6416 silly install resolved readme: 'ERROR: No README data found!' } ] -6417 info install number-is-nan@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -6418 info installOne number-is-nan@1.0.0 -6419 verbose installOne of number-is-nan to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at not in flight; installing -6420 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6421 silly gunzTarPerm extractEntry index.js -6422 silly gunzTarPerm extractEntry test.js -6423 silly gunzTarPerm extractEntry inherits.js -6424 silly gunzTarPerm extractEntry inherits_browser.js -6425 silly gunzTarPerm extractEntry readme.md -6426 verbose tar unpack /home/ruanyf/.tnpm/extend-shallow/2.0.1/package.tgz -6427 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -6428 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow is being purged -6429 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -6430 silly gunzTarPerm extractEntry .npmignore -6431 silly gunzTarPerm extractEntry README.md -6432 verbose rebuildBundles [ 'escape-string-regexp', 'object-assign' ] -6433 info install figures@1.7.0 -6434 silly gunzTarPerm extractEntry .travis.yml -6435 silly gunzTarPerm extractEntry license.md -6436 silly gunzTarPerm extractEntry LICENSE -6437 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ] -6438 silly gunzTarPerm extractEntry index.js -6439 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ] -6440 silly gunzTarPerm extractEntry browser.js -6441 silly gunzTarPerm extractEntry node.js -6442 silly gunzTarPerm extractEntry test.js -6443 silly gunzTarPerm extractEntry float.patch -6444 silly gunzTarPerm modes [ '755', '644' ] -6445 verbose lock using /home/ruanyf/.tnpm/_locks/exit-hook-5ff6422de8a65eae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook -6446 verbose lock using /home/ruanyf/.tnpm/_locks/onetime-41a4238185ea7660.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime -6447 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex is being purged from base /home/ruanyf/npm-global -6448 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex -6449 verbose lock using /home/ruanyf/.tnpm/_locks/number-is-nan-d87d7a71abbd4b8e.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan -6450 verbose lock using /home/ruanyf/.tnpm/_locks/number-is-nan-4e0947818a28c513.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan -6451 silly gunzTarPerm extractEntry once.js -6452 silly install write writing exit-hook 1.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook -6453 silly install write writing onetime 1.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime -6454 info linkStuff gulp-sourcemaps@1.6.0 -6455 silly linkStuff gulp-sourcemaps@1.6.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -6456 silly linkStuff gulp-sourcemaps@1.6.0 is part of a global install -6457 silly linkStuff gulp-sourcemaps@1.6.0 is installed into a global node_modules -6458 info linkStuff clone@1.0.2 -6459 silly linkStuff clone@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules as its parent node_modules -6460 silly linkStuff clone@1.0.2 is part of a global install -6461 silly linkStuff clone@1.0.2 is installed into a global node_modules -6462 info postinstall figures@1.7.0 -6463 verbose tar unpack /home/ruanyf/.tnpm/ansi-regex/2.0.0/package.tgz -6464 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex -6465 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex is being purged -6466 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex -6467 silly cache afterAdd is-glob@2.0.1 -6468 verbose afterAdd /home/ruanyf/.tnpm/is-glob/2.0.1/package/package.json not in flight; writing -6469 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6470 silly cache afterAdd is-glob@2.0.1 -6471 verbose afterAdd /home/ruanyf/.tnpm/is-glob/2.0.1/package/package.json already in flight; not writing -6472 http fetch 200 http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz -6473 http 304 http://registry.npm.alibaba-inc.com/filename-regex -6474 verbose headers { server: 'Tengine', -6474 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6474 verbose headers connection: 'keep-alive', -6474 verbose headers etag: '"1cc2-3O1TIUt9NHHbzRkx7ThNsw"', -6474 verbose headers 'x-readtime': '16' } -6475 silly get cb [ 304, -6475 silly get { server: 'Tengine', -6475 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6475 silly get connection: 'keep-alive', -6475 silly get etag: '"1cc2-3O1TIUt9NHHbzRkx7ThNsw"', -6475 silly get 'x-readtime': '16' } ] -6476 verbose etag http://registry.npm.alibaba-inc.com/filename-regex from cache -6477 verbose get saving filename-regex to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/filename-regex/.cache.json -6478 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6479 http 304 http://registry.npm.alibaba-inc.com/is-extglob -6480 verbose headers { server: 'Tengine', -6480 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6480 verbose headers connection: 'keep-alive', -6480 verbose headers etag: '"fa3-nsT25tkbXMNQ/HoUIdcx8w"', -6480 verbose headers 'x-readtime': '18' } -6481 silly get cb [ 304, -6481 silly get { server: 'Tengine', -6481 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6481 silly get connection: 'keep-alive', -6481 silly get etag: '"fa3-nsT25tkbXMNQ/HoUIdcx8w"', -6481 silly get 'x-readtime': '18' } ] -6482 verbose etag http://registry.npm.alibaba-inc.com/is-extglob from cache -6483 verbose get saving is-extglob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-extglob/.cache.json -6484 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6485 silly install write writing number-is-nan 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan -6486 silly install write writing number-is-nan 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan -6487 silly addNameRange number 2 { name: 'minimatch', -6487 silly addNameRange range: '>=2.0.0 <3.0.0||>=3.0.0 <4.0.0', -6487 silly addNameRange hasData: true } -6488 silly addNameRange versions [ 'minimatch', -6488 silly addNameRange [ '3.0.0', -6488 silly addNameRange '2.0.10', -6488 silly addNameRange '2.0.9', -6488 silly addNameRange '2.0.8', -6488 silly addNameRange '2.0.7', -6488 silly addNameRange '2.0.6', -6488 silly addNameRange '2.0.5', -6488 silly addNameRange '2.0.4', -6488 silly addNameRange '2.0.3', -6488 silly addNameRange '2.0.2', -6488 silly addNameRange '2.0.1', -6488 silly addNameRange '2.0.0', -6488 silly addNameRange '1.0.0', -6488 silly addNameRange '0.4.0', -6488 silly addNameRange '0.3.0', -6488 silly addNameRange '0.2.14', -6488 silly addNameRange '0.2.13', -6488 silly addNameRange '0.2.12', -6488 silly addNameRange '0.2.11', -6488 silly addNameRange '0.2.10', -6488 silly addNameRange '0.2.9', -6488 silly addNameRange '0.2.8', -6488 silly addNameRange '0.2.7', -6488 silly addNameRange '0.2.6', -6488 silly addNameRange '0.2.5', -6488 silly addNameRange '0.2.4', -6488 silly addNameRange '0.2.3', -6488 silly addNameRange '0.2.2', -6488 silly addNameRange '0.2.0', -6488 silly addNameRange '0.1.5', -6488 silly addNameRange '0.1.4', -6488 silly addNameRange '0.1.3', -6488 silly addNameRange '0.1.2', -6488 silly addNameRange '0.1.1', -6488 silly addNameRange '0.0.5', -6488 silly addNameRange '0.0.4', -6488 silly addNameRange '0.0.2', -6488 silly addNameRange '0.0.1' ] ] -6489 silly addNamed minimatch@3.0.0 -6490 verbose addNamed "3.0.0" is a plain semver version for minimatch -6491 verbose afterAdd /home/ruanyf/.tnpm/path-is-absolute/1.0.0/package/package.json written -6492 silly gunzTarPerm modes [ '755', '644' ] -6493 http 304 http://registry.npm.alibaba-inc.com/normalize-path -6494 verbose headers { server: 'Tengine', -6494 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6494 verbose headers connection: 'keep-alive', -6494 verbose headers etag: '"435c-EGI/vTL3T/qutoMalkIGUg"', -6494 verbose headers 'x-readtime': '20' } -6495 silly get cb [ 304, -6495 silly get { server: 'Tengine', -6495 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6495 silly get connection: 'keep-alive', -6495 silly get etag: '"435c-EGI/vTL3T/qutoMalkIGUg"', -6495 silly get 'x-readtime': '20' } ] -6496 verbose etag http://registry.npm.alibaba-inc.com/normalize-path from cache -6497 verbose get saving normalize-path to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/normalize-path/.cache.json -6498 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6499 silly install resolved [] -6500 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend -6501 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend -6502 silly gunzTarPerm extractEntry package.json -6503 silly gunzTarPerm extractEntry package.json -6504 http 200 http://registry.npm.alibaba-inc.com/minimist -6505 verbose headers { server: 'Tengine', -6505 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6505 verbose headers 'content-type': 'application/json; charset=utf-8', -6505 verbose headers 'transfer-encoding': 'chunked', -6505 verbose headers connection: 'keep-alive', -6505 verbose headers vary: 'Accept-Encoding', -6505 verbose headers 'x-readtime': '62', -6505 verbose headers 'content-encoding': 'gzip' } -6506 silly get cb [ 200, -6506 silly get { server: 'Tengine', -6506 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6506 silly get 'content-type': 'application/json; charset=utf-8', -6506 silly get 'transfer-encoding': 'chunked', -6506 silly get connection: 'keep-alive', -6506 silly get vary: 'Accept-Encoding', -6506 silly get 'x-readtime': '62', -6506 silly get 'content-encoding': 'gzip' } ] -6507 verbose get saving minimist to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/minimist/.cache.json -6508 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6509 verbose linkBins gulp-sourcemaps@1.6.0 -6510 verbose linkMans gulp-sourcemaps@1.6.0 -6511 verbose rebuildBundles gulp-sourcemaps@1.6.0 -6512 verbose linkBins clone@1.0.2 -6513 verbose linkMans clone@1.0.2 -6514 verbose rebuildBundles clone@1.0.2 -6515 verbose unlock done using /home/ruanyf/.tnpm/_locks/figures-3c89e277294fa2ae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/figures -6516 silly gunzTarPerm extractEntry package.json -6517 verbose rebuildBundles [ 'convert-source-map' ] -6518 info install gulp-sourcemaps@1.6.0 -6519 info install clone@1.0.2 -6520 silly fetchAndShaCheck shasum db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a -6521 http 304 http://registry.npm.alibaba-inc.com/regex-cache -6522 verbose headers { server: 'Tengine', -6522 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6522 verbose headers connection: 'keep-alive', -6522 verbose headers etag: '"4e4a-X+jWDoi4IAiPwZpa7T/QbQ"', -6522 verbose headers 'x-readtime': '33' } -6523 silly get cb [ 304, -6523 silly get { server: 'Tengine', -6523 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6523 silly get connection: 'keep-alive', -6523 silly get etag: '"4e4a-X+jWDoi4IAiPwZpa7T/QbQ"', -6523 silly get 'x-readtime': '33' } ] -6524 verbose etag http://registry.npm.alibaba-inc.com/regex-cache from cache -6525 verbose get saving regex-cache to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/regex-cache/.cache.json -6526 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6527 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook -6528 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime -6529 verbose afterAdd /home/ruanyf/.tnpm/is-glob/2.0.1/package/package.json written -6530 silly install resolved [ { name: 'is-glob', -6530 silly install resolved description: 'Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet', -6530 silly install resolved version: '2.0.1', -6530 silly install resolved homepage: 'https://github.com/jonschlinkert/is-glob', -6530 silly install resolved author: -6530 silly install resolved { name: 'Jon Schlinkert', -6530 silly install resolved url: 'https://github.com/jonschlinkert' }, -6530 silly install resolved repository: -6530 silly install resolved { type: 'git', -6530 silly install resolved url: 'git+https://github.com/jonschlinkert/is-glob.git' }, -6530 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-glob/issues' }, -6530 silly install resolved license: 'MIT', -6530 silly install resolved files: [ 'index.js' ], -6530 silly install resolved main: 'index.js', -6530 silly install resolved engines: { node: '>=0.10.0' }, -6530 silly install resolved scripts: { test: 'mocha' }, -6530 silly install resolved dependencies: { 'is-extglob': '^1.0.0' }, -6530 silly install resolved devDependencies: { mocha: '*' }, -6530 silly install resolved keywords: -6530 silly install resolved [ 'bash', -6530 silly install resolved 'braces', -6530 silly install resolved 'check', -6530 silly install resolved 'exec', -6530 silly install resolved 'extglob', -6530 silly install resolved 'expression', -6530 silly install resolved 'glob', -6530 silly install resolved 'globbing', -6530 silly install resolved 'globstar', -6530 silly install resolved 'match', -6530 silly install resolved 'matches', -6530 silly install resolved 'pattern', -6530 silly install resolved 'regex', -6530 silly install resolved 'regular', -6530 silly install resolved 'string', -6530 silly install resolved 'test' ], -6530 silly install resolved verb: { related: [Object] }, -6530 silly install resolved gitHead: 'd7db1b2dd559b3d5a73f89dbe72d9e9f4d6587d7', -6530 silly install resolved _id: 'is-glob@2.0.1', -6530 silly install resolved _shasum: 'd096f926a3ded5600f3fdfd91198cb0888c2d863', -6530 silly install resolved _from: 'is-glob@>=2.0.0 <3.0.0', -6530 silly install resolved _npmVersion: '2.10.1', -6530 silly install resolved _nodeVersion: '0.12.4', -6530 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6530 silly install resolved maintainers: [ [Object], [Object] ], -6530 silly install resolved dist: -6530 silly install resolved { shasum: 'd096f926a3ded5600f3fdfd91198cb0888c2d863', -6530 silly install resolved size: 2485, -6530 silly install resolved noattachment: false, -6530 silly install resolved key: 'is-glob/-/is-glob-2.0.1.tgz', -6530 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-glob/download/is-glob-2.0.1.tgz' }, -6530 silly install resolved directories: {}, -6530 silly install resolved publish_time: 1443760481446, -6530 silly install resolved _cnpm_publish_time: 1443760481446, -6530 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-glob/download/is-glob-2.0.1.tgz', -6530 silly install resolved readme: 'ERROR: No README data found!' } ] -6531 info install is-glob@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -6532 info installOne is-glob@2.0.1 -6533 verbose installOne of is-glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent not in flight; installing -6534 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6535 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan -6536 verbose unbuild lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan -6537 silly gunzTarPerm extractEntry .travis.yml -6538 silly gunzTarPerm extractEntry Makefile -6539 silly gunzTarPerm extractEntry LICENCE -6540 silly gunzTarPerm modified mode [ 'LICENCE', 436, 420 ] -6541 silly gunzTarPerm extractEntry immutable.js -6542 silly gunzTarPerm modified mode [ 'immutable.js', 436, 420 ] -6543 info postinstall gulp-sourcemaps@1.6.0 -6544 silly gunzTarPerm extractEntry filter.js -6545 silly gunzTarPerm extractEntry bindAll.js -6546 info postinstall clone@1.0.2 -6547 silly gunzTarPerm extractEntry dist/rx.all.compat.js -6548 silly gunzTarPerm extractEntry package.json -6549 silly gunzTarPerm extractEntry .npmignore -6550 silly gunzTarPerm extractEntry LICENSE -6551 silly gunzTarPerm extractEntry index.js -6552 silly gunzTarPerm extractEntry license -6553 http 304 http://registry.npm.alibaba-inc.com/array-unique -6554 verbose headers { server: 'Tengine', -6554 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6554 verbose headers connection: 'keep-alive', -6554 verbose headers etag: '"1ab0-dJwkoq1CcSTiCogvIc6FuA"', -6554 verbose headers 'x-readtime': '22' } -6555 silly get cb [ 304, -6555 silly get { server: 'Tengine', -6555 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6555 silly get connection: 'keep-alive', -6555 silly get etag: '"1ab0-dJwkoq1CcSTiCogvIc6FuA"', -6555 silly get 'x-readtime': '22' } ] -6556 verbose etag http://registry.npm.alibaba-inc.com/array-unique from cache -6557 verbose get saving array-unique to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/array-unique/.cache.json -6558 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6559 http 304 http://registry.npm.alibaba-inc.com/parse-glob -6560 verbose headers { server: 'Tengine', -6560 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6560 verbose headers connection: 'keep-alive', -6560 verbose headers etag: '"6527-9OP9+cTgIU5LGQHZhMXZFw"', -6560 verbose headers 'x-readtime': '41' } -6561 silly get cb [ 304, -6561 silly get { server: 'Tengine', -6561 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6561 silly get connection: 'keep-alive', -6561 silly get etag: '"6527-9OP9+cTgIU5LGQHZhMXZFw"', -6561 silly get 'x-readtime': '41' } ] -6562 verbose etag http://registry.npm.alibaba-inc.com/parse-glob from cache -6563 verbose get saving parse-glob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/parse-glob/.cache.json -6564 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6565 http 304 http://registry.npm.alibaba-inc.com/extglob -6566 verbose headers { server: 'Tengine', -6566 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6566 verbose headers connection: 'keep-alive', -6566 verbose headers etag: '"2d7e-EfWk2y1UCSFw7QWPoNzxQw"', -6566 verbose headers 'x-readtime': '27' } -6567 silly get cb [ 304, -6567 silly get { server: 'Tengine', -6567 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6567 silly get connection: 'keep-alive', -6567 silly get etag: '"2d7e-EfWk2y1UCSFw7QWPoNzxQw"', -6567 silly get 'x-readtime': '27' } ] -6568 verbose etag http://registry.npm.alibaba-inc.com/extglob from cache -6569 verbose get saving extglob to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/extglob/.cache.json -6570 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6571 http 304 http://registry.npm.alibaba-inc.com/object.omit -6572 verbose headers { server: 'Tengine', -6572 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6572 verbose headers connection: 'keep-alive', -6572 verbose headers etag: '"25da-gV9QjFaw2CKGhu8B16l6MQ"', -6572 verbose headers 'x-readtime': '38' } -6573 silly get cb [ 304, -6573 silly get { server: 'Tengine', -6573 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6573 silly get connection: 'keep-alive', -6573 silly get etag: '"25da-gV9QjFaw2CKGhu8B16l6MQ"', -6573 silly get 'x-readtime': '38' } ] -6574 verbose etag http://registry.npm.alibaba-inc.com/object.omit from cache -6575 verbose get saving object.omit to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/object.omit/.cache.json -6576 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6577 silly gunzTarPerm extractEntry test.js -6578 silly cache afterAdd minimatch@3.0.0 -6579 verbose afterAdd /home/ruanyf/.tnpm/minimatch/3.0.0/package/package.json not in flight; writing -6580 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6581 silly gunzTarPerm extractEntry lib/util.js -6582 info linkStuff extend@3.0.0 -6583 silly linkStuff extend@3.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules -6584 silly linkStuff extend@3.0.0 is part of a global install -6585 silly linkStuff extend@3.0.0 is installed into a global node_modules -6586 silly gunzTarPerm extractEntry LICENSE -6587 silly gunzTarPerm extractEntry duplex.js -6588 verbose lock using /home/ruanyf/.tnpm/_locks/is-glob-28c6371c3d64b787.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -6589 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz not in flight; adding -6590 verbose addTmpTarball already have metadata; skipping unpack for inflight@1.0.5 -6591 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6592 silly gunzTarPerm extractEntry readme.md -6593 silly gunzTarPerm extractEntry History.md -6594 silly gunzTarPerm extractEntry README.md -6595 silly gunzTarPerm extractEntry LICENSE -6596 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook is being purged from base /home/ruanyf/npm-global -6597 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook -6598 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime is being purged from base /home/ruanyf/npm-global -6599 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime -6600 silly install write writing is-glob 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -6601 http 304 http://registry.npm.alibaba-inc.com/braces -6602 verbose headers { server: 'Tengine', -6602 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6602 verbose headers connection: 'keep-alive', -6602 verbose headers etag: '"a2f4-qKOTW/UiD6Z2FCBPz08ArA"', -6602 verbose headers 'x-readtime': '39' } -6603 silly get cb [ 304, -6603 silly get { server: 'Tengine', -6603 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6603 silly get connection: 'keep-alive', -6603 silly get etag: '"a2f4-qKOTW/UiD6Z2FCBPz08ArA"', -6603 silly get 'x-readtime': '39' } ] -6604 verbose etag http://registry.npm.alibaba-inc.com/braces from cache -6605 verbose get saving braces to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/braces/.cache.json -6606 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6607 silly addNameRange number 2 { name: 'filename-regex', -6607 silly addNameRange range: '>=2.0.0 <3.0.0', -6607 silly addNameRange hasData: true } -6608 silly addNameRange versions [ 'filename-regex', [ '2.0.0', '1.0.0', '0.2.0', '0.1.0' ] ] -6609 silly addNamed filename-regex@2.0.0 -6610 verbose addNamed "2.0.0" is a plain semver version for filename-regex -6611 silly addNameRange number 2 { name: 'is-extglob', range: '>=1.0.0 <2.0.0', hasData: true } -6612 silly addNameRange versions [ 'is-extglob', [ '1.0.0' ] ] -6613 silly addNamed is-extglob@1.0.0 -6614 verbose addNamed "1.0.0" is a plain semver version for is-extglob -6615 http 200 http://registry.npm.alibaba-inc.com/kind-of -6616 verbose headers { server: 'Tengine', -6616 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6616 verbose headers 'content-type': 'application/json; charset=utf-8', -6616 verbose headers 'transfer-encoding': 'chunked', -6616 verbose headers connection: 'keep-alive', -6616 verbose headers vary: 'Accept-Encoding', -6616 verbose headers 'x-readtime': '34', -6616 verbose headers 'content-encoding': 'gzip' } -6617 silly get cb [ 200, -6617 silly get { server: 'Tengine', -6617 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6617 silly get 'content-type': 'application/json; charset=utf-8', -6617 silly get 'transfer-encoding': 'chunked', -6617 silly get connection: 'keep-alive', -6617 silly get vary: 'Accept-Encoding', -6617 silly get 'x-readtime': '34', -6617 silly get 'content-encoding': 'gzip' } ] -6618 verbose get saving kind-of to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/kind-of/.cache.json -6619 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6620 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan is being purged from base /home/ruanyf/npm-global -6621 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan -6622 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan is being purged from base /home/ruanyf/npm-global -6623 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan -6624 verbose tar unpack /home/ruanyf/.tnpm/exit-hook/1.1.1/package.tgz -6625 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook -6626 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook is being purged -6627 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook -6628 verbose tar unpack /home/ruanyf/.tnpm/onetime/1.1.0/package.tgz -6629 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime -6630 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime is being purged -6631 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime -6632 verbose unlock done using /home/ruanyf/.tnpm/_locks/gulp-sourcemaps-afad1a1c8bfcfaed.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/gulp-sourcemaps -6633 verbose unlock done using /home/ruanyf/.tnpm/_locks/clone-9e12a0eea285225b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone -6634 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl -6635 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl -6636 verbose tar unpack /home/ruanyf/.tnpm/number-is-nan/1.0.0/package.tgz -6637 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan -6638 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan is being purged -6639 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan -6640 verbose tar unpack /home/ruanyf/.tnpm/number-is-nan/1.0.0/package.tgz -6641 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan -6642 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan is being purged -6643 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan -6644 silly addNameRange number 2 { name: 'normalize-path', -6644 silly addNameRange range: '>=2.0.1 <3.0.0', -6644 silly addNameRange hasData: true } -6645 silly addNameRange versions [ 'normalize-path', -6645 silly addNameRange [ '2.0.1', -6645 silly addNameRange '2.0.0', -6645 silly addNameRange '1.0.0', -6645 silly addNameRange '0.3.0', -6645 silly addNameRange '0.2.1', -6645 silly addNameRange '0.2.0', -6645 silly addNameRange '0.1.1', -6645 silly addNameRange '0.1.0' ] ] -6646 silly addNamed normalize-path@2.0.1 -6647 verbose addNamed "2.0.1" is a plain semver version for normalize-path -6648 verbose linkBins extend@3.0.0 -6649 verbose linkMans extend@3.0.0 -6650 verbose rebuildBundles extend@3.0.0 -6651 silly gunzTarPerm modes [ '755', '644' ] -6652 silly gunzTarPerm modes [ '755', '644' ] -6653 silly gunzTarPerm extractEntry index.js -6654 silly gunzTarPerm extractEntry license -6655 http 200 http://registry.npm.alibaba-inc.com/arr-diff -6656 verbose headers { server: 'Tengine', -6656 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6656 verbose headers 'content-type': 'application/json; charset=utf-8', -6656 verbose headers 'transfer-encoding': 'chunked', -6656 verbose headers connection: 'keep-alive', -6656 verbose headers vary: 'Accept-Encoding', -6656 verbose headers 'x-readtime': '30', -6656 verbose headers 'content-encoding': 'gzip' } -6657 silly get cb [ 200, -6657 silly get { server: 'Tengine', -6657 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6657 silly get 'content-type': 'application/json; charset=utf-8', -6657 silly get 'transfer-encoding': 'chunked', -6657 silly get connection: 'keep-alive', -6657 silly get vary: 'Accept-Encoding', -6657 silly get 'x-readtime': '30', -6657 silly get 'content-encoding': 'gzip' } ] -6658 verbose get saving arr-diff to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/arr-diff/.cache.json -6659 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6660 silly gunzTarPerm modes [ '755', '644' ] -6661 silly mapToRegistry name minimist -6662 silly mapToRegistry using default registry -6663 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -6664 silly mapToRegistry data Result { -6664 silly mapToRegistry raw: 'minimist', -6664 silly mapToRegistry scope: null, -6664 silly mapToRegistry name: 'minimist', -6664 silly mapToRegistry rawSpec: '', -6664 silly mapToRegistry spec: 'latest', -6664 silly mapToRegistry type: 'tag' } -6665 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/minimist -6666 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz not in flight; adding -6667 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz', -6667 verbose addRemoteTarball '857fcabfc3397d2625b8228262e86aa7a011b05d' ] -6668 silly gunzTarPerm modes [ '755', '644' ] -6669 info install extend@3.0.0 -6670 verbose afterAdd /home/ruanyf/.tnpm/minimatch/3.0.0/package/package.json written -6671 silly addNameRange number 2 { name: 'regex-cache', range: '>=0.4.2 <0.5.0', hasData: true } -6672 silly addNameRange versions [ 'regex-cache', -6672 silly addNameRange [ '0.4.3', -6672 silly addNameRange '0.4.2', -6672 silly addNameRange '0.4.1', -6672 silly addNameRange '0.3.0', -6672 silly addNameRange '0.2.1', -6672 silly addNameRange '0.2.0', -6672 silly addNameRange '0.1.1', -6672 silly addNameRange '0.1.0' ] ] -6673 silly addNamed regex-cache@0.4.3 -6674 verbose addNamed "0.4.3" is a plain semver version for regex-cache -6675 http 304 http://registry.npm.alibaba-inc.com/expand-brackets -6676 verbose headers { server: 'Tengine', -6676 verbose headers date: 'Fri, 20 May 2016 01:12:30 GMT', -6676 verbose headers connection: 'keep-alive', -6676 verbose headers etag: '"3811-i89Oisf4IICjDuHsqn/zcg"', -6676 verbose headers 'x-readtime': '50' } -6677 silly get cb [ 304, -6677 silly get { server: 'Tengine', -6677 silly get date: 'Fri, 20 May 2016 01:12:30 GMT', -6677 silly get connection: 'keep-alive', -6677 silly get etag: '"3811-i89Oisf4IICjDuHsqn/zcg"', -6677 silly get 'x-readtime': '50' } ] -6678 verbose etag http://registry.npm.alibaba-inc.com/expand-brackets from cache -6679 verbose get saving expand-brackets to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/expand-brackets/.cache.json -6680 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6681 info postinstall extend@3.0.0 -6682 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -6683 info retry fetch attempt 1 at 上午9:12:30 -6684 info attempt registry request try #1 at 上午9:12:30 -6685 http fetch GET http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz -6686 silly gunzTarPerm extractEntry mutable.js -6687 silly gunzTarPerm modified mode [ 'mutable.js', 436, 420 ] -6688 silly gunzTarPerm extractEntry test.js -6689 silly gunzTarPerm modified mode [ 'test.js', 436, 420 ] -6690 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise/package.json -6691 info linkStuff vinyl@1.1.1 -6692 silly linkStuff vinyl@1.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -6693 silly linkStuff vinyl@1.1.1 is part of a global install -6694 silly linkStuff vinyl@1.1.1 is installed into a global node_modules -6695 silly addNameRange number 2 { name: 'array-unique', range: '>=0.2.1 <0.3.0', hasData: true } -6696 silly addNameRange versions [ 'array-unique', [ '0.2.1', '0.2.0', '0.1.1' ] ] -6697 silly addNamed array-unique@0.2.1 -6698 verbose addNamed "0.2.1" is a plain semver version for array-unique -6699 silly addNameRange number 2 { name: 'extglob', range: '>=0.3.1 <0.4.0', hasData: true } -6700 silly addNameRange versions [ 'extglob', [ '0.3.2', '0.3.1', '0.3.0', '0.2.0', '0.1.0' ] ] -6701 silly addNamed extglob@0.3.2 -6702 verbose addNamed "0.3.2" is a plain semver version for extglob -6703 silly addNameRange number 2 { name: 'parse-glob', range: '>=3.0.4 <4.0.0', hasData: true } -6704 silly addNameRange versions [ 'parse-glob', -6704 silly addNameRange [ '3.0.4', -6704 silly addNameRange '3.0.3', -6704 silly addNameRange '3.0.2', -6704 silly addNameRange '3.0.1', -6704 silly addNameRange '3.0.0', -6704 silly addNameRange '2.1.1', -6704 silly addNameRange '2.1.0', -6704 silly addNameRange '2.0.1', -6704 silly addNameRange '2.0.0', -6704 silly addNameRange '1.2.0', -6704 silly addNameRange '1.1.0', -6704 silly addNameRange '1.0.2', -6704 silly addNameRange '1.0.1', -6704 silly addNameRange '1.0.0' ] ] -6705 silly addNamed parse-glob@3.0.4 -6706 verbose addNamed "3.0.4" is a plain semver version for parse-glob -6707 silly addNameRange number 2 { name: 'object.omit', range: '>=2.0.0 <3.0.0', hasData: true } -6708 silly addNameRange versions [ 'object.omit', [ '2.0.0', '1.1.0', '0.2.1', '0.2.0' ] ] -6709 silly addNamed object.omit@2.0.0 -6710 verbose addNamed "2.0.0" is a plain semver version for object.omit -6711 silly cache afterAdd filename-regex@2.0.0 -6712 verbose afterAdd /home/ruanyf/.tnpm/filename-regex/2.0.0/package/package.json not in flight; writing -6713 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6714 silly cache afterAdd is-extglob@1.0.0 -6715 verbose afterAdd /home/ruanyf/.tnpm/is-extglob/1.0.0/package/package.json not in flight; writing -6716 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6717 silly gunzTarPerm extractEntry component.json -6718 silly gunzTarPerm extractEntry writable.js -6719 silly gunzTarPerm extractEntry passthrough.js -6720 silly gunzTarPerm extractEntry package.json -6721 silly gunzTarPerm extractEntry find.js -6722 silly gunzTarPerm extractEntry bind.js -6723 silly gunzTarPerm extractEntry index.js -6724 silly gunzTarPerm extractEntry .travis.yml -6725 silly gunzTarPerm extractEntry readme.md -6726 silly gunzTarPerm extractEntry package.json -6727 silly gunzTarPerm extractEntry package.json -6728 silly cache afterAdd normalize-path@2.0.1 -6729 verbose afterAdd /home/ruanyf/.tnpm/normalize-path/2.0.1/package/package.json not in flight; writing -6730 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6731 verbose unlock done using /home/ruanyf/.tnpm/_locks/extend-c4c45b992dfc6b94.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/extend -6732 silly gunzTarPerm extractEntry package.json -6733 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob is being purged from base /home/ruanyf/npm-global -6734 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -6735 silly addNameRange number 2 { name: 'braces', range: '>=1.8.2 <2.0.0', hasData: true } -6736 silly addNameRange versions [ 'braces', -6736 silly addNameRange [ '1.8.4', -6736 silly addNameRange '1.8.3', -6736 silly addNameRange '1.8.2', -6736 silly addNameRange '1.8.1', -6736 silly addNameRange '1.8.0', -6736 silly addNameRange '1.7.0', -6736 silly addNameRange '1.6.0', -6736 silly addNameRange '1.5.1', -6736 silly addNameRange '1.5.0', -6736 silly addNameRange '1.4.0', -6736 silly addNameRange '1.3.0', -6736 silly addNameRange '1.2.0', -6736 silly addNameRange '1.1.0', -6736 silly addNameRange '1.0.0', -6736 silly addNameRange '0.1.5', -6736 silly addNameRange '0.1.4', -6736 silly addNameRange '0.1.2', -6736 silly addNameRange '0.1.1', -6736 silly addNameRange '0.1.0' ] ] -6737 silly addNamed braces@1.8.4 -6738 verbose addNamed "1.8.4" is a plain semver version for braces -6739 silly addNameRange number 2 { name: 'kind-of', range: '>=3.0.2 <4.0.0', hasData: true } -6740 silly addNameRange versions [ 'kind-of', -6740 silly addNameRange [ '3.0.3', -6740 silly addNameRange '3.0.2', -6740 silly addNameRange '3.0.1', -6740 silly addNameRange '3.0.0', -6740 silly addNameRange '2.0.1', -6740 silly addNameRange '2.0.0', -6740 silly addNameRange '1.1.0', -6740 silly addNameRange '1.0.1', -6740 silly addNameRange '1.0.0', -6740 silly addNameRange '0.1.2', -6740 silly addNameRange '0.1.1', -6740 silly addNameRange '0.1.0' ] ] -6741 silly addNamed kind-of@3.0.3 -6742 verbose addNamed "3.0.3" is a plain semver version for kind-of -6743 silly gunzTarPerm extractEntry index.js -6744 verbose linkBins vinyl@1.1.1 -6745 verbose linkMans vinyl@1.1.1 -6746 verbose rebuildBundles vinyl@1.1.1 -6747 verbose tar unpack /home/ruanyf/.tnpm/is-glob/2.0.1/package.tgz -6748 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -6749 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob is being purged -6750 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -6751 info preinstall is-promise@2.1.0 -6752 verbose rebuildBundles [ 'clone', 'clone-stats', 'replace-ext' ] -6753 info install vinyl@1.1.1 -6754 silly gunzTarPerm modes [ '755', '644' ] -6755 silly cache afterAdd regex-cache@0.4.3 -6756 verbose afterAdd /home/ruanyf/.tnpm/regex-cache/0.4.3/package/package.json not in flight; writing -6757 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6758 silly addNameRange number 2 { name: 'arr-diff', range: '>=2.0.0 <3.0.0', hasData: true } -6759 silly addNameRange versions [ 'arr-diff', -6759 silly addNameRange [ '3.0.0', -6759 silly addNameRange '2.0.0', -6759 silly addNameRange '1.1.0', -6759 silly addNameRange '1.0.1', -6759 silly addNameRange '1.0.0', -6759 silly addNameRange '0.2.2', -6759 silly addNameRange '0.2.1', -6759 silly addNameRange '0.2.0', -6759 silly addNameRange '0.1.1', -6759 silly addNameRange '0.1.0' ] ] -6760 silly addNamed arr-diff@2.0.0 -6761 verbose addNamed "2.0.0" is a plain semver version for arr-diff -6762 silly gunzTarPerm extractEntry index.js -6763 silly gunzTarPerm extractEntry readme.md -6764 silly gunzTarPerm extractEntry readme.md -6765 verbose afterAdd /home/ruanyf/.tnpm/is-extglob/1.0.0/package/package.json written -6766 verbose afterAdd /home/ruanyf/.tnpm/filename-regex/2.0.0/package/package.json written -6767 silly gunzTarPerm extractEntry index.js -6768 silly gunzTarPerm extractEntry license -6769 silly gunzTarPerm extractEntry index.js -6770 silly gunzTarPerm extractEntry license -6771 silly gunzTarPerm extractEntry index.js -6772 silly gunzTarPerm extractEntry license -6773 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise/package.json -6774 info postinstall vinyl@1.1.1 -6775 silly addNameRange number 2 { name: 'expand-brackets', -6775 silly addNameRange range: '>=0.1.4 <0.2.0', -6775 silly addNameRange hasData: true } -6776 silly addNameRange versions [ 'expand-brackets', -6776 silly addNameRange [ '0.1.5', '0.1.4', '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] -6777 silly addNamed expand-brackets@0.1.5 -6778 verbose addNamed "0.1.5" is a plain semver version for expand-brackets -6779 silly cache afterAdd array-unique@0.2.1 -6780 verbose afterAdd /home/ruanyf/.tnpm/array-unique/0.2.1/package/package.json not in flight; writing -6781 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6782 silly cache afterAdd inflight@1.0.5 -6783 verbose afterAdd /home/ruanyf/.tnpm/inflight/1.0.5/package/package.json not in flight; writing -6784 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6785 silly cache afterAdd extglob@0.3.2 -6786 verbose afterAdd /home/ruanyf/.tnpm/extglob/0.3.2/package/package.json not in flight; writing -6787 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6788 silly cache afterAdd parse-glob@3.0.4 -6789 verbose afterAdd /home/ruanyf/.tnpm/parse-glob/3.0.4/package/package.json not in flight; writing -6790 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6791 verbose afterAdd /home/ruanyf/.tnpm/normalize-path/2.0.1/package/package.json written -6792 silly cache afterAdd object.omit@2.0.0 -6793 verbose afterAdd /home/ruanyf/.tnpm/object.omit/2.0.0/package/package.json not in flight; writing -6794 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6795 silly cache afterAdd kind-of@3.0.3 -6796 verbose afterAdd /home/ruanyf/.tnpm/kind-of/3.0.3/package/package.json not in flight; writing -6797 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6798 silly cache afterAdd braces@1.8.4 -6799 verbose afterAdd /home/ruanyf/.tnpm/braces/1.8.4/package/package.json not in flight; writing -6800 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6801 silly gunzTarPerm extractEntry .jshintrc -6802 silly gunzTarPerm modified mode [ '.jshintrc', 436, 420 ] -6803 silly gunzTarPerm extractEntry Makefile -6804 silly gunzTarPerm modified mode [ 'Makefile', 436, 420 ] -6805 verbose unlock done using /home/ruanyf/.tnpm/_locks/vinyl-aefe3850b22bfbad.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/vinyl -6806 http fetch 200 http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz -6807 silly gunzTarPerm extractEntry example/key_cmp.js -6808 silly gunzTarPerm extractEntry example/nested.js -6809 silly gunzTarPerm extractEntry package.json -6810 verbose afterAdd /home/ruanyf/.tnpm/regex-cache/0.4.3/package/package.json written -6811 silly gunzTarPerm extractEntry readable.js -6812 silly gunzTarPerm extractEntry transform.js -6813 silly gunzTarPerm extractEntry findIndex.js -6814 silly gunzTarPerm extractEntry before.js -6815 silly cache afterAdd arr-diff@2.0.0 -6816 verbose afterAdd /home/ruanyf/.tnpm/arr-diff/2.0.0/package/package.json not in flight; writing -6817 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6818 verbose afterAdd /home/ruanyf/.tnpm/inflight/1.0.5/package/package.json written -6819 silly install resolved [ { name: 'once', -6819 silly install resolved version: '1.3.3', -6819 silly install resolved description: 'Run a function exactly one time', -6819 silly install resolved main: 'once.js', -6819 silly install resolved directories: { test: 'test' }, -6819 silly install resolved dependencies: { wrappy: '1' }, -6819 silly install resolved devDependencies: { tap: '^1.2.0' }, -6819 silly install resolved scripts: { test: 'tap test/*.js' }, -6819 silly install resolved files: [ 'once.js' ], -6819 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/once.git' }, -6819 silly install resolved keywords: [ 'once', 'function', 'one', 'single' ], -6819 silly install resolved author: -6819 silly install resolved { name: 'Isaac Z. Schlueter', -6819 silly install resolved email: 'i@izs.me', -6819 silly install resolved url: 'http://blog.izs.me/' }, -6819 silly install resolved license: 'ISC', -6819 silly install resolved gitHead: '2ad558657e17fafd24803217ba854762842e4178', -6819 silly install resolved bugs: { url: 'https://github.com/isaacs/once/issues' }, -6819 silly install resolved homepage: 'https://github.com/isaacs/once#readme', -6819 silly install resolved _id: 'once@1.3.3', -6819 silly install resolved _shasum: 'b2e261557ce4c314ec8304f3fa82663e4297ca20', -6819 silly install resolved _from: 'once@>=1.3.0 <2.0.0', -6819 silly install resolved _npmVersion: '3.3.2', -6819 silly install resolved _nodeVersion: '4.0.0', -6819 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -6819 silly install resolved dist: -6819 silly install resolved { shasum: 'b2e261557ce4c314ec8304f3fa82663e4297ca20', -6819 silly install resolved size: 1573, -6819 silly install resolved noattachment: false, -6819 silly install resolved key: 'once/-/once-1.3.3.tgz', -6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/once/download/once-1.3.3.tgz' }, -6819 silly install resolved maintainers: [ [Object] ], -6819 silly install resolved publish_time: 1448055914765, -6819 silly install resolved _cnpm_publish_time: 1448055914765, -6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/once/download/once-1.3.3.tgz', -6819 silly install resolved readme: 'ERROR: No README data found!' }, -6819 silly install resolved { name: 'inherits', -6819 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', -6819 silly install resolved version: '2.0.1', -6819 silly install resolved keywords: -6819 silly install resolved [ 'inheritance', -6819 silly install resolved 'class', -6819 silly install resolved 'klass', -6819 silly install resolved 'oop', -6819 silly install resolved 'object-oriented', -6819 silly install resolved 'inherits', -6819 silly install resolved 'browser', -6819 silly install resolved 'browserify' ], -6819 silly install resolved main: './inherits.js', -6819 silly install resolved browser: './inherits_browser.js', -6819 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, -6819 silly install resolved license: 'ISC', -6819 silly install resolved scripts: { test: 'node test' }, -6819 silly install resolved readmeFilename: 'README.md', -6819 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, -6819 silly install resolved _id: 'inherits@2.0.1', -6819 silly install resolved dist: -6819 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -6819 silly install resolved size: 2122, -6819 silly install resolved noattachment: false, -6819 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', -6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, -6819 silly install resolved _from: 'inherits@>=2.0.0 <3.0.0', -6819 silly install resolved _npmVersion: '1.3.8', -6819 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -6819 silly install resolved maintainers: [ [Object] ], -6819 silly install resolved directories: {}, -6819 silly install resolved publish_time: 1376950220463, -6819 silly install resolved _cnpm_publish_time: 1376950220463, -6819 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', -6819 silly install resolved readme: 'ERROR: No README data found!', -6819 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' }, -6819 silly install resolved { name: 'path-is-absolute', -6819 silly install resolved version: '1.0.0', -6819 silly install resolved description: 'Node.js 0.12 path.isAbsolute() ponyfill', -6819 silly install resolved license: 'MIT', -6819 silly install resolved repository: -6819 silly install resolved { type: 'git', -6819 silly install resolved url: 'git+https://github.com/sindresorhus/path-is-absolute.git' }, -6819 silly install resolved author: -6819 silly install resolved { name: 'Sindre Sorhus', -6819 silly install resolved email: 'sindresorhus@gmail.com', -6819 silly install resolved url: 'sindresorhus.com' }, -6819 silly install resolved engines: { node: '>=0.10.0' }, -6819 silly install resolved scripts: { test: 'node test.js' }, -6819 silly install resolved files: [ 'index.js' ], -6819 silly install resolved keywords: -6819 silly install resolved [ 'path', -6819 silly install resolved 'paths', -6819 silly install resolved 'file', -6819 silly install resolved 'dir', -6819 silly install resolved 'absolute', -6819 silly install resolved 'isabsolute', -6819 silly install resolved 'is-absolute', -6819 silly install resolved 'built-in', -6819 silly install resolved 'util', -6819 silly install resolved 'utils', -6819 silly install resolved 'core', -6819 silly install resolved 'ponyfill', -6819 silly install resolved 'polyfill', -6819 silly install resolved 'shim', -6819 silly install resolved 'is', -6819 silly install resolved 'detect', -6819 silly install resolved 'check' ], -6819 silly install resolved gitHead: '7a76a0c9f2263192beedbe0a820e4d0baee5b7a1', -6819 silly install resolved bugs: { url: 'https://github.com/sindresorhus/path-is-absolute/issues' }, -6819 silly install resolved homepage: 'https://github.com/sindresorhus/path-is-absolute', -6819 silly install resolved _id: 'path-is-absolute@1.0.0', -6819 silly install resolved _shasum: '263dada66ab3f2fb10bf7f9d24dd8f3e570ef912', -6819 silly install resolved _from: 'path-is-absolute@>=1.0.0 <2.0.0', -6819 silly install resolved _npmVersion: '2.5.1', -6819 silly install resolved _nodeVersion: '0.12.0', -6819 silly install resolved _npmUser: { name: 'sindresorhus', email: 'sindresorhus@gmail.com' }, -6819 silly install resolved maintainers: [ [Object] ], -6819 silly install resolved dist: -6819 silly install resolved { shasum: '263dada66ab3f2fb10bf7f9d24dd8f3e570ef912', -6819 silly install resolved size: 1846, -6819 silly install resolved noattachment: false, -6819 silly install resolved key: 'path-is-absolute/-/path-is-absolute-1.0.0.tgz', -6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/path-is-absolute/download/path-is-absolute-1.0.0.tgz' }, -6819 silly install resolved directories: {}, -6819 silly install resolved publish_time: 1424142704044, -6819 silly install resolved _cnpm_publish_time: 1424142704044, -6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/path-is-absolute/download/path-is-absolute-1.0.0.tgz', -6819 silly install resolved readme: 'ERROR: No README data found!' }, -6819 silly install resolved { author: -6819 silly install resolved { name: 'Isaac Z. Schlueter', -6819 silly install resolved email: 'i@izs.me', -6819 silly install resolved url: 'http://blog.izs.me' }, -6819 silly install resolved name: 'minimatch', -6819 silly install resolved description: 'a glob matcher in javascript', -6819 silly install resolved version: '3.0.0', -6819 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/minimatch.git' }, -6819 silly install resolved main: 'minimatch.js', -6819 silly install resolved scripts: -6819 silly install resolved { posttest: 'standard minimatch.js test/*.js', -6819 silly install resolved test: 'tap test/*.js' }, -6819 silly install resolved engines: { node: '*' }, -6819 silly install resolved dependencies: { 'brace-expansion': '^1.0.0' }, -6819 silly install resolved devDependencies: { standard: '^3.7.2', tap: '^1.2.0' }, -6819 silly install resolved license: 'ISC', -6819 silly install resolved files: [ 'minimatch.js' ], -6819 silly install resolved gitHead: '270dbea567f0af6918cb18103e98c612aa717a20', -6819 silly install resolved bugs: { url: 'https://github.com/isaacs/minimatch/issues' }, -6819 silly install resolved homepage: 'https://github.com/isaacs/minimatch#readme', -6819 silly install resolved _id: 'minimatch@3.0.0', -6819 silly install resolved _shasum: '5236157a51e4f004c177fb3c527ff7dd78f0ef83', -6819 silly install resolved _from: 'minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0', -6819 silly install resolved _npmVersion: '3.3.2', -6819 silly install resolved _nodeVersion: '4.0.0', -6819 silly install resolved _npmUser: { name: 'isaacs', email: 'isaacs@npmjs.com' }, -6819 silly install resolved dist: -6819 silly install resolved { shasum: '5236157a51e4f004c177fb3c527ff7dd78f0ef83', -6819 silly install resolved size: 11354, -6819 silly install resolved noattachment: false, -6819 silly install resolved key: 'minimatch/-/minimatch-3.0.0.tgz', -6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/minimatch/download/minimatch-3.0.0.tgz' }, -6819 silly install resolved maintainers: [ [Object] ], -6819 silly install resolved directories: {}, -6819 silly install resolved publish_time: 1443377939997, -6819 silly install resolved _cnpm_publish_time: 1443377939997, -6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/minimatch/download/minimatch-3.0.0.tgz', -6819 silly install resolved readme: 'ERROR: No README data found!' }, -6819 silly install resolved { name: 'inflight', -6819 silly install resolved version: '1.0.5', -6819 silly install resolved description: 'Add callbacks to requests in flight to avoid async duplication', -6819 silly install resolved main: 'inflight.js', -6819 silly install resolved files: [ 'inflight.js' ], -6819 silly install resolved dependencies: { once: '^1.3.0', wrappy: '1' }, -6819 silly install resolved devDependencies: { tap: '^1.2.0' }, -6819 silly install resolved scripts: { test: 'tap test.js' }, -6819 silly install resolved repository: { type: 'git', url: 'git+https://github.com/npm/inflight.git' }, -6819 silly install resolved author: -6819 silly install resolved { name: 'Isaac Z. Schlueter', -6819 silly install resolved email: 'i@izs.me', -6819 silly install resolved url: 'http://blog.izs.me/' }, -6819 silly install resolved bugs: { url: 'https://github.com/isaacs/inflight/issues' }, -6819 silly install resolved homepage: 'https://github.com/isaacs/inflight', -6819 silly install resolved license: 'ISC', -6819 silly install resolved gitHead: '559e37b4f6327fca797fe8d7fe8ed6d9cae08821', -6819 silly install resolved _id: 'inflight@1.0.5', -6819 silly install resolved _shasum: 'db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a', -6819 silly install resolved _from: 'inflight@>=1.0.4 <2.0.0', -6819 silly install resolved _npmVersion: '3.9.1', -6819 silly install resolved _nodeVersion: '5.10.1', -6819 silly install resolved _npmUser: { name: 'zkat', email: 'kat@sykosomatic.org' }, -6819 silly install resolved dist: -6819 silly install resolved { shasum: 'db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a', -6819 silly install resolved size: 1802, -6819 silly install resolved noattachment: false, -6819 silly install resolved key: 'inflight/-/inflight-1.0.5.tgz', -6819 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz' }, -6819 silly install resolved maintainers: [ [Object], [Object], [Object], [Object] ], -6819 silly install resolved _npmOperationalInternal: -6819 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -6819 silly install resolved tmp: 'tmp/inflight-1.0.5.tgz_1463529611443_0.00041943578980863094' }, -6819 silly install resolved directories: {}, -6819 silly install resolved publish_time: 1463529612031, -6819 silly install resolved _cnpm_publish_time: 1463529612031, -6819 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.5.tgz' } ] -6820 info install once@1.3.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -6821 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -6822 info install path-is-absolute@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -6823 info install minimatch@3.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -6824 info install inflight@1.0.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -6825 info installOne once@1.3.3 -6826 verbose installOne of once to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing -6827 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6828 info installOne inherits@2.0.1 -6829 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing -6830 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6831 info installOne path-is-absolute@1.0.0 -6832 verbose installOne of path-is-absolute to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing -6833 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6834 info installOne minimatch@3.0.0 -6835 verbose installOne of minimatch to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing -6836 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6837 info installOne inflight@1.0.5 -6838 verbose installOne of inflight to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob not in flight; installing -6839 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6840 verbose afterAdd /home/ruanyf/.tnpm/array-unique/0.2.1/package/package.json written -6841 verbose afterAdd /home/ruanyf/.tnpm/extglob/0.3.2/package/package.json written -6842 verbose afterAdd /home/ruanyf/.tnpm/parse-glob/3.0.4/package/package.json written -6843 verbose afterAdd /home/ruanyf/.tnpm/object.omit/2.0.0/package/package.json written -6844 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise/package.json -6845 silly cache afterAdd expand-brackets@0.1.5 -6846 verbose afterAdd /home/ruanyf/.tnpm/expand-brackets/0.1.5/package/package.json not in flight; writing -6847 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6848 silly fetchAndShaCheck shasum 857fcabfc3397d2625b8228262e86aa7a011b05d -6849 silly gunzTarPerm extractEntry README.md -6850 silly gunzTarPerm extractEntry LICENSE -6851 verbose lock using /home/ruanyf/.tnpm/_locks/once-3b39f43119512bf7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -6852 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-5272b9fa3dc7f017.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits -6853 verbose lock using /home/ruanyf/.tnpm/_locks/path-is-absolute-ff20d4dad5e47d08.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute -6854 verbose lock using /home/ruanyf/.tnpm/_locks/minimatch-57daa14adac5f015.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -6855 verbose lock using /home/ruanyf/.tnpm/_locks/inflight-a854246701206d7f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -6856 verbose afterAdd /home/ruanyf/.tnpm/kind-of/3.0.3/package/package.json written -6857 verbose afterAdd /home/ruanyf/.tnpm/braces/1.8.4/package/package.json written -6858 silly install write writing once 1.3.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -6859 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits -6860 silly install write writing path-is-absolute 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute -6861 silly install write writing minimatch 3.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -6862 silly install write writing inflight 1.0.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -6863 silly gunzTarPerm extractEntry readme.md -6864 silly gunzTarPerm extractEntry readme.md -6865 silly gunzTarPerm extractEntry readme.md -6866 verbose afterAdd /home/ruanyf/.tnpm/arr-diff/2.0.0/package/package.json written -6867 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz not in flight; adding -6868 verbose addTmpTarball already have metadata; skipping unpack for minimist@0.0.8 -6869 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -6870 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims/package.json -6871 verbose afterAdd /home/ruanyf/.tnpm/expand-brackets/0.1.5/package/package.json written -6872 silly install resolved [ { name: 'is-glob', -6872 silly install resolved description: 'Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet', -6872 silly install resolved version: '2.0.1', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/is-glob', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/is-glob.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-glob/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: { test: 'mocha' }, -6872 silly install resolved dependencies: { 'is-extglob': '^1.0.0' }, -6872 silly install resolved devDependencies: { mocha: '*' }, -6872 silly install resolved keywords: -6872 silly install resolved [ 'bash', -6872 silly install resolved 'braces', -6872 silly install resolved 'check', -6872 silly install resolved 'exec', -6872 silly install resolved 'extglob', -6872 silly install resolved 'expression', -6872 silly install resolved 'glob', -6872 silly install resolved 'globbing', -6872 silly install resolved 'globstar', -6872 silly install resolved 'match', -6872 silly install resolved 'matches', -6872 silly install resolved 'pattern', -6872 silly install resolved 'regex', -6872 silly install resolved 'regular', -6872 silly install resolved 'string', -6872 silly install resolved 'test' ], -6872 silly install resolved verb: { related: [Object] }, -6872 silly install resolved gitHead: 'd7db1b2dd559b3d5a73f89dbe72d9e9f4d6587d7', -6872 silly install resolved _id: 'is-glob@2.0.1', -6872 silly install resolved _shasum: 'd096f926a3ded5600f3fdfd91198cb0888c2d863', -6872 silly install resolved _from: 'is-glob@>=2.0.0 <3.0.0', -6872 silly install resolved _npmVersion: '2.10.1', -6872 silly install resolved _nodeVersion: '0.12.4', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object], [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: 'd096f926a3ded5600f3fdfd91198cb0888c2d863', -6872 silly install resolved size: 2485, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'is-glob/-/is-glob-2.0.1.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-glob/download/is-glob-2.0.1.tgz' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1443760481446, -6872 silly install resolved _cnpm_publish_time: 1443760481446, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-glob/download/is-glob-2.0.1.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'is-extglob', -6872 silly install resolved description: 'Returns true if a string has an extglob.', -6872 silly install resolved version: '1.0.0', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/is-extglob', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/is-extglob.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-extglob/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: -6872 silly install resolved { test: 'mocha', -6872 silly install resolved prepublish: 'browserify -o browser.js -e index.js' }, -6872 silly install resolved devDependencies: { mocha: '*', should: '*' }, -6872 silly install resolved keywords: -6872 silly install resolved [ 'bash', -6872 silly install resolved 'braces', -6872 silly install resolved 'check', -6872 silly install resolved 'exec', -6872 silly install resolved 'extglob', -6872 silly install resolved 'expression', -6872 silly install resolved 'glob', -6872 silly install resolved 'globbing', -6872 silly install resolved 'globstar', -6872 silly install resolved 'match', -6872 silly install resolved 'matches', -6872 silly install resolved 'pattern', -6872 silly install resolved 'regex', -6872 silly install resolved 'regular', -6872 silly install resolved 'string', -6872 silly install resolved 'test' ], -6872 silly install resolved _id: 'is-extglob@1.0.0', -6872 silly install resolved _shasum: 'ac468177c4943405a092fc8f29760c6ffc6206c0', -6872 silly install resolved _from: 'is-extglob@>=1.0.0 <2.0.0', -6872 silly install resolved _npmVersion: '2.5.1', -6872 silly install resolved _nodeVersion: '0.12.0', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: 'ac468177c4943405a092fc8f29760c6ffc6206c0', -6872 silly install resolved size: 2063, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'is-extglob/-/is-extglob-1.0.0.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-1.0.0.tgz' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1425675623847, -6872 silly install resolved _cnpm_publish_time: 1425675623847, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-1.0.0.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'filename-regex', -6872 silly install resolved description: 'Regular expression for matching file names, with or without extension.', -6872 silly install resolved version: '2.0.0', -6872 silly install resolved homepage: 'https://github.com/regexps/filename-regex', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git://github.com/regexps/filename-regex.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/regexps/filename-regex/issues' }, -6872 silly install resolved license: -6872 silly install resolved { type: 'MIT', -6872 silly install resolved url: 'https://github.com/regexps/filename-regex/blob/master/LICENSE-MIT' }, -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved scripts: { test: 'mocha -R spec' }, -6872 silly install resolved keywords: -6872 silly install resolved [ 'basename', -6872 silly install resolved 'regular expression', -6872 silly install resolved 'file', -6872 silly install resolved 'filename', -6872 silly install resolved 'filepath', -6872 silly install resolved 'match', -6872 silly install resolved 'name', -6872 silly install resolved 'path', -6872 silly install resolved 'regex', -6872 silly install resolved 'regexp' ], -6872 silly install resolved gitHead: 'aa0f2933322d38cf547ff4c8ced882fbd8422866', -6872 silly install resolved _id: 'filename-regex@2.0.0', -6872 silly install resolved _shasum: '996e3e80479b98b9897f15a8a58b3d084e926775', -6872 silly install resolved _from: 'filename-regex@>=2.0.0 <3.0.0', -6872 silly install resolved _npmVersion: '1.4.28', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: '996e3e80479b98b9897f15a8a58b3d084e926775', -6872 silly install resolved size: 1055, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'filename-regex/-/filename-regex-2.0.0.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/filename-regex/download/filename-regex-2.0.0.tgz' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1422107333313, -6872 silly install resolved _cnpm_publish_time: 1422107333313, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/filename-regex/download/filename-regex-2.0.0.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'normalize-path', -6872 silly install resolved description: 'Normalize file path slashes to be unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes.', -6872 silly install resolved version: '2.0.1', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/normalize-path', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/normalize-path.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/normalize-path/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: { test: 'mocha' }, -6872 silly install resolved devDependencies: { benchmarked: '^0.1.1', minimist: '^1.2.0', mocha: '*' }, -6872 silly install resolved keywords: -6872 silly install resolved [ 'backslash', -6872 silly install resolved 'file', -6872 silly install resolved 'filepath', -6872 silly install resolved 'fix', -6872 silly install resolved 'forward', -6872 silly install resolved 'fp', -6872 silly install resolved 'fs', -6872 silly install resolved 'normalize', -6872 silly install resolved 'path', -6872 silly install resolved 'slash', -6872 silly install resolved 'slashes', -6872 silly install resolved 'trailing', -6872 silly install resolved 'unix', -6872 silly install resolved 'urix' ], -6872 silly install resolved verb: { related: [Object] }, -6872 silly install resolved gitHead: 'ca536e0e8755d3ed04f3ba4d21cc9e122e0f749f', -6872 silly install resolved _id: 'normalize-path@2.0.1', -6872 silly install resolved _shasum: '47886ac1662760d4261b7d979d241709d3ce3f7a', -6872 silly install resolved _from: 'normalize-path@>=2.0.1 <3.0.0', -6872 silly install resolved _npmVersion: '3.3.6', -6872 silly install resolved _nodeVersion: '5.0.0', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object], [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: '47886ac1662760d4261b7d979d241709d3ce3f7a', -6872 silly install resolved size: 2540, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'normalize-path/-/normalize-path-2.0.1.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/normalize-path/download/normalize-path-2.0.1.tgz' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1447763545098, -6872 silly install resolved _cnpm_publish_time: 1447763545098, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/normalize-path/download/normalize-path-2.0.1.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'regex-cache', -6872 silly install resolved description: 'Memoize the results of a call to the RegExp constructor, avoiding repetitious runtime compilation of the same string and options, resulting in suprising performance improvements.', -6872 silly install resolved version: '0.4.3', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/regex-cache', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/regex-cache.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/regex-cache/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: { test: 'mocha', benchmarks: 'node benchmark' }, -6872 silly install resolved dependencies: { 'is-equal-shallow': '^0.1.3', 'is-primitive': '^2.0.0' }, -6872 silly install resolved devDependencies: -6872 silly install resolved { benchmarked: '^0.1.5', -6872 silly install resolved chalk: '^1.1.3', -6872 silly install resolved 'gulp-format-md': '^0.1.7', -6872 silly install resolved micromatch: '^2.3.7', -6872 silly install resolved should: '^8.3.0' }, -6872 silly install resolved keywords: -6872 silly install resolved [ 'cache', -6872 silly install resolved 'expression', -6872 silly install resolved 'regex', -6872 silly install resolved 'regexp', -6872 silly install resolved 'regular', -6872 silly install resolved 'regular expression', -6872 silly install resolved 'store', -6872 silly install resolved 'to-regex' ], -6872 silly install resolved verb: -6872 silly install resolved { run: true, -6872 silly install resolved toc: false, -6872 silly install resolved layout: 'default', -6872 silly install resolved tasks: [Object], -6872 silly install resolved plugins: [Object], -6872 silly install resolved reflinks: [Object], -6872 silly install resolved lint: [Object] }, -6872 silly install resolved gitHead: '06ce46bda29a19064a968bd5d2d5596440be05ca', -6872 silly install resolved _id: 'regex-cache@0.4.3', -6872 silly install resolved _shasum: '9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145', -6872 silly install resolved _from: 'regex-cache@>=0.4.2 <0.5.0', -6872 silly install resolved _npmVersion: '3.6.0', -6872 silly install resolved _nodeVersion: '5.5.0', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object], [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: '9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145', -6872 silly install resolved size: 3674, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'regex-cache/-/regex-cache-0.4.3.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/regex-cache/download/regex-cache-0.4.3.tgz' }, -6872 silly install resolved _npmOperationalInternal: -6872 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -6872 silly install resolved tmp: 'tmp/regex-cache-0.4.3.tgz_1459536604904_0.22530420310795307' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1459536607156, -6872 silly install resolved _cnpm_publish_time: 1459536607156, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/regex-cache/download/regex-cache-0.4.3.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'array-unique', -6872 silly install resolved description: 'Return an array free of duplicate values. Fastest ES5 implementation.', -6872 silly install resolved version: '0.2.1', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/array-unique', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git://github.com/jonschlinkert/array-unique.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/array-unique/issues' }, -6872 silly install resolved license: -6872 silly install resolved { type: 'MIT', -6872 silly install resolved url: 'https://github.com/jonschlinkert/array-unique/blob/master/LICENSE' }, -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: { test: 'mocha' }, -6872 silly install resolved devDependencies: -6872 silly install resolved { 'array-uniq': '^1.0.2', -6872 silly install resolved benchmarked: '^0.1.3', -6872 silly install resolved mocha: '*', -6872 silly install resolved should: '*' }, -6872 silly install resolved gitHead: '36fde8e586fb7cf880b8b3aa6515df889e64ed85', -6872 silly install resolved _id: 'array-unique@0.2.1', -6872 silly install resolved _shasum: 'a1d97ccafcbc2625cc70fadceb36a50c58b01a53', -6872 silly install resolved _from: 'array-unique@>=0.2.1 <0.3.0', -6872 silly install resolved _npmVersion: '2.7.1', -6872 silly install resolved _nodeVersion: '1.6.2', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: 'a1d97ccafcbc2625cc70fadceb36a50c58b01a53', -6872 silly install resolved size: 2131, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'array-unique/-/array-unique-0.2.1.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/array-unique/download/array-unique-0.2.1.tgz' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1427255229823, -6872 silly install resolved _cnpm_publish_time: 1427255229823, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/array-unique/download/array-unique-0.2.1.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'extglob', -6872 silly install resolved description: 'Convert extended globs to regex-compatible strings. Add (almost) the expressive power of regular expressions to glob patterns.', -6872 silly install resolved version: '0.3.2', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/extglob', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git://github.com/jonschlinkert/extglob.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/extglob/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: { test: 'mocha' }, -6872 silly install resolved dependencies: { 'is-extglob': '^1.0.0' }, -6872 silly install resolved devDependencies: -6872 silly install resolved { 'ansi-green': '^0.1.1', -6872 silly install resolved micromatch: '^2.1.6', -6872 silly install resolved minimatch: '^2.0.1', -6872 silly install resolved minimist: '^1.1.0', -6872 silly install resolved mocha: '*', -6872 silly install resolved should: '*', -6872 silly install resolved 'success-symbol': '^0.1.0' }, -6872 silly install resolved keywords: [ 'bash', 'extended', 'extglob', 'glob', 'ksh', 'match', 'wildcard' ], -6872 silly install resolved verb: { related: [Object] }, -6872 silly install resolved gitHead: '8c3f38bbd9e0afaf31a87e411c0d15532434ef41', -6872 silly install resolved _id: 'extglob@0.3.2', -6872 silly install resolved _shasum: '2e18ff3d2f49ab2765cec9023f011daa8d8349a1', -6872 silly install resolved _from: 'extglob@>=0.3.1 <0.4.0', -6872 silly install resolved _npmVersion: '3.3.12', -6872 silly install resolved _nodeVersion: '5.3.0', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: '2e18ff3d2f49ab2765cec9023f011daa8d8349a1', -6872 silly install resolved size: 3902, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'extglob/-/extglob-0.3.2.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/extglob/download/extglob-0.3.2.tgz' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1453279498021, -6872 silly install resolved _cnpm_publish_time: 1453279498021, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/extglob/download/extglob-0.3.2.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'parse-glob', -6872 silly install resolved description: 'Parse a glob pattern into an object of tokens.', -6872 silly install resolved version: '3.0.4', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/parse-glob', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/parse-glob.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/parse-glob/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: -6872 silly install resolved { test: 'mocha', -6872 silly install resolved prepublish: 'browserify -o browser.js -e index.js' }, -6872 silly install resolved dependencies: -6872 silly install resolved { 'glob-base': '^0.3.0', -6872 silly install resolved 'is-dotfile': '^1.0.0', -6872 silly install resolved 'is-extglob': '^1.0.0', -6872 silly install resolved 'is-glob': '^2.0.0' }, -6872 silly install resolved devDependencies: { browserify: '^9.0.3', lodash: '^3.3.1', mocha: '*' }, -6872 silly install resolved keywords: -6872 silly install resolved [ 'glob', -6872 silly install resolved 'match', -6872 silly install resolved 'bash', -6872 silly install resolved 'expand', -6872 silly install resolved 'expansion', -6872 silly install resolved 'expression', -6872 silly install resolved 'file', -6872 silly install resolved 'files', -6872 silly install resolved 'filter', -6872 silly install resolved 'find', -6872 silly install resolved 'glob', -6872 silly install resolved 'globbing', -6872 silly install resolved 'globs', -6872 silly install resolved 'globstar', -6872 silly install resolved 'match', -6872 silly install resolved 'matcher', -6872 silly install resolved 'matches', -6872 silly install resolved 'matching', -6872 silly install resolved 'path', -6872 silly install resolved 'pattern', -6872 silly install resolved 'patterns', -6872 silly install resolved 'regex', -6872 silly install resolved 'regexp', -6872 silly install resolved 'regular', -6872 silly install resolved 'shell', -6872 silly install resolved 'wildcard' ], -6872 silly install resolved gitHead: '9bfccb63acdeb3b1ed62035b3adef0e5081d8fc6', -6872 silly install resolved _id: 'parse-glob@3.0.4', -6872 silly install resolved _shasum: 'b2c376cfb11f35513badd173ef0bb6e3a388391c', -6872 silly install resolved _from: 'parse-glob@>=3.0.4 <4.0.0', -6872 silly install resolved _npmVersion: '2.10.1', -6872 silly install resolved _nodeVersion: '0.12.4', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: 'b2c376cfb11f35513badd173ef0bb6e3a388391c', -6872 silly install resolved size: 3991, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'parse-glob/-/parse-glob-3.0.4.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/parse-glob/download/parse-glob-3.0.4.tgz' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1442935106837, -6872 silly install resolved _cnpm_publish_time: 1442935106837, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/parse-glob/download/parse-glob-3.0.4.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'object.omit', -6872 silly install resolved description: 'Return a copy of an object excluding the given key, or array of keys. Also accepts an optional filter function as the last argument.', -6872 silly install resolved version: '2.0.0', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/object.omit', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/object.omit.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/object.omit/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: { test: 'mocha' }, -6872 silly install resolved dependencies: { 'for-own': '^0.1.3', 'is-extendable': '^0.1.1' }, -6872 silly install resolved devDependencies: { mocha: '*', should: '*' }, -6872 silly install resolved verb: { related: [Object] }, -6872 silly install resolved keywords: -6872 silly install resolved [ 'clear', -6872 silly install resolved 'delete', -6872 silly install resolved 'key', -6872 silly install resolved 'value', -6872 silly install resolved 'object', -6872 silly install resolved 'omit', -6872 silly install resolved 'property', -6872 silly install resolved 'remove' ], -6872 silly install resolved gitHead: '6e222f2cf39634faa26f642b06af4eb2050b5e75', -6872 silly install resolved _id: 'object.omit@2.0.0', -6872 silly install resolved _shasum: '868597333d54e60662940bb458605dd6ae12fe94', -6872 silly install resolved _from: 'object.omit@>=2.0.0 <3.0.0', -6872 silly install resolved _npmVersion: '2.10.1', -6872 silly install resolved _nodeVersion: '0.12.4', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: '868597333d54e60662940bb458605dd6ae12fe94', -6872 silly install resolved size: 2550, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'object.omit/-/object.omit-2.0.0.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/object.omit/download/object.omit-2.0.0.tgz' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1437545977141, -6872 silly install resolved _cnpm_publish_time: 1437545977141, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/object.omit/download/object.omit-2.0.0.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'kind-of', -6872 silly install resolved description: 'Get the native type of a value.', -6872 silly install resolved version: '3.0.3', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/kind-of', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/kind-of.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/kind-of/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: -6872 silly install resolved { test: 'mocha', -6872 silly install resolved prepublish: 'browserify -o browser.js -e index.js -s index --bare' }, -6872 silly install resolved dependencies: { 'is-buffer': '^1.0.2' }, -6872 silly install resolved devDependencies: -6872 silly install resolved { 'ansi-bold': '^0.1.1', -6872 silly install resolved benchmarked: '^0.1.3', -6872 silly install resolved browserify: '^11.0.1', -6872 silly install resolved glob: '^4.3.5', -6872 silly install resolved 'gulp-format-md': '^0.1.9', -6872 silly install resolved mocha: '*', -6872 silly install resolved should: '*', -6872 silly install resolved 'type-of': '^2.0.1', -6872 silly install resolved typeof: '^1.0.0' }, -6872 silly install resolved keywords: -6872 silly install resolved [ 'arguments', -6872 silly install resolved 'array', -6872 silly install resolved 'boolean', -6872 silly install resolved 'check', -6872 silly install resolved 'date', -6872 silly install resolved 'function', -6872 silly install resolved 'is', -6872 silly install resolved 'is-type', -6872 silly install resolved 'is-type-of', -6872 silly install resolved 'kind', -6872 silly install resolved 'kind-of', -6872 silly install resolved 'number', -6872 silly install resolved 'object', -6872 silly install resolved 'regexp', -6872 silly install resolved 'string', -6872 silly install resolved 'test', -6872 silly install resolved 'type', -6872 silly install resolved 'type-of', -6872 silly install resolved 'typeof', -6872 silly install resolved 'types' ], -6872 silly install resolved verb: -6872 silly install resolved { related: [Object], -6872 silly install resolved toc: false, -6872 silly install resolved layout: 'default', -6872 silly install resolved tasks: [Object], -6872 silly install resolved plugins: [Object], -6872 silly install resolved lint: [Object], -6872 silly install resolved reflinks: [Object] }, -6872 silly install resolved gitHead: 'c1023c4839a91abd580a4e71fd0763f7fc2ad3f4', -6872 silly install resolved _id: 'kind-of@3.0.3', -6872 silly install resolved _shasum: 'c61608747d815b0362556db3276362a7a38aded3', -6872 silly install resolved _from: 'kind-of@>=3.0.2 <4.0.0', -6872 silly install resolved _npmVersion: '3.6.0', -6872 silly install resolved _nodeVersion: '5.5.0', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object], [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: 'c61608747d815b0362556db3276362a7a38aded3', -6872 silly install resolved size: 4399, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'kind-of/-/kind-of-3.0.3.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.0.3.tgz' }, -6872 silly install resolved _npmOperationalInternal: -6872 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -6872 silly install resolved tmp: 'tmp/kind-of-3.0.3.tgz_1462262974577_0.29414567071944475' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1462262976971, -6872 silly install resolved _cnpm_publish_time: 1462262976971, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.0.3.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'braces', -6872 silly install resolved description: 'Fastest brace expansion for node.js, with the most complete support for the Bash 4.3 braces specification.', -6872 silly install resolved version: '1.8.4', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/braces', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/braces.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/braces/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: { test: 'mocha' }, -6872 silly install resolved dependencies: -6872 silly install resolved { 'expand-range': '^1.8.1', -6872 silly install resolved preserve: '^0.2.0', -6872 silly install resolved 'repeat-element': '^1.1.2' }, -6872 silly install resolved devDependencies: -6872 silly install resolved { benchmarked: '^0.1.5', -6872 silly install resolved 'brace-expansion': '^1.1.3', -6872 silly install resolved chalk: '^1.1.3', -6872 silly install resolved 'gulp-format-md': '^0.1.8', -6872 silly install resolved minimatch: '^3.0.0', -6872 silly install resolved minimist: '^1.2.0', -6872 silly install resolved mocha: '^2.4.5', -6872 silly install resolved should: '^8.3.1' }, -6872 silly install resolved keywords: -6872 silly install resolved [ 'alpha', -6872 silly install resolved 'alphabetical', -6872 silly install resolved 'bash', -6872 silly install resolved 'brace', -6872 silly install resolved 'expand', -6872 silly install resolved 'expansion', -6872 silly install resolved 'filepath', -6872 silly install resolved 'fill', -6872 silly install resolved 'fs', -6872 silly install resolved 'glob', -6872 silly install resolved 'globbing', -6872 silly install resolved 'letter', -6872 silly install resolved 'match', -6872 silly install resolved 'matches', -6872 silly install resolved 'matching', -6872 silly install resolved 'number', -6872 silly install resolved 'numerical', -6872 silly install resolved 'path', -6872 silly install resolved 'range', -6872 silly install resolved 'ranges', -6872 silly install resolved 'sh' ], -6872 silly install resolved verb: -6872 silly install resolved { plugins: [Object], -6872 silly install resolved reflinks: [Object], -6872 silly install resolved toc: false, -6872 silly install resolved layout: 'default', -6872 silly install resolved lint: [Object], -6872 silly install resolved tasks: [Object], -6872 silly install resolved related: [Object] }, -6872 silly install resolved gitHead: 'de218311bfb9d3c72531beafec67c6572b5e9c18', -6872 silly install resolved _id: 'braces@1.8.4', -6872 silly install resolved _shasum: '75e2d6456d48b06dbb5205ed63442a3bfc5eefce', -6872 silly install resolved _from: 'braces@>=1.8.2 <2.0.0', -6872 silly install resolved _npmVersion: '3.6.0', -6872 silly install resolved _nodeVersion: '5.5.0', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object], [Object], [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: '75e2d6456d48b06dbb5205ed63442a3bfc5eefce', -6872 silly install resolved size: 6001, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'braces/-/braces-1.8.4.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/braces/download/braces-1.8.4.tgz' }, -6872 silly install resolved _npmOperationalInternal: -6872 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -6872 silly install resolved tmp: 'tmp/braces-1.8.4.tgz_1461140683394_0.9431159163359553' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1461140685636, -6872 silly install resolved _cnpm_publish_time: 1461140685636, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/braces/download/braces-1.8.4.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'arr-diff', -6872 silly install resolved description: 'Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.', -6872 silly install resolved version: '2.0.0', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/arr-diff', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/arr-diff.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/arr-diff/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: { test: 'mocha' }, -6872 silly install resolved dependencies: { 'arr-flatten': '^1.0.1' }, -6872 silly install resolved devDependencies: -6872 silly install resolved { 'array-differ': '^1.0.0', -6872 silly install resolved 'array-slice': '^0.2.3', -6872 silly install resolved benchmarked: '^0.1.4', -6872 silly install resolved chalk: '^1.1.1', -6872 silly install resolved mocha: '*', -6872 silly install resolved should: '*' }, -6872 silly install resolved keywords: [ 'arr', 'array', 'diff', 'differ', 'difference' ], -6872 silly install resolved verb: { related: [Object] }, -6872 silly install resolved gitHead: 'b89f54eb88ca51afd0e0ea6be9a4a63e5ccecf27', -6872 silly install resolved _id: 'arr-diff@2.0.0', -6872 silly install resolved _shasum: '8f3b827f955a8bd669697e4a4256ac3ceae356cf', -6872 silly install resolved _from: 'arr-diff@>=2.0.0 <3.0.0', -6872 silly install resolved _npmVersion: '3.3.6', -6872 silly install resolved _nodeVersion: '5.0.0', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object], [Object], [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: '8f3b827f955a8bd669697e4a4256ac3ceae356cf', -6872 silly install resolved size: 2431, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'arr-diff/-/arr-diff-2.0.0.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/arr-diff/download/arr-diff-2.0.0.tgz' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1449375974109, -6872 silly install resolved _cnpm_publish_time: 1449375974109, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/arr-diff/download/arr-diff-2.0.0.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' }, -6872 silly install resolved { name: 'expand-brackets', -6872 silly install resolved description: 'Expand POSIX bracket expressions (character classes) in glob patterns.', -6872 silly install resolved version: '0.1.5', -6872 silly install resolved homepage: 'https://github.com/jonschlinkert/expand-brackets', -6872 silly install resolved author: -6872 silly install resolved { name: 'Jon Schlinkert', -6872 silly install resolved url: 'https://github.com/jonschlinkert' }, -6872 silly install resolved repository: -6872 silly install resolved { type: 'git', -6872 silly install resolved url: 'git+https://github.com/jonschlinkert/expand-brackets.git' }, -6872 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/expand-brackets/issues' }, -6872 silly install resolved license: 'MIT', -6872 silly install resolved files: [ 'index.js' ], -6872 silly install resolved main: 'index.js', -6872 silly install resolved engines: { node: '>=0.10.0' }, -6872 silly install resolved scripts: { test: 'mocha' }, -6872 silly install resolved dependencies: { 'is-posix-bracket': '^0.1.0' }, -6872 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.7', mocha: '^2.2.5', should: '^7.0.2' }, -6872 silly install resolved keywords: [ 'bracket', 'character class', 'expression', 'posix' ], -6872 silly install resolved verb: -6872 silly install resolved { run: true, -6872 silly install resolved toc: false, -6872 silly install resolved layout: 'default', -6872 silly install resolved tasks: [Object], -6872 silly install resolved plugins: [Object], -6872 silly install resolved related: [Object], -6872 silly install resolved reflinks: [Object], -6872 silly install resolved lint: [Object] }, -6872 silly install resolved gitHead: '1b07fda8ee8b6426d95e6539785b74c57e9ee542', -6872 silly install resolved _id: 'expand-brackets@0.1.5', -6872 silly install resolved _shasum: 'df07284e342a807cd733ac5af72411e581d1177b', -6872 silly install resolved _from: 'expand-brackets@>=0.1.4 <0.2.0', -6872 silly install resolved _npmVersion: '3.6.0', -6872 silly install resolved _nodeVersion: '5.5.0', -6872 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -6872 silly install resolved maintainers: [ [Object], [Object], [Object] ], -6872 silly install resolved dist: -6872 silly install resolved { shasum: 'df07284e342a807cd733ac5af72411e581d1177b', -6872 silly install resolved size: 3659, -6872 silly install resolved noattachment: false, -6872 silly install resolved key: 'expand-brackets/-/expand-brackets-0.1.5.tgz', -6872 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/expand-brackets/download/expand-brackets-0.1.5.tgz' }, -6872 silly install resolved _npmOperationalInternal: -6872 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -6872 silly install resolved tmp: 'tmp/expand-brackets-0.1.5.tgz_1459554506001_0.9547659594099969' }, -6872 silly install resolved directories: {}, -6872 silly install resolved publish_time: 1459554508244, -6872 silly install resolved _cnpm_publish_time: 1459554508244, -6872 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/expand-brackets/download/expand-brackets-0.1.5.tgz', -6872 silly install resolved readme: 'ERROR: No README data found!' } ] -6873 info install is-glob@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6874 info install is-extglob@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6875 info install filename-regex@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6876 info install normalize-path@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6877 info install regex-cache@0.4.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6878 info install array-unique@0.2.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6879 info install extglob@0.3.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6880 info install parse-glob@3.0.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6881 info install object.omit@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6882 info install kind-of@3.0.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6883 info install braces@1.8.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6884 info install arr-diff@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6885 info install expand-brackets@0.1.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -6886 info installOne is-glob@2.0.1 -6887 verbose installOne of is-glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6888 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6889 info installOne is-extglob@1.0.0 -6890 verbose installOne of is-extglob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6891 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6892 info installOne filename-regex@2.0.0 -6893 verbose installOne of filename-regex to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6894 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6895 info installOne normalize-path@2.0.1 -6896 verbose installOne of normalize-path to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6897 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6898 info installOne regex-cache@0.4.3 -6899 verbose installOne of regex-cache to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6900 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6901 info installOne array-unique@0.2.1 -6902 verbose installOne of array-unique to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6903 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6904 info installOne extglob@0.3.2 -6905 verbose installOne of extglob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6906 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6907 info installOne parse-glob@3.0.4 -6908 verbose installOne of parse-glob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6909 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6910 info installOne object.omit@2.0.0 -6911 verbose installOne of object.omit to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6912 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6913 info installOne kind-of@3.0.3 -6914 verbose installOne of kind-of to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6915 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6916 info installOne braces@1.8.4 -6917 verbose installOne of braces to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6918 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6919 info installOne arr-diff@2.0.0 -6920 verbose installOne of arr-diff to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6921 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6922 info installOne expand-brackets@0.1.5 -6923 verbose installOne of expand-brackets to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch not in flight; installing -6924 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -6925 silly install resolved [] -6926 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise -6927 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise -6928 silly gunzTarPerm extractEntry example/str.js -6929 silly gunzTarPerm extractEntry example/value_cmp.js -6930 silly gunzTarPerm extractEntry lib/_stream_duplex.js -6931 silly gunzTarPerm extractEntry lib/_stream_passthrough.js -6932 silly gunzTarPerm extractEntry findKey.js -6933 silly gunzTarPerm extractEntry attempt.js -6934 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -6935 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits -6936 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute -6937 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -6938 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -6939 verbose lock using /home/ruanyf/.tnpm/_locks/is-glob-471d4436f01dafa7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob -6940 verbose lock using /home/ruanyf/.tnpm/_locks/is-extglob-82e285b1f8e6e677.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob -6941 verbose lock using /home/ruanyf/.tnpm/_locks/filename-regex-4d7ec169971d8203.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex -6942 verbose lock using /home/ruanyf/.tnpm/_locks/normalize-path-a6a45378975aa8fb.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path -6943 verbose lock using /home/ruanyf/.tnpm/_locks/regex-cache-d532aad21fcda594.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -6944 verbose lock using /home/ruanyf/.tnpm/_locks/array-unique-563063201a1b39e1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique -6945 verbose lock using /home/ruanyf/.tnpm/_locks/extglob-ce4a0e7242960176.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob -6946 verbose lock using /home/ruanyf/.tnpm/_locks/kind-of-89c7d16b0f8411bd.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -6947 verbose lock using /home/ruanyf/.tnpm/_locks/parse-glob-6752b9eef668ad41.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -6948 verbose lock using /home/ruanyf/.tnpm/_locks/object-omit-35dbc341880dbc51.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -6949 verbose lock using /home/ruanyf/.tnpm/_locks/braces-097842f0c137e8be.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -6950 verbose lock using /home/ruanyf/.tnpm/_locks/arr-diff-2732b6abfce275e8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -6951 verbose lock using /home/ruanyf/.tnpm/_locks/expand-brackets-2c87c72b7dba14b4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -6952 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/package.json -6953 silly install write writing is-glob 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob -6954 silly install write writing is-extglob 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob -6955 silly install write writing filename-regex 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex -6956 silly install write writing normalize-path 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path -6957 silly install write writing regex-cache 0.4.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -6958 silly install write writing array-unique 0.2.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique -6959 silly install write writing extglob 0.3.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob -6960 silly install write writing kind-of 3.0.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -6961 silly install write writing parse-glob 3.0.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -6962 silly install write writing object.omit 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -6963 silly install write writing braces 1.8.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -6964 silly install write writing arr-diff 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -6965 silly install write writing expand-brackets 0.1.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -6966 info preinstall buffer-shims@1.0.0 -6967 silly gunzTarPerm extractEntry dist/rx.lite.extras.compat.js -6968 silly gunzTarPerm extractEntry index.js -6969 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once is being purged from base /home/ruanyf/npm-global -6970 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -6971 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits is being purged from base /home/ruanyf/npm-global -6972 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits -6973 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute is being purged from base /home/ruanyf/npm-global -6974 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute -6975 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch is being purged from base /home/ruanyf/npm-global -6976 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -6977 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight is being purged from base /home/ruanyf/npm-global -6978 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -6979 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims/package.json -6980 info linkStuff is-promise@2.1.0 -6981 silly linkStuff is-promise@2.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules as its parent node_modules -6982 silly linkStuff is-promise@2.1.0 is part of a global install -6983 silly linkStuff is-promise@2.1.0 is installed into a global node_modules -6984 verbose tar unpack /home/ruanyf/.tnpm/once/1.3.3/package.tgz -6985 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -6986 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once is being purged -6987 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -6988 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz -6989 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits -6990 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits is being purged -6991 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits -6992 verbose tar unpack /home/ruanyf/.tnpm/path-is-absolute/1.0.0/package.tgz -6993 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute -6994 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute is being purged -6995 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute -6996 verbose tar unpack /home/ruanyf/.tnpm/minimatch/3.0.0/package.tgz -6997 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -6998 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch is being purged -6999 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -7000 verbose tar unpack /home/ruanyf/.tnpm/inflight/1.0.5/package.tgz -7001 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -7002 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight is being purged -7003 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -7004 info preinstall once@1.3.3 -7005 silly gunzTarPerm modes [ '755', '644' ] -7006 silly gunzTarPerm modes [ '755', '644' ] -7007 silly gunzTarPerm modes [ '755', '644' ] -7008 silly gunzTarPerm modes [ '755', '644' ] -7009 silly gunzTarPerm modes [ '755', '644' ] -7010 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob -7011 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob -7012 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex -7013 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path -7014 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -7015 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique -7016 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob -7017 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -7018 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -7019 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -7020 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -7021 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -7022 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -7023 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder/package.json -7024 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/package.json -7025 verbose linkBins is-promise@2.1.0 -7026 verbose linkMans is-promise@2.1.0 -7027 verbose rebuildBundles is-promise@2.1.0 -7028 silly gunzTarPerm extractEntry lib/_stream_readable.js -7029 info install is-promise@2.1.0 -7030 silly gunzTarPerm extractEntry readme.markdown -7031 silly gunzTarPerm extractEntry test/cmp.js -7032 silly gunzTarPerm extractEntry test/nested.js -7033 silly gunzTarPerm extractEntry test/replacer.js -7034 silly gunzTarPerm extractEntry test/space.js -7035 silly gunzTarPerm extractEntry test/str.js -7036 silly gunzTarPerm extractEntry test/to-json.js -7037 silly gunzTarPerm extractEntry findLast.js -7038 silly gunzTarPerm extractEntry at.js -7039 silly gunzTarPerm extractEntry dist/rx.aggregates.min.js -7040 silly gunzTarPerm extractEntry dist/rx.lite.compat.min.js -7041 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob is being purged from base /home/ruanyf/npm-global -7042 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob -7043 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob is being purged from base /home/ruanyf/npm-global -7044 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob -7045 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex is being purged from base /home/ruanyf/npm-global -7046 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex -7047 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path is being purged from base /home/ruanyf/npm-global -7048 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path -7049 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache is being purged from base /home/ruanyf/npm-global -7050 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -7051 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique is being purged from base /home/ruanyf/npm-global -7052 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique -7053 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob is being purged from base /home/ruanyf/npm-global -7054 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob -7055 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of is being purged from base /home/ruanyf/npm-global -7056 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -7057 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob is being purged from base /home/ruanyf/npm-global -7058 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -7059 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit is being purged from base /home/ruanyf/npm-global -7060 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -7061 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces is being purged from base /home/ruanyf/npm-global -7062 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -7063 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff is being purged from base /home/ruanyf/npm-global -7064 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -7065 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets is being purged from base /home/ruanyf/npm-global -7066 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -7067 info postinstall is-promise@2.1.0 -7068 silly gunzTarPerm extractEntry package.json -7069 verbose tar unpack /home/ruanyf/.tnpm/is-extglob/1.0.0/package.tgz -7070 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob -7071 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob is being purged -7072 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob -7073 verbose tar unpack /home/ruanyf/.tnpm/is-glob/2.0.1/package.tgz -7074 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob -7075 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob is being purged -7076 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob -7077 verbose tar unpack /home/ruanyf/.tnpm/filename-regex/2.0.0/package.tgz -7078 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex -7079 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex is being purged -7080 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex -7081 verbose tar unpack /home/ruanyf/.tnpm/normalize-path/2.0.1/package.tgz -7082 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path -7083 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path is being purged -7084 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path -7085 verbose tar unpack /home/ruanyf/.tnpm/regex-cache/0.4.3/package.tgz -7086 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -7087 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache is being purged -7088 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -7089 verbose tar unpack /home/ruanyf/.tnpm/array-unique/0.2.1/package.tgz -7090 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique -7091 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique is being purged -7092 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique -7093 verbose tar unpack /home/ruanyf/.tnpm/extglob/0.3.2/package.tgz -7094 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob -7095 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob is being purged -7096 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob -7097 verbose tar unpack /home/ruanyf/.tnpm/kind-of/3.0.3/package.tgz -7098 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -7099 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of is being purged -7100 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -7101 verbose tar unpack /home/ruanyf/.tnpm/parse-glob/3.0.4/package.tgz -7102 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -7103 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob is being purged -7104 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -7105 verbose tar unpack /home/ruanyf/.tnpm/object.omit/2.0.0/package.tgz -7106 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -7107 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit is being purged -7108 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -7109 verbose tar unpack /home/ruanyf/.tnpm/braces/1.8.4/package.tgz -7110 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -7111 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces is being purged -7112 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -7113 verbose tar unpack /home/ruanyf/.tnpm/arr-diff/2.0.0/package.tgz -7114 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -7115 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff is being purged -7116 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -7117 verbose tar unpack /home/ruanyf/.tnpm/expand-brackets/0.1.5/package.tgz -7118 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -7119 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets is being purged -7120 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -7121 info preinstall string_decoder@0.10.31 -7122 silly gunzTarPerm extractEntry package.json -7123 silly gunzTarPerm extractEntry package.json -7124 silly gunzTarPerm extractEntry package.json -7125 silly gunzTarPerm extractEntry package.json -7126 silly gunzTarPerm extractEntry dist/rx.coincidence.min.js -7127 silly gunzTarPerm modes [ '755', '644' ] -7128 silly gunzTarPerm modes [ '755', '644' ] -7129 silly gunzTarPerm modes [ '755', '644' ] -7130 silly gunzTarPerm modes [ '755', '644' ] -7131 silly gunzTarPerm modes [ '755', '644' ] -7132 silly gunzTarPerm modes [ '755', '644' ] -7133 silly gunzTarPerm modes [ '755', '644' ] -7134 silly gunzTarPerm modes [ '755', '644' ] -7135 silly gunzTarPerm modes [ '755', '644' ] -7136 silly gunzTarPerm modes [ '755', '644' ] -7137 silly gunzTarPerm modes [ '755', '644' ] -7138 silly gunzTarPerm modes [ '755', '644' ] -7139 silly gunzTarPerm modes [ '755', '644' ] -7140 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder/package.json -7141 silly prepareForInstallMany adding wrappy@1 from once dependencies -7142 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/package.json -7143 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-promise-42edfdb63885d862.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async/node_modules/is-promise -7144 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -7145 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -7146 silly cache afterAdd minimist@0.0.8 -7147 verbose afterAdd /home/ruanyf/.tnpm/minimist/0.0.8/package/package.json not in flight; writing -7148 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -7149 silly gunzTarPerm extractEntry README.md -7150 silly gunzTarPerm extractEntry LICENSE -7151 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits/package.json -7152 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims/package.json -7153 silly gunzTarPerm extractEntry README.md -7154 silly gunzTarPerm extractEntry LICENSE -7155 silly gunzTarPerm extractEntry README.md -7156 silly gunzTarPerm extractEntry LICENSE -7157 silly gunzTarPerm extractEntry index.js -7158 silly gunzTarPerm extractEntry license -7159 silly gunzTarPerm extractEntry README.md -7160 silly gunzTarPerm extractEntry LICENSE -7161 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args/package.json -7162 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate/package.json -7163 silly gunzTarPerm extractEntry lib/_stream_transform.js -7164 silly gunzTarPerm extractEntry lib/_stream_writable.js -7165 silly gunzTarPerm extractEntry package.json -7166 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream/package.json -7167 silly gunzTarPerm extractEntry package.json -7168 silly gunzTarPerm extractEntry package.json -7169 silly gunzTarPerm extractEntry package.json -7170 silly gunzTarPerm extractEntry package.json -7171 silly gunzTarPerm modified mode [ 'package.json', 448, 484 ] -7172 silly gunzTarPerm extractEntry package.json -7173 silly gunzTarPerm extractEntry package.json -7174 silly gunzTarPerm extractEntry package.json -7175 silly gunzTarPerm extractEntry package.json -7176 silly gunzTarPerm extractEntry package.json -7177 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is/package.json -7178 silly gunzTarPerm extractEntry package.json -7179 silly gunzTarPerm extractEntry package.json -7180 silly gunzTarPerm extractEntry package.json -7181 info linkStuff run-async@2.2.0 -7182 silly linkStuff run-async@2.2.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -7183 silly linkStuff run-async@2.2.0 is part of a global install -7184 silly linkStuff run-async@2.2.0 is installed into a global node_modules -7185 silly gunzTarPerm extractEntry findLastIndex.js -7186 silly gunzTarPerm extractEntry assignWith.js -7187 verbose afterAdd /home/ruanyf/.tnpm/minimist/0.0.8/package/package.json written -7188 silly install resolved [ { name: 'minimist', -7188 silly install resolved version: '0.0.8', -7188 silly install resolved description: 'parse argument options', -7188 silly install resolved main: 'index.js', -7188 silly install resolved devDependencies: { tape: '~1.0.4', tap: '~0.4.0' }, -7188 silly install resolved scripts: { test: 'tap test/*.js' }, -7188 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, -7188 silly install resolved repository: { type: 'git', url: 'git://github.com/substack/minimist.git' }, -7188 silly install resolved homepage: 'https://github.com/substack/minimist', -7188 silly install resolved keywords: [ 'argv', 'getopt', 'parser', 'optimist' ], -7188 silly install resolved author: -7188 silly install resolved { name: 'James Halliday', -7188 silly install resolved email: 'mail@substack.net', -7188 silly install resolved url: 'http://substack.net' }, -7188 silly install resolved license: 'MIT', -7188 silly install resolved bugs: { url: 'https://github.com/substack/minimist/issues' }, -7188 silly install resolved _id: 'minimist@0.0.8', -7188 silly install resolved dist: -7188 silly install resolved { shasum: '857fcabfc3397d2625b8228262e86aa7a011b05d', -7188 silly install resolved size: 5990, -7188 silly install resolved noattachment: false, -7188 silly install resolved key: '/minimist/-/minimist-0.0.8.tgz', -7188 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz' }, -7188 silly install resolved _from: 'minimist@0.0.8', -7188 silly install resolved _npmVersion: '1.4.3', -7188 silly install resolved _npmUser: { name: 'substack', email: 'mail@substack.net' }, -7188 silly install resolved maintainers: [ [Object] ], -7188 silly install resolved directories: {}, -7188 silly install resolved publish_time: 1392958009997, -7188 silly install resolved _cnpm_publish_time: 1392958009997, -7188 silly install resolved _shasum: '857fcabfc3397d2625b8228262e86aa7a011b05d', -7188 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz' } ] -7189 info install minimist@0.0.8 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp -7190 info installOne minimist@0.0.8 -7191 verbose installOne of minimist to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp not in flight; installing -7192 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -7193 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder/package.json -7194 info preinstall inherits@2.0.1 -7195 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/package.json -7196 info preinstall process-nextick-args@1.0.7 -7197 info preinstall util-deprecate@1.0.2 -7198 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook/package.json -7199 silly cache add args [ 'wrappy@1', null ] -7200 verbose cache add spec wrappy@1 -7201 silly cache add parsed spec Result { -7201 silly cache add raw: 'wrappy@1', -7201 silly cache add scope: null, -7201 silly cache add name: 'wrappy', -7201 silly cache add rawSpec: '1', -7201 silly cache add spec: '>=1.0.0 <2.0.0', -7201 silly cache add type: 'range' } -7202 silly addNamed wrappy@>=1.0.0 <2.0.0 -7203 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for wrappy -7204 silly addNameRange { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: false } -7205 silly mapToRegistry name wrappy -7206 silly mapToRegistry using default registry -7207 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7208 silly mapToRegistry data Result { -7208 silly mapToRegistry raw: 'wrappy', -7208 silly mapToRegistry scope: null, -7208 silly mapToRegistry name: 'wrappy', -7208 silly mapToRegistry rawSpec: '', -7208 silly mapToRegistry spec: 'latest', -7208 silly mapToRegistry type: 'tag' } -7209 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy -7210 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/wrappy not in flight; fetching -7211 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json -7212 silly gunzTarPerm extractEntry dist/rx.virtualtime.min.js -7213 silly gunzTarPerm extractEntry dist/rx.coincidence.map -7214 verbose lock using /home/ruanyf/.tnpm/_locks/minimist-1e6dfe47780040db.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist -7215 silly gunzTarPerm extractEntry README.md -7216 silly gunzTarPerm extractEntry LICENSE -7217 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits/package.json -7218 verbose linkBins run-async@2.2.0 -7219 verbose linkMans run-async@2.2.0 -7220 verbose rebuildBundles run-async@2.2.0 -7221 info preinstall is-stream@1.1.0 -7222 silly install write writing minimist 0.0.8 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist -7223 silly gunzTarPerm extractEntry README.md -7224 silly gunzTarPerm extractEntry LICENSE -7225 silly gunzTarPerm extractEntry README.md -7226 silly gunzTarPerm extractEntry index.js -7227 silly gunzTarPerm extractEntry README.md -7228 silly gunzTarPerm extractEntry LICENSE -7229 silly gunzTarPerm extractEntry README.md -7230 silly gunzTarPerm modified mode [ 'README.md', 448, 484 ] -7231 silly gunzTarPerm extractEntry LICENSE -7232 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] -7233 silly gunzTarPerm extractEntry README.md -7234 silly gunzTarPerm extractEntry LICENSE -7235 silly gunzTarPerm extractEntry README.md -7236 silly gunzTarPerm extractEntry LICENSE -7237 silly gunzTarPerm extractEntry README.md -7238 silly gunzTarPerm extractEntry LICENSE -7239 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args/package.json -7240 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate/package.json -7241 silly gunzTarPerm extractEntry README.md -7242 silly gunzTarPerm extractEntry LICENSE -7243 silly gunzTarPerm extractEntry README.md -7244 silly gunzTarPerm extractEntry LICENSE -7245 silly gunzTarPerm extractEntry README.md -7246 silly gunzTarPerm extractEntry LICENSE -7247 info preinstall core-util-is@1.0.2 -7248 silly gunzTarPerm extractEntry README.md -7249 silly gunzTarPerm extractEntry LICENSE -7250 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] -7251 silly gunzTarPerm extractEntry README.md -7252 silly gunzTarPerm extractEntry LICENSE -7253 verbose rebuildBundles [ 'is-promise' ] -7254 info install run-async@2.2.0 -7255 info preinstall extend-shallow@2.0.1 -7256 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream/package.json -7257 silly gunzTarPerm extractEntry inherits.js -7258 silly gunzTarPerm extractEntry inherits_browser.js -7259 silly gunzTarPerm extractEntry once.js -7260 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is/package.json -7261 info preinstall exit-hook@1.1.1 -7262 info postinstall run-async@2.2.0 -7263 info preinstall ansi-regex@2.0.0 -7264 silly gunzTarPerm extractEntry inflight.js -7265 silly gunzTarPerm extractEntry readme.md -7266 silly gunzTarPerm extractEntry minimatch.js -7267 silly install resolved [] -7268 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder -7269 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder -7270 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/package.json -7271 verbose request uri http://registry.npm.alibaba-inc.com/wrappy -7272 verbose request no auth needed -7273 info attempt registry request try #1 at 上午9:12:31 -7274 verbose etag "d8c-dhvaJLlwy4LsMgLfXdXTpw" -7275 http request GET http://registry.npm.alibaba-inc.com/wrappy -7276 silly install resolved [] -7277 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims -7278 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims -7279 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook/package.json -7280 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json -7281 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist -7282 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits/package.json -7283 verbose unlock done using /home/ruanyf/.tnpm/_locks/run-async-d947f04ab284015f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/run-async -7284 silly gunzTarPerm extractEntry findLastKey.js -7285 silly gunzTarPerm extractEntry assignInWith.js -7286 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args/package.json -7287 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate/package.json -7288 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream/package.json -7289 silly gunzTarPerm extractEntry dist/rx.lite.compat.map -7290 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist is being purged from base /home/ruanyf/npm-global -7291 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist -7292 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json -7293 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan/package.json -7294 silly gunzTarPerm extractEntry index.js -7295 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray/package.json -7296 info linkStuff string_decoder@0.10.31 -7297 silly linkStuff string_decoder@0.10.31 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules -7298 silly linkStuff string_decoder@0.10.31 is part of a global install -7299 silly linkStuff string_decoder@0.10.31 is installed into a global node_modules -7300 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is/package.json -7301 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime/package.json -7302 verbose tar unpack /home/ruanyf/.tnpm/minimist/0.0.8/package.tgz -7303 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist -7304 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist is being purged -7305 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist -7306 silly gunzTarPerm extractEntry index.js -7307 silly gunzTarPerm extractEntry index.js -7308 silly gunzTarPerm extractEntry index.js -7309 silly gunzTarPerm modified mode [ 'index.js', 448, 484 ] -7310 silly gunzTarPerm extractEntry index.js -7311 silly gunzTarPerm extractEntry index.js -7312 silly gunzTarPerm extractEntry index.js -7313 silly gunzTarPerm extractEntry index.js -7314 silly gunzTarPerm extractEntry index.js -7315 silly gunzTarPerm extractEntry index.js -7316 silly gunzTarPerm extractEntry index.js -7317 silly prepareForInstallMany adding is-extendable@^0.1.0 from extend-shallow dependencies -7318 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/package.json -7319 silly gunzTarPerm extractEntry index.js -7320 silly gunzTarPerm modes [ '755', '644' ] -7321 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook/package.json -7322 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json -7323 silly gunzTarPerm extractEntry test.js -7324 silly install resolved [] -7325 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits -7326 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits -7327 verbose linkBins string_decoder@0.10.31 -7328 verbose linkMans string_decoder@0.10.31 -7329 verbose rebuildBundles string_decoder@0.10.31 -7330 info preinstall number-is-nan@1.0.0 -7331 info preinstall number-is-nan@1.0.0 -7332 info preinstall isarray@1.0.0 -7333 silly install resolved [] -7334 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args -7335 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args -7336 silly install resolved [] -7337 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate -7338 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate -7339 info install string_decoder@0.10.31 -7340 info preinstall onetime@1.1.0 -7341 silly install resolved [] -7342 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream -7343 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream -7344 silly gunzTarPerm extractEntry dist/rx.joinpatterns.map -7345 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json -7346 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan/package.json -7347 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray/package.json -7348 info linkStuff buffer-shims@1.0.0 -7349 silly linkStuff buffer-shims@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules -7350 silly linkStuff buffer-shims@1.0.0 is part of a global install -7351 silly linkStuff buffer-shims@1.0.0 is installed into a global node_modules -7352 info postinstall string_decoder@0.10.31 -7353 silly install resolved [] -7354 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is -7355 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is -7356 http 200 http://registry.npm.alibaba-inc.com/wrappy -7357 verbose headers { server: 'Tengine', -7357 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -7357 verbose headers 'content-type': 'application/json; charset=utf-8', -7357 verbose headers 'transfer-encoding': 'chunked', -7357 verbose headers connection: 'keep-alive', -7357 verbose headers vary: 'Accept-Encoding', -7357 verbose headers 'x-readtime': '18', -7357 verbose headers 'content-encoding': 'gzip' } -7358 silly get cb [ 200, -7358 silly get { server: 'Tengine', -7358 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -7358 silly get 'content-type': 'application/json; charset=utf-8', -7358 silly get 'transfer-encoding': 'chunked', -7358 silly get connection: 'keep-alive', -7358 silly get vary: 'Accept-Encoding', -7358 silly get 'x-readtime': '18', -7358 silly get 'content-encoding': 'gzip' } ] -7359 verbose get saving wrappy to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/wrappy/.cache.json -7360 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -7361 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime/package.json -7362 silly gunzTarPerm extractEntry first.js -7363 silly gunzTarPerm extractEntry assignIn.js -7364 silly gunzTarPerm extractEntry package.json -7365 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/package.json -7366 info linkStuff inherits@2.0.1 -7367 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules -7368 silly linkStuff inherits@2.0.1 is part of a global install -7369 silly linkStuff inherits@2.0.1 is installed into a global node_modules -7370 silly install resolved [] -7371 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook -7372 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook -7373 silly install resolved [] -7374 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex -7375 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex -7376 silly gunzTarPerm extractEntry dist/rx.experimental.map -7377 silly gunzTarPerm extractEntry dist/rx.lite.extras.map -7378 info linkStuff process-nextick-args@1.0.7 -7379 silly linkStuff process-nextick-args@1.0.7 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules -7380 silly linkStuff process-nextick-args@1.0.7 is part of a global install -7381 silly linkStuff process-nextick-args@1.0.7 is installed into a global node_modules -7382 info linkStuff util-deprecate@1.0.2 -7383 silly linkStuff util-deprecate@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules -7384 silly linkStuff util-deprecate@1.0.2 is part of a global install -7385 silly linkStuff util-deprecate@1.0.2 is installed into a global node_modules -7386 verbose linkBins buffer-shims@1.0.0 -7387 verbose linkMans buffer-shims@1.0.0 -7388 verbose rebuildBundles buffer-shims@1.0.0 -7389 verbose unlock done using /home/ruanyf/.tnpm/_locks/string-decoder-41a36a35d7546451.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/string_decoder -7390 silly cache add args [ 'is-extendable@^0.1.0', null ] -7391 verbose cache add spec is-extendable@^0.1.0 -7392 silly cache add parsed spec Result { -7392 silly cache add raw: 'is-extendable@^0.1.0', -7392 silly cache add scope: null, -7392 silly cache add name: 'is-extendable', -7392 silly cache add rawSpec: '^0.1.0', -7392 silly cache add spec: '>=0.1.0 <0.2.0', -7392 silly cache add type: 'range' } -7393 silly addNamed is-extendable@>=0.1.0 <0.2.0 -7394 verbose addNamed ">=0.1.0 <0.2.0" is a valid semver range for is-extendable -7395 silly addNameRange { name: 'is-extendable', -7395 silly addNameRange range: '>=0.1.0 <0.2.0', -7395 silly addNameRange hasData: false } -7396 silly mapToRegistry name is-extendable -7397 silly mapToRegistry using default registry -7398 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7399 silly mapToRegistry data Result { -7399 silly mapToRegistry raw: 'is-extendable', -7399 silly mapToRegistry scope: null, -7399 silly mapToRegistry name: 'is-extendable', -7399 silly mapToRegistry rawSpec: '', -7399 silly mapToRegistry spec: 'latest', -7399 silly mapToRegistry type: 'tag' } -7400 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-extendable -7401 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-extendable not in flight; fetching -7402 info install buffer-shims@1.0.0 -7403 info linkStuff is-stream@1.1.0 -7404 silly linkStuff is-stream@1.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules as its parent node_modules -7405 silly linkStuff is-stream@1.1.0 is part of a global install -7406 silly linkStuff is-stream@1.1.0 is installed into a global node_modules -7407 silly gunzTarPerm extractEntry dist/rx.aggregates.map -7408 silly gunzTarPerm extractEntry LICENSE -7409 silly gunzTarPerm extractEntry index.js -7410 verbose linkBins inherits@2.0.1 -7411 verbose linkMans inherits@2.0.1 -7412 verbose rebuildBundles inherits@2.0.1 -7413 info linkStuff core-util-is@1.0.2 -7414 silly linkStuff core-util-is@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules -7415 silly linkStuff core-util-is@1.0.2 is part of a global install -7416 silly linkStuff core-util-is@1.0.2 is installed into a global node_modules -7417 info preinstall is-glob@2.0.1 -7418 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json -7419 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan/package.json -7420 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray/package.json -7421 verbose linkBins process-nextick-args@1.0.7 -7422 verbose linkMans process-nextick-args@1.0.7 -7423 verbose rebuildBundles process-nextick-args@1.0.7 -7424 verbose linkBins util-deprecate@1.0.2 -7425 verbose linkMans util-deprecate@1.0.2 -7426 verbose rebuildBundles util-deprecate@1.0.2 -7427 info postinstall buffer-shims@1.0.0 -7428 info install inherits@2.0.1 -7429 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime/package.json -7430 info install process-nextick-args@1.0.7 -7431 info install util-deprecate@1.0.2 -7432 silly gunzTarPerm extractEntry dist/rx.core.map -7433 info linkStuff exit-hook@1.1.1 -7434 silly linkStuff exit-hook@1.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules as its parent node_modules -7435 silly linkStuff exit-hook@1.1.1 is part of a global install -7436 silly linkStuff exit-hook@1.1.1 is installed into a global node_modules -7437 info linkStuff ansi-regex@2.0.0 -7438 silly linkStuff ansi-regex@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules as its parent node_modules -7439 silly linkStuff ansi-regex@2.0.0 is part of a global install -7440 silly linkStuff ansi-regex@2.0.0 is installed into a global node_modules -7441 verbose linkBins is-stream@1.1.0 -7442 verbose linkMans is-stream@1.1.0 -7443 verbose rebuildBundles is-stream@1.1.0 -7444 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/package.json -7445 info postinstall inherits@2.0.1 -7446 verbose linkBins core-util-is@1.0.2 -7447 verbose linkMans core-util-is@1.0.2 -7448 verbose rebuildBundles core-util-is@1.0.2 -7449 verbose request uri http://registry.npm.alibaba-inc.com/is-extendable -7450 verbose request no auth needed -7451 info attempt registry request try #1 at 上午9:12:31 -7452 verbose etag "1970-rjLiSPAKa9Z7yg+LVbBT7Q" -7453 http request GET http://registry.npm.alibaba-inc.com/is-extendable -7454 silly addNameRange number 2 { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: true } -7455 silly addNameRange versions [ 'wrappy', [ '1.0.2', '1.0.1', '1.0.0' ] ] -7456 silly addNamed wrappy@1.0.2 -7457 verbose addNamed "1.0.2" is a plain semver version for wrappy -7458 info install is-stream@1.1.0 -7459 info postinstall process-nextick-args@1.0.7 -7460 info postinstall util-deprecate@1.0.2 -7461 verbose unlock done using /home/ruanyf/.tnpm/_locks/buffer-shims-8211e13276fdb335.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/buffer-shims -7462 info install core-util-is@1.0.2 -7463 silly mapToRegistry name wrappy -7464 silly mapToRegistry using default registry -7465 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7466 silly mapToRegistry data Result { -7466 silly mapToRegistry raw: 'wrappy', -7466 silly mapToRegistry scope: null, -7466 silly mapToRegistry name: 'wrappy', -7466 silly mapToRegistry rawSpec: '', -7466 silly mapToRegistry spec: 'latest', -7466 silly mapToRegistry type: 'tag' } -7467 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy -7468 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz not in flight; adding -7469 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz', -7469 verbose addRemoteTarball 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f' ] -7470 silly gunzTarPerm extractEntry flatMap.js -7471 silly gunzTarPerm extractEntry assign.js -7472 verbose linkBins exit-hook@1.1.1 -7473 verbose linkMans exit-hook@1.1.1 -7474 verbose rebuildBundles exit-hook@1.1.1 -7475 verbose linkBins ansi-regex@2.0.0 -7476 verbose linkMans ansi-regex@2.0.0 -7477 verbose rebuildBundles ansi-regex@2.0.0 -7478 info postinstall is-stream@1.1.0 -7479 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-f6ef6acc91466ebe.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/inherits -7480 info postinstall core-util-is@1.0.2 -7481 info install exit-hook@1.1.1 -7482 info install ansi-regex@2.0.0 -7483 silly install resolved [] -7484 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan -7485 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan -7486 silly install resolved [] -7487 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan -7488 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan -7489 silly install resolved [] -7490 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray -7491 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray -7492 verbose unlock done using /home/ruanyf/.tnpm/_locks/process-nextick-args-53c0069f7053538d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/process-nextick-args -7493 verbose unlock done using /home/ruanyf/.tnpm/_locks/util-deprecate-b30e99e036e007f1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/util-deprecate -7494 info retry fetch attempt 1 at 上午9:12:31 -7495 info attempt registry request try #1 at 上午9:12:31 -7496 http fetch GET http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz -7497 silly install resolved [] -7498 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime -7499 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime -7500 info postinstall exit-hook@1.1.1 -7501 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend/package.json -7502 info postinstall ansi-regex@2.0.0 -7503 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-stream-bcdd8d548190a97a.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams/node_modules/is-stream -7504 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -7505 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -7506 silly prepareForInstallMany adding is-extglob@^1.0.0 from is-glob dependencies -7507 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/package.json -7508 silly gunzTarPerm extractEntry .travis.yml -7509 silly gunzTarPerm extractEntry example/parse.js -7510 verbose unlock done using /home/ruanyf/.tnpm/_locks/core-util-is-fd2215fcc21f4f15.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/core-util-is -7511 silly gunzTarPerm extractEntry dist/rx.lite.map -7512 silly gunzTarPerm extractEntry dist/rx.core.binding.map -7513 verbose unlock done using /home/ruanyf/.tnpm/_locks/exit-hook-5ff6422de8a65eae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/exit-hook -7514 verbose unlock done using /home/ruanyf/.tnpm/_locks/ansi-regex-9bff194e757db787.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex -7515 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -7516 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -7517 info linkStuff number-is-nan@1.0.0 -7518 silly linkStuff number-is-nan@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules as its parent node_modules -7519 silly linkStuff number-is-nan@1.0.0 is part of a global install -7520 silly linkStuff number-is-nan@1.0.0 is installed into a global node_modules -7521 info linkStuff number-is-nan@1.0.0 -7522 silly linkStuff number-is-nan@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules as its parent node_modules -7523 silly linkStuff number-is-nan@1.0.0 is part of a global install -7524 silly linkStuff number-is-nan@1.0.0 is installed into a global node_modules -7525 info linkStuff isarray@1.0.0 -7526 silly linkStuff isarray@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules as its parent node_modules -7527 silly linkStuff isarray@1.0.0 is part of a global install -7528 silly linkStuff isarray@1.0.0 is installed into a global node_modules -7529 info preinstall xtend@4.0.1 -7530 info linkStuff onetime@1.1.0 -7531 silly linkStuff onetime@1.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules as its parent node_modules -7532 silly linkStuff onetime@1.1.0 is part of a global install -7533 silly linkStuff onetime@1.1.0 is installed into a global node_modules -7534 silly gunzTarPerm extractEntry flatMapDeep.js -7535 silly gunzTarPerm extractEntry ary.js -7536 silly gunzTarPerm extractEntry dist/rx.map -7537 http 304 http://registry.npm.alibaba-inc.com/is-extendable -7538 verbose headers { server: 'Tengine', -7538 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -7538 verbose headers connection: 'keep-alive', -7538 verbose headers etag: '"1970-rjLiSPAKa9Z7yg+LVbBT7Q"', -7538 verbose headers 'x-readtime': '13' } -7539 silly get cb [ 304, -7539 silly get { server: 'Tengine', -7539 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -7539 silly get connection: 'keep-alive', -7539 silly get etag: '"1970-rjLiSPAKa9Z7yg+LVbBT7Q"', -7539 silly get 'x-readtime': '13' } ] -7540 verbose etag http://registry.npm.alibaba-inc.com/is-extendable from cache -7541 verbose get saving is-extendable to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-extendable/.cache.json -7542 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -7543 info linkStuff ordered-read-streams@0.3.0 -7544 silly linkStuff ordered-read-streams@0.3.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules -7545 silly linkStuff ordered-read-streams@0.3.0 is part of a global install -7546 silly linkStuff ordered-read-streams@0.3.0 is installed into a global node_modules -7547 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex/package.json -7548 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend/package.json -7549 verbose linkBins number-is-nan@1.0.0 -7550 verbose linkMans number-is-nan@1.0.0 -7551 verbose rebuildBundles number-is-nan@1.0.0 -7552 verbose linkBins number-is-nan@1.0.0 -7553 verbose linkMans number-is-nan@1.0.0 -7554 verbose rebuildBundles number-is-nan@1.0.0 -7555 verbose linkBins isarray@1.0.0 -7556 verbose linkMans isarray@1.0.0 -7557 verbose rebuildBundles isarray@1.0.0 -7558 verbose linkBins onetime@1.1.0 -7559 verbose linkMans onetime@1.1.0 -7560 verbose rebuildBundles onetime@1.1.0 -7561 info install number-is-nan@1.0.0 -7562 info install number-is-nan@1.0.0 -7563 info install isarray@1.0.0 -7564 silly cache add args [ 'is-extglob@^1.0.0', null ] -7565 verbose cache add spec is-extglob@^1.0.0 -7566 silly cache add parsed spec Result { -7566 silly cache add raw: 'is-extglob@^1.0.0', -7566 silly cache add scope: null, -7566 silly cache add name: 'is-extglob', -7566 silly cache add rawSpec: '^1.0.0', -7566 silly cache add spec: '>=1.0.0 <2.0.0', -7566 silly cache add type: 'range' } -7567 silly addNamed is-extglob@>=1.0.0 <2.0.0 -7568 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for is-extglob -7569 silly addNameRange { name: 'is-extglob', range: '>=1.0.0 <2.0.0', hasData: false } -7570 silly mapToRegistry name is-extglob -7571 silly mapToRegistry using default registry -7572 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7573 silly mapToRegistry data Result { -7573 silly mapToRegistry raw: 'is-extglob', -7573 silly mapToRegistry scope: null, -7573 silly mapToRegistry name: 'is-extglob', -7573 silly mapToRegistry rawSpec: '', -7573 silly mapToRegistry spec: 'latest', -7573 silly mapToRegistry type: 'tag' } -7574 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-extglob -7575 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-extglob not in flight; fetching -7576 info linkStuff has-ansi@2.0.0 -7577 silly linkStuff has-ansi@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules as its parent node_modules -7578 silly linkStuff has-ansi@2.0.0 is part of a global install -7579 silly linkStuff has-ansi@2.0.0 is installed into a global node_modules -7580 info install onetime@1.1.0 -7581 verbose linkBins ordered-read-streams@0.3.0 -7582 verbose linkMans ordered-read-streams@0.3.0 -7583 verbose rebuildBundles ordered-read-streams@0.3.0 -7584 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/package.json -7585 verbose rebuildBundles [ 'is-stream' ] -7586 info install ordered-read-streams@0.3.0 -7587 info postinstall number-is-nan@1.0.0 -7588 silly gunzTarPerm extractEntry readme.markdown -7589 silly gunzTarPerm extractEntry test/dash.js -7590 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute/package.json -7591 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/package.json -7592 info postinstall number-is-nan@1.0.0 -7593 info preinstall filename-regex@2.0.0 -7594 info postinstall isarray@1.0.0 -7595 info postinstall onetime@1.1.0 -7596 http fetch 200 http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz -7597 verbose linkBins has-ansi@2.0.0 -7598 verbose linkMans has-ansi@2.0.0 -7599 verbose rebuildBundles has-ansi@2.0.0 -7600 info postinstall ordered-read-streams@0.3.0 -7601 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/package.json -7602 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex/package.json -7603 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend/package.json -7604 verbose rebuildBundles [ 'ansi-regex' ] -7605 info install has-ansi@2.0.0 -7606 verbose unlock done using /home/ruanyf/.tnpm/_locks/number-is-nan-d87d7a71abbd4b8e.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan -7607 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -7608 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -7609 info preinstall once@1.3.3 -7610 verbose unlock done using /home/ruanyf/.tnpm/_locks/number-is-nan-4e0947818a28c513.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at/node_modules/number-is-nan -7611 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -7612 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -7613 verbose unlock done using /home/ruanyf/.tnpm/_locks/isarray-3f8fc3c76d274bae.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream/node_modules/isarray -7614 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -7615 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -7616 verbose get http://registry.npm.alibaba-inc.com/is-extglob not expired, no request -7617 silly addNameRange number 2 { name: 'is-extglob', range: '>=1.0.0 <2.0.0', hasData: true } -7618 silly addNameRange versions [ 'is-extglob', [ '1.0.0' ] ] -7619 silly addNamed is-extglob@1.0.0 -7620 verbose addNamed "1.0.0" is a plain semver version for is-extglob -7621 silly addNameRange number 2 { name: 'is-extendable', range: '>=0.1.0 <0.2.0', hasData: true } -7622 silly addNameRange versions [ 'is-extendable', [ '0.1.1', '0.1.0' ] ] -7623 silly addNamed is-extendable@0.1.1 -7624 verbose addNamed "0.1.1" is a plain semver version for is-extendable -7625 verbose unlock done using /home/ruanyf/.tnpm/_locks/onetime-41a4238185ea7660.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime -7626 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -7627 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -7628 silly gunzTarPerm extractEntry flatMapDepth.js -7629 silly gunzTarPerm extractEntry array.js -7630 silly gunzTarPerm extractEntry dist/rx.compat.map -7631 info preinstall path-is-absolute@1.0.0 -7632 info preinstall inflight@1.0.5 -7633 info postinstall has-ansi@2.0.0 -7634 verbose unlock done using /home/ruanyf/.tnpm/_locks/ordered-read-streams-c4c8dc9fe775af65.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/ordered-read-streams -7635 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/package.json -7636 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob/package.json -7637 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob/package.json -7638 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path/package.json -7639 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique/package.json -7640 silly fetchAndShaCheck shasum b5243d8f3ec1aa35f1364605bc0d1036e30ab69f -7641 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute/package.json -7642 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/package.json -7643 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/package.json -7644 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob/package.json -7645 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/package.json -7646 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/package.json -7647 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/package.json -7648 info preinstall minimatch@3.0.0 -7649 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/package.json -7650 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/package.json -7651 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/package.json -7652 verbose unlock done using /home/ruanyf/.tnpm/_locks/has-ansi-add0ceae132370e9.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk/node_modules/has-ansi -7653 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -7654 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -7655 info linkStuff is-fullwidth-code-point@1.0.0 -7656 silly linkStuff is-fullwidth-code-point@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules as its parent node_modules -7657 silly linkStuff is-fullwidth-code-point@1.0.0 is part of a global install -7658 silly linkStuff is-fullwidth-code-point@1.0.0 is installed into a global node_modules -7659 info linkStuff code-point-at@1.0.0 -7660 silly linkStuff code-point-at@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules as its parent node_modules -7661 silly linkStuff code-point-at@1.0.0 is part of a global install -7662 silly linkStuff code-point-at@1.0.0 is installed into a global node_modules -7663 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex/package.json -7664 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/package.json -7665 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz not in flight; adding -7666 verbose addTmpTarball already have metadata; skipping unpack for wrappy@1.0.2 -7667 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -7668 silly install resolved [] -7669 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend -7670 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend -7671 info linkStuff restore-cursor@1.0.1 -7672 silly linkStuff restore-cursor@1.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules as its parent node_modules -7673 silly linkStuff restore-cursor@1.0.1 is part of a global install -7674 silly linkStuff restore-cursor@1.0.1 is installed into a global node_modules -7675 silly gunzTarPerm extractEntry test/default_bool.js -7676 silly gunzTarPerm extractEntry test/dotted.js -7677 silly gunzTarPerm extractEntry test/long.js -7678 silly gunzTarPerm extractEntry test/parse.js -7679 silly gunzTarPerm extractEntry test/parse_modified.js -7680 silly gunzTarPerm extractEntry test/short.js -7681 silly gunzTarPerm extractEntry test/whitespace.js -7682 info preinstall is-glob@2.0.1 -7683 info preinstall is-extglob@1.0.0 -7684 info preinstall normalize-path@2.0.1 -7685 info preinstall array-unique@0.2.1 -7686 silly cache afterAdd is-extglob@1.0.0 -7687 verbose afterAdd /home/ruanyf/.tnpm/is-extglob/1.0.0/package/package.json not in flight; writing -7688 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -7689 silly cache afterAdd is-extendable@0.1.1 -7690 verbose afterAdd /home/ruanyf/.tnpm/is-extendable/0.1.1/package/package.json not in flight; writing -7691 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -7692 info preinstall regex-cache@0.4.3 -7693 info preinstall extglob@0.3.2 -7694 info preinstall kind-of@3.0.3 -7695 info preinstall parse-glob@3.0.4 -7696 info preinstall object.omit@2.0.0 -7697 info preinstall arr-diff@2.0.0 -7698 info preinstall expand-brackets@0.1.5 -7699 info preinstall braces@1.8.4 -7700 verbose linkBins is-fullwidth-code-point@1.0.0 -7701 verbose linkMans is-fullwidth-code-point@1.0.0 -7702 verbose rebuildBundles is-fullwidth-code-point@1.0.0 -7703 silly prepareForInstallMany adding wrappy@1 from once dependencies -7704 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/package.json -7705 verbose linkBins code-point-at@1.0.0 -7706 verbose linkMans code-point-at@1.0.0 -7707 verbose rebuildBundles code-point-at@1.0.0 -7708 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob/package.json -7709 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob/package.json -7710 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path/package.json -7711 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique/package.json -7712 verbose linkBins restore-cursor@1.0.1 -7713 verbose linkMans restore-cursor@1.0.1 -7714 verbose rebuildBundles restore-cursor@1.0.1 -7715 silly gunzTarPerm extractEntry flatten.js -7716 silly gunzTarPerm extractEntry after.js -7717 verbose rebuildBundles [ 'number-is-nan' ] -7718 info install is-fullwidth-code-point@1.0.0 -7719 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute/package.json -7720 verbose rebuildBundles [ 'number-is-nan' ] -7721 info install code-point-at@1.0.0 -7722 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/package.json -7723 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob/package.json -7724 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/package.json -7725 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/package.json -7726 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/package.json -7727 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/package.json -7728 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/package.json -7729 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/package.json -7730 verbose rebuildBundles [ 'exit-hook', 'onetime' ] -7731 info install restore-cursor@1.0.1 -7732 info linkStuff chalk@1.1.3 -7733 silly linkStuff chalk@1.1.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -7734 silly linkStuff chalk@1.1.3 is part of a global install -7735 silly linkStuff chalk@1.1.3 is installed into a global node_modules -7736 info linkStuff readable-stream@2.1.4 -7737 silly linkStuff readable-stream@2.1.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -7738 silly linkStuff readable-stream@2.1.4 is part of a global install -7739 silly linkStuff readable-stream@2.1.4 is installed into a global node_modules -7740 info linkStuff xtend@4.0.1 -7741 silly linkStuff xtend@4.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules as its parent node_modules -7742 silly linkStuff xtend@4.0.1 is part of a global install -7743 silly linkStuff xtend@4.0.1 is installed into a global node_modules -7744 info postinstall is-fullwidth-code-point@1.0.0 -7745 silly gunzTarPerm extractEntry dist/rx.lite.extras.compat.map -7746 info postinstall code-point-at@1.0.0 -7747 silly install resolved [] -7748 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex -7749 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex -7750 silly prepareForInstallMany adding brace-expansion@^1.0.0 from minimatch dependencies -7751 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/package.json -7752 verbose afterAdd /home/ruanyf/.tnpm/is-extglob/1.0.0/package/package.json written -7753 silly install resolved [ { name: 'is-extglob', -7753 silly install resolved description: 'Returns true if a string has an extglob.', -7753 silly install resolved version: '1.0.0', -7753 silly install resolved homepage: 'https://github.com/jonschlinkert/is-extglob', -7753 silly install resolved author: -7753 silly install resolved { name: 'Jon Schlinkert', -7753 silly install resolved url: 'https://github.com/jonschlinkert' }, -7753 silly install resolved repository: -7753 silly install resolved { type: 'git', -7753 silly install resolved url: 'git+https://github.com/jonschlinkert/is-extglob.git' }, -7753 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-extglob/issues' }, -7753 silly install resolved license: 'MIT', -7753 silly install resolved files: [ 'index.js' ], -7753 silly install resolved main: 'index.js', -7753 silly install resolved engines: { node: '>=0.10.0' }, -7753 silly install resolved scripts: -7753 silly install resolved { test: 'mocha', -7753 silly install resolved prepublish: 'browserify -o browser.js -e index.js' }, -7753 silly install resolved devDependencies: { mocha: '*', should: '*' }, -7753 silly install resolved keywords: -7753 silly install resolved [ 'bash', -7753 silly install resolved 'braces', -7753 silly install resolved 'check', -7753 silly install resolved 'exec', -7753 silly install resolved 'extglob', -7753 silly install resolved 'expression', -7753 silly install resolved 'glob', -7753 silly install resolved 'globbing', -7753 silly install resolved 'globstar', -7753 silly install resolved 'match', -7753 silly install resolved 'matches', -7753 silly install resolved 'pattern', -7753 silly install resolved 'regex', -7753 silly install resolved 'regular', -7753 silly install resolved 'string', -7753 silly install resolved 'test' ], -7753 silly install resolved _id: 'is-extglob@1.0.0', -7753 silly install resolved _shasum: 'ac468177c4943405a092fc8f29760c6ffc6206c0', -7753 silly install resolved _from: 'is-extglob@>=1.0.0 <2.0.0', -7753 silly install resolved _npmVersion: '2.5.1', -7753 silly install resolved _nodeVersion: '0.12.0', -7753 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -7753 silly install resolved maintainers: [ [Object] ], -7753 silly install resolved dist: -7753 silly install resolved { shasum: 'ac468177c4943405a092fc8f29760c6ffc6206c0', -7753 silly install resolved size: 2063, -7753 silly install resolved noattachment: false, -7753 silly install resolved key: 'is-extglob/-/is-extglob-1.0.0.tgz', -7753 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-1.0.0.tgz' }, -7753 silly install resolved directories: {}, -7753 silly install resolved publish_time: 1425675623847, -7753 silly install resolved _cnpm_publish_time: 1425675623847, -7753 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-1.0.0.tgz', -7753 silly install resolved readme: 'ERROR: No README data found!' } ] -7754 info install is-extglob@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -7755 info installOne is-extglob@1.0.0 -7756 verbose installOne of is-extglob to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob not in flight; installing -7757 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -7758 info postinstall restore-cursor@1.0.1 -7759 verbose afterAdd /home/ruanyf/.tnpm/is-extendable/0.1.1/package/package.json written -7760 silly install resolved [ { name: 'is-extendable', -7760 silly install resolved description: 'Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. "can the value have keys?"', -7760 silly install resolved version: '0.1.1', -7760 silly install resolved homepage: 'https://github.com/jonschlinkert/is-extendable', -7760 silly install resolved author: -7760 silly install resolved { name: 'Jon Schlinkert', -7760 silly install resolved url: 'https://github.com/jonschlinkert' }, -7760 silly install resolved repository: -7760 silly install resolved { type: 'git', -7760 silly install resolved url: 'git+https://github.com/jonschlinkert/is-extendable.git' }, -7760 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-extendable/issues' }, -7760 silly install resolved license: 'MIT', -7760 silly install resolved files: [ 'index.js' ], -7760 silly install resolved main: 'index.js', -7760 silly install resolved engines: { node: '>=0.10.0' }, -7760 silly install resolved scripts: { test: 'mocha' }, -7760 silly install resolved devDependencies: { mocha: '*' }, -7760 silly install resolved keywords: -7760 silly install resolved [ 'array', -7760 silly install resolved 'assign', -7760 silly install resolved 'check', -7760 silly install resolved 'date', -7760 silly install resolved 'extend', -7760 silly install resolved 'extensible', -7760 silly install resolved 'function', -7760 silly install resolved 'is', -7760 silly install resolved 'object', -7760 silly install resolved 'regex', -7760 silly install resolved 'test' ], -7760 silly install resolved verbiage: { related: [Object] }, -7760 silly install resolved gitHead: 'c36a0732e6a76931c6f66c5931d1f3e54fa44380', -7760 silly install resolved _id: 'is-extendable@0.1.1', -7760 silly install resolved _shasum: '62b110e289a471418e3ec36a617d472e301dfc89', -7760 silly install resolved _from: 'is-extendable@>=0.1.0 <0.2.0', -7760 silly install resolved _npmVersion: '2.10.1', -7760 silly install resolved _nodeVersion: '0.12.4', -7760 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -7760 silly install resolved maintainers: [ [Object] ], -7760 silly install resolved dist: -7760 silly install resolved { shasum: '62b110e289a471418e3ec36a617d472e301dfc89', -7760 silly install resolved size: 2381, -7760 silly install resolved noattachment: false, -7760 silly install resolved key: 'is-extendable/-/is-extendable-0.1.1.tgz', -7760 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz' }, -7760 silly install resolved directories: {}, -7760 silly install resolved publish_time: 1436050211330, -7760 silly install resolved _cnpm_publish_time: 1436050211330, -7760 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz', -7760 silly install resolved readme: 'ERROR: No README data found!' } ] -7761 info install is-extendable@0.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -7762 info installOne is-extendable@0.1.1 -7763 verbose installOne of is-extendable to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow not in flight; installing -7764 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -7765 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits/package.json -7766 verbose linkBins chalk@1.1.3 -7767 verbose linkMans chalk@1.1.3 -7768 verbose rebuildBundles chalk@1.1.3 -7769 verbose linkBins readable-stream@2.1.4 -7770 verbose linkMans readable-stream@2.1.4 -7771 verbose rebuildBundles readable-stream@2.1.4 -7772 verbose lock using /home/ruanyf/.tnpm/_locks/is-extglob-098a2ff027ee316f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob -7773 verbose linkBins xtend@4.0.1 -7774 verbose linkMans xtend@4.0.1 -7775 verbose rebuildBundles xtend@4.0.1 -7776 verbose rebuildBundles [ 'ansi-styles', -7776 verbose rebuildBundles 'escape-string-regexp', -7776 verbose rebuildBundles 'has-ansi', -7776 verbose rebuildBundles 'supports-color' ] -7777 info install chalk@1.1.3 -7778 verbose lock using /home/ruanyf/.tnpm/_locks/is-extendable-8a9f54846740efdd.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable -7779 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-fullwidth-code-point-8af8b37bbc384528.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/is-fullwidth-code-point -7780 silly prepareForInstallMany adding wrappy@1 from inflight dependencies -7781 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/package.json -7782 verbose unlock done using /home/ruanyf/.tnpm/_locks/code-point-at-d5ee80b89d077134.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width/node_modules/code-point-at -7783 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -7784 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -7785 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob/package.json -7786 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob/package.json -7787 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path/package.json -7788 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique/package.json -7789 verbose rebuildBundles [ 'buffer-shims', -7789 verbose rebuildBundles 'core-util-is', -7789 verbose rebuildBundles 'inherits', -7789 verbose rebuildBundles 'isarray', -7789 verbose rebuildBundles 'process-nextick-args', -7789 verbose rebuildBundles 'string_decoder', -7789 verbose rebuildBundles 'util-deprecate' ] -7790 info install readable-stream@2.1.4 -7791 silly install write writing is-extglob 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob -7792 info install xtend@4.0.1 -7793 verbose unlock done using /home/ruanyf/.tnpm/_locks/restore-cursor-adaa1e73f0b61457.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor/node_modules/restore-cursor -7794 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -7795 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -7796 silly install write writing is-extendable 0.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable -7797 silly install resolved [] -7798 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute -7799 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute -7800 silly gunzTarPerm extractEntry dist/rx.sorting.map -7801 silly prepareForInstallMany adding is-equal-shallow@^0.1.3 from regex-cache dependencies -7802 silly prepareForInstallMany adding is-primitive@^2.0.0 from regex-cache dependencies -7803 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/package.json -7804 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob/package.json -7805 silly prepareForInstallMany adding is-buffer@^1.0.2 from kind-of dependencies -7806 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/package.json -7807 silly cache add args [ 'wrappy@1', null ] -7808 verbose cache add spec wrappy@1 -7809 silly cache add parsed spec Result { -7809 silly cache add raw: 'wrappy@1', -7809 silly cache add scope: null, -7809 silly cache add name: 'wrappy', -7809 silly cache add rawSpec: '1', -7809 silly cache add spec: '>=1.0.0 <2.0.0', -7809 silly cache add type: 'range' } -7810 silly addNamed wrappy@>=1.0.0 <2.0.0 -7811 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for wrappy -7812 silly addNameRange { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: false } -7813 silly mapToRegistry name wrappy -7814 silly mapToRegistry using default registry -7815 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7816 silly mapToRegistry data Result { -7816 silly mapToRegistry raw: 'wrappy', -7816 silly mapToRegistry scope: null, -7816 silly mapToRegistry name: 'wrappy', -7816 silly mapToRegistry rawSpec: '', -7816 silly mapToRegistry spec: 'latest', -7816 silly mapToRegistry type: 'tag' } -7817 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy -7818 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/wrappy not in flight; fetching -7819 silly prepareForInstallMany adding glob-base@^0.3.0 from parse-glob dependencies -7820 silly prepareForInstallMany adding is-dotfile@^1.0.0 from parse-glob dependencies -7821 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/package.json -7822 silly prepareForInstallMany adding arr-flatten@^1.0.1 from arr-diff dependencies -7823 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/package.json -7824 silly prepareForInstallMany adding is-posix-bracket@^0.1.0 from expand-brackets dependencies -7825 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/package.json -7826 silly prepareForInstallMany adding for-own@^0.1.3 from object.omit dependencies -7827 silly prepareForInstallMany adding is-extendable@^0.1.1 from object.omit dependencies -7828 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/package.json -7829 silly prepareForInstallMany adding expand-range@^1.8.1 from braces dependencies -7830 silly prepareForInstallMany adding preserve@^0.2.0 from braces dependencies -7831 silly prepareForInstallMany adding repeat-element@^1.1.2 from braces dependencies -7832 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/package.json -7833 info postinstall chalk@1.1.3 -7834 info preinstall inherits@2.0.1 -7835 info linkStuff filename-regex@2.0.0 -7836 silly linkStuff filename-regex@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -7837 silly linkStuff filename-regex@2.0.0 is part of a global install -7838 silly linkStuff filename-regex@2.0.0 is installed into a global node_modules -7839 info postinstall readable-stream@2.1.4 -7840 info postinstall xtend@4.0.1 -7841 silly gunzTarPerm extractEntry dist/rx.binding.map -7842 silly gunzTarPerm extractEntry flattenDeep.js -7843 silly gunzTarPerm extractEntry add.js -7844 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits/package.json -7845 verbose unlock done using /home/ruanyf/.tnpm/_locks/chalk-c288fdd6e70f8cf3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/chalk -7846 info linkStuff string-width@1.0.1 -7847 silly linkStuff string-width@1.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -7848 silly linkStuff string-width@1.0.1 is part of a global install -7849 silly linkStuff string-width@1.0.1 is installed into a global node_modules -7850 silly gunzTarPerm extractEntry dist/rx.backpressure.map -7851 verbose linkBins filename-regex@2.0.0 -7852 verbose linkMans filename-regex@2.0.0 -7853 verbose rebuildBundles filename-regex@2.0.0 -7854 silly cache add args [ 'brace-expansion@^1.0.0', null ] -7855 verbose cache add spec brace-expansion@^1.0.0 -7856 silly cache add parsed spec Result { -7856 silly cache add raw: 'brace-expansion@^1.0.0', -7856 silly cache add scope: null, -7856 silly cache add name: 'brace-expansion', -7856 silly cache add rawSpec: '^1.0.0', -7856 silly cache add spec: '>=1.0.0 <2.0.0', -7856 silly cache add type: 'range' } -7857 silly addNamed brace-expansion@>=1.0.0 <2.0.0 -7858 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for brace-expansion -7859 silly addNameRange { name: 'brace-expansion', -7859 silly addNameRange range: '>=1.0.0 <2.0.0', -7859 silly addNameRange hasData: false } -7860 silly mapToRegistry name brace-expansion -7861 silly mapToRegistry using default registry -7862 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7863 silly mapToRegistry data Result { -7863 silly mapToRegistry raw: 'brace-expansion', -7863 silly mapToRegistry scope: null, -7863 silly mapToRegistry name: 'brace-expansion', -7863 silly mapToRegistry rawSpec: '', -7863 silly mapToRegistry spec: 'latest', -7863 silly mapToRegistry type: 'tag' } -7864 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/brace-expansion -7865 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/brace-expansion not in flight; fetching -7866 silly cache afterAdd wrappy@1.0.2 -7867 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json not in flight; writing -7868 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -7869 verbose unlock done using /home/ruanyf/.tnpm/_locks/readable-stream-afb976fc9072960d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/readable-stream -7870 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob -7871 verbose unlock done using /home/ruanyf/.tnpm/_locks/xtend-0b3d1bcac6730436.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/xtend -7872 info linkStuff cli-cursor@1.0.2 -7873 silly linkStuff cli-cursor@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -7874 silly linkStuff cli-cursor@1.0.2 is part of a global install -7875 silly linkStuff cli-cursor@1.0.2 is installed into a global node_modules -7876 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable -7877 info linkStuff path-is-absolute@1.0.0 -7878 silly linkStuff path-is-absolute@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules -7879 silly linkStuff path-is-absolute@1.0.0 is part of a global install -7880 silly linkStuff path-is-absolute@1.0.0 is installed into a global node_modules -7881 silly install resolved [] -7882 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob -7883 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob -7884 silly install resolved [] -7885 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob -7886 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob -7887 silly install resolved [] -7888 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path -7889 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path -7890 silly install resolved [] -7891 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique -7892 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique -7893 info install filename-regex@2.0.0 -7894 verbose get http://registry.npm.alibaba-inc.com/wrappy not expired, no request -7895 silly addNameRange number 2 { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: true } -7896 silly addNameRange versions [ 'wrappy', [ '1.0.2', '1.0.1', '1.0.0' ] ] -7897 silly addNamed wrappy@1.0.2 -7898 verbose addNamed "1.0.2" is a plain semver version for wrappy -7899 silly gunzTarPerm extractEntry dist/rx.testing.map -7900 silly install resolved [] -7901 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob -7902 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob -7903 verbose linkBins string-width@1.0.1 -7904 verbose linkMans string-width@1.0.1 -7905 verbose rebuildBundles string-width@1.0.1 -7906 info postinstall filename-regex@2.0.0 -7907 silly cache add args [ 'is-equal-shallow@^0.1.3', null ] -7908 verbose cache add spec is-equal-shallow@^0.1.3 -7909 silly cache add parsed spec Result { -7909 silly cache add raw: 'is-equal-shallow@^0.1.3', -7909 silly cache add scope: null, -7909 silly cache add name: 'is-equal-shallow', -7909 silly cache add rawSpec: '^0.1.3', -7909 silly cache add spec: '>=0.1.3 <0.2.0', -7909 silly cache add type: 'range' } -7910 silly addNamed is-equal-shallow@>=0.1.3 <0.2.0 -7911 verbose addNamed ">=0.1.3 <0.2.0" is a valid semver range for is-equal-shallow -7912 silly addNameRange { name: 'is-equal-shallow', -7912 silly addNameRange range: '>=0.1.3 <0.2.0', -7912 silly addNameRange hasData: false } -7913 silly mapToRegistry name is-equal-shallow -7914 silly mapToRegistry using default registry -7915 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7916 silly mapToRegistry data Result { -7916 silly mapToRegistry raw: 'is-equal-shallow', -7916 silly mapToRegistry scope: null, -7916 silly mapToRegistry name: 'is-equal-shallow', -7916 silly mapToRegistry rawSpec: '', -7916 silly mapToRegistry spec: 'latest', -7916 silly mapToRegistry type: 'tag' } -7917 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-equal-shallow -7918 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-equal-shallow not in flight; fetching -7919 silly cache add args [ 'is-buffer@^1.0.2', null ] -7920 verbose cache add spec is-buffer@^1.0.2 -7921 silly cache add parsed spec Result { -7921 silly cache add raw: 'is-buffer@^1.0.2', -7921 silly cache add scope: null, -7921 silly cache add name: 'is-buffer', -7921 silly cache add rawSpec: '^1.0.2', -7921 silly cache add spec: '>=1.0.2 <2.0.0', -7921 silly cache add type: 'range' } -7922 silly addNamed is-buffer@>=1.0.2 <2.0.0 -7923 verbose addNamed ">=1.0.2 <2.0.0" is a valid semver range for is-buffer -7924 silly addNameRange { name: 'is-buffer', range: '>=1.0.2 <2.0.0', hasData: false } -7925 silly mapToRegistry name is-buffer -7926 silly mapToRegistry using default registry -7927 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7928 silly mapToRegistry data Result { -7928 silly mapToRegistry raw: 'is-buffer', -7928 silly mapToRegistry scope: null, -7928 silly mapToRegistry name: 'is-buffer', -7928 silly mapToRegistry rawSpec: '', -7928 silly mapToRegistry spec: 'latest', -7928 silly mapToRegistry type: 'tag' } -7929 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-buffer -7930 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-buffer not in flight; fetching -7931 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob is being purged from base /home/ruanyf/npm-global -7932 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob -7933 verbose linkBins cli-cursor@1.0.2 -7934 verbose linkMans cli-cursor@1.0.2 -7935 verbose rebuildBundles cli-cursor@1.0.2 -7936 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable is being purged from base /home/ruanyf/npm-global -7937 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable -7938 verbose linkBins path-is-absolute@1.0.0 -7939 verbose linkMans path-is-absolute@1.0.0 -7940 verbose rebuildBundles path-is-absolute@1.0.0 -7941 verbose rebuildBundles [ 'code-point-at', 'is-fullwidth-code-point' ] -7942 info install string-width@1.0.1 -7943 silly gunzTarPerm extractEntry dist/rx.async.map -7944 silly cache add args [ 'is-primitive@^2.0.0', null ] -7945 verbose cache add spec is-primitive@^2.0.0 -7946 silly cache add args [ 'is-dotfile@^1.0.0', null ] -7947 verbose cache add spec is-dotfile@^1.0.0 -7948 silly cache add args [ 'is-extendable@^0.1.1', null ] -7949 verbose cache add spec is-extendable@^0.1.1 -7950 silly cache add args [ 'expand-range@^1.8.1', null ] -7951 verbose cache add spec expand-range@^1.8.1 -7952 silly cache add parsed spec Result { -7952 silly cache add raw: 'is-primitive@^2.0.0', -7952 silly cache add scope: null, -7952 silly cache add name: 'is-primitive', -7952 silly cache add rawSpec: '^2.0.0', -7952 silly cache add spec: '>=2.0.0 <3.0.0', -7952 silly cache add type: 'range' } -7953 silly addNamed is-primitive@>=2.0.0 <3.0.0 -7954 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for is-primitive -7955 silly addNameRange { name: 'is-primitive', range: '>=2.0.0 <3.0.0', hasData: false } -7956 silly mapToRegistry name is-primitive -7957 silly mapToRegistry using default registry -7958 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7959 silly mapToRegistry data Result { -7959 silly mapToRegistry raw: 'is-primitive', -7959 silly mapToRegistry scope: null, -7959 silly mapToRegistry name: 'is-primitive', -7959 silly mapToRegistry rawSpec: '', -7959 silly mapToRegistry spec: 'latest', -7959 silly mapToRegistry type: 'tag' } -7960 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-primitive -7961 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-primitive not in flight; fetching -7962 silly cache add parsed spec Result { -7962 silly cache add raw: 'is-dotfile@^1.0.0', -7962 silly cache add scope: null, -7962 silly cache add name: 'is-dotfile', -7962 silly cache add rawSpec: '^1.0.0', -7962 silly cache add spec: '>=1.0.0 <2.0.0', -7962 silly cache add type: 'range' } -7963 silly addNamed is-dotfile@>=1.0.0 <2.0.0 -7964 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for is-dotfile -7965 silly addNameRange { name: 'is-dotfile', range: '>=1.0.0 <2.0.0', hasData: false } -7966 silly mapToRegistry name is-dotfile -7967 silly mapToRegistry using default registry -7968 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7969 silly mapToRegistry data Result { -7969 silly mapToRegistry raw: 'is-dotfile', -7969 silly mapToRegistry scope: null, -7969 silly mapToRegistry name: 'is-dotfile', -7969 silly mapToRegistry rawSpec: '', -7969 silly mapToRegistry spec: 'latest', -7969 silly mapToRegistry type: 'tag' } -7970 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-dotfile -7971 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-dotfile not in flight; fetching -7972 silly cache add parsed spec Result { -7972 silly cache add raw: 'is-extendable@^0.1.1', -7972 silly cache add scope: null, -7972 silly cache add name: 'is-extendable', -7972 silly cache add rawSpec: '^0.1.1', -7972 silly cache add spec: '>=0.1.1 <0.2.0', -7972 silly cache add type: 'range' } -7973 silly addNamed is-extendable@>=0.1.1 <0.2.0 -7974 verbose addNamed ">=0.1.1 <0.2.0" is a valid semver range for is-extendable -7975 silly addNameRange { name: 'is-extendable', -7975 silly addNameRange range: '>=0.1.1 <0.2.0', -7975 silly addNameRange hasData: false } -7976 silly mapToRegistry name is-extendable -7977 silly mapToRegistry using default registry -7978 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7979 silly mapToRegistry data Result { -7979 silly mapToRegistry raw: 'is-extendable', -7979 silly mapToRegistry scope: null, -7979 silly mapToRegistry name: 'is-extendable', -7979 silly mapToRegistry rawSpec: '', -7979 silly mapToRegistry spec: 'latest', -7979 silly mapToRegistry type: 'tag' } -7980 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-extendable -7981 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-extendable not in flight; fetching -7982 silly cache add parsed spec Result { -7982 silly cache add raw: 'expand-range@^1.8.1', -7982 silly cache add scope: null, -7982 silly cache add name: 'expand-range', -7982 silly cache add rawSpec: '^1.8.1', -7982 silly cache add spec: '>=1.8.1 <2.0.0', -7982 silly cache add type: 'range' } -7983 silly addNamed expand-range@>=1.8.1 <2.0.0 -7984 verbose addNamed ">=1.8.1 <2.0.0" is a valid semver range for expand-range -7985 silly addNameRange { name: 'expand-range', range: '>=1.8.1 <2.0.0', hasData: false } -7986 silly mapToRegistry name expand-range -7987 silly mapToRegistry using default registry -7988 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -7989 silly mapToRegistry data Result { -7989 silly mapToRegistry raw: 'expand-range', -7989 silly mapToRegistry scope: null, -7989 silly mapToRegistry name: 'expand-range', -7989 silly mapToRegistry rawSpec: '', -7989 silly mapToRegistry spec: 'latest', -7989 silly mapToRegistry type: 'tag' } -7990 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/expand-range -7991 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/expand-range not in flight; fetching -7992 silly cache add args [ 'arr-flatten@^1.0.1', null ] -7993 verbose cache add spec arr-flatten@^1.0.1 -7994 silly cache add args [ 'is-posix-bracket@^0.1.0', null ] -7995 verbose cache add spec is-posix-bracket@^0.1.0 -7996 silly cache add parsed spec Result { -7996 silly cache add raw: 'arr-flatten@^1.0.1', -7996 silly cache add scope: null, -7996 silly cache add name: 'arr-flatten', -7996 silly cache add rawSpec: '^1.0.1', -7996 silly cache add spec: '>=1.0.1 <2.0.0', -7996 silly cache add type: 'range' } -7997 silly addNamed arr-flatten@>=1.0.1 <2.0.0 -7998 verbose addNamed ">=1.0.1 <2.0.0" is a valid semver range for arr-flatten -7999 silly addNameRange { name: 'arr-flatten', range: '>=1.0.1 <2.0.0', hasData: false } -8000 silly mapToRegistry name arr-flatten -8001 silly mapToRegistry using default registry -8002 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8003 silly mapToRegistry data Result { -8003 silly mapToRegistry raw: 'arr-flatten', -8003 silly mapToRegistry scope: null, -8003 silly mapToRegistry name: 'arr-flatten', -8003 silly mapToRegistry rawSpec: '', -8003 silly mapToRegistry spec: 'latest', -8003 silly mapToRegistry type: 'tag' } -8004 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/arr-flatten -8005 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/arr-flatten not in flight; fetching -8006 silly cache add parsed spec Result { -8006 silly cache add raw: 'is-posix-bracket@^0.1.0', -8006 silly cache add scope: null, -8006 silly cache add name: 'is-posix-bracket', -8006 silly cache add rawSpec: '^0.1.0', -8006 silly cache add spec: '>=0.1.0 <0.2.0', -8006 silly cache add type: 'range' } -8007 silly addNamed is-posix-bracket@>=0.1.0 <0.2.0 -8008 verbose addNamed ">=0.1.0 <0.2.0" is a valid semver range for is-posix-bracket -8009 silly addNameRange { name: 'is-posix-bracket', -8009 silly addNameRange range: '>=0.1.0 <0.2.0', -8009 silly addNameRange hasData: false } -8010 silly mapToRegistry name is-posix-bracket -8011 silly mapToRegistry using default registry -8012 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8013 silly mapToRegistry data Result { -8013 silly mapToRegistry raw: 'is-posix-bracket', -8013 silly mapToRegistry scope: null, -8013 silly mapToRegistry name: 'is-posix-bracket', -8013 silly mapToRegistry rawSpec: '', -8013 silly mapToRegistry spec: 'latest', -8013 silly mapToRegistry type: 'tag' } -8014 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-posix-bracket -8015 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-posix-bracket not in flight; fetching -8016 silly cache add args [ 'glob-base@^0.3.0', null ] -8017 verbose cache add spec glob-base@^0.3.0 -8018 silly cache add args [ 'for-own@^0.1.3', null ] -8019 verbose cache add spec for-own@^0.1.3 -8020 silly cache add parsed spec Result { -8020 silly cache add raw: 'glob-base@^0.3.0', -8020 silly cache add scope: null, -8020 silly cache add name: 'glob-base', -8020 silly cache add rawSpec: '^0.3.0', -8020 silly cache add spec: '>=0.3.0 <0.4.0', -8020 silly cache add type: 'range' } -8021 silly addNamed glob-base@>=0.3.0 <0.4.0 -8022 verbose addNamed ">=0.3.0 <0.4.0" is a valid semver range for glob-base -8023 silly addNameRange { name: 'glob-base', range: '>=0.3.0 <0.4.0', hasData: false } -8024 silly mapToRegistry name glob-base -8025 silly mapToRegistry using default registry -8026 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8027 silly mapToRegistry data Result { -8027 silly mapToRegistry raw: 'glob-base', -8027 silly mapToRegistry scope: null, -8027 silly mapToRegistry name: 'glob-base', -8027 silly mapToRegistry rawSpec: '', -8027 silly mapToRegistry spec: 'latest', -8027 silly mapToRegistry type: 'tag' } -8028 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/glob-base -8029 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/glob-base not in flight; fetching -8030 silly cache add parsed spec Result { -8030 silly cache add raw: 'for-own@^0.1.3', -8030 silly cache add scope: null, -8030 silly cache add name: 'for-own', -8030 silly cache add rawSpec: '^0.1.3', -8030 silly cache add spec: '>=0.1.3 <0.2.0', -8030 silly cache add type: 'range' } -8031 silly addNamed for-own@>=0.1.3 <0.2.0 -8032 verbose addNamed ">=0.1.3 <0.2.0" is a valid semver range for for-own -8033 silly addNameRange { name: 'for-own', range: '>=0.1.3 <0.2.0', hasData: false } -8034 silly mapToRegistry name for-own -8035 silly mapToRegistry using default registry -8036 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8037 silly mapToRegistry data Result { -8037 silly mapToRegistry raw: 'for-own', -8037 silly mapToRegistry scope: null, -8037 silly mapToRegistry name: 'for-own', -8037 silly mapToRegistry rawSpec: '', -8037 silly mapToRegistry spec: 'latest', -8037 silly mapToRegistry type: 'tag' } -8038 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/for-own -8039 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/for-own not in flight; fetching -8040 silly cache add args [ 'preserve@^0.2.0', null ] -8041 verbose cache add spec preserve@^0.2.0 -8042 silly cache add parsed spec Result { -8042 silly cache add raw: 'preserve@^0.2.0', -8042 silly cache add scope: null, -8042 silly cache add name: 'preserve', -8042 silly cache add rawSpec: '^0.2.0', -8042 silly cache add spec: '>=0.2.0 <0.3.0', -8042 silly cache add type: 'range' } -8043 silly addNamed preserve@>=0.2.0 <0.3.0 -8044 verbose addNamed ">=0.2.0 <0.3.0" is a valid semver range for preserve -8045 silly addNameRange { name: 'preserve', range: '>=0.2.0 <0.3.0', hasData: false } -8046 silly mapToRegistry name preserve -8047 silly mapToRegistry using default registry -8048 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8049 silly mapToRegistry data Result { -8049 silly mapToRegistry raw: 'preserve', -8049 silly mapToRegistry scope: null, -8049 silly mapToRegistry name: 'preserve', -8049 silly mapToRegistry rawSpec: '', -8049 silly mapToRegistry spec: 'latest', -8049 silly mapToRegistry type: 'tag' } -8050 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/preserve -8051 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/preserve not in flight; fetching -8052 silly cache add args [ 'repeat-element@^1.1.2', null ] -8053 verbose cache add spec repeat-element@^1.1.2 -8054 silly cache add parsed spec Result { -8054 silly cache add raw: 'repeat-element@^1.1.2', -8054 silly cache add scope: null, -8054 silly cache add name: 'repeat-element', -8054 silly cache add rawSpec: '^1.1.2', -8054 silly cache add spec: '>=1.1.2 <2.0.0', -8054 silly cache add type: 'range' } -8055 silly addNamed repeat-element@>=1.1.2 <2.0.0 -8056 verbose addNamed ">=1.1.2 <2.0.0" is a valid semver range for repeat-element -8057 silly addNameRange { name: 'repeat-element', -8057 silly addNameRange range: '>=1.1.2 <2.0.0', -8057 silly addNameRange hasData: false } -8058 silly mapToRegistry name repeat-element -8059 silly mapToRegistry using default registry -8060 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8061 silly mapToRegistry data Result { -8061 silly mapToRegistry raw: 'repeat-element', -8061 silly mapToRegistry scope: null, -8061 silly mapToRegistry name: 'repeat-element', -8061 silly mapToRegistry rawSpec: '', -8061 silly mapToRegistry spec: 'latest', -8061 silly mapToRegistry type: 'tag' } -8062 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/repeat-element -8063 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/repeat-element not in flight; fetching -8064 verbose tar unpack /home/ruanyf/.tnpm/is-extglob/1.0.0/package.tgz -8065 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob -8066 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob is being purged -8067 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob -8068 verbose rebuildBundles [ 'restore-cursor' ] -8069 info install cli-cursor@1.0.2 -8070 verbose tar unpack /home/ruanyf/.tnpm/is-extendable/0.1.1/package.tgz -8071 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable -8072 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable is being purged -8073 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable -8074 info install path-is-absolute@1.0.0 -8075 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits/package.json -8076 silly mapToRegistry name wrappy -8077 silly mapToRegistry using default registry -8078 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8079 silly mapToRegistry data Result { -8079 silly mapToRegistry raw: 'wrappy', -8079 silly mapToRegistry scope: null, -8079 silly mapToRegistry name: 'wrappy', -8079 silly mapToRegistry rawSpec: '', -8079 silly mapToRegistry spec: 'latest', -8079 silly mapToRegistry type: 'tag' } -8080 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy -8081 verbose addRemoteTarball http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz not in flight; adding -8082 verbose addRemoteTarball [ 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz', -8082 verbose addRemoteTarball 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f' ] -8083 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json written -8084 silly install resolved [ { name: 'wrappy', -8084 silly install resolved version: '1.0.2', -8084 silly install resolved description: 'Callback wrapping utility', -8084 silly install resolved main: 'wrappy.js', -8084 silly install resolved files: [ 'wrappy.js' ], -8084 silly install resolved directories: { test: 'test' }, -8084 silly install resolved dependencies: {}, -8084 silly install resolved devDependencies: { tap: '^2.3.1' }, -8084 silly install resolved scripts: { test: 'tap --coverage test/*.js' }, -8084 silly install resolved repository: { type: 'git', url: 'git+https://github.com/npm/wrappy.git' }, -8084 silly install resolved author: -8084 silly install resolved { name: 'Isaac Z. Schlueter', -8084 silly install resolved email: 'i@izs.me', -8084 silly install resolved url: 'http://blog.izs.me/' }, -8084 silly install resolved license: 'ISC', -8084 silly install resolved bugs: { url: 'https://github.com/npm/wrappy/issues' }, -8084 silly install resolved homepage: 'https://github.com/npm/wrappy', -8084 silly install resolved gitHead: '71d91b6dc5bdeac37e218c2cf03f9ab55b60d214', -8084 silly install resolved _id: 'wrappy@1.0.2', -8084 silly install resolved _shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', -8084 silly install resolved _from: 'wrappy@>=1.0.0 <2.0.0', -8084 silly install resolved _npmVersion: '3.9.1', -8084 silly install resolved _nodeVersion: '5.10.1', -8084 silly install resolved _npmUser: { name: 'zkat', email: 'kat@sykosomatic.org' }, -8084 silly install resolved dist: -8084 silly install resolved { shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', -8084 silly install resolved size: 1676, -8084 silly install resolved noattachment: false, -8084 silly install resolved key: 'wrappy/-/wrappy-1.0.2.tgz', -8084 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' }, -8084 silly install resolved maintainers: [ [Object], [Object] ], -8084 silly install resolved _npmOperationalInternal: -8084 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -8084 silly install resolved tmp: 'tmp/wrappy-1.0.2.tgz_1463527848281_0.037129373755306005' }, -8084 silly install resolved publish_time: 1463527852415, -8084 silly install resolved _cnpm_publish_time: 1463527852415, -8084 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' } ] -8085 info install wrappy@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -8086 info installOne wrappy@1.0.2 -8087 verbose installOne of wrappy to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once not in flight; installing -8088 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8089 verbose request uri http://registry.npm.alibaba-inc.com/brace-expansion -8090 verbose request no auth needed -8091 info attempt registry request try #1 at 上午9:12:31 -8092 verbose etag "43f2-rM3o5Rcx0EEH0MhAKn91aA" -8093 http request GET http://registry.npm.alibaba-inc.com/brace-expansion -8094 silly gunzTarPerm modes [ '755', '644' ] -8095 silly gunzTarPerm modes [ '755', '644' ] -8096 info linkStuff is-glob@2.0.1 -8097 silly linkStuff is-glob@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -8098 silly linkStuff is-glob@2.0.1 is part of a global install -8099 silly linkStuff is-glob@2.0.1 is installed into a global node_modules -8100 info postinstall string-width@1.0.1 -8101 info linkStuff is-extglob@1.0.0 -8102 silly linkStuff is-extglob@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -8103 silly linkStuff is-extglob@1.0.0 is part of a global install -8104 silly linkStuff is-extglob@1.0.0 is installed into a global node_modules -8105 silly gunzTarPerm extractEntry dist/rx.async.compat.map -8106 info linkStuff normalize-path@2.0.1 -8107 silly linkStuff normalize-path@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -8108 silly linkStuff normalize-path@2.0.1 is part of a global install -8109 silly linkStuff normalize-path@2.0.1 is installed into a global node_modules -8110 info linkStuff array-unique@0.2.1 -8111 silly linkStuff array-unique@0.2.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -8112 silly linkStuff array-unique@0.2.1 is part of a global install -8113 silly linkStuff array-unique@0.2.1 is installed into a global node_modules -8114 verbose unlock done using /home/ruanyf/.tnpm/_locks/filename-regex-4d7ec169971d8203.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/filename-regex -8115 info postinstall cli-cursor@1.0.2 -8116 info postinstall path-is-absolute@1.0.0 -8117 info linkStuff extglob@0.3.2 -8118 silly linkStuff extglob@0.3.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -8119 silly linkStuff extglob@0.3.2 is part of a global install -8120 silly linkStuff extglob@0.3.2 is installed into a global node_modules -8121 info retry fetch attempt 1 at 上午9:12:31 -8122 info attempt registry request try #1 at 上午9:12:31 -8123 http fetch GET http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz -8124 silly cache add args [ 'wrappy@1', null ] -8125 verbose cache add spec wrappy@1 -8126 silly cache add parsed spec Result { -8126 silly cache add raw: 'wrappy@1', -8126 silly cache add scope: null, -8126 silly cache add name: 'wrappy', -8126 silly cache add rawSpec: '1', -8126 silly cache add spec: '>=1.0.0 <2.0.0', -8126 silly cache add type: 'range' } -8127 silly addNamed wrappy@>=1.0.0 <2.0.0 -8128 verbose addNamed ">=1.0.0 <2.0.0" is a valid semver range for wrappy -8129 silly addNameRange { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: false } -8130 silly mapToRegistry name wrappy -8131 silly mapToRegistry using default registry -8132 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8133 silly mapToRegistry data Result { -8133 silly mapToRegistry raw: 'wrappy', -8133 silly mapToRegistry scope: null, -8133 silly mapToRegistry name: 'wrappy', -8133 silly mapToRegistry rawSpec: '', -8133 silly mapToRegistry spec: 'latest', -8133 silly mapToRegistry type: 'tag' } -8134 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/wrappy -8135 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/wrappy not in flight; fetching -8136 verbose lock using /home/ruanyf/.tnpm/_locks/wrappy-16d4012a4a7813b9.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy -8137 silly gunzTarPerm extractEntry flattenDepth.js -8138 silly gunzTarPerm extractEntry _wrapperClone.js -8139 silly gunzTarPerm extractEntry dist/rx.time.map -8140 verbose request uri http://registry.npm.alibaba-inc.com/is-equal-shallow -8141 verbose request no auth needed -8142 info attempt registry request try #1 at 上午9:12:31 -8143 verbose etag "276f-j58UXudIyUp1QfsFWOVc9A" -8144 http request GET http://registry.npm.alibaba-inc.com/is-equal-shallow -8145 silly install write writing wrappy 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy -8146 verbose request uri http://registry.npm.alibaba-inc.com/is-buffer -8147 verbose request no auth needed -8148 info attempt registry request try #1 at 上午9:12:31 -8149 verbose etag "32a6-iC7hACETSTHpy6SK0H7Tqw" -8150 http request GET http://registry.npm.alibaba-inc.com/is-buffer -8151 verbose linkBins is-glob@2.0.1 -8152 verbose linkMans is-glob@2.0.1 -8153 verbose rebuildBundles is-glob@2.0.1 -8154 verbose linkBins is-extglob@1.0.0 -8155 verbose linkMans is-extglob@1.0.0 -8156 verbose rebuildBundles is-extglob@1.0.0 -8157 verbose linkBins normalize-path@2.0.1 -8158 verbose linkMans normalize-path@2.0.1 -8159 verbose rebuildBundles normalize-path@2.0.1 -8160 verbose unlock done using /home/ruanyf/.tnpm/_locks/string-width-569431eadb6883c4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/string-width -8161 verbose linkBins array-unique@0.2.1 -8162 verbose linkMans array-unique@0.2.1 -8163 verbose rebuildBundles array-unique@0.2.1 -8164 verbose get http://registry.npm.alibaba-inc.com/is-extendable not expired, no request -8165 silly addNameRange number 2 { name: 'is-extendable', range: '>=0.1.1 <0.2.0', hasData: true } -8166 silly addNameRange versions [ 'is-extendable', [ '0.1.1', '0.1.0' ] ] -8167 silly addNamed is-extendable@0.1.1 -8168 verbose addNamed "0.1.1" is a plain semver version for is-extendable -8169 verbose request uri http://registry.npm.alibaba-inc.com/is-dotfile -8170 verbose request no auth needed -8171 info attempt registry request try #1 at 上午9:12:31 -8172 verbose etag "264d-i8+nwIw0XQ0+JGxT3x3nqg" -8173 http request GET http://registry.npm.alibaba-inc.com/is-dotfile -8174 verbose request uri http://registry.npm.alibaba-inc.com/is-primitive -8175 verbose request no auth needed -8176 info attempt registry request try #1 at 上午9:12:31 -8177 verbose etag "17a1-4WmUiza6g6ACL8B4X+r8yQ" -8178 http request GET http://registry.npm.alibaba-inc.com/is-primitive -8179 verbose request uri http://registry.npm.alibaba-inc.com/arr-flatten -8180 verbose request no auth needed -8181 info attempt registry request try #1 at 上午9:12:31 -8182 verbose etag "289f-pyxzsieSsNLBGChEzkiXug" -8183 http request GET http://registry.npm.alibaba-inc.com/arr-flatten -8184 verbose request uri http://registry.npm.alibaba-inc.com/expand-range -8185 verbose request no auth needed -8186 info attempt registry request try #1 at 上午9:12:31 -8187 http request GET http://registry.npm.alibaba-inc.com/expand-range -8188 verbose request uri http://registry.npm.alibaba-inc.com/is-posix-bracket -8189 verbose request no auth needed -8190 info attempt registry request try #1 at 上午9:12:31 -8191 verbose etag "1cf5-7JxmlUX/RHfd/5f6TUoa+A" -8192 http request GET http://registry.npm.alibaba-inc.com/is-posix-bracket -8193 verbose request uri http://registry.npm.alibaba-inc.com/for-own -8194 verbose request no auth needed -8195 info attempt registry request try #1 at 上午9:12:31 -8196 verbose etag "27f8-R4Q5eVAvr0SqBvH4RHqlEw" -8197 http request GET http://registry.npm.alibaba-inc.com/for-own -8198 verbose request uri http://registry.npm.alibaba-inc.com/glob-base -8199 verbose request no auth needed -8200 info attempt registry request try #1 at 上午9:12:31 -8201 verbose etag "2ed3-kyY40XvfwhG+QCrrxs5FTQ" -8202 http request GET http://registry.npm.alibaba-inc.com/glob-base -8203 verbose request uri http://registry.npm.alibaba-inc.com/preserve -8204 verbose request no auth needed -8205 info attempt registry request try #1 at 上午9:12:31 -8206 verbose etag "28c3-M4vJGgXuyYs2fBsc1Jog8w" -8207 http request GET http://registry.npm.alibaba-inc.com/preserve -8208 verbose request uri http://registry.npm.alibaba-inc.com/repeat-element -8209 verbose request no auth needed -8210 info attempt registry request try #1 at 上午9:12:31 -8211 verbose etag "1f34-s+bsVDmPJ9vJiS+ux2HfzA" -8212 http request GET http://registry.npm.alibaba-inc.com/repeat-element -8213 verbose unlock done using /home/ruanyf/.tnpm/_locks/cli-cursor-6c4949ad4093ce24.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/cli-cursor -8214 verbose unlock done using /home/ruanyf/.tnpm/_locks/path-is-absolute-ff20d4dad5e47d08.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/path-is-absolute -8215 info install is-glob@2.0.1 -8216 info install is-extglob@1.0.0 -8217 info install normalize-path@2.0.1 -8218 info install array-unique@0.2.1 -8219 verbose linkBins extglob@0.3.2 -8220 verbose linkMans extglob@0.3.2 -8221 verbose rebuildBundles extglob@0.3.2 -8222 silly gunzTarPerm extractEntry package.json -8223 silly install resolved [] -8224 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits -8225 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits -8226 silly gunzTarPerm extractEntry package.json -8227 silly gunzTarPerm extractEntry dist/rx.all.map -8228 info install extglob@0.3.2 -8229 info postinstall is-glob@2.0.1 -8230 info postinstall is-extglob@1.0.0 -8231 info postinstall normalize-path@2.0.1 -8232 info postinstall array-unique@0.2.1 -8233 verbose get http://registry.npm.alibaba-inc.com/wrappy not expired, no request -8234 silly addNameRange number 2 { name: 'wrappy', range: '>=1.0.0 <2.0.0', hasData: true } -8235 silly addNameRange versions [ 'wrappy', [ '1.0.2', '1.0.1', '1.0.0' ] ] -8236 silly addNamed wrappy@1.0.2 -8237 verbose addNamed "1.0.2" is a plain semver version for wrappy -8238 info postinstall extglob@0.3.2 -8239 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy -8240 silly gunzTarPerm extractEntry README.md -8241 silly gunzTarPerm extractEntry LICENSE -8242 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-glob-471d4436f01dafa7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-glob -8243 silly gunzTarPerm extractEntry README.md -8244 silly gunzTarPerm extractEntry LICENSE -8245 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-extglob-82e285b1f8e6e677.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/is-extglob -8246 verbose unlock done using /home/ruanyf/.tnpm/_locks/normalize-path-a6a45378975aa8fb.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/normalize-path -8247 verbose unlock done using /home/ruanyf/.tnpm/_locks/array-unique-563063201a1b39e1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/array-unique -8248 silly cache afterAdd is-extendable@0.1.1 -8249 verbose afterAdd /home/ruanyf/.tnpm/is-extendable/0.1.1/package/package.json not in flight; writing -8250 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8251 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/package.json -8252 info linkStuff inherits@2.0.1 -8253 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules -8254 silly linkStuff inherits@2.0.1 is part of a global install -8255 silly linkStuff inherits@2.0.1 is installed into a global node_modules -8256 verbose unlock done using /home/ruanyf/.tnpm/_locks/extglob-ce4a0e7242960176.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/extglob -8257 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy is being purged from base /home/ruanyf/npm-global -8258 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy -8259 silly gunzTarPerm extractEntry flip.js -8260 silly gunzTarPerm extractEntry _unescapeHtmlChar.js -8261 verbose tar unpack /home/ruanyf/.tnpm/wrappy/1.0.2/package.tgz -8262 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy -8263 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy is being purged -8264 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy -8265 silly cache afterAdd wrappy@1.0.2 -8266 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json not in flight; writing -8267 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8268 silly gunzTarPerm modes [ '755', '644' ] -8269 verbose linkBins inherits@2.0.1 -8270 verbose linkMans inherits@2.0.1 -8271 verbose rebuildBundles inherits@2.0.1 -8272 info preinstall readable-stream@1.0.34 -8273 info install inherits@2.0.1 -8274 http 304 http://registry.npm.alibaba-inc.com/brace-expansion -8275 verbose headers { server: 'Tengine', -8275 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8275 verbose headers connection: 'keep-alive', -8275 verbose headers etag: '"43f2-rM3o5Rcx0EEH0MhAKn91aA"', -8275 verbose headers 'x-readtime': '23' } -8276 silly get cb [ 304, -8276 silly get { server: 'Tengine', -8276 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8276 silly get connection: 'keep-alive', -8276 silly get etag: '"43f2-rM3o5Rcx0EEH0MhAKn91aA"', -8276 silly get 'x-readtime': '23' } ] -8277 verbose etag http://registry.npm.alibaba-inc.com/brace-expansion from cache -8278 verbose get saving brace-expansion to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/brace-expansion/.cache.json -8279 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8280 verbose afterAdd /home/ruanyf/.tnpm/is-extendable/0.1.1/package/package.json written -8281 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/package.json -8282 info postinstall inherits@2.0.1 -8283 http fetch 200 http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz -8284 silly gunzTarPerm extractEntry package.json -8285 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json written -8286 silly install resolved [ { name: 'wrappy', -8286 silly install resolved version: '1.0.2', -8286 silly install resolved description: 'Callback wrapping utility', -8286 silly install resolved main: 'wrappy.js', -8286 silly install resolved files: [ 'wrappy.js' ], -8286 silly install resolved directories: { test: 'test' }, -8286 silly install resolved dependencies: {}, -8286 silly install resolved devDependencies: { tap: '^2.3.1' }, -8286 silly install resolved scripts: { test: 'tap --coverage test/*.js' }, -8286 silly install resolved repository: { type: 'git', url: 'git+https://github.com/npm/wrappy.git' }, -8286 silly install resolved author: -8286 silly install resolved { name: 'Isaac Z. Schlueter', -8286 silly install resolved email: 'i@izs.me', -8286 silly install resolved url: 'http://blog.izs.me/' }, -8286 silly install resolved license: 'ISC', -8286 silly install resolved bugs: { url: 'https://github.com/npm/wrappy/issues' }, -8286 silly install resolved homepage: 'https://github.com/npm/wrappy', -8286 silly install resolved gitHead: '71d91b6dc5bdeac37e218c2cf03f9ab55b60d214', -8286 silly install resolved _id: 'wrappy@1.0.2', -8286 silly install resolved _shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', -8286 silly install resolved _from: 'wrappy@>=1.0.0 <2.0.0', -8286 silly install resolved _npmVersion: '3.9.1', -8286 silly install resolved _nodeVersion: '5.10.1', -8286 silly install resolved _npmUser: { name: 'zkat', email: 'kat@sykosomatic.org' }, -8286 silly install resolved dist: -8286 silly install resolved { shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', -8286 silly install resolved size: 1676, -8286 silly install resolved noattachment: false, -8286 silly install resolved key: 'wrappy/-/wrappy-1.0.2.tgz', -8286 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' }, -8286 silly install resolved maintainers: [ [Object], [Object] ], -8286 silly install resolved _npmOperationalInternal: -8286 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -8286 silly install resolved tmp: 'tmp/wrappy-1.0.2.tgz_1463527848281_0.037129373755306005' }, -8286 silly install resolved publish_time: 1463527852415, -8286 silly install resolved _cnpm_publish_time: 1463527852415, -8286 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz', -8286 silly install resolved readme: 'ERROR: No README data found!' } ] -8287 info install wrappy@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -8288 info installOne wrappy@1.0.2 -8289 verbose installOne of wrappy to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight not in flight; installing -8290 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8291 silly gunzTarPerm extractEntry index.js -8292 http 304 http://registry.npm.alibaba-inc.com/is-equal-shallow -8293 verbose headers { server: 'Tengine', -8293 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8293 verbose headers connection: 'keep-alive', -8293 verbose headers etag: '"276f-j58UXudIyUp1QfsFWOVc9A"', -8293 verbose headers 'x-readtime': '20' } -8294 silly get cb [ 304, -8294 silly get { server: 'Tengine', -8294 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8294 silly get connection: 'keep-alive', -8294 silly get etag: '"276f-j58UXudIyUp1QfsFWOVc9A"', -8294 silly get 'x-readtime': '20' } ] -8295 verbose etag http://registry.npm.alibaba-inc.com/is-equal-shallow from cache -8296 verbose get saving is-equal-shallow to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-equal-shallow/.cache.json -8297 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8298 http 304 http://registry.npm.alibaba-inc.com/is-dotfile -8299 verbose headers { server: 'Tengine', -8299 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8299 verbose headers connection: 'keep-alive', -8299 verbose headers etag: '"264d-i8+nwIw0XQ0+JGxT3x3nqg"', -8299 verbose headers 'x-readtime': '17' } -8300 silly get cb [ 304, -8300 silly get { server: 'Tengine', -8300 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8300 silly get connection: 'keep-alive', -8300 silly get etag: '"264d-i8+nwIw0XQ0+JGxT3x3nqg"', -8300 silly get 'x-readtime': '17' } ] -8301 verbose etag http://registry.npm.alibaba-inc.com/is-dotfile from cache -8302 verbose get saving is-dotfile to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-dotfile/.cache.json -8303 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8304 http 304 http://registry.npm.alibaba-inc.com/is-primitive -8305 verbose headers { server: 'Tengine', -8305 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8305 verbose headers connection: 'keep-alive', -8305 verbose headers etag: '"17a1-4WmUiza6g6ACL8B4X+r8yQ"', -8305 verbose headers 'x-readtime': '15' } -8306 silly get cb [ 304, -8306 silly get { server: 'Tengine', -8306 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8306 silly get connection: 'keep-alive', -8306 silly get etag: '"17a1-4WmUiza6g6ACL8B4X+r8yQ"', -8306 silly get 'x-readtime': '15' } ] -8307 verbose etag http://registry.npm.alibaba-inc.com/is-primitive from cache -8308 verbose get saving is-primitive to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-primitive/.cache.json -8309 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8310 silly gunzTarPerm extractEntry index.js -8311 silly gunzTarPerm extractEntry floor.js -8312 silly gunzTarPerm extractEntry _toSource.js -8313 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-5272b9fa3dc7f017.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inherits -8314 http 304 http://registry.npm.alibaba-inc.com/preserve -8315 verbose headers { server: 'Tengine', -8315 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8315 verbose headers connection: 'keep-alive', -8315 verbose headers etag: '"28c3-M4vJGgXuyYs2fBsc1Jog8w"', -8315 verbose headers 'x-readtime': '16' } -8316 silly get cb [ 304, -8316 silly get { server: 'Tengine', -8316 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8316 silly get connection: 'keep-alive', -8316 silly get etag: '"28c3-M4vJGgXuyYs2fBsc1Jog8w"', -8316 silly get 'x-readtime': '16' } ] -8317 verbose etag http://registry.npm.alibaba-inc.com/preserve from cache -8318 verbose get saving preserve to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/preserve/.cache.json -8319 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8320 http 304 http://registry.npm.alibaba-inc.com/arr-flatten -8321 verbose headers { server: 'Tengine', -8321 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8321 verbose headers connection: 'keep-alive', -8321 verbose headers etag: '"289f-pyxzsieSsNLBGChEzkiXug"', -8321 verbose headers 'x-readtime': '20' } -8322 silly get cb [ 304, -8322 silly get { server: 'Tengine', -8322 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8322 silly get connection: 'keep-alive', -8322 silly get etag: '"289f-pyxzsieSsNLBGChEzkiXug"', -8322 silly get 'x-readtime': '20' } ] -8323 verbose etag http://registry.npm.alibaba-inc.com/arr-flatten from cache -8324 verbose get saving arr-flatten to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/arr-flatten/.cache.json -8325 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8326 http 304 http://registry.npm.alibaba-inc.com/glob-base -8327 verbose headers { server: 'Tengine', -8327 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8327 verbose headers connection: 'keep-alive', -8327 verbose headers etag: '"2ed3-kyY40XvfwhG+QCrrxs5FTQ"', -8327 verbose headers 'x-readtime': '19' } -8328 silly get cb [ 304, -8328 silly get { server: 'Tengine', -8328 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8328 silly get connection: 'keep-alive', -8328 silly get etag: '"2ed3-kyY40XvfwhG+QCrrxs5FTQ"', -8328 silly get 'x-readtime': '19' } ] -8329 verbose etag http://registry.npm.alibaba-inc.com/glob-base from cache -8330 verbose get saving glob-base to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/glob-base/.cache.json -8331 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8332 verbose lock using /home/ruanyf/.tnpm/_locks/wrappy-b27925cc34dcc2fb.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy -8333 http 304 http://registry.npm.alibaba-inc.com/for-own -8334 verbose headers { server: 'Tengine', -8334 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8334 verbose headers connection: 'keep-alive', -8334 verbose headers etag: '"27f8-R4Q5eVAvr0SqBvH4RHqlEw"', -8334 verbose headers 'x-readtime': '20' } -8335 silly get cb [ 304, -8335 silly get { server: 'Tengine', -8335 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8335 silly get connection: 'keep-alive', -8335 silly get etag: '"27f8-R4Q5eVAvr0SqBvH4RHqlEw"', -8335 silly get 'x-readtime': '20' } ] -8336 verbose etag http://registry.npm.alibaba-inc.com/for-own from cache -8337 verbose get saving for-own to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/for-own/.cache.json -8338 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8339 http 304 http://registry.npm.alibaba-inc.com/is-posix-bracket -8340 verbose headers { server: 'Tengine', -8340 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8340 verbose headers connection: 'keep-alive', -8340 verbose headers etag: '"1cf5-7JxmlUX/RHfd/5f6TUoa+A"', -8340 verbose headers 'x-readtime': '22' } -8341 silly get cb [ 304, -8341 silly get { server: 'Tengine', -8341 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8341 silly get connection: 'keep-alive', -8341 silly get etag: '"1cf5-7JxmlUX/RHfd/5f6TUoa+A"', -8341 silly get 'x-readtime': '22' } ] -8342 verbose etag http://registry.npm.alibaba-inc.com/is-posix-bracket from cache -8343 verbose get saving is-posix-bracket to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-posix-bracket/.cache.json -8344 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8345 silly fetchAndShaCheck shasum b5243d8f3ec1aa35f1364605bc0d1036e30ab69f -8346 silly install write writing wrappy 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy -8347 silly gunzTarPerm extractEntry dist/rx.all.compat.map -8348 http 304 http://registry.npm.alibaba-inc.com/is-buffer -8349 verbose headers { server: 'Tengine', -8349 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8349 verbose headers connection: 'keep-alive', -8349 verbose headers etag: '"32a6-iC7hACETSTHpy6SK0H7Tqw"', -8349 verbose headers 'x-readtime': '22' } -8350 silly get cb [ 304, -8350 silly get { server: 'Tengine', -8350 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8350 silly get connection: 'keep-alive', -8350 silly get etag: '"32a6-iC7hACETSTHpy6SK0H7Tqw"', -8350 silly get 'x-readtime': '22' } ] -8351 verbose etag http://registry.npm.alibaba-inc.com/is-buffer from cache -8352 verbose get saving is-buffer to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-buffer/.cache.json -8353 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8354 silly gunzTarPerm extractEntry README.md -8355 silly gunzTarPerm extractEntry LICENSE -8356 silly prepareForInstallMany adding core-util-is@~1.0.0 from readable-stream dependencies -8357 silly prepareForInstallMany adding isarray@0.0.1 from readable-stream dependencies -8358 silly prepareForInstallMany adding string_decoder@~0.10.x from readable-stream dependencies -8359 silly prepareForInstallMany adding inherits@~2.0.1 from readable-stream dependencies -8360 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/package.json -8361 http 304 http://registry.npm.alibaba-inc.com/repeat-element -8362 verbose headers { server: 'Tengine', -8362 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8362 verbose headers connection: 'keep-alive', -8362 verbose headers etag: '"1f34-s+bsVDmPJ9vJiS+ux2HfzA"', -8362 verbose headers 'x-readtime': '23' } -8363 silly get cb [ 304, -8363 silly get { server: 'Tengine', -8363 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8363 silly get connection: 'keep-alive', -8363 silly get etag: '"1f34-s+bsVDmPJ9vJiS+ux2HfzA"', -8363 silly get 'x-readtime': '23' } ] -8364 verbose etag http://registry.npm.alibaba-inc.com/repeat-element from cache -8365 verbose get saving repeat-element to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/repeat-element/.cache.json -8366 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8367 silly addNameRange number 2 { name: 'brace-expansion', -8367 silly addNameRange range: '>=1.0.0 <2.0.0', -8367 silly addNameRange hasData: true } -8368 silly addNameRange versions [ 'brace-expansion', -8368 silly addNameRange [ '1.1.4', -8368 silly addNameRange '1.1.3', -8368 silly addNameRange '1.1.2', -8368 silly addNameRange '1.1.1', -8368 silly addNameRange '1.1.0', -8368 silly addNameRange '1.0.1', -8368 silly addNameRange '1.0.0', -8368 silly addNameRange '0.0.0' ] ] -8369 silly addNamed brace-expansion@1.1.4 -8370 verbose addNamed "1.1.4" is a plain semver version for brace-expansion -8371 verbose addTmpTarball /home/ruanyf/.tnpm_tmp/npm-30229-26e1fbd8/registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz not in flight; adding -8372 verbose addTmpTarball already have metadata; skipping unpack for wrappy@1.0.2 -8373 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8374 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy -8375 silly addNameRange number 2 { name: 'is-dotfile', range: '>=1.0.0 <2.0.0', hasData: true } -8376 silly addNameRange versions [ 'is-dotfile', -8376 silly addNameRange [ '1.0.2', '1.0.1', '1.0.0', '0.1.1', '0.1.0' ] ] -8377 silly addNamed is-dotfile@1.0.2 -8378 verbose addNamed "1.0.2" is a plain semver version for is-dotfile -8379 silly addNameRange number 2 { name: 'is-equal-shallow', -8379 silly addNameRange range: '>=0.1.3 <0.2.0', -8379 silly addNameRange hasData: true } -8380 silly addNameRange versions [ 'is-equal-shallow', [ '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] -8381 silly addNamed is-equal-shallow@0.1.3 -8382 verbose addNamed "0.1.3" is a plain semver version for is-equal-shallow -8383 silly addNameRange number 2 { name: 'is-primitive', range: '>=2.0.0 <3.0.0', hasData: true } -8384 silly addNameRange versions [ 'is-primitive', [ '2.0.0', '1.0.0', '0.1.0' ] ] -8385 silly addNamed is-primitive@2.0.0 -8386 verbose addNamed "2.0.0" is a plain semver version for is-primitive -8387 http 200 http://registry.npm.alibaba-inc.com/expand-range -8388 verbose headers { server: 'Tengine', -8388 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8388 verbose headers 'content-type': 'application/json; charset=utf-8', -8388 verbose headers 'transfer-encoding': 'chunked', -8388 verbose headers connection: 'keep-alive', -8388 verbose headers vary: 'Accept-Encoding', -8388 verbose headers 'x-readtime': '27', -8388 verbose headers 'content-encoding': 'gzip' } -8389 silly get cb [ 200, -8389 silly get { server: 'Tengine', -8389 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8389 silly get 'content-type': 'application/json; charset=utf-8', -8389 silly get 'transfer-encoding': 'chunked', -8389 silly get connection: 'keep-alive', -8389 silly get vary: 'Accept-Encoding', -8389 silly get 'x-readtime': '27', -8389 silly get 'content-encoding': 'gzip' } ] -8390 verbose get saving expand-range to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/expand-range/.cache.json -8391 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8392 silly addNameRange number 2 { name: 'arr-flatten', range: '>=1.0.1 <2.0.0', hasData: true } -8393 silly addNameRange versions [ 'arr-flatten', -8393 silly addNameRange [ '1.0.1', '1.0.0', '0.2.1', '0.2.0', '0.1.0' ] ] -8394 silly addNamed arr-flatten@1.0.1 -8395 verbose addNamed "1.0.1" is a plain semver version for arr-flatten -8396 silly addNameRange number 2 { name: 'glob-base', range: '>=0.3.0 <0.4.0', hasData: true } -8397 silly addNameRange versions [ 'glob-base', [ '0.3.0', '0.2.0', '0.1.1', '0.1.0' ] ] -8398 silly addNamed glob-base@0.3.0 -8399 verbose addNamed "0.3.0" is a plain semver version for glob-base -8400 silly addNameRange number 2 { name: 'preserve', range: '>=0.2.0 <0.3.0', hasData: true } -8401 silly addNameRange versions [ 'preserve', [ '0.2.0', '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] -8402 silly addNamed preserve@0.2.0 -8403 verbose addNamed "0.2.0" is a plain semver version for preserve -8404 silly gunzTarPerm extractEntry flow.js -8405 silly gunzTarPerm extractEntry _toKey.js -8406 silly addNameRange number 2 { name: 'for-own', range: '>=0.1.3 <0.2.0', hasData: true } -8407 silly addNameRange versions [ 'for-own', [ '0.1.4', '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] -8408 silly addNamed for-own@0.1.4 -8409 verbose addNamed "0.1.4" is a plain semver version for for-own -8410 silly addNameRange number 2 { name: 'is-posix-bracket', -8410 silly addNameRange range: '>=0.1.0 <0.2.0', -8410 silly addNameRange hasData: true } -8411 silly addNameRange versions [ 'is-posix-bracket', [ '0.1.1', '0.1.0' ] ] -8412 silly addNamed is-posix-bracket@0.1.1 -8413 verbose addNamed "0.1.1" is a plain semver version for is-posix-bracket -8414 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy is being purged from base /home/ruanyf/npm-global -8415 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy -8416 silly cache afterAdd brace-expansion@1.1.4 -8417 verbose afterAdd /home/ruanyf/.tnpm/brace-expansion/1.1.4/package/package.json not in flight; writing -8418 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8419 silly cache add args [ 'inherits@~2.0.1', null ] -8420 verbose cache add spec inherits@~2.0.1 -8421 silly cache add parsed spec Result { -8421 silly cache add raw: 'inherits@~2.0.1', -8421 silly cache add scope: null, -8421 silly cache add name: 'inherits', -8421 silly cache add rawSpec: '~2.0.1', -8421 silly cache add spec: '>=2.0.1 <2.1.0', -8421 silly cache add type: 'range' } -8422 silly addNamed inherits@>=2.0.1 <2.1.0 -8423 verbose addNamed ">=2.0.1 <2.1.0" is a valid semver range for inherits -8424 silly addNameRange { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: false } -8425 silly mapToRegistry name inherits -8426 silly mapToRegistry using default registry -8427 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8428 silly mapToRegistry data Result { -8428 silly mapToRegistry raw: 'inherits', -8428 silly mapToRegistry scope: null, -8428 silly mapToRegistry name: 'inherits', -8428 silly mapToRegistry rawSpec: '', -8428 silly mapToRegistry spec: 'latest', -8428 silly mapToRegistry type: 'tag' } -8429 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/inherits -8430 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/inherits not in flight; fetching -8431 silly addNameRange number 2 { name: 'is-buffer', range: '>=1.0.2 <2.0.0', hasData: true } -8432 silly addNameRange versions [ 'is-buffer', -8432 silly addNameRange [ '1.1.3', '1.1.2', '1.1.1', '1.1.0', '1.0.2', '1.0.1', '1.0.0' ] ] -8433 silly addNamed is-buffer@1.1.3 -8434 verbose addNamed "1.1.3" is a plain semver version for is-buffer -8435 verbose tar unpack /home/ruanyf/.tnpm/wrappy/1.0.2/package.tgz -8436 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy -8437 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy is being purged -8438 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy -8439 silly cache add args [ 'core-util-is@~1.0.0', null ] -8440 verbose cache add spec core-util-is@~1.0.0 -8441 silly cache add parsed spec Result { -8441 silly cache add raw: 'core-util-is@~1.0.0', -8441 silly cache add scope: null, -8441 silly cache add name: 'core-util-is', -8441 silly cache add rawSpec: '~1.0.0', -8441 silly cache add spec: '>=1.0.0 <1.1.0', -8441 silly cache add type: 'range' } -8442 silly addNamed core-util-is@>=1.0.0 <1.1.0 -8443 verbose addNamed ">=1.0.0 <1.1.0" is a valid semver range for core-util-is -8444 silly addNameRange { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: false } -8445 silly mapToRegistry name core-util-is -8446 silly mapToRegistry using default registry -8447 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8448 silly mapToRegistry data Result { -8448 silly mapToRegistry raw: 'core-util-is', -8448 silly mapToRegistry scope: null, -8448 silly mapToRegistry name: 'core-util-is', -8448 silly mapToRegistry rawSpec: '', -8448 silly mapToRegistry spec: 'latest', -8448 silly mapToRegistry type: 'tag' } -8449 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/core-util-is -8450 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/core-util-is not in flight; fetching -8451 silly cache add args [ 'isarray@0.0.1', null ] -8452 verbose cache add spec isarray@0.0.1 -8453 silly cache add parsed spec Result { -8453 silly cache add raw: 'isarray@0.0.1', -8453 silly cache add scope: null, -8453 silly cache add name: 'isarray', -8453 silly cache add rawSpec: '0.0.1', -8453 silly cache add spec: '0.0.1', -8453 silly cache add type: 'version' } -8454 silly addNamed isarray@0.0.1 -8455 verbose addNamed "0.0.1" is a plain semver version for isarray -8456 silly mapToRegistry name isarray -8457 silly mapToRegistry using default registry -8458 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8459 silly mapToRegistry data Result { -8459 silly mapToRegistry raw: 'isarray', -8459 silly mapToRegistry scope: null, -8459 silly mapToRegistry name: 'isarray', -8459 silly mapToRegistry rawSpec: '', -8459 silly mapToRegistry spec: 'latest', -8459 silly mapToRegistry type: 'tag' } -8460 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isarray -8461 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/isarray not in flight; fetching -8462 silly addNameRange number 2 { name: 'repeat-element', -8462 silly addNameRange range: '>=1.1.2 <2.0.0', -8462 silly addNameRange hasData: true } -8463 silly addNameRange versions [ 'repeat-element', [ '1.1.2', '1.1.1', '1.1.0', '1.0.0' ] ] -8464 silly addNamed repeat-element@1.1.2 -8465 verbose addNamed "1.1.2" is a plain semver version for repeat-element -8466 silly gunzTarPerm modes [ '755', '644' ] -8467 silly gunzTarPerm extractEntry wrappy.js -8468 silly cache add args [ 'string_decoder@~0.10.x', null ] -8469 verbose cache add spec string_decoder@~0.10.x -8470 silly cache add parsed spec Result { -8470 silly cache add raw: 'string_decoder@~0.10.x', -8470 silly cache add scope: null, -8470 silly cache add name: 'string_decoder', -8470 silly cache add rawSpec: '~0.10.x', -8470 silly cache add spec: '>=0.10.0 <0.11.0', -8470 silly cache add type: 'range' } -8471 silly addNamed string_decoder@>=0.10.0 <0.11.0 -8472 verbose addNamed ">=0.10.0 <0.11.0" is a valid semver range for string_decoder -8473 silly addNameRange { name: 'string_decoder', -8473 silly addNameRange range: '>=0.10.0 <0.11.0', -8473 silly addNameRange hasData: false } -8474 silly mapToRegistry name string_decoder -8475 silly mapToRegistry using default registry -8476 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8477 silly mapToRegistry data Result { -8477 silly mapToRegistry raw: 'string_decoder', -8477 silly mapToRegistry scope: null, -8477 silly mapToRegistry name: 'string_decoder', -8477 silly mapToRegistry rawSpec: '', -8477 silly mapToRegistry spec: 'latest', -8477 silly mapToRegistry type: 'tag' } -8478 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/string_decoder -8479 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/string_decoder not in flight; fetching -8480 silly cache afterAdd is-dotfile@1.0.2 -8481 verbose afterAdd /home/ruanyf/.tnpm/is-dotfile/1.0.2/package/package.json not in flight; writing -8482 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8483 silly cache afterAdd is-equal-shallow@0.1.3 -8484 verbose afterAdd /home/ruanyf/.tnpm/is-equal-shallow/0.1.3/package/package.json not in flight; writing -8485 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8486 silly cache afterAdd is-primitive@2.0.0 -8487 verbose afterAdd /home/ruanyf/.tnpm/is-primitive/2.0.0/package/package.json not in flight; writing -8488 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8489 silly cache afterAdd glob-base@0.3.0 -8490 verbose afterAdd /home/ruanyf/.tnpm/glob-base/0.3.0/package/package.json not in flight; writing -8491 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8492 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/package.json -8493 verbose afterAdd /home/ruanyf/.tnpm/brace-expansion/1.1.4/package/package.json written -8494 silly install resolved [ { name: 'brace-expansion', -8494 silly install resolved description: 'Brace expansion as known from sh/bash', -8494 silly install resolved version: '1.1.4', -8494 silly install resolved repository: -8494 silly install resolved { type: 'git', -8494 silly install resolved url: 'git://github.com/juliangruber/brace-expansion.git' }, -8494 silly install resolved homepage: 'https://github.com/juliangruber/brace-expansion', -8494 silly install resolved main: 'index.js', -8494 silly install resolved scripts: { test: 'tape test/*.js', gentest: 'bash test/generate.sh' }, -8494 silly install resolved dependencies: { 'balanced-match': '^0.4.1', 'concat-map': '0.0.1' }, -8494 silly install resolved devDependencies: { tape: '4.5.1' }, -8494 silly install resolved keywords: [], -8494 silly install resolved author: -8494 silly install resolved { name: 'Julian Gruber', -8494 silly install resolved email: 'mail@juliangruber.com', -8494 silly install resolved url: 'http://juliangruber.com' }, -8494 silly install resolved license: 'MIT', -8494 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, -8494 silly install resolved gitHead: '1660b75d0bf03b022e7888b576cd5a4080692c1d', -8494 silly install resolved bugs: { url: 'https://github.com/juliangruber/brace-expansion/issues' }, -8494 silly install resolved _id: 'brace-expansion@1.1.4', -8494 silly install resolved _shasum: '464a204c77f482c085c2a36c456bbfbafb67a127', -8494 silly install resolved _from: 'brace-expansion@>=1.0.0 <2.0.0', -8494 silly install resolved _npmVersion: '3.8.6', -8494 silly install resolved _nodeVersion: '6.0.0', -8494 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, -8494 silly install resolved dist: -8494 silly install resolved { shasum: '464a204c77f482c085c2a36c456bbfbafb67a127', -8494 silly install resolved size: 3915, -8494 silly install resolved noattachment: false, -8494 silly install resolved key: 'brace-expansion/-/brace-expansion-1.1.4.tgz', -8494 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/brace-expansion/download/brace-expansion-1.1.4.tgz' }, -8494 silly install resolved maintainers: [ [Object], [Object] ], -8494 silly install resolved _npmOperationalInternal: -8494 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -8494 silly install resolved tmp: 'tmp/brace-expansion-1.1.4.tgz_1462130058897_0.14984136167913675' }, -8494 silly install resolved directories: {}, -8494 silly install resolved publish_time: 1462130061252, -8494 silly install resolved _cnpm_publish_time: 1462130061252, -8494 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/brace-expansion/download/brace-expansion-1.1.4.tgz', -8494 silly install resolved readme: 'ERROR: No README data found!' } ] -8495 info install brace-expansion@1.1.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -8496 info installOne brace-expansion@1.1.4 -8497 verbose installOne of brace-expansion to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch not in flight; installing -8498 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8499 silly cache afterAdd arr-flatten@1.0.1 -8500 verbose afterAdd /home/ruanyf/.tnpm/arr-flatten/1.0.1/package/package.json not in flight; writing -8501 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8502 silly cache afterAdd for-own@0.1.4 -8503 verbose afterAdd /home/ruanyf/.tnpm/for-own/0.1.4/package/package.json not in flight; writing -8504 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8505 silly cache afterAdd preserve@0.2.0 -8506 verbose afterAdd /home/ruanyf/.tnpm/preserve/0.2.0/package/package.json not in flight; writing -8507 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8508 verbose get http://registry.npm.alibaba-inc.com/inherits not expired, no request -8509 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.1 <2.1.0', hasData: true } -8510 silly addNameRange versions [ 'inherits', [ '1.0.2', '1.0.1', '2.0.1', '2.0.0', '1.0.0' ] ] -8511 silly addNamed inherits@2.0.1 -8512 verbose addNamed "2.0.1" is a plain semver version for inherits -8513 silly addNameRange number 2 { name: 'expand-range', range: '>=1.8.1 <2.0.0', hasData: true } -8514 silly addNameRange versions [ 'expand-range', -8514 silly addNameRange [ '1.8.2', -8514 silly addNameRange '1.8.1', -8514 silly addNameRange '1.8.0', -8514 silly addNameRange '1.7.0', -8514 silly addNameRange '1.6.0', -8514 silly addNameRange '1.5.0', -8514 silly addNameRange '1.4.0', -8514 silly addNameRange '1.2.0', -8514 silly addNameRange '1.1.0', -8514 silly addNameRange '1.0.0', -8514 silly addNameRange '0.3.1', -8514 silly addNameRange '0.3.0', -8514 silly addNameRange '0.2.1', -8514 silly addNameRange '0.2.0', -8514 silly addNameRange '0.1.1', -8514 silly addNameRange '0.1.0' ] ] -8515 silly addNamed expand-range@1.8.2 -8516 verbose addNamed "1.8.2" is a plain semver version for expand-range -8517 verbose get http://registry.npm.alibaba-inc.com/core-util-is not expired, no request -8518 silly addNameRange number 2 { name: 'core-util-is', range: '>=1.0.0 <1.1.0', hasData: true } -8519 silly addNameRange versions [ 'core-util-is', [ '1.0.2', '1.0.1', '1.0.0' ] ] -8520 silly addNamed core-util-is@1.0.2 -8521 verbose addNamed "1.0.2" is a plain semver version for core-util-is -8522 verbose get http://registry.npm.alibaba-inc.com/isarray not expired, no request -8523 silly cache afterAdd is-posix-bracket@0.1.1 -8524 verbose afterAdd /home/ruanyf/.tnpm/is-posix-bracket/0.1.1/package/package.json not in flight; writing -8525 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8526 silly cache afterAdd is-buffer@1.1.3 -8527 verbose afterAdd /home/ruanyf/.tnpm/is-buffer/1.1.3/package/package.json not in flight; writing -8528 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8529 silly gunzTarPerm extractEntry package.json -8530 silly gunzTarPerm extractEntry flowRight.js -8531 silly gunzTarPerm extractEntry _stringToPath.js -8532 verbose lock using /home/ruanyf/.tnpm/_locks/brace-expansion-96a64109b5c596e2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -8533 verbose get http://registry.npm.alibaba-inc.com/string_decoder not expired, no request -8534 silly addNameRange number 2 { name: 'string_decoder', -8534 silly addNameRange range: '>=0.10.0 <0.11.0', -8534 silly addNameRange hasData: true } -8535 silly addNameRange versions [ 'string_decoder', -8535 silly addNameRange [ '0.10.31', -8535 silly addNameRange '0.10.25-1', -8535 silly addNameRange '0.11.10-1', -8535 silly addNameRange '0.10.25', -8535 silly addNameRange '0.11.10', -8535 silly addNameRange '0.10.24', -8535 silly addNameRange '0.0.1', -8535 silly addNameRange '0.0.0' ] ] -8536 silly addNamed string_decoder@0.10.31 -8537 verbose addNamed "0.10.31" is a plain semver version for string_decoder -8538 silly cache afterAdd repeat-element@1.1.2 -8539 verbose afterAdd /home/ruanyf/.tnpm/repeat-element/1.1.2/package/package.json not in flight; writing -8540 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8541 silly install write writing brace-expansion 1.1.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -8542 verbose afterAdd /home/ruanyf/.tnpm/is-dotfile/1.0.2/package/package.json written -8543 silly gunzTarPerm extractEntry dist/rx.virtualtime.map -8544 verbose afterAdd /home/ruanyf/.tnpm/is-equal-shallow/0.1.3/package/package.json written -8545 verbose afterAdd /home/ruanyf/.tnpm/is-primitive/2.0.0/package/package.json written -8546 silly install resolved [ { name: 'is-equal-shallow', -8546 silly install resolved description: 'Does a shallow comparison of two objects, returning false if the keys or values differ.', -8546 silly install resolved version: '0.1.3', -8546 silly install resolved homepage: 'https://github.com/jonschlinkert/is-equal-shallow', -8546 silly install resolved author: -8546 silly install resolved { name: 'Jon Schlinkert', -8546 silly install resolved url: 'https://github.com/jonschlinkert' }, -8546 silly install resolved repository: -8546 silly install resolved { type: 'git', -8546 silly install resolved url: 'git://github.com/jonschlinkert/is-equal-shallow.git' }, -8546 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-equal-shallow/issues' }, -8546 silly install resolved license: 'MIT', -8546 silly install resolved files: [ 'index.js' ], -8546 silly install resolved main: 'index.js', -8546 silly install resolved engines: { node: '>=0.10.0' }, -8546 silly install resolved scripts: { test: 'mocha' }, -8546 silly install resolved dependencies: { 'is-primitive': '^2.0.0' }, -8546 silly install resolved devDependencies: { mocha: '*', should: '*' }, -8546 silly install resolved keywords: -8546 silly install resolved [ 'compare', -8546 silly install resolved 'comparison', -8546 silly install resolved 'equal', -8546 silly install resolved 'equals', -8546 silly install resolved 'is', -8546 silly install resolved 'is-equal', -8546 silly install resolved 'key', -8546 silly install resolved 'object', -8546 silly install resolved 'same', -8546 silly install resolved 'shallow', -8546 silly install resolved 'value' ], -8546 silly install resolved verbiage: { related: [Object] }, -8546 silly install resolved gitHead: 'dceb47dd9c9c21066958116e3b54b3c8c251ee4a', -8546 silly install resolved _id: 'is-equal-shallow@0.1.3', -8546 silly install resolved _shasum: '2238098fc221de0bcfa5d9eac4c45d638aa1c534', -8546 silly install resolved _from: 'is-equal-shallow@>=0.1.3 <0.2.0', -8546 silly install resolved _npmVersion: '2.10.1', -8546 silly install resolved _nodeVersion: '0.12.4', -8546 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8546 silly install resolved maintainers: [ [Object], [Object] ], -8546 silly install resolved dist: -8546 silly install resolved { shasum: '2238098fc221de0bcfa5d9eac4c45d638aa1c534', -8546 silly install resolved size: 2471, -8546 silly install resolved noattachment: false, -8546 silly install resolved key: 'is-equal-shallow/-/is-equal-shallow-0.1.3.tgz', -8546 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz' }, -8546 silly install resolved directories: {}, -8546 silly install resolved publish_time: 1435030807950, -8546 silly install resolved _cnpm_publish_time: 1435030807950, -8546 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz', -8546 silly install resolved readme: 'ERROR: No README data found!' }, -8546 silly install resolved { name: 'is-primitive', -8546 silly install resolved description: 'Returns `true` if the value is a primitive. ', -8546 silly install resolved version: '2.0.0', -8546 silly install resolved homepage: 'https://github.com/jonschlinkert/is-primitive', -8546 silly install resolved author: -8546 silly install resolved { name: 'Jon Schlinkert', -8546 silly install resolved url: 'https://github.com/jonschlinkert' }, -8546 silly install resolved repository: -8546 silly install resolved { type: 'git', -8546 silly install resolved url: 'git://github.com/jonschlinkert/is-primitive.git' }, -8546 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-primitive/issues' }, -8546 silly install resolved license: -8546 silly install resolved { type: 'MIT', -8546 silly install resolved url: 'https://github.com/jonschlinkert/is-primitive/blob/master/LICENSE' }, -8546 silly install resolved files: [ 'index.js' ], -8546 silly install resolved main: 'index.js', -8546 silly install resolved engines: { node: '>=0.10.0' }, -8546 silly install resolved scripts: { test: 'mocha' }, -8546 silly install resolved devDependencies: { mocha: '*', should: '^4.0.4' }, -8546 silly install resolved keywords: -8546 silly install resolved [ 'boolean', -8546 silly install resolved 'check', -8546 silly install resolved 'number', -8546 silly install resolved 'primitive', -8546 silly install resolved 'string', -8546 silly install resolved 'symbol', -8546 silly install resolved 'type', -8546 silly install resolved 'typeof', -8546 silly install resolved 'util' ], -8546 silly install resolved gitHead: 'c512b7c95fb049aa9b1f039ddc0670611b66cce2', -8546 silly install resolved _id: 'is-primitive@2.0.0', -8546 silly install resolved _shasum: '207bab91638499c07b2adf240a41a87210034575', -8546 silly install resolved _from: 'is-primitive@>=2.0.0 <3.0.0', -8546 silly install resolved _npmVersion: '2.5.1', -8546 silly install resolved _nodeVersion: '0.12.0', -8546 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8546 silly install resolved maintainers: [ [Object] ], -8546 silly install resolved dist: -8546 silly install resolved { shasum: '207bab91638499c07b2adf240a41a87210034575', -8546 silly install resolved size: 1738, -8546 silly install resolved noattachment: false, -8546 silly install resolved key: 'is-primitive/-/is-primitive-2.0.0.tgz', -8546 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-primitive/download/is-primitive-2.0.0.tgz' }, -8546 silly install resolved directories: {}, -8546 silly install resolved publish_time: 1426564841319, -8546 silly install resolved _cnpm_publish_time: 1426564841319, -8546 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-primitive/download/is-primitive-2.0.0.tgz', -8546 silly install resolved readme: 'ERROR: No README data found!' } ] -8547 info install is-equal-shallow@0.1.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -8548 info install is-primitive@2.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -8549 info installOne is-equal-shallow@0.1.3 -8550 verbose installOne of is-equal-shallow to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache not in flight; installing -8551 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8552 info installOne is-primitive@2.0.0 -8553 verbose installOne of is-primitive to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache not in flight; installing -8554 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8555 info preinstall json-stable-stringify@1.0.1 -8556 verbose afterAdd /home/ruanyf/.tnpm/glob-base/0.3.0/package/package.json written -8557 silly install resolved [ { name: 'is-dotfile', -8557 silly install resolved description: 'Return true if a file path is (or has) a dotfile. Returns false if the path is a dot directory.', -8557 silly install resolved version: '1.0.2', -8557 silly install resolved homepage: 'https://github.com/jonschlinkert/is-dotfile', -8557 silly install resolved author: -8557 silly install resolved { name: 'Jon Schlinkert', -8557 silly install resolved url: 'https://github.com/jonschlinkert' }, -8557 silly install resolved repository: -8557 silly install resolved { type: 'git', -8557 silly install resolved url: 'git+https://github.com/jonschlinkert/is-dotfile.git' }, -8557 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-dotfile/issues' }, -8557 silly install resolved license: 'MIT', -8557 silly install resolved files: [ 'index.js' ], -8557 silly install resolved main: 'index.js', -8557 silly install resolved engines: { node: '>=0.10.0' }, -8557 silly install resolved scripts: { test: 'mocha' }, -8557 silly install resolved devDependencies: { benchmarked: '^0.1.3', 'dotfile-regex': '^0.1.2', mocha: '*' }, -8557 silly install resolved keywords: -8557 silly install resolved [ 'detect', -8557 silly install resolved 'dot', -8557 silly install resolved 'dotfile', -8557 silly install resolved 'expression', -8557 silly install resolved 'file', -8557 silly install resolved 'filepath', -8557 silly install resolved 'find', -8557 silly install resolved 'fs', -8557 silly install resolved 'is', -8557 silly install resolved 'match', -8557 silly install resolved 'path', -8557 silly install resolved 'regex', -8557 silly install resolved 'regexp', -8557 silly install resolved 'regular' ], -8557 silly install resolved verb: { related: [Object] }, -8557 silly install resolved gitHead: 'df258600b0afa6403a2a840f2ec486c9d350492f', -8557 silly install resolved _id: 'is-dotfile@1.0.2', -8557 silly install resolved _shasum: '2c132383f39199f8edc268ca01b9b007d205cc4d', -8557 silly install resolved _from: 'is-dotfile@>=1.0.0 <2.0.0', -8557 silly install resolved _npmVersion: '2.14.7', -8557 silly install resolved _nodeVersion: '4.2.1', -8557 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8557 silly install resolved maintainers: [ [Object] ], -8557 silly install resolved dist: -8557 silly install resolved { shasum: '2c132383f39199f8edc268ca01b9b007d205cc4d', -8557 silly install resolved size: 2081, -8557 silly install resolved noattachment: false, -8557 silly install resolved key: 'is-dotfile/-/is-dotfile-1.0.2.tgz', -8557 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-dotfile/download/is-dotfile-1.0.2.tgz' }, -8557 silly install resolved directories: {}, -8557 silly install resolved publish_time: 1445317071926, -8557 silly install resolved _cnpm_publish_time: 1445317071926, -8557 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-dotfile/download/is-dotfile-1.0.2.tgz', -8557 silly install resolved readme: 'ERROR: No README data found!' }, -8557 silly install resolved { name: 'glob-base', -8557 silly install resolved description: 'Returns an object with the (non-glob) base path and the actual pattern.', -8557 silly install resolved version: '0.3.0', -8557 silly install resolved homepage: 'https://github.com/jonschlinkert/glob-base', -8557 silly install resolved author: -8557 silly install resolved { name: 'Jon Schlinkert', -8557 silly install resolved url: 'https://github.com/jonschlinkert' }, -8557 silly install resolved repository: -8557 silly install resolved { type: 'git', -8557 silly install resolved url: 'git://github.com/jonschlinkert/glob-base.git' }, -8557 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/glob-base/issues' }, -8557 silly install resolved license: -8557 silly install resolved { type: 'MIT', -8557 silly install resolved url: 'https://github.com/jonschlinkert/glob-base/blob/master/LICENSE' }, -8557 silly install resolved files: [ 'index.js' ], -8557 silly install resolved main: 'index.js', -8557 silly install resolved engines: { node: '>=0.10.0' }, -8557 silly install resolved scripts: { test: 'mocha' }, -8557 silly install resolved dependencies: { 'glob-parent': '^2.0.0', 'is-glob': '^2.0.0' }, -8557 silly install resolved devDependencies: { mocha: '*', should: '^5.1.0' }, -8557 silly install resolved keywords: -8557 silly install resolved [ 'base', -8557 silly install resolved 'directory', -8557 silly install resolved 'dirname', -8557 silly install resolved 'expression', -8557 silly install resolved 'glob', -8557 silly install resolved 'parent', -8557 silly install resolved 'path', -8557 silly install resolved 'pattern', -8557 silly install resolved 'regex', -8557 silly install resolved 'regular', -8557 silly install resolved 'root' ], -8557 silly install resolved gitHead: 'adbc0ab07ec8a85f76ffd1b54dd41cdb9d1d0b83', -8557 silly install resolved _id: 'glob-base@0.3.0', -8557 silly install resolved _shasum: 'dbb164f6221b1c0b1ccf82aea328b497df0ea3c4', -8557 silly install resolved _from: 'glob-base@>=0.3.0 <0.4.0', -8557 silly install resolved _npmVersion: '2.11.3', -8557 silly install resolved _nodeVersion: '0.12.7', -8557 silly install resolved _npmUser: { name: 'es128', email: 'elan.shanker+npm@gmail.com' }, -8557 silly install resolved dist: -8557 silly install resolved { shasum: 'dbb164f6221b1c0b1ccf82aea328b497df0ea3c4', -8557 silly install resolved size: 2844, -8557 silly install resolved noattachment: false, -8557 silly install resolved key: 'glob-base/-/glob-base-0.3.0.tgz', -8557 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/glob-base/download/glob-base-0.3.0.tgz' }, -8557 silly install resolved maintainers: [ [Object], [Object], [Object] ], -8557 silly install resolved directories: {}, -8557 silly install resolved publish_time: 1442930297830, -8557 silly install resolved _cnpm_publish_time: 1442930297830, -8557 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/glob-base/download/glob-base-0.3.0.tgz', -8557 silly install resolved readme: 'ERROR: No README data found!' } ] -8558 info install is-dotfile@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -8559 info install glob-base@0.3.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -8560 info installOne is-dotfile@1.0.2 -8561 verbose installOne of is-dotfile to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob not in flight; installing -8562 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8563 info installOne glob-base@0.3.0 -8564 verbose installOne of glob-base to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob not in flight; installing -8565 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8566 verbose afterAdd /home/ruanyf/.tnpm/for-own/0.1.4/package/package.json written -8567 silly install resolved [ { name: 'is-extendable', -8567 silly install resolved description: 'Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. "can the value have keys?"', -8567 silly install resolved version: '0.1.1', -8567 silly install resolved homepage: 'https://github.com/jonschlinkert/is-extendable', -8567 silly install resolved author: -8567 silly install resolved { name: 'Jon Schlinkert', -8567 silly install resolved url: 'https://github.com/jonschlinkert' }, -8567 silly install resolved repository: -8567 silly install resolved { type: 'git', -8567 silly install resolved url: 'git+https://github.com/jonschlinkert/is-extendable.git' }, -8567 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-extendable/issues' }, -8567 silly install resolved license: 'MIT', -8567 silly install resolved files: [ 'index.js' ], -8567 silly install resolved main: 'index.js', -8567 silly install resolved engines: { node: '>=0.10.0' }, -8567 silly install resolved scripts: { test: 'mocha' }, -8567 silly install resolved devDependencies: { mocha: '*' }, -8567 silly install resolved keywords: -8567 silly install resolved [ 'array', -8567 silly install resolved 'assign', -8567 silly install resolved 'check', -8567 silly install resolved 'date', -8567 silly install resolved 'extend', -8567 silly install resolved 'extensible', -8567 silly install resolved 'function', -8567 silly install resolved 'is', -8567 silly install resolved 'object', -8567 silly install resolved 'regex', -8567 silly install resolved 'test' ], -8567 silly install resolved verbiage: { related: [Object] }, -8567 silly install resolved gitHead: 'c36a0732e6a76931c6f66c5931d1f3e54fa44380', -8567 silly install resolved _id: 'is-extendable@0.1.1', -8567 silly install resolved _shasum: '62b110e289a471418e3ec36a617d472e301dfc89', -8567 silly install resolved _from: 'is-extendable@>=0.1.1 <0.2.0', -8567 silly install resolved _npmVersion: '2.10.1', -8567 silly install resolved _nodeVersion: '0.12.4', -8567 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8567 silly install resolved maintainers: [ [Object] ], -8567 silly install resolved dist: -8567 silly install resolved { shasum: '62b110e289a471418e3ec36a617d472e301dfc89', -8567 silly install resolved size: 2381, -8567 silly install resolved noattachment: false, -8567 silly install resolved key: 'is-extendable/-/is-extendable-0.1.1.tgz', -8567 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz' }, -8567 silly install resolved directories: {}, -8567 silly install resolved publish_time: 1436050211330, -8567 silly install resolved _cnpm_publish_time: 1436050211330, -8567 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz', -8567 silly install resolved readme: 'ERROR: No README data found!' }, -8567 silly install resolved { name: 'for-own', -8567 silly install resolved description: 'Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js.', -8567 silly install resolved version: '0.1.4', -8567 silly install resolved homepage: 'https://github.com/jonschlinkert/for-own', -8567 silly install resolved author: -8567 silly install resolved { name: 'Jon Schlinkert', -8567 silly install resolved url: 'https://github.com/jonschlinkert' }, -8567 silly install resolved repository: -8567 silly install resolved { type: 'git', -8567 silly install resolved url: 'git+https://github.com/jonschlinkert/for-own.git' }, -8567 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/for-own/issues' }, -8567 silly install resolved license: 'MIT', -8567 silly install resolved files: [ 'index.js' ], -8567 silly install resolved main: 'index.js', -8567 silly install resolved engines: { node: '>=0.10.0' }, -8567 silly install resolved scripts: { test: 'mocha' }, -8567 silly install resolved dependencies: { 'for-in': '^0.1.5' }, -8567 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.7', mocha: '^2.4.5' }, -8567 silly install resolved keywords: -8567 silly install resolved [ 'for-in', -8567 silly install resolved 'for-own', -8567 silly install resolved 'has', -8567 silly install resolved 'has-own', -8567 silly install resolved 'hasOwn', -8567 silly install resolved 'key', -8567 silly install resolved 'keys', -8567 silly install resolved 'object', -8567 silly install resolved 'own', -8567 silly install resolved 'value' ], -8567 silly install resolved verb: -8567 silly install resolved { run: true, -8567 silly install resolved toc: false, -8567 silly install resolved layout: 'default', -8567 silly install resolved tasks: [Object], -8567 silly install resolved plugins: [Object], -8567 silly install resolved reflinks: [Object], -8567 silly install resolved lint: [Object] }, -8567 silly install resolved gitHead: '475607dc923dcc399c1bfdbecc0df4b957eb3779', -8567 silly install resolved _id: 'for-own@0.1.4', -8567 silly install resolved _shasum: '0149b41a39088c7515f51ebe1c1386d45f935072', -8567 silly install resolved _from: 'for-own@>=0.1.3 <0.2.0', -8567 silly install resolved _npmVersion: '3.6.0', -8567 silly install resolved _nodeVersion: '5.5.0', -8567 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8567 silly install resolved maintainers: [ [Object], [Object] ], -8567 silly install resolved dist: -8567 silly install resolved { shasum: '0149b41a39088c7515f51ebe1c1386d45f935072', -8567 silly install resolved size: 1934, -8567 silly install resolved noattachment: false, -8567 silly install resolved key: 'for-own/-/for-own-0.1.4.tgz', -8567 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/for-own/download/for-own-0.1.4.tgz' }, -8567 silly install resolved _npmOperationalInternal: -8567 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -8567 silly install resolved tmp: 'tmp/for-own-0.1.4.tgz_1459091314670_0.658134751021862' }, -8567 silly install resolved directories: {}, -8567 silly install resolved publish_time: 1459091315595, -8567 silly install resolved _cnpm_publish_time: 1459091315595, -8567 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/for-own/download/for-own-0.1.4.tgz', -8567 silly install resolved readme: 'ERROR: No README data found!' } ] -8568 info install is-extendable@0.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -8569 info install for-own@0.1.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -8570 info installOne is-extendable@0.1.1 -8571 verbose installOne of is-extendable to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit not in flight; installing -8572 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8573 info installOne for-own@0.1.4 -8574 verbose installOne of for-own to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit not in flight; installing -8575 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8576 verbose afterAdd /home/ruanyf/.tnpm/arr-flatten/1.0.1/package/package.json written -8577 silly install resolved [ { name: 'arr-flatten', -8577 silly install resolved description: 'Recursively flatten an array or arrays. This is the fastest implementation of array flatten.', -8577 silly install resolved version: '1.0.1', -8577 silly install resolved homepage: 'https://github.com/jonschlinkert/arr-flatten', -8577 silly install resolved author: -8577 silly install resolved { name: 'Jon Schlinkert', -8577 silly install resolved url: 'https://github.com/jonschlinkert' }, -8577 silly install resolved repository: -8577 silly install resolved { type: 'git', -8577 silly install resolved url: 'git://github.com/jonschlinkert/arr-flatten.git' }, -8577 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/arr-flatten/issues' }, -8577 silly install resolved license: -8577 silly install resolved { type: 'MIT', -8577 silly install resolved url: 'https://github.com/jonschlinkert/arr-flatten/blob/master/LICENSE' }, -8577 silly install resolved files: [ 'index.js' ], -8577 silly install resolved main: 'index.js', -8577 silly install resolved engines: { node: '>=0.10.0' }, -8577 silly install resolved scripts: { test: 'mocha', benchmarks: 'node benchmark' }, -8577 silly install resolved devDependencies: -8577 silly install resolved { 'array-flatten': '^1.0.2', -8577 silly install resolved 'array-slice': '^0.2.2', -8577 silly install resolved benchmarked: '^0.1.3', -8577 silly install resolved chalk: '^0.5.1', -8577 silly install resolved glob: '^4.3.5', -8577 silly install resolved 'kind-of': '^1.0.0' }, -8577 silly install resolved keywords: -8577 silly install resolved [ 'arr', -8577 silly install resolved 'array', -8577 silly install resolved 'elements', -8577 silly install resolved 'flat', -8577 silly install resolved 'flatten', -8577 silly install resolved 'nested', -8577 silly install resolved 'recurse', -8577 silly install resolved 'recursive', -8577 silly install resolved 'recursively' ], -8577 silly install resolved gitHead: '7b3706eaa0093d8f5ba65af8ed590b6fcb3fe7cf', -8577 silly install resolved _id: 'arr-flatten@1.0.1', -8577 silly install resolved _shasum: 'e5ffe54d45e19f32f216e91eb99c8ce892bb604b', -8577 silly install resolved _from: 'arr-flatten@>=1.0.1 <2.0.0', -8577 silly install resolved _npmVersion: '2.5.1', -8577 silly install resolved _nodeVersion: '0.12.0', -8577 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8577 silly install resolved maintainers: [ [Object] ], -8577 silly install resolved dist: -8577 silly install resolved { shasum: 'e5ffe54d45e19f32f216e91eb99c8ce892bb604b', -8577 silly install resolved size: 2165, -8577 silly install resolved noattachment: false, -8577 silly install resolved key: 'arr-flatten/-/arr-flatten-1.0.1.tgz', -8577 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/arr-flatten/download/arr-flatten-1.0.1.tgz' }, -8577 silly install resolved directories: {}, -8577 silly install resolved publish_time: 1426048109728, -8577 silly install resolved _cnpm_publish_time: 1426048109728, -8577 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/arr-flatten/download/arr-flatten-1.0.1.tgz', -8577 silly install resolved readme: 'ERROR: No README data found!' } ] -8578 info install arr-flatten@1.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -8579 info installOne arr-flatten@1.0.1 -8580 verbose installOne of arr-flatten to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff not in flight; installing -8581 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8582 verbose afterAdd /home/ruanyf/.tnpm/preserve/0.2.0/package/package.json written -8583 silly cache afterAdd wrappy@1.0.2 -8584 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json not in flight; writing -8585 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8586 verbose lock using /home/ruanyf/.tnpm/_locks/is-equal-shallow-b545d286f24ccae2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow -8587 verbose lock using /home/ruanyf/.tnpm/_locks/is-primitive-91229470b2bab84d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive -8588 silly gunzTarPerm extractEntry README.md -8589 silly gunzTarPerm extractEntry LICENSE -8590 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/package.json -8591 silly cache afterAdd inherits@2.0.1 -8592 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json not in flight; writing -8593 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8594 silly install write writing is-equal-shallow 0.1.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow -8595 verbose afterAdd /home/ruanyf/.tnpm/is-posix-bracket/0.1.1/package/package.json written -8596 silly install resolved [ { name: 'is-posix-bracket', -8596 silly install resolved description: 'Returns true if the given string is a POSIX bracket expression (POSIX character class).', -8596 silly install resolved version: '0.1.1', -8596 silly install resolved homepage: 'https://github.com/jonschlinkert/is-posix-bracket', -8596 silly install resolved author: -8596 silly install resolved { name: 'Jon Schlinkert', -8596 silly install resolved url: 'https://github.com/jonschlinkert' }, -8596 silly install resolved repository: -8596 silly install resolved { type: 'git', -8596 silly install resolved url: 'git+https://github.com/jonschlinkert/is-posix-bracket.git' }, -8596 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-posix-bracket/issues' }, -8596 silly install resolved license: 'MIT', -8596 silly install resolved files: [ 'index.js' ], -8596 silly install resolved main: 'index.js', -8596 silly install resolved engines: { node: '>=0.10.0' }, -8596 silly install resolved scripts: { test: 'mocha' }, -8596 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.7', mocha: '^2.4.5' }, -8596 silly install resolved keywords: -8596 silly install resolved [ 'braces', -8596 silly install resolved 'brackets', -8596 silly install resolved 'character', -8596 silly install resolved 'character-class', -8596 silly install resolved 'class', -8596 silly install resolved 'expression', -8596 silly install resolved 'posix', -8596 silly install resolved 'regex', -8596 silly install resolved 'regexp', -8596 silly install resolved 'regular' ], -8596 silly install resolved verb: -8596 silly install resolved { run: true, -8596 silly install resolved toc: false, -8596 silly install resolved layout: 'default', -8596 silly install resolved tasks: [Object], -8596 silly install resolved plugins: [Object], -8596 silly install resolved related: [Object], -8596 silly install resolved reflinks: [Object], -8596 silly install resolved lint: [Object] }, -8596 silly install resolved gitHead: '43972556cfdbb681a15072da75c97952c4e4deba', -8596 silly install resolved _id: 'is-posix-bracket@0.1.1', -8596 silly install resolved _shasum: '3334dc79774368e92f016e6fbc0a88f5cd6e6bc4', -8596 silly install resolved _from: 'is-posix-bracket@>=0.1.0 <0.2.0', -8596 silly install resolved _npmVersion: '3.6.0', -8596 silly install resolved _nodeVersion: '5.5.0', -8596 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8596 silly install resolved maintainers: [ [Object] ], -8596 silly install resolved dist: -8596 silly install resolved { shasum: '3334dc79774368e92f016e6fbc0a88f5cd6e6bc4', -8596 silly install resolved size: 2418, -8596 silly install resolved noattachment: false, -8596 silly install resolved key: 'is-posix-bracket/-/is-posix-bracket-0.1.1.tgz', -8596 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz' }, -8596 silly install resolved _npmOperationalInternal: -8596 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -8596 silly install resolved tmp: 'tmp/is-posix-bracket-0.1.1.tgz_1459834297811_0.5273812564555556' }, -8596 silly install resolved directories: {}, -8596 silly install resolved publish_time: 1459834300077, -8596 silly install resolved _cnpm_publish_time: 1459834300077, -8596 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz', -8596 silly install resolved readme: 'ERROR: No README data found!' } ] -8597 info install is-posix-bracket@0.1.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -8598 info installOne is-posix-bracket@0.1.1 -8599 verbose installOne of is-posix-bracket to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets not in flight; installing -8600 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8601 silly install write writing is-primitive 2.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive -8602 verbose lock using /home/ruanyf/.tnpm/_locks/is-dotfile-871e3c8783db0ccc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile -8603 verbose lock using /home/ruanyf/.tnpm/_locks/glob-base-3cceb05ef8de5584.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base -8604 verbose afterAdd /home/ruanyf/.tnpm/is-buffer/1.1.3/package/package.json written -8605 silly install resolved [ { name: 'is-buffer', -8605 silly install resolved description: 'Determine if an object is Buffer', -8605 silly install resolved version: '1.1.3', -8605 silly install resolved author: -8605 silly install resolved { name: 'Feross Aboukhadijeh', -8605 silly install resolved email: 'feross@feross.org', -8605 silly install resolved url: 'http://feross.org/' }, -8605 silly install resolved bugs: { url: 'https://github.com/feross/is-buffer/issues' }, -8605 silly install resolved dependencies: {}, -8605 silly install resolved devDependencies: { standard: '^6.0.5', tape: '^4.0.0', zuul: '^3.0.0' }, -8605 silly install resolved engines: { node: '>=0.12' }, -8605 silly install resolved keywords: -8605 silly install resolved [ 'buffer', -8605 silly install resolved 'buffers', -8605 silly install resolved 'type', -8605 silly install resolved 'core buffer', -8605 silly install resolved 'browser buffer', -8605 silly install resolved 'browserify', -8605 silly install resolved 'typed array', -8605 silly install resolved 'uint32array', -8605 silly install resolved 'int16array', -8605 silly install resolved 'int32array', -8605 silly install resolved 'float32array', -8605 silly install resolved 'float64array', -8605 silly install resolved 'browser', -8605 silly install resolved 'arraybuffer', -8605 silly install resolved 'dataview' ], -8605 silly install resolved license: 'MIT', -8605 silly install resolved main: 'index.js', -8605 silly install resolved repository: { type: 'git', url: 'git://github.com/feross/is-buffer.git' }, -8605 silly install resolved scripts: -8605 silly install resolved { test: 'standard && npm run test-node && npm run test-browser', -8605 silly install resolved 'test-browser': 'zuul -- test/*.js', -8605 silly install resolved 'test-browser-local': 'zuul --local -- test/*.js', -8605 silly install resolved 'test-node': 'tape test/*.js' }, -8605 silly install resolved testling: { files: 'test/*.js' }, -8605 silly install resolved gitHead: 'dfd658d887e6b63254b89d22af1a755a39313455', -8605 silly install resolved homepage: 'https://github.com/feross/is-buffer', -8605 silly install resolved _id: 'is-buffer@1.1.3', -8605 silly install resolved _shasum: 'db897fc3f7aca2d50de94b6c8c2896a4771627af', -8605 silly install resolved _from: 'is-buffer@>=1.0.2 <2.0.0', -8605 silly install resolved _npmVersion: '2.14.12', -8605 silly install resolved _nodeVersion: '4.3.2', -8605 silly install resolved _npmUser: { name: 'feross', email: 'feross@feross.org' }, -8605 silly install resolved dist: -8605 silly install resolved { shasum: 'db897fc3f7aca2d50de94b6c8c2896a4771627af', -8605 silly install resolved size: 2695, -8605 silly install resolved noattachment: false, -8605 silly install resolved key: 'is-buffer/-/is-buffer-1.1.3.tgz', -8605 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-1.1.3.tgz' }, -8605 silly install resolved maintainers: [ [Object] ], -8605 silly install resolved _npmOperationalInternal: -8605 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -8605 silly install resolved tmp: 'tmp/is-buffer-1.1.3.tgz_1457390977775_0.6384289276320487' }, -8605 silly install resolved directories: {}, -8605 silly install resolved publish_time: 1457390979950, -8605 silly install resolved _cnpm_publish_time: 1457390979950, -8605 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-1.1.3.tgz', -8605 silly install resolved readme: 'ERROR: No README data found!' } ] -8606 info install is-buffer@1.1.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -8607 info installOne is-buffer@1.1.3 -8608 verbose installOne of is-buffer to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of not in flight; installing -8609 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8610 silly cache afterAdd expand-range@1.8.2 -8611 verbose afterAdd /home/ruanyf/.tnpm/expand-range/1.8.2/package/package.json not in flight; writing -8612 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8613 verbose lock using /home/ruanyf/.tnpm/_locks/is-extendable-dc6cd5e49afbbd3c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable -8614 verbose lock using /home/ruanyf/.tnpm/_locks/for-own-951323b794acd7c8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -8615 verbose lock using /home/ruanyf/.tnpm/_locks/arr-flatten-5843d795098330a6.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten -8616 silly cache afterAdd core-util-is@1.0.2 -8617 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json not in flight; writing -8618 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8619 silly cache afterAdd isarray@0.0.1 -8620 verbose afterAdd /home/ruanyf/.tnpm/isarray/0.0.1/package/package.json not in flight; writing -8621 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8622 silly install write writing is-dotfile 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile -8623 silly install write writing glob-base 0.3.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base -8624 verbose afterAdd /home/ruanyf/.tnpm/repeat-element/1.1.2/package/package.json written -8625 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -8626 silly install write writing is-extendable 0.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable -8627 silly install write writing for-own 0.1.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -8628 silly install write writing arr-flatten 1.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten -8629 silly cache afterAdd string_decoder@0.10.31 -8630 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json not in flight; writing -8631 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8632 verbose lock using /home/ruanyf/.tnpm/_locks/is-posix-bracket-0e681d581ef83e10.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket -8633 silly gunzTarPerm extractEntry dist/rx.core.testing.map -8634 silly gunzTarPerm extractEntry license.txt -8635 silly gunzTarPerm extractEntry readme.md -8636 verbose lock using /home/ruanyf/.tnpm/_locks/is-buffer-0b5329785adce74e.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer -8637 silly install write writing is-posix-bracket 0.1.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket -8638 silly install write writing is-buffer 1.1.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer -8639 verbose afterAdd /home/ruanyf/.tnpm/wrappy/1.0.2/package/package.json written -8640 silly install resolved [ { name: 'wrappy', -8640 silly install resolved version: '1.0.2', -8640 silly install resolved description: 'Callback wrapping utility', -8640 silly install resolved main: 'wrappy.js', -8640 silly install resolved files: [ 'wrappy.js' ], -8640 silly install resolved directories: { test: 'test' }, -8640 silly install resolved dependencies: {}, -8640 silly install resolved devDependencies: { tap: '^2.3.1' }, -8640 silly install resolved scripts: { test: 'tap --coverage test/*.js' }, -8640 silly install resolved repository: { type: 'git', url: 'git+https://github.com/npm/wrappy.git' }, -8640 silly install resolved author: -8640 silly install resolved { name: 'Isaac Z. Schlueter', -8640 silly install resolved email: 'i@izs.me', -8640 silly install resolved url: 'http://blog.izs.me/' }, -8640 silly install resolved license: 'ISC', -8640 silly install resolved bugs: { url: 'https://github.com/npm/wrappy/issues' }, -8640 silly install resolved homepage: 'https://github.com/npm/wrappy', -8640 silly install resolved gitHead: '71d91b6dc5bdeac37e218c2cf03f9ab55b60d214', -8640 silly install resolved _id: 'wrappy@1.0.2', -8640 silly install resolved _shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', -8640 silly install resolved _from: 'wrappy@>=1.0.0 <2.0.0', -8640 silly install resolved _npmVersion: '3.9.1', -8640 silly install resolved _nodeVersion: '5.10.1', -8640 silly install resolved _npmUser: { name: 'zkat', email: 'kat@sykosomatic.org' }, -8640 silly install resolved dist: -8640 silly install resolved { shasum: 'b5243d8f3ec1aa35f1364605bc0d1036e30ab69f', -8640 silly install resolved size: 1676, -8640 silly install resolved noattachment: false, -8640 silly install resolved key: 'wrappy/-/wrappy-1.0.2.tgz', -8640 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' }, -8640 silly install resolved maintainers: [ [Object], [Object] ], -8640 silly install resolved _npmOperationalInternal: -8640 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -8640 silly install resolved tmp: 'tmp/wrappy-1.0.2.tgz_1463527848281_0.037129373755306005' }, -8640 silly install resolved publish_time: 1463527852415, -8640 silly install resolved _cnpm_publish_time: 1463527852415, -8640 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz' } ] -8641 info install wrappy@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -8642 info installOne wrappy@1.0.2 -8643 verbose installOne of wrappy to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once not in flight; installing -8644 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8645 silly gunzTarPerm extractEntry forEach.js -8646 silly gunzTarPerm extractEntry _stringToArray.js -8647 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion is being purged from base /home/ruanyf/npm-global -8648 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -8649 verbose afterAdd /home/ruanyf/.tnpm/inherits/2.0.1/package/package.json written -8650 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow -8651 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive -8652 verbose afterAdd /home/ruanyf/.tnpm/expand-range/1.8.2/package/package.json written -8653 silly install resolved [ { name: 'preserve', -8653 silly install resolved description: 'Temporarily substitute tokens in the given `string` with placeholders, then put them back after transforming the string.', -8653 silly install resolved version: '0.2.0', -8653 silly install resolved homepage: 'https://github.com/jonschlinkert/preserve', -8653 silly install resolved author: -8653 silly install resolved { name: 'Jon Schlinkert', -8653 silly install resolved url: 'https://github.com/jonschlinkert' }, -8653 silly install resolved repository: -8653 silly install resolved { type: 'git', -8653 silly install resolved url: 'git://github.com/jonschlinkert/preserve.git' }, -8653 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/preserve/issues' }, -8653 silly install resolved license: -8653 silly install resolved { type: 'MIT', -8653 silly install resolved url: 'https://github.com/jonschlinkert/preserve/blob/master/LICENSE-MIT' }, -8653 silly install resolved main: 'index.js', -8653 silly install resolved engines: { node: '>=0.10.0' }, -8653 silly install resolved scripts: { test: 'mocha -R spec' }, -8653 silly install resolved devDependencies: -8653 silly install resolved { benchmarked: '^0.1.3', -8653 silly install resolved chalk: '^0.5.1', -8653 silly install resolved 'js-beautify': '^1.5.4', -8653 silly install resolved mocha: '*', -8653 silly install resolved should: '*' }, -8653 silly install resolved keywords: -8653 silly install resolved [ 'escape', -8653 silly install resolved 'format', -8653 silly install resolved 'placeholder', -8653 silly install resolved 'placeholders', -8653 silly install resolved 'prettify', -8653 silly install resolved 'regex', -8653 silly install resolved 'replace', -8653 silly install resolved 'template', -8653 silly install resolved 'templates', -8653 silly install resolved 'token', -8653 silly install resolved 'tokens' ], -8653 silly install resolved gitHead: '1bf405d35e4aea06a2ee83db2d34dc54abc0a1f9', -8653 silly install resolved _id: 'preserve@0.2.0', -8653 silly install resolved _shasum: '815ed1f6ebc65926f865b310c0713bcb3315ce4b', -8653 silly install resolved _from: 'preserve@>=0.2.0 <0.3.0', -8653 silly install resolved _npmVersion: '1.4.23', -8653 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8653 silly install resolved maintainers: [ [Object] ], -8653 silly install resolved dist: -8653 silly install resolved { shasum: '815ed1f6ebc65926f865b310c0713bcb3315ce4b', -8653 silly install resolved size: 3719, -8653 silly install resolved noattachment: false, -8653 silly install resolved key: 'preserve/-/preserve-0.2.0.tgz', -8653 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/preserve/download/preserve-0.2.0.tgz' }, -8653 silly install resolved directories: {}, -8653 silly install resolved publish_time: 1420928978220, -8653 silly install resolved _cnpm_publish_time: 1420928978220, -8653 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/preserve/download/preserve-0.2.0.tgz', -8653 silly install resolved readme: 'ERROR: No README data found!' }, -8653 silly install resolved { name: 'repeat-element', -8653 silly install resolved description: 'Create an array by repeating the given value n times.', -8653 silly install resolved version: '1.1.2', -8653 silly install resolved homepage: 'https://github.com/jonschlinkert/repeat-element', -8653 silly install resolved author: -8653 silly install resolved { name: 'Jon Schlinkert', -8653 silly install resolved url: 'https://github.com/jonschlinkert' }, -8653 silly install resolved repository: -8653 silly install resolved { type: 'git', -8653 silly install resolved url: 'git://github.com/jonschlinkert/repeat-element.git' }, -8653 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/repeat-element/issues' }, -8653 silly install resolved license: -8653 silly install resolved { type: 'MIT', -8653 silly install resolved url: 'https://github.com/jonschlinkert/repeat-element/blob/master/LICENSE' }, -8653 silly install resolved main: 'index.js', -8653 silly install resolved engines: { node: '>=0.10.0' }, -8653 silly install resolved scripts: { test: 'mocha' }, -8653 silly install resolved files: [ 'index.js' ], -8653 silly install resolved keywords: [ 'array', 'element', 'repeat', 'string' ], -8653 silly install resolved devDependencies: -8653 silly install resolved { benchmarked: '^0.1.4', -8653 silly install resolved chalk: '^1.0.0', -8653 silly install resolved glob: '^5.0.5', -8653 silly install resolved minimist: '^1.1.1', -8653 silly install resolved mocha: '^2.2.4' }, -8653 silly install resolved gitHead: '7a6b21d58eafcc44fc8de133c70a8398ee9fdd8d', -8653 silly install resolved _id: 'repeat-element@1.1.2', -8653 silly install resolved _shasum: 'ef089a178d1483baae4d93eb98b4f9e4e11d990a', -8653 silly install resolved _from: 'repeat-element@>=1.1.2 <2.0.0', -8653 silly install resolved _npmVersion: '2.5.1', -8653 silly install resolved _nodeVersion: '0.12.0', -8653 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8653 silly install resolved maintainers: [ [Object] ], -8653 silly install resolved dist: -8653 silly install resolved { shasum: 'ef089a178d1483baae4d93eb98b4f9e4e11d990a', -8653 silly install resolved size: 1872, -8653 silly install resolved noattachment: false, -8653 silly install resolved key: 'repeat-element/-/repeat-element-1.1.2.tgz', -8653 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/repeat-element/download/repeat-element-1.1.2.tgz' }, -8653 silly install resolved directories: {}, -8653 silly install resolved publish_time: 1430968773716, -8653 silly install resolved _cnpm_publish_time: 1430968773716, -8653 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/repeat-element/download/repeat-element-1.1.2.tgz', -8653 silly install resolved readme: 'ERROR: No README data found!' }, -8653 silly install resolved { name: 'expand-range', -8653 silly install resolved description: 'Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See the benchmarks. Used by micromatch.', -8653 silly install resolved version: '1.8.2', -8653 silly install resolved homepage: 'https://github.com/jonschlinkert/expand-range', -8653 silly install resolved author: -8653 silly install resolved { name: 'Jon Schlinkert', -8653 silly install resolved url: 'https://github.com/jonschlinkert' }, -8653 silly install resolved repository: -8653 silly install resolved { type: 'git', -8653 silly install resolved url: 'git+https://github.com/jonschlinkert/expand-range.git' }, -8653 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/expand-range/issues' }, -8653 silly install resolved license: 'MIT', -8653 silly install resolved files: [ 'index.js' ], -8653 silly install resolved main: 'index.js', -8653 silly install resolved engines: { node: '>=0.10.0' }, -8653 silly install resolved scripts: { test: 'mocha' }, -8653 silly install resolved dependencies: { 'fill-range': '^2.1.0' }, -8653 silly install resolved devDependencies: -8653 silly install resolved { benchmarked: '^0.2.4', -8653 silly install resolved 'brace-expansion': '^1.1.4', -8653 silly install resolved glob: '^7.0.3', -8653 silly install resolved 'gulp-format-md': '^0.1.9', -8653 silly install resolved minimatch: '^3.0.0', -8653 silly install resolved mocha: '^2.4.5' }, -8653 silly install resolved keywords: -8653 silly install resolved [ 'alpha', -8653 silly install resolved 'alphabetical', -8653 silly install resolved 'bash', -8653 silly install resolved 'brace', -8653 silly install resolved 'expand', -8653 silly install resolved 'expansion', -8653 silly install resolved 'glob', -8653 silly install resolved 'match', -8653 silly install resolved 'matches', -8653 silly install resolved 'matching', -8653 silly install resolved 'number', -8653 silly install resolved 'numerical', -8653 silly install resolved 'range', -8653 silly install resolved 'ranges', -8653 silly install resolved 'sh' ], -8653 silly install resolved verb: -8653 silly install resolved { plugins: [Object], -8653 silly install resolved reflinks: [Object], -8653 silly install resolved toc: false, -8653 silly install resolved layout: 'default', -8653 silly install resolved lint: [Object], -8653 silly install resolved tasks: [Object], -8653 silly install resolved related: [Object] }, -8653 silly install resolved gitHead: '4c873af0870df8382bafc66a93d5c89e3aad3d4d', -8653 silly install resolved _id: 'expand-range@1.8.2', -8653 silly install resolved _shasum: 'a299effd335fe2721ebae8e257ec79644fc85337', -8653 silly install resolved _from: 'expand-range@>=1.8.1 <2.0.0', -8653 silly install resolved _npmVersion: '3.6.0', -8653 silly install resolved _nodeVersion: '5.5.0', -8653 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -8653 silly install resolved maintainers: [ [Object], [Object] ], -8653 silly install resolved dist: -8653 silly install resolved { shasum: 'a299effd335fe2721ebae8e257ec79644fc85337', -8653 silly install resolved size: 3248, -8653 silly install resolved noattachment: false, -8653 silly install resolved key: 'expand-range/-/expand-range-1.8.2.tgz', -8653 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/expand-range/download/expand-range-1.8.2.tgz' }, -8653 silly install resolved _npmOperationalInternal: -8653 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -8653 silly install resolved tmp: 'tmp/expand-range-1.8.2.tgz_1462440434873_0.7174076174851507' }, -8653 silly install resolved directories: {}, -8653 silly install resolved publish_time: 1462440436202, -8653 silly install resolved _cnpm_publish_time: 1462440436202, -8653 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/expand-range/download/expand-range-1.8.2.tgz', -8653 silly install resolved readme: 'ERROR: No README data found!' } ] -8654 info install preserve@0.2.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -8655 info install repeat-element@1.1.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -8656 info install expand-range@1.8.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -8657 info installOne preserve@0.2.0 -8658 verbose installOne of preserve to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces not in flight; installing -8659 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8660 info installOne repeat-element@1.1.2 -8661 verbose installOne of repeat-element to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces not in flight; installing -8662 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8663 info installOne expand-range@1.8.2 -8664 verbose installOne of expand-range to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces not in flight; installing -8665 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8666 silly prepareForInstallMany adding jsonify@~0.0.0 from json-stable-stringify dependencies -8667 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/package.json -8668 verbose tar unpack /home/ruanyf/.tnpm/brace-expansion/1.1.4/package.tgz -8669 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -8670 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion is being purged -8671 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -8672 verbose afterAdd /home/ruanyf/.tnpm/core-util-is/1.0.2/package/package.json written -8673 verbose lock using /home/ruanyf/.tnpm/_locks/wrappy-c9261d4ddef521b1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy -8674 silly gunzTarPerm extractEntry ts/rx.core.testing.es6.d.ts -8675 verbose afterAdd /home/ruanyf/.tnpm/isarray/0.0.1/package/package.json written -8676 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile -8677 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base -8678 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable -8679 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten -8680 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -8681 silly gunzTarPerm modes [ '755', '644' ] -8682 verbose afterAdd /home/ruanyf/.tnpm/string_decoder/0.10.31/package/package.json written -8683 silly install resolved [ { name: 'inherits', -8683 silly install resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()', -8683 silly install resolved version: '2.0.1', -8683 silly install resolved keywords: -8683 silly install resolved [ 'inheritance', -8683 silly install resolved 'class', -8683 silly install resolved 'klass', -8683 silly install resolved 'oop', -8683 silly install resolved 'object-oriented', -8683 silly install resolved 'inherits', -8683 silly install resolved 'browser', -8683 silly install resolved 'browserify' ], -8683 silly install resolved main: './inherits.js', -8683 silly install resolved browser: './inherits_browser.js', -8683 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits.git' }, -8683 silly install resolved license: 'ISC', -8683 silly install resolved scripts: { test: 'node test' }, -8683 silly install resolved readmeFilename: 'README.md', -8683 silly install resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' }, -8683 silly install resolved _id: 'inherits@2.0.1', -8683 silly install resolved dist: -8683 silly install resolved { shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -8683 silly install resolved size: 2122, -8683 silly install resolved noattachment: false, -8683 silly install resolved key: '/inherits/-/inherits-2.0.1.tgz', -8683 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz' }, -8683 silly install resolved _from: 'inherits@>=2.0.1 <2.1.0', -8683 silly install resolved _npmVersion: '1.3.8', -8683 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -8683 silly install resolved maintainers: [ [Object] ], -8683 silly install resolved directories: {}, -8683 silly install resolved publish_time: 1376950220463, -8683 silly install resolved _cnpm_publish_time: 1376950220463, -8683 silly install resolved _shasum: 'b17d08d326b4423e568eff719f91b0b1cbdf69f1', -8683 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.1.tgz', -8683 silly install resolved readme: 'ERROR: No README data found!', -8683 silly install resolved homepage: 'https://github.com/isaacs/inherits#readme' }, -8683 silly install resolved { name: 'core-util-is', -8683 silly install resolved version: '1.0.2', -8683 silly install resolved description: 'The `util.is*` functions introduced in Node v0.12.', -8683 silly install resolved main: 'lib/util.js', -8683 silly install resolved repository: { type: 'git', url: 'git://github.com/isaacs/core-util-is.git' }, -8683 silly install resolved keywords: -8683 silly install resolved [ 'util', -8683 silly install resolved 'isBuffer', -8683 silly install resolved 'isArray', -8683 silly install resolved 'isNumber', -8683 silly install resolved 'isString', -8683 silly install resolved 'isRegExp', -8683 silly install resolved 'isThis', -8683 silly install resolved 'isThat', -8683 silly install resolved 'polyfill' ], -8683 silly install resolved author: -8683 silly install resolved { name: 'Isaac Z. Schlueter', -8683 silly install resolved email: 'i@izs.me', -8683 silly install resolved url: 'http://blog.izs.me/' }, -8683 silly install resolved license: 'MIT', -8683 silly install resolved bugs: { url: 'https://github.com/isaacs/core-util-is/issues' }, -8683 silly install resolved scripts: { test: 'tap test.js' }, -8683 silly install resolved devDependencies: { tap: '^2.3.0' }, -8683 silly install resolved gitHead: 'a177da234df5638b363ddc15fa324619a38577c8', -8683 silly install resolved homepage: 'https://github.com/isaacs/core-util-is#readme', -8683 silly install resolved _id: 'core-util-is@1.0.2', -8683 silly install resolved _shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', -8683 silly install resolved _from: 'core-util-is@>=1.0.0 <1.1.0', -8683 silly install resolved _npmVersion: '3.3.2', -8683 silly install resolved _nodeVersion: '4.0.0', -8683 silly install resolved _npmUser: { name: 'isaacs', email: 'i@izs.me' }, -8683 silly install resolved dist: -8683 silly install resolved { shasum: 'b5fd54220aa2bc5ab57aab7140c940754503c1a7', -8683 silly install resolved size: 7016, -8683 silly install resolved noattachment: false, -8683 silly install resolved key: 'core-util-is/-/core-util-is-1.0.2.tgz', -8683 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz' }, -8683 silly install resolved maintainers: [ [Object] ], -8683 silly install resolved directories: {}, -8683 silly install resolved publish_time: 1447979853081, -8683 silly install resolved _cnpm_publish_time: 1447979853081, -8683 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/core-util-is/download/core-util-is-1.0.2.tgz', -8683 silly install resolved readme: 'ERROR: No README data found!' }, -8683 silly install resolved { name: 'isarray', -8683 silly install resolved description: 'Array#isArray for older browsers', -8683 silly install resolved version: '0.0.1', -8683 silly install resolved repository: -8683 silly install resolved { type: 'git', -8683 silly install resolved url: 'git://github.com/juliangruber/isarray.git' }, -8683 silly install resolved homepage: 'https://github.com/juliangruber/isarray', -8683 silly install resolved main: 'index.js', -8683 silly install resolved scripts: { test: 'tap test/*.js' }, -8683 silly install resolved dependencies: {}, -8683 silly install resolved devDependencies: { tap: '*' }, -8683 silly install resolved keywords: [ 'browser', 'isarray', 'array' ], -8683 silly install resolved author: -8683 silly install resolved { name: 'Julian Gruber', -8683 silly install resolved email: 'mail@juliangruber.com', -8683 silly install resolved url: 'http://juliangruber.com' }, -8683 silly install resolved license: 'MIT', -8683 silly install resolved readmeFilename: 'README.md', -8683 silly install resolved _id: 'isarray@0.0.1', -8683 silly install resolved dist: -8683 silly install resolved { shasum: '8a18acfca9a8f4177e09abfc6038939b05d1eedf', -8683 silly install resolved size: 2742, -8683 silly install resolved noattachment: false, -8683 silly install resolved key: '/isarray/-/isarray-0.0.1.tgz', -8683 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-0.0.1.tgz' }, -8683 silly install resolved _from: 'isarray@0.0.1', -8683 silly install resolved _npmVersion: '1.2.18', -8683 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, -8683 silly install resolved maintainers: [ [Object] ], -8683 silly install resolved directories: {}, -8683 silly install resolved publish_time: 1369676435695, -8683 silly install resolved _cnpm_publish_time: 1369676435695, -8683 silly install resolved _shasum: '8a18acfca9a8f4177e09abfc6038939b05d1eedf', -8683 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-0.0.1.tgz', -8683 silly install resolved bugs: { url: 'https://github.com/juliangruber/isarray/issues' }, -8683 silly install resolved readme: 'ERROR: No README data found!' }, -8683 silly install resolved { name: 'string_decoder', -8683 silly install resolved version: '0.10.31', -8683 silly install resolved description: 'The string_decoder module from Node core', -8683 silly install resolved main: 'index.js', -8683 silly install resolved dependencies: {}, -8683 silly install resolved devDependencies: { tap: '~0.4.8' }, -8683 silly install resolved scripts: { test: 'tap test/simple/*.js' }, -8683 silly install resolved repository: -8683 silly install resolved { type: 'git', -8683 silly install resolved url: 'git://github.com/rvagg/string_decoder.git' }, -8683 silly install resolved homepage: 'https://github.com/rvagg/string_decoder', -8683 silly install resolved keywords: [ 'string', 'decoder', 'browser', 'browserify' ], -8683 silly install resolved license: 'MIT', -8683 silly install resolved gitHead: 'd46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0', -8683 silly install resolved bugs: { url: 'https://github.com/rvagg/string_decoder/issues' }, -8683 silly install resolved _id: 'string_decoder@0.10.31', -8683 silly install resolved _shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', -8683 silly install resolved _from: 'string_decoder@>=0.10.0 <0.11.0', -8683 silly install resolved _npmVersion: '1.4.23', -8683 silly install resolved _npmUser: { name: 'rvagg', email: 'rod@vagg.org' }, -8683 silly install resolved maintainers: [ [Object], [Object] ], -8683 silly install resolved dist: -8683 silly install resolved { shasum: '62e203bc41766c6c28c9fc84301dab1c5310fa94', -8683 silly install resolved size: 3608, -8683 silly install resolved noattachment: false, -8683 silly install resolved key: 'string_decoder/-/string_decoder-0.10.31.tgz', -8683 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz' }, -8683 silly install resolved directories: {}, -8683 silly install resolved publish_time: 1408767919329, -8683 silly install resolved _cnpm_publish_time: 1408767919329, -8683 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-0.10.31.tgz', -8683 silly install resolved readme: 'ERROR: No README data found!' } ] -8684 info install inherits@2.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -8685 info install core-util-is@1.0.2 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -8686 info install isarray@0.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -8687 info install string_decoder@0.10.31 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -8688 info installOne inherits@2.0.1 -8689 verbose installOne of inherits to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream not in flight; installing -8690 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8691 info installOne core-util-is@1.0.2 -8692 verbose installOne of core-util-is to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream not in flight; installing -8693 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8694 info installOne isarray@0.0.1 -8695 verbose installOne of isarray to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream not in flight; installing -8696 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8697 info installOne string_decoder@0.10.31 -8698 verbose installOne of string_decoder to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream not in flight; installing -8699 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -8700 silly install write writing wrappy 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy -8701 verbose lock using /home/ruanyf/.tnpm/_locks/repeat-element-8d83f2b2fa7e54b8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element -8702 verbose lock using /home/ruanyf/.tnpm/_locks/preserve-abe6a87d818305a7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve -8703 verbose lock using /home/ruanyf/.tnpm/_locks/expand-range-05d02f12f4c3112f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -8704 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow is being purged from base /home/ruanyf/npm-global -8705 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow -8706 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive is being purged from base /home/ruanyf/npm-global -8707 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive -8708 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket -8709 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer -8710 silly gunzTarPerm extractEntry wrappy.js -8711 silly install write writing repeat-element 1.1.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element -8712 silly install write writing preserve 0.2.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve -8713 silly install write writing expand-range 1.8.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -8714 verbose tar unpack /home/ruanyf/.tnpm/is-equal-shallow/0.1.3/package.tgz -8715 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow -8716 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow is being purged -8717 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow -8718 verbose tar unpack /home/ruanyf/.tnpm/is-primitive/2.0.0/package.tgz -8719 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive -8720 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive is being purged -8721 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive -8722 verbose lock using /home/ruanyf/.tnpm/_locks/inherits-5a7dd83756dcfc24.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits -8723 verbose lock using /home/ruanyf/.tnpm/_locks/core-util-is-58fb48764c4f40d2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -8724 verbose lock using /home/ruanyf/.tnpm/_locks/isarray-a517a962b3b79674.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray -8725 verbose lock using /home/ruanyf/.tnpm/_locks/string-decoder-002153e92ecbe9ee.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -8726 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile is being purged from base /home/ruanyf/npm-global -8727 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile -8728 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base is being purged from base /home/ruanyf/npm-global -8729 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base -8730 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable is being purged from base /home/ruanyf/npm-global -8731 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable -8732 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten is being purged from base /home/ruanyf/npm-global -8733 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten -8734 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own is being purged from base /home/ruanyf/npm-global -8735 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -8736 silly gunzTarPerm modes [ '755', '644' ] -8737 silly gunzTarPerm modes [ '755', '644' ] -8738 silly install write writing inherits 2.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits -8739 silly install write writing core-util-is 1.0.2 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -8740 silly install write writing isarray 0.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray -8741 silly install write writing string_decoder 0.10.31 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -8742 verbose tar unpack /home/ruanyf/.tnpm/is-dotfile/1.0.2/package.tgz -8743 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile -8744 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile is being purged -8745 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile -8746 verbose tar unpack /home/ruanyf/.tnpm/glob-base/0.3.0/package.tgz -8747 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base -8748 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base is being purged -8749 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base -8750 verbose tar unpack /home/ruanyf/.tnpm/is-extendable/0.1.1/package.tgz -8751 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable -8752 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable is being purged -8753 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable -8754 verbose tar unpack /home/ruanyf/.tnpm/arr-flatten/1.0.1/package.tgz -8755 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten -8756 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten is being purged -8757 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten -8758 verbose tar unpack /home/ruanyf/.tnpm/for-own/0.1.4/package.tgz -8759 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -8760 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own is being purged -8761 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -8762 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket is being purged from base /home/ruanyf/npm-global -8763 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket -8764 silly gunzTarPerm modes [ '755', '644' ] -8765 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer is being purged from base /home/ruanyf/npm-global -8766 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer -8767 silly gunzTarPerm modes [ '755', '644' ] -8768 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob/package.json -8769 silly gunzTarPerm modes [ '755', '644' ] -8770 silly gunzTarPerm modes [ '755', '644' ] -8771 silly gunzTarPerm modes [ '755', '644' ] -8772 silly gunzTarPerm extractEntry package.json -8773 verbose tar unpack /home/ruanyf/.tnpm/is-posix-bracket/0.1.1/package.tgz -8774 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket -8775 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket is being purged -8776 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket -8777 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy -8778 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable/package.json -8779 verbose tar unpack /home/ruanyf/.tnpm/is-buffer/1.1.3/package.tgz -8780 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer -8781 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer is being purged -8782 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer -8783 silly cache add args [ 'jsonify@~0.0.0', null ] -8784 verbose cache add spec jsonify@~0.0.0 -8785 silly cache add parsed spec Result { -8785 silly cache add raw: 'jsonify@~0.0.0', -8785 silly cache add scope: null, -8785 silly cache add name: 'jsonify', -8785 silly cache add rawSpec: '~0.0.0', -8785 silly cache add spec: '>=0.0.0 <0.1.0', -8785 silly cache add type: 'range' } -8786 silly addNamed jsonify@>=0.0.0 <0.1.0 -8787 verbose addNamed ">=0.0.0 <0.1.0" is a valid semver range for jsonify -8788 silly addNameRange { name: 'jsonify', range: '>=0.0.0 <0.1.0', hasData: false } -8789 silly mapToRegistry name jsonify -8790 silly mapToRegistry using default registry -8791 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -8792 silly mapToRegistry data Result { -8792 silly mapToRegistry raw: 'jsonify', -8792 silly mapToRegistry scope: null, -8792 silly mapToRegistry name: 'jsonify', -8792 silly mapToRegistry rawSpec: '', -8792 silly mapToRegistry spec: 'latest', -8792 silly mapToRegistry type: 'tag' } -8793 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/jsonify -8794 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/jsonify not in flight; fetching -8795 silly gunzTarPerm modes [ '755', '644' ] -8796 silly gunzTarPerm modes [ '755', '644' ] -8797 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element -8798 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve -8799 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -8800 silly gunzTarPerm extractEntry forEachRight.js -8801 silly gunzTarPerm extractEntry _stringSize.js -8802 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -8803 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray -8804 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits -8805 silly gunzTarPerm extractEntry package.json -8806 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy is being purged from base /home/ruanyf/npm-global -8807 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy -8808 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -8809 silly gunzTarPerm extractEntry ts/core/internal/bindcallback.ts -8810 silly gunzTarPerm modified mode [ 'ts/core/internal/bindcallback.ts', 384, 420 ] -8811 silly gunzTarPerm extractEntry ts/core/internal/errors.ts -8812 silly gunzTarPerm modified mode [ 'ts/core/internal/errors.ts', 384, 420 ] -8813 info preinstall is-extglob@1.0.0 -8814 silly gunzTarPerm extractEntry .npmignore -8815 silly gunzTarPerm extractEntry README.md -8816 silly gunzTarPerm extractEntry package.json -8817 verbose tar unpack /home/ruanyf/.tnpm/wrappy/1.0.2/package.tgz -8818 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy -8819 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy is being purged -8820 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy -8821 info preinstall is-extendable@0.1.1 -8822 silly gunzTarPerm extractEntry package.json -8823 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element is being purged from base /home/ruanyf/npm-global -8824 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element -8825 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve is being purged from base /home/ruanyf/npm-global -8826 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve -8827 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range is being purged from base /home/ruanyf/npm-global -8828 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -8829 silly gunzTarPerm extractEntry package.json -8830 silly gunzTarPerm extractEntry package.json -8831 silly gunzTarPerm modified mode [ 'package.json', 448, 484 ] -8832 silly gunzTarPerm modes [ '755', '644' ] -8833 silly gunzTarPerm extractEntry package.json -8834 verbose tar unpack /home/ruanyf/.tnpm/repeat-element/1.1.2/package.tgz -8835 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element -8836 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element is being purged -8837 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element -8838 verbose tar unpack /home/ruanyf/.tnpm/preserve/0.2.0/package.tgz -8839 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve -8840 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve is being purged -8841 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve -8842 verbose tar unpack /home/ruanyf/.tnpm/expand-range/1.8.2/package.tgz -8843 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -8844 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range is being purged -8845 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -8846 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob/package.json -8847 silly gunzTarPerm extractEntry package.json -8848 verbose request uri http://registry.npm.alibaba-inc.com/jsonify -8849 verbose request no auth needed -8850 info attempt registry request try #1 at 上午9:12:31 -8851 verbose etag "5bd-/uvMSpkBpJZr/I3dulbZog" -8852 http request GET http://registry.npm.alibaba-inc.com/jsonify -8853 silly gunzTarPerm extractEntry package.json -8854 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is is being purged from base /home/ruanyf/npm-global -8855 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -8856 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray is being purged from base /home/ruanyf/npm-global -8857 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray -8858 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits is being purged from base /home/ruanyf/npm-global -8859 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits -8860 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder is being purged from base /home/ruanyf/npm-global -8861 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -8862 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable/package.json -8863 silly gunzTarPerm extractEntry package.json -8864 silly gunzTarPerm modes [ '755', '644' ] -8865 silly gunzTarPerm modes [ '755', '644' ] -8866 silly gunzTarPerm modes [ '755', '644' ] -8867 verbose tar unpack /home/ruanyf/.tnpm/core-util-is/1.0.2/package.tgz -8868 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -8869 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is is being purged -8870 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -8871 verbose tar unpack /home/ruanyf/.tnpm/isarray/0.0.1/package.tgz -8872 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray -8873 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray is being purged -8874 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray -8875 verbose tar unpack /home/ruanyf/.tnpm/inherits/2.0.1/package.tgz -8876 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits -8877 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits is being purged -8878 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits -8879 silly gunzTarPerm extractEntry README.md -8880 silly gunzTarPerm extractEntry LICENSE -8881 verbose tar unpack /home/ruanyf/.tnpm/string_decoder/0.10.31/package.tgz -8882 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -8883 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder is being purged -8884 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -8885 silly gunzTarPerm modes [ '755', '644' ] -8886 silly gunzTarPerm modes [ '755', '644' ] -8887 silly gunzTarPerm modes [ '755', '644' ] -8888 silly gunzTarPerm extractEntry README.md -8889 silly gunzTarPerm extractEntry LICENSE -8890 silly gunzTarPerm modes [ '755', '644' ] -8891 silly gunzTarPerm extractEntry README.md -8892 silly gunzTarPerm extractEntry LICENSE -8893 silly gunzTarPerm extractEntry README.md -8894 silly gunzTarPerm extractEntry LICENSE -8895 silly gunzTarPerm extractEntry README.md -8896 silly gunzTarPerm modified mode [ 'README.md', 448, 484 ] -8897 silly gunzTarPerm extractEntry LICENSE -8898 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] -8899 silly gunzTarPerm extractEntry README.md -8900 silly gunzTarPerm extractEntry LICENSE -8901 silly gunzTarPerm extractEntry README.md -8902 silly gunzTarPerm extractEntry LICENSE -8903 silly gunzTarPerm extractEntry README.md -8904 silly gunzTarPerm extractEntry LICENSE -8905 silly gunzTarPerm extractEntry package.json -8906 silly gunzTarPerm extractEntry README.md -8907 silly gunzTarPerm extractEntry LICENSE -8908 silly gunzTarPerm extractEntry forIn.js -8909 silly gunzTarPerm extractEntry _stackSet.js -8910 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob/package.json -8911 silly gunzTarPerm extractEntry package.json -8912 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable/package.json -8913 silly gunzTarPerm extractEntry ts/core/internal/isequal.ts -8914 silly gunzTarPerm modified mode [ 'ts/core/internal/isequal.ts', 384, 420 ] -8915 silly gunzTarPerm extractEntry ts/core/internal/priorityqueue.ts -8916 silly gunzTarPerm modified mode [ 'ts/core/internal/priorityqueue.ts', 384, 420 ] -8917 silly gunzTarPerm extractEntry package.json -8918 silly gunzTarPerm extractEntry package.json -8919 silly gunzTarPerm extractEntry example.js -8920 silly gunzTarPerm extractEntry index.js -8921 silly gunzTarPerm extractEntry package.json -8922 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy/package.json -8923 silly gunzTarPerm extractEntry README.md -8924 silly gunzTarPerm extractEntry LICENSE -8925 silly gunzTarPerm extractEntry package.json -8926 silly gunzTarPerm extractEntry package.json -8927 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ] -8928 silly gunzTarPerm extractEntry package.json -8929 silly gunzTarPerm extractEntry README.md -8930 silly gunzTarPerm extractEntry LICENSE -8931 silly gunzTarPerm extractEntry index.js -8932 silly gunzTarPerm extractEntry README.md -8933 silly gunzTarPerm extractEntry LICENSE -8934 silly gunzTarPerm extractEntry .npmignore -8935 silly gunzTarPerm extractEntry README.md -8936 silly gunzTarPerm extractEntry index.js -8937 silly gunzTarPerm extractEntry README.md -8938 silly gunzTarPerm extractEntry LICENSE -8939 silly gunzTarPerm extractEntry index.js -8940 info preinstall wrappy@1.0.2 -8941 silly install resolved [] -8942 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob -8943 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob -8944 silly gunzTarPerm extractEntry index.js -8945 silly gunzTarPerm extractEntry index.js -8946 silly gunzTarPerm modified mode [ 'index.js', 448, 484 ] -8947 silly gunzTarPerm extractEntry README.md -8948 silly gunzTarPerm extractEntry LICENSE -8949 silly gunzTarPerm extractEntry .npmignore -8950 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ] -8951 silly gunzTarPerm extractEntry README.md -8952 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ] -8953 silly install resolved [] -8954 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable -8955 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable -8956 silly gunzTarPerm extractEntry README.md -8957 silly gunzTarPerm extractEntry index.js -8958 silly gunzTarPerm extractEntry index.js -8959 silly gunzTarPerm extractEntry index.js -8960 silly gunzTarPerm extractEntry index.js -8961 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy/package.json -8962 silly gunzTarPerm extractEntry index.js -8963 silly gunzTarPerm extractEntry .travis.yml -8964 http 304 http://registry.npm.alibaba-inc.com/jsonify -8965 verbose headers { server: 'Tengine', -8965 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -8965 verbose headers connection: 'keep-alive', -8965 verbose headers etag: '"5bd-/uvMSpkBpJZr/I3dulbZog"', -8965 verbose headers 'x-readtime': '14' } -8966 silly get cb [ 304, -8966 silly get { server: 'Tengine', -8966 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -8966 silly get connection: 'keep-alive', -8966 silly get etag: '"5bd-/uvMSpkBpJZr/I3dulbZog"', -8966 silly get 'x-readtime': '14' } ] -8967 verbose etag http://registry.npm.alibaba-inc.com/jsonify from cache -8968 verbose get saving jsonify to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/jsonify/.cache.json -8969 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -8970 silly gunzTarPerm extractEntry forInRight.js -8971 silly gunzTarPerm extractEntry _stackHas.js -8972 silly gunzTarPerm extractEntry ts/core/internal/util.ts -8973 silly gunzTarPerm modified mode [ 'ts/core/internal/util.ts', 384, 420 ] -8974 silly gunzTarPerm extractEntry ts/core/abstractobserver.ts -8975 silly gunzTarPerm modified mode [ 'ts/core/abstractobserver.ts', 384, 420 ] -8976 silly gunzTarPerm extractEntry ts/core/anonymousobserver.ts -8977 silly gunzTarPerm modified mode [ 'ts/core/anonymousobserver.ts', 384, 420 ] -8978 info linkStuff is-extglob@1.0.0 -8979 silly linkStuff is-extglob@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules as its parent node_modules -8980 silly linkStuff is-extglob@1.0.0 is part of a global install -8981 silly linkStuff is-extglob@1.0.0 is installed into a global node_modules -8982 silly gunzTarPerm extractEntry wrappy.js -8983 info linkStuff is-extendable@0.1.1 -8984 silly linkStuff is-extendable@0.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules as its parent node_modules -8985 silly linkStuff is-extendable@0.1.1 is part of a global install -8986 silly linkStuff is-extendable@0.1.1 is installed into a global node_modules -8987 silly gunzTarPerm extractEntry ts/core/backpressure/controlled.ts -8988 silly gunzTarPerm modified mode [ 'ts/core/backpressure/controlled.ts', 384, 420 ] -8989 silly gunzTarPerm extractEntry index.js -8990 verbose linkBins is-extglob@1.0.0 -8991 verbose linkMans is-extglob@1.0.0 -8992 verbose rebuildBundles is-extglob@1.0.0 -8993 silly gunzTarPerm extractEntry index.js -8994 silly gunzTarPerm extractEntry LICENSE -8995 silly gunzTarPerm extractEntry index.js -8996 silly gunzTarPerm extractEntry test.js -8997 silly gunzTarPerm extractEntry float.patch -8998 silly gunzTarPerm extractEntry inherits.js -8999 silly gunzTarPerm extractEntry inherits_browser.js -9000 verbose linkBins is-extendable@0.1.1 -9001 verbose linkMans is-extendable@0.1.1 -9002 verbose rebuildBundles is-extendable@0.1.1 -9003 info install is-extglob@1.0.0 -9004 silly gunzTarPerm extractEntry LICENSE -9005 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ] -9006 silly gunzTarPerm extractEntry index.js -9007 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ] -9008 info install is-extendable@0.1.1 -9009 silly gunzTarPerm extractEntry build/build.js -9010 silly gunzTarPerm extractEntry component.json -9011 silly addNameRange number 2 { name: 'jsonify', range: '>=0.0.0 <0.1.0', hasData: true } -9012 silly addNameRange versions [ 'jsonify', [ '0.0.0' ] ] -9013 silly addNamed jsonify@0.0.0 -9014 verbose addNamed "0.0.0" is a plain semver version for jsonify -9015 silly gunzTarPerm extractEntry .zuul.yml -9016 silly gunzTarPerm extractEntry test/basic.js -9017 silly gunzTarPerm extractEntry forOwn.js -9018 silly gunzTarPerm extractEntry _stackGet.js -9019 info postinstall is-extglob@1.0.0 -9020 info postinstall is-extendable@0.1.1 -9021 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy/package.json -9022 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json -9023 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-extglob-098a2ff027ee316f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob -9024 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -9025 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -9026 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist/package.json -9027 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-extendable-8a9f54846740efdd.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow/node_modules/is-extendable -9028 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -9029 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -9030 silly gunzTarPerm extractEntry ts/core/backpressure/pausable.ts -9031 silly gunzTarPerm modified mode [ 'ts/core/backpressure/pausable.ts', 384, 420 ] -9032 silly gunzTarPerm extractEntry ts/core/backpressure/pausablebuffered.ts -9033 silly gunzTarPerm modified mode [ 'ts/core/backpressure/pausablebuffered.ts', 384, 420 ] -9034 silly cache afterAdd jsonify@0.0.0 -9035 verbose afterAdd /home/ruanyf/.tnpm/jsonify/0.0.0/package/package.json not in flight; writing -9036 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -9037 silly gunzTarPerm extractEntry lib/util.js -9038 silly gunzTarPerm extractEntry test.js -9039 silly gunzTarPerm extractEntry .gitattributes -9040 silly gunzTarPerm extractEntry test.js -9041 info preinstall wrappy@1.0.2 -9042 info preinstall minimist@0.0.8 -9043 info linkStuff is-glob@2.0.1 -9044 silly linkStuff is-glob@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules as its parent node_modules -9045 silly linkStuff is-glob@2.0.1 is part of a global install -9046 silly linkStuff is-glob@2.0.1 is installed into a global node_modules -9047 info linkStuff extend-shallow@2.0.1 -9048 silly linkStuff extend-shallow@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules as its parent node_modules -9049 silly linkStuff extend-shallow@2.0.1 is part of a global install -9050 silly linkStuff extend-shallow@2.0.1 is installed into a global node_modules -9051 silly gunzTarPerm extractEntry forOwnRight.js -9052 silly gunzTarPerm extractEntry _stackDelete.js -9053 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json -9054 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist/package.json -9055 verbose afterAdd /home/ruanyf/.tnpm/jsonify/0.0.0/package/package.json written -9056 silly install resolved [ { name: 'jsonify', -9056 silly install resolved version: '0.0.0', -9056 silly install resolved description: 'JSON without touching any globals', -9056 silly install resolved main: 'index.js', -9056 silly install resolved directories: { lib: '.', test: 'test' }, -9056 silly install resolved devDependencies: { tap: '0.0.x', garbage: '0.0.x' }, -9056 silly install resolved scripts: { test: 'tap test' }, -9056 silly install resolved repository: { type: 'git', url: 'git://github.com/substack/jsonify.git' }, -9056 silly install resolved keywords: [ 'json', 'browser' ], -9056 silly install resolved author: { name: 'Douglas Crockford', url: 'http://crockford.com/' }, -9056 silly install resolved license: 'Public Domain', -9056 silly install resolved _id: 'jsonify@0.0.0', -9056 silly install resolved dependencies: {}, -9056 silly install resolved engines: { node: '*' }, -9056 silly install resolved _engineSupported: true, -9056 silly install resolved _npmVersion: '1.0.10', -9056 silly install resolved _nodeVersion: 'v0.5.0-pre', -9056 silly install resolved _defaultsLoaded: true, -9056 silly install resolved dist: -9056 silly install resolved { shasum: '2c74b6ee41d93ca51b7b5aaee8f503631d252a73', -9056 silly install resolved size: 4376, -9056 silly install resolved noattachment: false, -9056 silly install resolved key: '/jsonify/-/jsonify-0.0.0.tgz', -9056 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/jsonify/download/jsonify-0.0.0.tgz' }, -9056 silly install resolved maintainers: [ [Object] ], -9056 silly install resolved publish_time: 1313929344348, -9056 silly install resolved _cnpm_publish_time: 1313929344348, -9056 silly install resolved _shasum: '2c74b6ee41d93ca51b7b5aaee8f503631d252a73', -9056 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/jsonify/download/jsonify-0.0.0.tgz', -9056 silly install resolved _from: 'jsonify@>=0.0.0 <0.1.0', -9056 silly install resolved bugs: { url: 'https://github.com/substack/jsonify/issues' }, -9056 silly install resolved readme: 'ERROR: No README data found!', -9056 silly install resolved homepage: 'https://github.com/substack/jsonify#readme' } ] -9057 info install jsonify@0.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -9058 info installOne jsonify@0.0.0 -9059 verbose installOne of jsonify to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify not in flight; installing -9060 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -9061 verbose linkBins is-glob@2.0.1 -9062 verbose linkMans is-glob@2.0.1 -9063 verbose rebuildBundles is-glob@2.0.1 -9064 verbose linkBins extend-shallow@2.0.1 -9065 verbose linkMans extend-shallow@2.0.1 -9066 verbose rebuildBundles extend-shallow@2.0.1 -9067 verbose rebuildBundles [ 'is-extglob' ] -9068 info install is-glob@2.0.1 -9069 verbose lock using /home/ruanyf/.tnpm/_locks/jsonify-bc3e1f8c14080ee6.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify -9070 verbose rebuildBundles [ 'is-extendable' ] -9071 info install extend-shallow@2.0.1 -9072 silly install resolved [] -9073 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy -9074 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy -9075 silly gunzTarPerm extractEntry ts/core/backpressure/pauser.ts -9076 silly gunzTarPerm modified mode [ 'ts/core/backpressure/pauser.ts', 384, 420 ] -9077 silly gunzTarPerm extractEntry ts/core/backpressure/stopandwait.ts -9078 silly gunzTarPerm modified mode [ 'ts/core/backpressure/stopandwait.ts', 384, 420 ] -9079 silly install write writing jsonify 0.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify -9080 info postinstall is-glob@2.0.1 -9081 info postinstall extend-shallow@2.0.1 -9082 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json -9083 silly gunzTarPerm extractEntry .verb.md -9084 silly gunzTarPerm extractEntry .travis.yml -9085 silly gunzTarPerm extractEntry zipObjectDeep.js -9086 silly gunzTarPerm extractEntry _stackClear.js -9087 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-glob-28c6371c3d64b787.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent/node_modules/is-glob -9088 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -9089 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -9090 verbose unlock done using /home/ruanyf/.tnpm/_locks/extend-shallow-c1525cdc47b1c1fa.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob/node_modules/extend-shallow -9091 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -9092 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -9093 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify -9094 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist/package.json -9095 silly install resolved [] -9096 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy -9097 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy -9098 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify is being purged from base /home/ruanyf/npm-global -9099 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify -9100 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive/package.json -9101 silly gunzTarPerm extractEntry ts/core/backpressure/windowed.ts -9102 silly gunzTarPerm modified mode [ 'ts/core/backpressure/windowed.ts', 384, 420 ] -9103 silly gunzTarPerm extractEntry ts/core/checkedobserver.ts -9104 silly gunzTarPerm modified mode [ 'ts/core/checkedobserver.ts', 384, 420 ] -9105 silly gunzTarPerm extractEntry ts/core/concurrency/scheduleperiodicrecursive.ts -9106 silly gunzTarPerm modified mode [ 'ts/core/concurrency/scheduleperiodicrecursive.ts', 384, 420 ] -9107 info linkStuff glob-parent@2.0.0 -9108 silly linkStuff glob-parent@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules -9109 silly linkStuff glob-parent@2.0.0 is part of a global install -9110 silly linkStuff glob-parent@2.0.0 is installed into a global node_modules -9111 verbose tar unpack /home/ruanyf/.tnpm/jsonify/0.0.0/package.tgz -9112 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify -9113 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify is being purged -9114 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify -9115 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow/package.json -9116 info linkStuff to-absolute-glob@0.1.1 -9117 silly linkStuff to-absolute-glob@0.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules -9118 silly linkStuff to-absolute-glob@0.1.1 is part of a global install -9119 silly linkStuff to-absolute-glob@0.1.1 is installed into a global node_modules -9120 info linkStuff wrappy@1.0.2 -9121 silly linkStuff wrappy@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules as its parent node_modules -9122 silly linkStuff wrappy@1.0.2 is part of a global install -9123 silly linkStuff wrappy@1.0.2 is installed into a global node_modules -9124 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile/package.json -9125 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable/package.json -9126 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten/package.json -9127 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/package.json -9128 silly gunzTarPerm modes [ '755', '644' ] -9129 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base/package.json -9130 silly gunzTarPerm extractEntry ts/core/concurrency/currentthreadscheduler.ts -9131 silly gunzTarPerm modified mode [ 'ts/core/concurrency/currentthreadscheduler.ts', 384, 420 ] -9132 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket/package.json -9133 silly gunzTarPerm extractEntry .jshintrc -9134 verbose linkBins glob-parent@2.0.0 -9135 verbose linkMans glob-parent@2.0.0 -9136 verbose rebuildBundles glob-parent@2.0.0 -9137 info preinstall is-primitive@2.0.0 -9138 verbose linkBins to-absolute-glob@0.1.1 -9139 verbose linkMans to-absolute-glob@0.1.1 -9140 verbose rebuildBundles to-absolute-glob@0.1.1 -9141 verbose linkBins wrappy@1.0.2 -9142 verbose linkMans wrappy@1.0.2 -9143 verbose rebuildBundles wrappy@1.0.2 -9144 silly gunzTarPerm extractEntry fp.js -9145 silly gunzTarPerm extractEntry _setToPairs.js -9146 info linkStuff wrappy@1.0.2 -9147 silly linkStuff wrappy@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules as its parent node_modules -9148 silly linkStuff wrappy@1.0.2 is part of a global install -9149 silly linkStuff wrappy@1.0.2 is installed into a global node_modules -9150 verbose rebuildBundles [ 'is-glob' ] -9151 info install glob-parent@2.0.0 -9152 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json -9153 info preinstall is-equal-shallow@0.1.3 -9154 verbose rebuildBundles [ 'extend-shallow' ] -9155 info install to-absolute-glob@0.1.1 -9156 info install wrappy@1.0.2 -9157 info preinstall is-dotfile@1.0.2 -9158 info preinstall is-extendable@0.1.1 -9159 info preinstall arr-flatten@1.0.1 -9160 info preinstall for-own@0.1.4 -9161 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive/package.json -9162 info preinstall glob-base@0.3.0 -9163 info postinstall glob-parent@2.0.0 -9164 silly gunzTarPerm extractEntry index.js -9165 info preinstall is-posix-bracket@0.1.1 -9166 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow/package.json -9167 info postinstall to-absolute-glob@0.1.1 -9168 info postinstall wrappy@1.0.2 -9169 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile/package.json -9170 verbose linkBins wrappy@1.0.2 -9171 verbose linkMans wrappy@1.0.2 -9172 verbose rebuildBundles wrappy@1.0.2 -9173 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable/package.json -9174 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten/package.json -9175 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/package.json -9176 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy/package.json -9177 info install wrappy@1.0.2 -9178 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base/package.json -9179 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element/package.json -9180 info preinstall brace-expansion@1.1.4 -9181 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket/package.json -9182 silly install resolved [] -9183 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist -9184 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist -9185 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/package.json -9186 verbose unlock done using /home/ruanyf/.tnpm/_locks/glob-parent-de91b99c284b0f17.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob-parent -9187 verbose unlock done using /home/ruanyf/.tnpm/_locks/to-absolute-glob-a3e8296dd7adbf52.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/to-absolute-glob -9188 verbose unlock done using /home/ruanyf/.tnpm/_locks/wrappy-16d4012a4a7813b9.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy -9189 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -9190 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -9191 info postinstall wrappy@1.0.2 -9192 silly gunzTarPerm extractEntry package.json -9193 silly gunzTarPerm extractEntry README.markdown -9194 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json -9195 silly gunzTarPerm extractEntry ts/core/concurrency/historicalscheduler.ts -9196 silly gunzTarPerm modified mode [ 'ts/core/concurrency/historicalscheduler.ts', 384, 420 ] -9197 silly gunzTarPerm extractEntry ts/core/concurrency/immediatescheduler.ts -9198 silly gunzTarPerm modified mode [ 'ts/core/concurrency/immediatescheduler.ts', 384, 420 ] -9199 silly gunzTarPerm extractEntry ts/core/concurrency/scheduleditem.ts -9200 silly gunzTarPerm modified mode [ 'ts/core/concurrency/scheduleditem.ts', 384, 420 ] -9201 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive/package.json -9202 info preinstall wrappy@1.0.2 -9203 info preinstall repeat-element@1.1.2 -9204 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow/package.json -9205 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile/package.json -9206 silly gunzTarPerm extractEntry ts/core/concurrency/defaultscheduler.ts -9207 silly gunzTarPerm extractEntry fromPairs.js -9208 silly gunzTarPerm extractEntry _setToArray.js -9209 verbose unlock done using /home/ruanyf/.tnpm/_locks/wrappy-b27925cc34dcc2fb.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy -9210 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -9211 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -9212 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable/package.json -9213 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten/package.json -9214 silly prepareForInstallMany adding for-in@^0.1.5 from for-own dependencies -9215 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/package.json -9216 info preinstall expand-range@1.8.2 -9217 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy/package.json -9218 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base/package.json -9219 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element/package.json -9220 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket/package.json -9221 info linkStuff once@1.3.3 -9222 silly linkStuff once@1.3.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules as its parent node_modules -9223 silly linkStuff once@1.3.3 is part of a global install -9224 silly linkStuff once@1.3.3 is installed into a global node_modules -9225 silly gunzTarPerm extractEntry ts/core/concurrency/scheduler.periodic.ts -9226 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/package.json -9227 silly prepareForInstallMany adding balanced-match@^0.4.1 from brace-expansion dependencies -9228 silly prepareForInstallMany adding concat-map@0.0.1 from brace-expansion dependencies -9229 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json -9230 silly gunzTarPerm extractEntry ts/core/concurrency/scheduler.recursive.ts -9231 silly install resolved [] -9232 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive -9233 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive -9234 verbose linkBins once@1.3.3 -9235 verbose linkMans once@1.3.3 -9236 verbose rebuildBundles once@1.3.3 -9237 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json -9238 silly gunzTarPerm extractEntry test/stringify.js -9239 silly gunzTarPerm extractEntry test/parse.js -9240 silly install resolved [] -9241 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow -9242 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow -9243 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json -9244 verbose rebuildBundles [ 'wrappy' ] -9245 info install once@1.3.3 -9246 silly install resolved [] -9247 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile -9248 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile -9249 silly install resolved [] -9250 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable -9251 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable -9252 silly install resolved [] -9253 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten -9254 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten -9255 info linkStuff minimist@0.0.8 -9256 silly linkStuff minimist@0.0.8 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules as its parent node_modules -9257 silly linkStuff minimist@0.0.8 is part of a global install -9258 silly linkStuff minimist@0.0.8 is installed into a global node_modules -9259 silly install resolved [] -9260 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base -9261 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base -9262 silly cache add args [ 'for-in@^0.1.5', null ] -9263 verbose cache add spec for-in@^0.1.5 -9264 silly cache add parsed spec Result { -9264 silly cache add raw: 'for-in@^0.1.5', -9264 silly cache add scope: null, -9264 silly cache add name: 'for-in', -9264 silly cache add rawSpec: '^0.1.5', -9264 silly cache add spec: '>=0.1.5 <0.2.0', -9264 silly cache add type: 'range' } -9265 silly addNamed for-in@>=0.1.5 <0.2.0 -9266 verbose addNamed ">=0.1.5 <0.2.0" is a valid semver range for for-in -9267 silly addNameRange { name: 'for-in', range: '>=0.1.5 <0.2.0', hasData: false } -9268 silly mapToRegistry name for-in -9269 silly mapToRegistry using default registry -9270 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -9271 silly mapToRegistry data Result { -9271 silly mapToRegistry raw: 'for-in', -9271 silly mapToRegistry scope: null, -9271 silly mapToRegistry name: 'for-in', -9271 silly mapToRegistry rawSpec: '', -9271 silly mapToRegistry spec: 'latest', -9271 silly mapToRegistry type: 'tag' } -9272 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/for-in -9273 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/for-in not in flight; fetching -9274 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element/package.json -9275 silly install resolved [] -9276 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket -9277 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket -9278 info postinstall once@1.3.3 -9279 silly gunzTarPerm extractEntry function.js -9280 silly gunzTarPerm extractEntry _setData.js -9281 silly prepareForInstallMany adding fill-range@^2.1.0 from expand-range dependencies -9282 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/package.json -9283 info preinstall string_decoder@0.10.31 -9284 verbose linkBins minimist@0.0.8 -9285 verbose linkMans minimist@0.0.8 -9286 verbose rebuildBundles minimist@0.0.8 -9287 info linkStuff is-primitive@2.0.0 -9288 silly linkStuff is-primitive@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules as its parent node_modules -9289 silly linkStuff is-primitive@2.0.0 is part of a global install -9290 silly linkStuff is-primitive@2.0.0 is installed into a global node_modules -9291 info preinstall isarray@0.0.1 -9292 info linkStuff inflight@1.0.5 -9293 silly linkStuff inflight@1.0.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules -9294 silly linkStuff inflight@1.0.5 is part of a global install -9295 silly linkStuff inflight@1.0.5 is installed into a global node_modules -9296 info install minimist@0.0.8 -9297 silly cache add args [ 'balanced-match@^0.4.1', null ] -9298 verbose cache add spec balanced-match@^0.4.1 -9299 silly cache add args [ 'concat-map@0.0.1', null ] -9300 verbose cache add spec concat-map@0.0.1 -9301 silly cache add parsed spec Result { -9301 silly cache add raw: 'balanced-match@^0.4.1', -9301 silly cache add scope: null, -9301 silly cache add name: 'balanced-match', -9301 silly cache add rawSpec: '^0.4.1', -9301 silly cache add spec: '>=0.4.1 <0.5.0', -9301 silly cache add type: 'range' } -9302 silly addNamed balanced-match@>=0.4.1 <0.5.0 -9303 verbose addNamed ">=0.4.1 <0.5.0" is a valid semver range for balanced-match -9304 silly addNameRange { name: 'balanced-match', -9304 silly addNameRange range: '>=0.4.1 <0.5.0', -9304 silly addNameRange hasData: false } -9305 silly mapToRegistry name balanced-match -9306 silly mapToRegistry using default registry -9307 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -9308 silly mapToRegistry data Result { -9308 silly mapToRegistry raw: 'balanced-match', -9308 silly mapToRegistry scope: null, -9308 silly mapToRegistry name: 'balanced-match', -9308 silly mapToRegistry rawSpec: '', -9308 silly mapToRegistry spec: 'latest', -9308 silly mapToRegistry type: 'tag' } -9309 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/balanced-match -9310 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/balanced-match not in flight; fetching -9311 silly cache add parsed spec Result { -9311 silly cache add raw: 'concat-map@0.0.1', -9311 silly cache add scope: null, -9311 silly cache add name: 'concat-map', -9311 silly cache add rawSpec: '0.0.1', -9311 silly cache add spec: '0.0.1', -9311 silly cache add type: 'version' } -9312 silly addNamed concat-map@0.0.1 -9313 verbose addNamed "0.0.1" is a plain semver version for concat-map -9314 silly mapToRegistry name concat-map -9315 silly mapToRegistry using default registry -9316 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -9317 silly mapToRegistry data Result { -9317 silly mapToRegistry raw: 'concat-map', -9317 silly mapToRegistry scope: null, -9317 silly mapToRegistry name: 'concat-map', -9317 silly mapToRegistry rawSpec: '', -9317 silly mapToRegistry spec: 'latest', -9317 silly mapToRegistry type: 'tag' } -9318 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/concat-map -9319 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/concat-map not in flight; fetching -9320 info linkStuff is-equal-shallow@0.1.3 -9321 silly linkStuff is-equal-shallow@0.1.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules as its parent node_modules -9322 silly linkStuff is-equal-shallow@0.1.3 is part of a global install -9323 silly linkStuff is-equal-shallow@0.1.3 is installed into a global node_modules -9324 verbose unlock done using /home/ruanyf/.tnpm/_locks/once-80d6dab4b7675236.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream/node_modules/once -9325 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -9326 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -9327 info linkStuff is-dotfile@1.0.2 -9328 silly linkStuff is-dotfile@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules as its parent node_modules -9329 silly linkStuff is-dotfile@1.0.2 is part of a global install -9330 silly linkStuff is-dotfile@1.0.2 is installed into a global node_modules -9331 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json -9332 info linkStuff is-extendable@0.1.1 -9333 silly linkStuff is-extendable@0.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules as its parent node_modules -9334 silly linkStuff is-extendable@0.1.1 is part of a global install -9335 silly linkStuff is-extendable@0.1.1 is installed into a global node_modules -9336 info linkStuff arr-flatten@1.0.1 -9337 silly linkStuff arr-flatten@1.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules as its parent node_modules -9338 silly linkStuff arr-flatten@1.0.1 is part of a global install -9339 silly linkStuff arr-flatten@1.0.1 is installed into a global node_modules -9340 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json -9341 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy/package.json -9342 info linkStuff glob-base@0.3.0 -9343 silly linkStuff glob-base@0.3.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules as its parent node_modules -9344 silly linkStuff glob-base@0.3.0 is part of a global install -9345 silly linkStuff glob-base@0.3.0 is installed into a global node_modules -9346 info postinstall minimist@0.0.8 -9347 info linkStuff is-posix-bracket@0.1.1 -9348 silly linkStuff is-posix-bracket@0.1.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules as its parent node_modules -9349 silly linkStuff is-posix-bracket@0.1.1 is part of a global install -9350 silly linkStuff is-posix-bracket@0.1.1 is installed into a global node_modules -9351 verbose linkBins is-primitive@2.0.0 -9352 verbose linkMans is-primitive@2.0.0 -9353 verbose rebuildBundles is-primitive@2.0.0 -9354 verbose request uri http://registry.npm.alibaba-inc.com/for-in -9355 verbose request no auth needed -9356 info attempt registry request try #1 at 上午9:12:31 -9357 verbose etag "3075-mefGpdj3Ty4NC4ojN/14YA" -9358 http request GET http://registry.npm.alibaba-inc.com/for-in -9359 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json -9360 verbose linkBins inflight@1.0.5 -9361 verbose linkMans inflight@1.0.5 -9362 verbose rebuildBundles inflight@1.0.5 -9363 silly gunzTarPerm extractEntry ts/core/concurrency/scheduler.ts -9364 silly gunzTarPerm extractEntry ts/core/concurrency/scheduler.wrappers.ts -9365 silly gunzTarPerm extractEntry ts/core/concurrency/virtualtimescheduler.ts -9366 silly install resolved [] -9367 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element -9368 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element -9369 info install is-primitive@2.0.0 -9370 verbose linkBins is-equal-shallow@0.1.3 -9371 verbose linkMans is-equal-shallow@0.1.3 -9372 verbose rebuildBundles is-equal-shallow@0.1.3 -9373 verbose rebuildBundles [ 'wrappy' ] -9374 info install inflight@1.0.5 -9375 verbose linkBins is-dotfile@1.0.2 -9376 verbose linkMans is-dotfile@1.0.2 -9377 verbose rebuildBundles is-dotfile@1.0.2 -9378 verbose linkBins is-extendable@0.1.1 -9379 verbose linkMans is-extendable@0.1.1 -9380 verbose rebuildBundles is-extendable@0.1.1 -9381 verbose linkBins arr-flatten@1.0.1 -9382 verbose linkMans arr-flatten@1.0.1 -9383 verbose rebuildBundles arr-flatten@1.0.1 -9384 silly gunzTarPerm extractEntry lib/stringify.js -9385 silly gunzTarPerm extractEntry lib/parse.js -9386 info install is-equal-shallow@0.1.3 -9387 info install is-dotfile@1.0.2 -9388 info install is-extendable@0.1.1 -9389 info install arr-flatten@1.0.1 -9390 verbose linkBins glob-base@0.3.0 -9391 verbose linkMans glob-base@0.3.0 -9392 verbose rebuildBundles glob-base@0.3.0 -9393 silly gunzTarPerm extractEntry ts/core/disposables/booleandisposable.ts -9394 silly gunzTarPerm modified mode [ 'ts/core/disposables/booleandisposable.ts', 384, 420 ] -9395 verbose unlock done using /home/ruanyf/.tnpm/_locks/minimist-1e6dfe47780040db.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp/node_modules/minimist -9396 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp -9397 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp -9398 verbose request uri http://registry.npm.alibaba-inc.com/balanced-match -9399 verbose request no auth needed -9400 info attempt registry request try #1 at 上午9:12:31 -9401 verbose etag "3fb3-nvdkMbL0GDmUlamx2c8ZNw" -9402 http request GET http://registry.npm.alibaba-inc.com/balanced-match -9403 verbose request uri http://registry.npm.alibaba-inc.com/concat-map -9404 verbose request no auth needed -9405 info attempt registry request try #1 at 上午9:12:31 -9406 verbose etag "1080-/yUNculYgIx1ZYl8DASRag" -9407 http request GET http://registry.npm.alibaba-inc.com/concat-map -9408 verbose linkBins is-posix-bracket@0.1.1 -9409 verbose linkMans is-posix-bracket@0.1.1 -9410 verbose rebuildBundles is-posix-bracket@0.1.1 -9411 info postinstall is-primitive@2.0.0 -9412 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json -9413 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer/package.json -9414 info linkStuff end-of-stream@1.0.0 -9415 silly linkStuff end-of-stream@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules as its parent node_modules -9416 silly linkStuff end-of-stream@1.0.0 is part of a global install -9417 silly linkStuff end-of-stream@1.0.0 is installed into a global node_modules -9418 info postinstall inflight@1.0.5 -9419 info install glob-base@0.3.0 -9420 silly cache add args [ 'fill-range@^2.1.0', null ] -9421 verbose cache add spec fill-range@^2.1.0 -9422 silly cache add parsed spec Result { -9422 silly cache add raw: 'fill-range@^2.1.0', -9422 silly cache add scope: null, -9422 silly cache add name: 'fill-range', -9422 silly cache add rawSpec: '^2.1.0', -9422 silly cache add spec: '>=2.1.0 <3.0.0', -9422 silly cache add type: 'range' } -9423 silly addNamed fill-range@>=2.1.0 <3.0.0 -9424 verbose addNamed ">=2.1.0 <3.0.0" is a valid semver range for fill-range -9425 silly addNameRange { name: 'fill-range', range: '>=2.1.0 <3.0.0', hasData: false } -9426 silly mapToRegistry name fill-range -9427 silly mapToRegistry using default registry -9428 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -9429 silly mapToRegistry data Result { -9429 silly mapToRegistry raw: 'fill-range', -9429 silly mapToRegistry scope: null, -9429 silly mapToRegistry name: 'fill-range', -9429 silly mapToRegistry rawSpec: '', -9429 silly mapToRegistry spec: 'latest', -9429 silly mapToRegistry type: 'tag' } -9430 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/fill-range -9431 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/fill-range not in flight; fetching -9432 info install is-posix-bracket@0.1.1 -9433 info postinstall is-equal-shallow@0.1.3 -9434 info preinstall inherits@2.0.1 -9435 info postinstall is-dotfile@1.0.2 -9436 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json -9437 info postinstall is-extendable@0.1.1 -9438 silly gunzTarPerm extractEntry functions.js -9439 silly gunzTarPerm extractEntry _setCacheHas.js -9440 info postinstall arr-flatten@1.0.1 -9441 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json -9442 info postinstall glob-base@0.3.0 -9443 info linkStuff repeat-element@1.1.2 -9444 silly linkStuff repeat-element@1.1.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules as its parent node_modules -9445 silly linkStuff repeat-element@1.1.2 is part of a global install -9446 silly linkStuff repeat-element@1.1.2 is installed into a global node_modules -9447 info postinstall is-posix-bracket@0.1.1 -9448 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-primitive-91229470b2bab84d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-primitive -9449 verbose linkBins end-of-stream@1.0.0 -9450 verbose linkMans end-of-stream@1.0.0 -9451 verbose rebuildBundles end-of-stream@1.0.0 -9452 verbose unlock done using /home/ruanyf/.tnpm/_locks/inflight-a854246701206d7f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight -9453 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json -9454 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-equal-shallow-b545d286f24ccae2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache/node_modules/is-equal-shallow -9455 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -9456 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -9457 info preinstall core-util-is@1.0.2 -9458 info preinstall is-buffer@1.1.3 -9459 verbose rebuildBundles [ 'once' ] -9460 info install end-of-stream@1.0.0 -9461 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-dotfile-871e3c8783db0ccc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/is-dotfile -9462 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-extendable-dc6cd5e49afbbd3c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/is-extendable -9463 verbose unlock done using /home/ruanyf/.tnpm/_locks/arr-flatten-5843d795098330a6.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff/node_modules/arr-flatten -9464 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -9465 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -9466 verbose unlock done using /home/ruanyf/.tnpm/_locks/glob-base-3cceb05ef8de5584.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob/node_modules/glob-base -9467 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -9468 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -9469 info linkStuff mkdirp@0.5.1 -9470 silly linkStuff mkdirp@0.5.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -9471 silly linkStuff mkdirp@0.5.1 is part of a global install -9472 silly linkStuff mkdirp@0.5.1 is installed into a global node_modules -9473 verbose linkBins repeat-element@1.1.2 -9474 verbose linkMans repeat-element@1.1.2 -9475 verbose rebuildBundles repeat-element@1.1.2 -9476 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-posix-bracket-0e681d581ef83e10.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets/node_modules/is-posix-bracket -9477 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -9478 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -9479 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json -9480 verbose request uri http://registry.npm.alibaba-inc.com/fill-range -9481 verbose request no auth needed -9482 info attempt registry request try #1 at 上午9:12:31 -9483 verbose etag "a99c-d3MH08+FfF+ZyyhzFbLKtg" -9484 http request GET http://registry.npm.alibaba-inc.com/fill-range -9485 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer/package.json -9486 info postinstall end-of-stream@1.0.0 -9487 http 304 http://registry.npm.alibaba-inc.com/for-in -9488 verbose headers { server: 'Tengine', -9488 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -9488 verbose headers connection: 'keep-alive', -9488 verbose headers etag: '"3075-mefGpdj3Ty4NC4ojN/14YA"', -9488 verbose headers 'x-readtime': '22' } -9489 silly get cb [ 304, -9489 silly get { server: 'Tengine', -9489 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -9489 silly get connection: 'keep-alive', -9489 silly get etag: '"3075-mefGpdj3Ty4NC4ojN/14YA"', -9489 silly get 'x-readtime': '22' } ] -9490 verbose etag http://registry.npm.alibaba-inc.com/for-in from cache -9491 verbose get saving for-in to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/for-in/.cache.json -9492 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -9493 info install repeat-element@1.1.2 -9494 silly install resolved [] -9495 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy -9496 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy -9497 silly install resolved [] -9498 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -9499 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -9500 silly install resolved [] -9501 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray -9502 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray -9503 verbose linkBins mkdirp@0.5.1 -9504 verbose link bins [ { mkdirp: 'bin/cmd.js' }, -9504 verbose link bins '/home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/.bin', -9504 verbose link bins false ] -9505 verbose linkMans mkdirp@0.5.1 -9506 verbose rebuildBundles mkdirp@0.5.1 -9507 silly gunzTarPerm extractEntry ts/core/disposables/compositedisposable.ts -9508 silly gunzTarPerm modified mode [ 'ts/core/disposables/compositedisposable.ts', 384, 420 ] -9509 silly gunzTarPerm extractEntry ts/core/disposables/disposable.ts -9510 silly gunzTarPerm modified mode [ 'ts/core/disposables/disposable.ts', 384, 420 ] -9511 silly gunzTarPerm extractEntry ts/core/disposables/refcountdisposable.ts -9512 silly gunzTarPerm modified mode [ 'ts/core/disposables/refcountdisposable.ts', 384, 420 ] -9513 info postinstall repeat-element@1.1.2 -9514 info linkStuff regex-cache@0.4.3 -9515 silly linkStuff regex-cache@0.4.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -9516 silly linkStuff regex-cache@0.4.3 is part of a global install -9517 silly linkStuff regex-cache@0.4.3 is installed into a global node_modules -9518 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json -9519 verbose unlock done using /home/ruanyf/.tnpm/_locks/end-of-stream-202720a5c8d9dbba.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify/node_modules/end-of-stream -9520 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify -9521 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify -9522 http 304 http://registry.npm.alibaba-inc.com/concat-map -9523 verbose headers { server: 'Tengine', -9523 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -9523 verbose headers connection: 'keep-alive', -9523 verbose headers etag: '"1080-/yUNculYgIx1ZYl8DASRag"', -9523 verbose headers 'x-readtime': '17' } -9524 silly get cb [ 304, -9524 silly get { server: 'Tengine', -9524 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -9524 silly get connection: 'keep-alive', -9524 silly get etag: '"1080-/yUNculYgIx1ZYl8DASRag"', -9524 silly get 'x-readtime': '17' } ] -9525 verbose etag http://registry.npm.alibaba-inc.com/concat-map from cache -9526 verbose get saving concat-map to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/concat-map/.cache.json -9527 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -9528 info linkStuff arr-diff@2.0.0 -9529 silly linkStuff arr-diff@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -9530 silly linkStuff arr-diff@2.0.0 is part of a global install -9531 silly linkStuff arr-diff@2.0.0 is installed into a global node_modules -9532 silly gunzTarPerm extractEntry functionsIn.js -9533 silly gunzTarPerm extractEntry _setCacheAdd.js -9534 verbose rebuildBundles [ 'minimist' ] -9535 info linkStuff parse-glob@3.0.4 -9536 silly linkStuff parse-glob@3.0.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -9537 silly linkStuff parse-glob@3.0.4 is part of a global install -9538 silly linkStuff parse-glob@3.0.4 is installed into a global node_modules -9539 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/.bin/mkdirp is being purged -9540 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/.bin/mkdirp -9541 silly gunzTarPerm extractEntry ts/core/es5.ts -9542 silly gunzTarPerm modified mode [ 'ts/core/es5.ts', 384, 420 ] -9543 info linkStuff expand-brackets@0.1.5 -9544 silly linkStuff expand-brackets@0.1.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -9545 silly linkStuff expand-brackets@0.1.5 is part of a global install -9546 silly linkStuff expand-brackets@0.1.5 is installed into a global node_modules -9547 verbose unlock done using /home/ruanyf/.tnpm/_locks/repeat-element-8d83f2b2fa7e54b8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/repeat-element -9548 verbose linkBins regex-cache@0.4.3 -9549 verbose linkMans regex-cache@0.4.3 -9550 verbose rebuildBundles regex-cache@0.4.3 -9551 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json -9552 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer/package.json -9553 info linkStuff string_decoder@0.10.31 -9554 silly linkStuff string_decoder@0.10.31 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -9555 silly linkStuff string_decoder@0.10.31 is part of a global install -9556 silly linkStuff string_decoder@0.10.31 is installed into a global node_modules -9557 http 304 http://registry.npm.alibaba-inc.com/balanced-match -9558 verbose headers { server: 'Tengine', -9558 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -9558 verbose headers connection: 'keep-alive', -9558 verbose headers etag: '"3fb3-nvdkMbL0GDmUlamx2c8ZNw"', -9558 verbose headers 'x-readtime': '30' } -9559 silly get cb [ 304, -9559 silly get { server: 'Tengine', -9559 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -9559 silly get connection: 'keep-alive', -9559 silly get etag: '"3fb3-nvdkMbL0GDmUlamx2c8ZNw"', -9559 silly get 'x-readtime': '30' } ] -9560 verbose etag http://registry.npm.alibaba-inc.com/balanced-match from cache -9561 verbose get saving balanced-match to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/balanced-match/.cache.json -9562 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -9563 verbose linkBins arr-diff@2.0.0 -9564 verbose linkMans arr-diff@2.0.0 -9565 verbose rebuildBundles arr-diff@2.0.0 -9566 verbose rebuildBundles [ 'is-equal-shallow', 'is-primitive' ] -9567 info install regex-cache@0.4.3 -9568 info linkStuff isarray@0.0.1 -9569 silly linkStuff isarray@0.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -9570 silly linkStuff isarray@0.0.1 is part of a global install -9571 silly linkStuff isarray@0.0.1 is installed into a global node_modules -9572 verbose rebuildBundles [ 'arr-flatten' ] -9573 info install arr-diff@2.0.0 -9574 verbose linkBins parse-glob@3.0.4 -9575 verbose linkMans parse-glob@3.0.4 -9576 verbose rebuildBundles parse-glob@3.0.4 -9577 verbose linkBins expand-brackets@0.1.5 -9578 verbose linkMans expand-brackets@0.1.5 -9579 verbose rebuildBundles expand-brackets@0.1.5 -9580 info linkStuff duplexify@3.4.3 -9581 silly linkStuff duplexify@3.4.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -9582 silly linkStuff duplexify@3.4.3 is part of a global install -9583 silly linkStuff duplexify@3.4.3 is installed into a global node_modules -9584 verbose rebuildBundles [ 'glob-base', 'is-dotfile' ] -9585 info install parse-glob@3.0.4 -9586 silly addNameRange number 2 { name: 'for-in', range: '>=0.1.5 <0.2.0', hasData: true } -9587 silly addNameRange versions [ 'for-in', -9587 silly addNameRange [ '0.1.5', '0.1.4', '0.1.3', '0.1.2', '0.1.1', '0.1.0' ] ] -9588 silly addNamed for-in@0.1.5 -9589 verbose addNamed "0.1.5" is a plain semver version for for-in -9590 info install mkdirp@0.5.1 -9591 verbose rebuildBundles [ 'is-posix-bracket' ] -9592 info install expand-brackets@0.1.5 -9593 info postinstall regex-cache@0.4.3 -9594 silly install resolved [] -9595 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits -9596 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits -9597 verbose linkBins string_decoder@0.10.31 -9598 verbose linkMans string_decoder@0.10.31 -9599 verbose rebuildBundles string_decoder@0.10.31 -9600 info postinstall arr-diff@2.0.0 -9601 verbose linkBins isarray@0.0.1 -9602 verbose linkMans isarray@0.0.1 -9603 verbose rebuildBundles isarray@0.0.1 -9604 info install string_decoder@0.10.31 -9605 info postinstall parse-glob@3.0.4 -9606 info postinstall mkdirp@0.5.1 -9607 info postinstall expand-brackets@0.1.5 -9608 info install isarray@0.0.1 -9609 info linkStuff wrappy@1.0.2 -9610 silly linkStuff wrappy@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules as its parent node_modules -9611 silly linkStuff wrappy@1.0.2 is part of a global install -9612 silly linkStuff wrappy@1.0.2 is installed into a global node_modules -9613 verbose linkBins duplexify@3.4.3 -9614 verbose linkMans duplexify@3.4.3 -9615 verbose rebuildBundles duplexify@3.4.3 -9616 verbose unlock done using /home/ruanyf/.tnpm/_locks/regex-cache-d532aad21fcda594.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/regex-cache -9617 silly install resolved [] -9618 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -9619 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -9620 silly install resolved [] -9621 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer -9622 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer -9623 verbose rebuildBundles [ 'end-of-stream', 'inherits' ] -9624 info install duplexify@3.4.3 -9625 info postinstall string_decoder@0.10.31 -9626 silly gunzTarPerm extractEntry get.js -9627 silly gunzTarPerm extractEntry _root.js -9628 verbose unlock done using /home/ruanyf/.tnpm/_locks/arr-diff-2732b6abfce275e8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/arr-diff -9629 info postinstall isarray@0.0.1 -9630 verbose unlock done using /home/ruanyf/.tnpm/_locks/parse-glob-6752b9eef668ad41.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/parse-glob -9631 silly gunzTarPerm extractEntry ts/core/es6-iterable.d.ts -9632 silly gunzTarPerm modified mode [ 'ts/core/es6-iterable.d.ts', 384, 420 ] -9633 silly gunzTarPerm extractEntry ts/core/es6-promise.d.ts -9634 silly gunzTarPerm modified mode [ 'ts/core/es6-promise.d.ts', 384, 420 ] -9635 verbose unlock done using /home/ruanyf/.tnpm/_locks/mkdirp-0b73b64c74bf3acc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/mkdirp -9636 verbose unlock done using /home/ruanyf/.tnpm/_locks/expand-brackets-2c87c72b7dba14b4.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/expand-brackets -9637 info linkStuff inherits@2.0.1 -9638 silly linkStuff inherits@2.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -9639 silly linkStuff inherits@2.0.1 is part of a global install -9640 silly linkStuff inherits@2.0.1 is installed into a global node_modules -9641 verbose linkBins wrappy@1.0.2 -9642 verbose linkMans wrappy@1.0.2 -9643 verbose rebuildBundles wrappy@1.0.2 -9644 info postinstall duplexify@3.4.3 -9645 silly addNameRange number 2 { name: 'balanced-match', -9645 silly addNameRange range: '>=0.4.1 <0.5.0', -9645 silly addNameRange hasData: true } -9646 silly addNameRange versions [ 'balanced-match', -9646 silly addNameRange [ '0.4.1', -9646 silly addNameRange '0.4.0', -9646 silly addNameRange '0.3.0', -9646 silly addNameRange '0.2.1', -9646 silly addNameRange '0.2.0', -9646 silly addNameRange '0.1.0', -9646 silly addNameRange '0.0.1', -9646 silly addNameRange '0.0.0' ] ] -9647 silly addNamed balanced-match@0.4.1 -9648 verbose addNamed "0.4.1" is a plain semver version for balanced-match -9649 silly cache afterAdd for-in@0.1.5 -9650 verbose afterAdd /home/ruanyf/.tnpm/for-in/0.1.5/package/package.json not in flight; writing -9651 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -9652 info install wrappy@1.0.2 -9653 verbose unlock done using /home/ruanyf/.tnpm/_locks/string-decoder-002153e92ecbe9ee.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder -9654 verbose unlock done using /home/ruanyf/.tnpm/_locks/isarray-a517a962b3b79674.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/isarray -9655 info linkStuff core-util-is@1.0.2 -9656 silly linkStuff core-util-is@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules as its parent node_modules -9657 silly linkStuff core-util-is@1.0.2 is part of a global install -9658 silly linkStuff core-util-is@1.0.2 is installed into a global node_modules -9659 info linkStuff is-buffer@1.1.3 -9660 silly linkStuff is-buffer@1.1.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules as its parent node_modules -9661 silly linkStuff is-buffer@1.1.3 is part of a global install -9662 silly linkStuff is-buffer@1.1.3 is installed into a global node_modules -9663 verbose linkBins inherits@2.0.1 -9664 verbose linkMans inherits@2.0.1 -9665 verbose rebuildBundles inherits@2.0.1 -9666 info postinstall wrappy@1.0.2 -9667 verbose unlock done using /home/ruanyf/.tnpm/_locks/duplexify-d3d9d0b0b0bc143d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/duplexify -9668 info install inherits@2.0.1 -9669 silly cache afterAdd concat-map@0.0.1 -9670 verbose afterAdd /home/ruanyf/.tnpm/concat-map/0.0.1/package/package.json not in flight; writing -9671 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -9672 verbose afterAdd /home/ruanyf/.tnpm/for-in/0.1.5/package/package.json written -9673 silly install resolved [ { name: 'for-in', -9673 silly install resolved description: 'Iterate over the own and inherited enumerable properties of an objecte, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js', -9673 silly install resolved version: '0.1.5', -9673 silly install resolved homepage: 'https://github.com/jonschlinkert/for-in', -9673 silly install resolved author: -9673 silly install resolved { name: 'Jon Schlinkert', -9673 silly install resolved url: 'https://github.com/jonschlinkert' }, -9673 silly install resolved repository: -9673 silly install resolved { type: 'git', -9673 silly install resolved url: 'git+https://github.com/jonschlinkert/for-in.git' }, -9673 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/for-in/issues' }, -9673 silly install resolved license: 'MIT', -9673 silly install resolved files: [ 'index.js' ], -9673 silly install resolved main: 'index.js', -9673 silly install resolved engines: { node: '>=0.10.0' }, -9673 silly install resolved scripts: { test: 'mocha' }, -9673 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.7', mocha: '^2.4.5', should: '^8.3.0' }, -9673 silly install resolved keywords: -9673 silly install resolved [ 'for-in', -9673 silly install resolved 'for-own', -9673 silly install resolved 'has', -9673 silly install resolved 'has-own', -9673 silly install resolved 'hasOwn', -9673 silly install resolved 'key', -9673 silly install resolved 'keys', -9673 silly install resolved 'object', -9673 silly install resolved 'own', -9673 silly install resolved 'value' ], -9673 silly install resolved verb: -9673 silly install resolved { run: true, -9673 silly install resolved toc: false, -9673 silly install resolved layout: 'default', -9673 silly install resolved tasks: [Object], -9673 silly install resolved plugins: [Object], -9673 silly install resolved reflinks: [Object], -9673 silly install resolved lint: [Object] }, -9673 silly install resolved gitHead: '5240e873e512aec30b0e0fe9790bd8f0e2136806', -9673 silly install resolved _id: 'for-in@0.1.5', -9673 silly install resolved _shasum: '007374e2b6d5c67420a1479bdb75a04872b738c4', -9673 silly install resolved _from: 'for-in@>=0.1.5 <0.2.0', -9673 silly install resolved _npmVersion: '3.6.0', -9673 silly install resolved _nodeVersion: '5.5.0', -9673 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -9673 silly install resolved maintainers: [ [Object], [Object] ], -9673 silly install resolved dist: -9673 silly install resolved { shasum: '007374e2b6d5c67420a1479bdb75a04872b738c4', -9673 silly install resolved size: 2131, -9673 silly install resolved noattachment: false, -9673 silly install resolved key: 'for-in/-/for-in-0.1.5.tgz', -9673 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/for-in/download/for-in-0.1.5.tgz' }, -9673 silly install resolved _npmOperationalInternal: -9673 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -9673 silly install resolved tmp: 'tmp/for-in-0.1.5.tgz_1459090695716_0.8974318646360189' }, -9673 silly install resolved directories: {}, -9673 silly install resolved publish_time: 1459090696722, -9673 silly install resolved _cnpm_publish_time: 1459090696722, -9673 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/for-in/download/for-in-0.1.5.tgz', -9673 silly install resolved readme: 'ERROR: No README data found!' } ] -9674 info install for-in@0.1.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -9675 info installOne for-in@0.1.5 -9676 verbose installOne of for-in to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own not in flight; installing -9677 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -9678 verbose linkBins core-util-is@1.0.2 -9679 verbose linkMans core-util-is@1.0.2 -9680 verbose rebuildBundles core-util-is@1.0.2 -9681 verbose linkBins is-buffer@1.1.3 -9682 verbose linkMans is-buffer@1.1.3 -9683 verbose rebuildBundles is-buffer@1.1.3 -9684 info postinstall inherits@2.0.1 -9685 verbose unlock done using /home/ruanyf/.tnpm/_locks/wrappy-c9261d4ddef521b1.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/node_modules/wrappy -9686 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -9687 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -9688 info install core-util-is@1.0.2 -9689 info install is-buffer@1.1.3 -9690 silly cache afterAdd balanced-match@0.4.1 -9691 verbose afterAdd /home/ruanyf/.tnpm/balanced-match/0.4.1/package/package.json not in flight; writing -9692 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -9693 silly gunzTarPerm extractEntry groupBy.js -9694 silly gunzTarPerm extractEntry _replaceHolders.js -9695 verbose lock using /home/ruanyf/.tnpm/_locks/for-in-fa6f3316a5c231bc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in -9696 silly install write writing for-in 0.1.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in -9697 silly gunzTarPerm extractEntry ts/core/es6.ts -9698 silly gunzTarPerm modified mode [ 'ts/core/es6.ts', 384, 420 ] -9699 silly gunzTarPerm extractEntry ts/core/anonymousobservable.ts -9700 silly gunzTarPerm modified mode [ 'ts/core/anonymousobservable.ts', 384, 420 ] -9701 info postinstall core-util-is@1.0.2 -9702 info postinstall is-buffer@1.1.3 -9703 verbose unlock done using /home/ruanyf/.tnpm/_locks/inherits-5a7dd83756dcfc24.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/inherits -9704 verbose afterAdd /home/ruanyf/.tnpm/concat-map/0.0.1/package/package.json written -9705 silly gunzTarPerm extractEntry ts/core/joins/pattern.ts -9706 silly gunzTarPerm modified mode [ 'ts/core/joins/pattern.ts', 384, 420 ] -9707 info linkStuff once@1.3.3 -9708 silly linkStuff once@1.3.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules -9709 silly linkStuff once@1.3.3 is part of a global install -9710 silly linkStuff once@1.3.3 is installed into a global node_modules -9711 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve/package.json -9712 verbose unlock done using /home/ruanyf/.tnpm/_locks/core-util-is-58fb48764c4f40d2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is -9713 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -9714 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -9715 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-buffer-0b5329785adce74e.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of/node_modules/is-buffer -9716 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -9717 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -9718 verbose afterAdd /home/ruanyf/.tnpm/balanced-match/0.4.1/package/package.json written -9719 silly install resolved [ { name: 'concat-map', -9719 silly install resolved description: 'concatenative mapdashery', -9719 silly install resolved version: '0.0.1', -9719 silly install resolved repository: -9719 silly install resolved { type: 'git', -9719 silly install resolved url: 'git://github.com/substack/node-concat-map.git' }, -9719 silly install resolved main: 'index.js', -9719 silly install resolved keywords: [ 'concat', 'concatMap', 'map', 'functional', 'higher-order' ], -9719 silly install resolved directories: { example: 'example', test: 'test' }, -9719 silly install resolved scripts: { test: 'tape test/*.js' }, -9719 silly install resolved devDependencies: { tape: '~2.4.0' }, -9719 silly install resolved license: 'MIT', -9719 silly install resolved author: -9719 silly install resolved { name: 'James Halliday', -9719 silly install resolved email: 'mail@substack.net', -9719 silly install resolved url: 'http://substack.net' }, -9719 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, -9719 silly install resolved bugs: { url: 'https://github.com/substack/node-concat-map/issues' }, -9719 silly install resolved homepage: 'https://github.com/substack/node-concat-map', -9719 silly install resolved _id: 'concat-map@0.0.1', -9719 silly install resolved dist: -9719 silly install resolved { shasum: 'd8a96bd77fd68df7793a73036a3ba0d5405d477b', -9719 silly install resolved size: 2263, -9719 silly install resolved noattachment: false, -9719 silly install resolved key: 'concat-map/-/concat-map-0.0.1.tgz', -9719 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/concat-map/download/concat-map-0.0.1.tgz' }, -9719 silly install resolved _from: 'concat-map@0.0.1', -9719 silly install resolved _npmVersion: '1.3.21', -9719 silly install resolved _npmUser: { name: 'substack', email: 'mail@substack.net' }, -9719 silly install resolved maintainers: [ [Object] ], -9719 silly install resolved publish_time: 1391051195982, -9719 silly install resolved _cnpm_publish_time: 1391051195982, -9719 silly install resolved _shasum: 'd8a96bd77fd68df7793a73036a3ba0d5405d477b', -9719 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/concat-map/download/concat-map-0.0.1.tgz', -9719 silly install resolved readme: 'ERROR: No README data found!' }, -9719 silly install resolved { name: 'balanced-match', -9719 silly install resolved description: 'Match balanced character pairs, like "{" and "}"', -9719 silly install resolved version: '0.4.1', -9719 silly install resolved repository: -9719 silly install resolved { type: 'git', -9719 silly install resolved url: 'git://github.com/juliangruber/balanced-match.git' }, -9719 silly install resolved homepage: 'https://github.com/juliangruber/balanced-match', -9719 silly install resolved main: 'index.js', -9719 silly install resolved scripts: { test: 'make test' }, -9719 silly install resolved dependencies: {}, -9719 silly install resolved devDependencies: { tape: '~4.5.0' }, -9719 silly install resolved keywords: [ 'match', 'regexp', 'test', 'balanced', 'parse' ], -9719 silly install resolved author: -9719 silly install resolved { name: 'Julian Gruber', -9719 silly install resolved email: 'mail@juliangruber.com', -9719 silly install resolved url: 'http://juliangruber.com' }, -9719 silly install resolved license: 'MIT', -9719 silly install resolved testling: { files: 'test/*.js', browsers: [Object] }, -9719 silly install resolved gitHead: '7004b289baaaab6a832f4901735e29d37cc2a863', -9719 silly install resolved bugs: { url: 'https://github.com/juliangruber/balanced-match/issues' }, -9719 silly install resolved _id: 'balanced-match@0.4.1', -9719 silly install resolved _shasum: '19053e2e0748eadb379da6c09d455cf5e1039335', -9719 silly install resolved _from: 'balanced-match@>=0.4.1 <0.5.0', -9719 silly install resolved _npmVersion: '3.8.6', -9719 silly install resolved _nodeVersion: '6.0.0', -9719 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, -9719 silly install resolved dist: -9719 silly install resolved { shasum: '19053e2e0748eadb379da6c09d455cf5e1039335', -9719 silly install resolved size: 2549, -9719 silly install resolved noattachment: false, -9719 silly install resolved key: 'balanced-match/-/balanced-match-0.4.1.tgz', -9719 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/balanced-match/download/balanced-match-0.4.1.tgz' }, -9719 silly install resolved maintainers: [ [Object] ], -9719 silly install resolved _npmOperationalInternal: -9719 silly install resolved { host: 'packages-12-west.internal.npmjs.com', -9719 silly install resolved tmp: 'tmp/balanced-match-0.4.1.tgz_1462129663650_0.39764496590942144' }, -9719 silly install resolved directories: {}, -9719 silly install resolved publish_time: 1462129666040, -9719 silly install resolved _cnpm_publish_time: 1462129666040, -9719 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/balanced-match/download/balanced-match-0.4.1.tgz', -9719 silly install resolved readme: 'ERROR: No README data found!' } ] -9720 info install concat-map@0.0.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -9721 info install balanced-match@0.4.1 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -9722 info installOne concat-map@0.0.1 -9723 verbose installOne of concat-map to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion not in flight; installing -9724 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -9725 info installOne balanced-match@0.4.1 -9726 verbose installOne of balanced-match to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion not in flight; installing -9727 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -9728 silly gunzTarPerm extractEntry ts/core/joins/plan.ts -9729 silly gunzTarPerm modified mode [ 'ts/core/joins/plan.ts', 384, 420 ] -9730 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in -9731 verbose linkBins once@1.3.3 -9732 verbose linkMans once@1.3.3 -9733 verbose rebuildBundles once@1.3.3 -9734 verbose lock using /home/ruanyf/.tnpm/_locks/concat-map-f61c715bbee21c52.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map -9735 verbose lock using /home/ruanyf/.tnpm/_locks/balanced-match-bf5358bf311e0864.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match -9736 silly gunzTarPerm extractEntry ts/core/linq/connectableobservable.ts -9737 silly gunzTarPerm modified mode [ 'ts/core/linq/connectableobservable.ts', 384, 420 ] -9738 verbose rebuildBundles [ 'wrappy' ] -9739 info install once@1.3.3 -9740 silly install write writing concat-map 0.0.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map -9741 http 304 http://registry.npm.alibaba-inc.com/fill-range -9742 verbose headers { server: 'Tengine', -9742 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -9742 verbose headers connection: 'keep-alive', -9742 verbose headers etag: '"a99c-d3MH08+FfF+ZyyhzFbLKtg"', -9742 verbose headers 'x-readtime': '50' } -9743 silly get cb [ 304, -9743 silly get { server: 'Tengine', -9743 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -9743 silly get connection: 'keep-alive', -9743 silly get etag: '"a99c-d3MH08+FfF+ZyyhzFbLKtg"', -9743 silly get 'x-readtime': '50' } ] -9744 verbose etag http://registry.npm.alibaba-inc.com/fill-range from cache -9745 verbose get saving fill-range to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/fill-range/.cache.json -9746 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -9747 silly install write writing balanced-match 0.4.1 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match -9748 info preinstall preserve@0.2.0 -9749 silly gunzTarPerm extractEntry gt.js -9750 silly gunzTarPerm extractEntry _reorder.js -9751 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in is being purged from base /home/ruanyf/npm-global -9752 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in -9753 silly gunzTarPerm extractEntry ts/core/linq/groupedobservable.ts -9754 silly gunzTarPerm modified mode [ 'ts/core/linq/groupedobservable.ts', 384, 420 ] -9755 info linkStuff readable-stream@1.0.34 -9756 silly linkStuff readable-stream@1.0.34 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules as its parent node_modules -9757 silly linkStuff readable-stream@1.0.34 is part of a global install -9758 silly linkStuff readable-stream@1.0.34 is installed into a global node_modules -9759 info linkStuff kind-of@3.0.3 -9760 silly linkStuff kind-of@3.0.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -9761 silly linkStuff kind-of@3.0.3 is part of a global install -9762 silly linkStuff kind-of@3.0.3 is installed into a global node_modules -9763 info postinstall once@1.3.3 -9764 verbose tar unpack /home/ruanyf/.tnpm/for-in/0.1.5/package.tgz -9765 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in -9766 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in is being purged -9767 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in -9768 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve/package.json -9769 silly gunzTarPerm modes [ '755', '644' ] -9770 silly gunzTarPerm extractEntry ts/core/linq/observable/minby.ts -9771 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/minby.ts', 384, 420 ] -9772 verbose linkBins readable-stream@1.0.34 -9773 verbose linkMans readable-stream@1.0.34 -9774 verbose rebuildBundles readable-stream@1.0.34 -9775 verbose linkBins kind-of@3.0.3 -9776 verbose linkMans kind-of@3.0.3 -9777 verbose rebuildBundles kind-of@3.0.3 -9778 verbose unlock done using /home/ruanyf/.tnpm/_locks/once-3b39f43119512bf7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once -9779 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map -9780 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match -9781 verbose rebuildBundles [ 'core-util-is', 'inherits', 'isarray', 'string_decoder' ] -9782 info install readable-stream@1.0.34 -9783 silly gunzTarPerm extractEntry ts/core/linq/observable/amb.ts -9784 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/amb.ts', 384, 420 ] -9785 verbose rebuildBundles [ 'is-buffer' ] -9786 info install kind-of@3.0.3 -9787 info postinstall readable-stream@1.0.34 -9788 silly gunzTarPerm extractEntry ts/core/linq/observable/and.ts -9789 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/and.ts', 384, 420 ] -9790 info postinstall kind-of@3.0.3 -9791 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map is being purged from base /home/ruanyf/npm-global -9792 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map -9793 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match is being purged from base /home/ruanyf/npm-global -9794 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match -9795 silly gunzTarPerm extractEntry package.json -9796 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve/package.json -9797 silly addNameRange number 2 { name: 'fill-range', range: '>=2.1.0 <3.0.0', hasData: true } -9798 silly addNameRange versions [ 'fill-range', -9798 silly addNameRange [ '2.2.3', -9798 silly addNameRange '2.2.2', -9798 silly addNameRange '2.2.1', -9798 silly addNameRange '2.2.0', -9798 silly addNameRange '2.1.0', -9798 silly addNameRange '2.0.0', -9798 silly addNameRange '1.9.0', -9798 silly addNameRange '1.8.0', -9798 silly addNameRange '1.7.1', -9798 silly addNameRange '1.7.0', -9798 silly addNameRange '1.6.0', -9798 silly addNameRange '1.5.0', -9798 silly addNameRange '1.4.0', -9798 silly addNameRange '1.3.0', -9798 silly addNameRange '1.2.0', -9798 silly addNameRange '1.1.0', -9798 silly addNameRange '1.0.0', -9798 silly addNameRange '0.2.0', -9798 silly addNameRange '0.1.1', -9798 silly addNameRange '0.1.0' ] ] -9799 silly addNamed fill-range@2.2.3 -9800 verbose addNamed "2.2.3" is a plain semver version for fill-range -9801 verbose tar unpack /home/ruanyf/.tnpm/concat-map/0.0.1/package.tgz -9802 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map -9803 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map is being purged -9804 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map -9805 verbose tar unpack /home/ruanyf/.tnpm/balanced-match/0.4.1/package.tgz -9806 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match -9807 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match is being purged -9808 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match -9809 silly gunzTarPerm extractEntry ts/core/linq/observable/asobservable.ts -9810 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/asobservable.ts', 384, 420 ] -9811 silly gunzTarPerm extractEntry gte.js -9812 silly gunzTarPerm extractEntry _realNames.js -9813 silly gunzTarPerm modes [ '755', '644' ] -9814 silly gunzTarPerm modes [ '755', '644' ] -9815 verbose unlock done using /home/ruanyf/.tnpm/_locks/readable-stream-68221f11311704f0.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2/node_modules/readable-stream -9816 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -9817 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -9818 verbose unlock done using /home/ruanyf/.tnpm/_locks/kind-of-89c7d16b0f8411bd.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/kind-of -9819 silly gunzTarPerm extractEntry README.md -9820 silly gunzTarPerm extractEntry LICENSE -9821 silly install resolved [] -9822 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve -9823 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve -9824 silly cache afterAdd fill-range@2.2.3 -9825 verbose afterAdd /home/ruanyf/.tnpm/fill-range/2.2.3/package/package.json not in flight; writing -9826 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -9827 info linkStuff through2@0.6.5 -9828 silly linkStuff through2@0.6.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules -9829 silly linkStuff through2@0.6.5 is part of a global install -9830 silly linkStuff through2@0.6.5 is installed into a global node_modules -9831 silly gunzTarPerm extractEntry package.json -9832 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify/package.json -9833 silly gunzTarPerm extractEntry package.json -9834 verbose linkBins through2@0.6.5 -9835 verbose linkMans through2@0.6.5 -9836 verbose rebuildBundles through2@0.6.5 -9837 silly gunzTarPerm extractEntry ts/core/linq/observable/average.ts -9838 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/average.ts', 384, 420 ] -9839 silly gunzTarPerm extractEntry ts/core/linq/observable/buffer.ts -9840 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/buffer.ts', 384, 420 ] -9841 silly gunzTarPerm extractEntry has.js -9842 silly gunzTarPerm extractEntry _reInterpolate.js -9843 verbose rebuildBundles [ 'readable-stream', 'xtend' ] -9844 info install through2@0.6.5 -9845 silly gunzTarPerm extractEntry LICENSE -9846 silly gunzTarPerm extractEntry index.js -9847 info linkStuff preserve@0.2.0 -9848 silly linkStuff preserve@0.2.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules as its parent node_modules -9849 silly linkStuff preserve@0.2.0 is part of a global install -9850 silly linkStuff preserve@0.2.0 is installed into a global node_modules -9851 verbose afterAdd /home/ruanyf/.tnpm/fill-range/2.2.3/package/package.json written -9852 silly install resolved [ { name: 'fill-range', -9852 silly install resolved description: 'Fill in a range of numbers or letters, optionally passing an increment or multiplier to use.', -9852 silly install resolved version: '2.2.3', -9852 silly install resolved homepage: 'https://github.com/jonschlinkert/fill-range', -9852 silly install resolved author: -9852 silly install resolved { name: 'Jon Schlinkert', -9852 silly install resolved url: 'https://github.com/jonschlinkert' }, -9852 silly install resolved repository: -9852 silly install resolved { type: 'git', -9852 silly install resolved url: 'git+https://github.com/jonschlinkert/fill-range.git' }, -9852 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/fill-range/issues' }, -9852 silly install resolved license: 'MIT', -9852 silly install resolved files: [ 'index.js' ], -9852 silly install resolved main: 'index.js', -9852 silly install resolved engines: { node: '>=0.10.0' }, -9852 silly install resolved scripts: { test: 'mocha' }, -9852 silly install resolved dependencies: -9852 silly install resolved { 'is-number': '^2.1.0', -9852 silly install resolved isobject: '^2.0.0', -9852 silly install resolved randomatic: '^1.1.3', -9852 silly install resolved 'repeat-element': '^1.1.2', -9852 silly install resolved 'repeat-string': '^1.5.2' }, -9852 silly install resolved devDependencies: { benchmarked: '^0.1.3', chalk: '^0.5.1', should: '*' }, -9852 silly install resolved keywords: -9852 silly install resolved [ 'alpha', -9852 silly install resolved 'alphabetical', -9852 silly install resolved 'bash', -9852 silly install resolved 'brace', -9852 silly install resolved 'expand', -9852 silly install resolved 'expansion', -9852 silly install resolved 'glob', -9852 silly install resolved 'match', -9852 silly install resolved 'matches', -9852 silly install resolved 'matching', -9852 silly install resolved 'number', -9852 silly install resolved 'numerical', -9852 silly install resolved 'range', -9852 silly install resolved 'ranges', -9852 silly install resolved 'sh' ], -9852 silly install resolved verb: { related: [Object] }, -9852 silly install resolved gitHead: '6cb50d5c679d9e6d9e8ad97bb2efd63a8c8da610', -9852 silly install resolved _id: 'fill-range@2.2.3', -9852 silly install resolved _shasum: '50b77dfd7e469bc7492470963699fe7a8485a723', -9852 silly install resolved _from: 'fill-range@>=2.1.0 <3.0.0', -9852 silly install resolved _npmVersion: '3.3.6', -9852 silly install resolved _nodeVersion: '5.0.0', -9852 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -9852 silly install resolved maintainers: [ [Object], [Object], [Object], [Object] ], -9852 silly install resolved dist: -9852 silly install resolved { shasum: '50b77dfd7e469bc7492470963699fe7a8485a723', -9852 silly install resolved size: 6338, -9852 silly install resolved noattachment: false, -9852 silly install resolved key: 'fill-range/-/fill-range-2.2.3.tgz', -9852 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/fill-range/download/fill-range-2.2.3.tgz' }, -9852 silly install resolved directories: {}, -9852 silly install resolved publish_time: 1449440102623, -9852 silly install resolved _cnpm_publish_time: 1449440102623, -9852 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/fill-range/download/fill-range-2.2.3.tgz', -9852 silly install resolved readme: 'ERROR: No README data found!' } ] -9853 info install fill-range@2.2.3 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -9854 info installOne fill-range@2.2.3 -9855 verbose installOne of fill-range to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range not in flight; installing -9856 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -9857 info preinstall jsonify@0.0.0 -9858 silly gunzTarPerm extractEntry .npmignore -9859 silly gunzTarPerm extractEntry README.md -9860 silly gunzTarPerm extractEntry index.js -9861 info postinstall through2@0.6.5 -9862 verbose lock using /home/ruanyf/.tnpm/_locks/fill-range-211f70546d1bdea8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -9863 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify/package.json -9864 verbose linkBins preserve@0.2.0 -9865 verbose linkMans preserve@0.2.0 -9866 verbose rebuildBundles preserve@0.2.0 -9867 silly install write writing fill-range 2.2.3 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -9868 info install preserve@0.2.0 -9869 verbose unlock done using /home/ruanyf/.tnpm/_locks/through2-a3053459c9d64905.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/through2 -9870 info postinstall preserve@0.2.0 -9871 silly gunzTarPerm extractEntry hasIn.js -9872 silly gunzTarPerm extractEntry _reHasComplexSymbol.js -9873 silly gunzTarPerm extractEntry ts/core/linq/observable/bufferwithcount.ts -9874 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/bufferwithcount.ts', 384, 420 ] -9875 silly gunzTarPerm extractEntry ts/core/linq/observable/bufferwithtime.ts -9876 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -9877 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify/package.json -9878 silly gunzTarPerm extractEntry .travis.yml -9879 silly gunzTarPerm extractEntry README.markdown -9880 verbose unlock done using /home/ruanyf/.tnpm/_locks/preserve-abe6a87d818305a7.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/preserve -9881 silly gunzTarPerm extractEntry index.js -9882 silly gunzTarPerm extractEntry LICENSE.md -9883 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range is being purged from base /home/ruanyf/npm-global -9884 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -9885 verbose tar unpack /home/ruanyf/.tnpm/fill-range/2.2.3/package.tgz -9886 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -9887 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range is being purged -9888 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -9889 silly gunzTarPerm modes [ '755', '644' ] -9890 silly install resolved [] -9891 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify -9892 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify -9893 silly gunzTarPerm extractEntry head.js -9894 silly gunzTarPerm extractEntry _reEvaluate.js -9895 silly gunzTarPerm extractEntry ts/core/linq/observable/bufferwithtimeorcount.ts -9896 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/bufferwithtimeorcount.ts', 384, 420 ] -9897 silly gunzTarPerm extractEntry ts/core/linq/observable/case.ts -9898 silly gunzTarPerm extractEntry example/map.js -9899 silly gunzTarPerm extractEntry test/map.js -9900 silly gunzTarPerm extractEntry package.json -9901 info linkStuff jsonify@0.0.0 -9902 silly linkStuff jsonify@0.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules as its parent node_modules -9903 silly linkStuff jsonify@0.0.0 is part of a global install -9904 silly linkStuff jsonify@0.0.0 is installed into a global node_modules -9905 verbose linkBins jsonify@0.0.0 -9906 verbose linkMans jsonify@0.0.0 -9907 verbose rebuildBundles jsonify@0.0.0 -9908 silly gunzTarPerm extractEntry README.md -9909 silly gunzTarPerm modified mode [ 'README.md', 448, 484 ] -9910 silly gunzTarPerm extractEntry LICENSE -9911 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] -9912 info install jsonify@0.0.0 -9913 info postinstall jsonify@0.0.0 -9914 silly gunzTarPerm extractEntry identity.js -9915 silly gunzTarPerm extractEntry _reEscape.js -9916 silly gunzTarPerm extractEntry ts/core/linq/observable/catch.ts -9917 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/catch.ts', 384, 420 ] -9918 silly gunzTarPerm extractEntry ts/core/linq/observable/catchproto.ts -9919 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/catchproto.ts', 384, 420 ] -9920 silly gunzTarPerm extractEntry ts/core/linq/observable/combinelatest.ts -9921 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/combinelatest.ts', 384, 420 ] -9922 silly gunzTarPerm extractEntry ts/core/linq/observable/combinelatestproto.ts -9923 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/combinelatestproto.ts', 384, 420 ] -9924 verbose unlock done using /home/ruanyf/.tnpm/_locks/jsonify-bc3e1f8c14080ee6.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify/node_modules/jsonify -9925 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -9926 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -9927 silly gunzTarPerm extractEntry ts/core/linq/observable/concat.ts -9928 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concat.ts', 384, 420 ] -9929 silly gunzTarPerm extractEntry ts/core/linq/observable/concatall.ts -9930 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concatall.ts', 384, 420 ] -9931 silly gunzTarPerm extractEntry index.js -9932 info linkStuff json-stable-stringify@1.0.1 -9933 silly linkStuff json-stable-stringify@1.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules as its parent node_modules -9934 silly linkStuff json-stable-stringify@1.0.1 is part of a global install -9935 silly linkStuff json-stable-stringify@1.0.1 is installed into a global node_modules -9936 silly gunzTarPerm extractEntry ts/core/linq/observable/concatmap.ts -9937 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concatmap.ts', 384, 420 ] -9938 silly gunzTarPerm extractEntry inRange.js -9939 silly gunzTarPerm extractEntry _parent.js -9940 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in/package.json -9941 silly gunzTarPerm extractEntry ts/core/linq/observable/concatmapobserver.ts -9942 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concatmapobserver.ts', 384, 420 ] -9943 verbose linkBins json-stable-stringify@1.0.1 -9944 verbose linkMans json-stable-stringify@1.0.1 -9945 verbose rebuildBundles json-stable-stringify@1.0.1 -9946 verbose rebuildBundles [ 'jsonify' ] -9947 info install json-stable-stringify@1.0.1 -9948 silly gunzTarPerm extractEntry ts/core/linq/observable/concatproto.ts -9949 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/concatproto.ts', 384, 420 ] -9950 info preinstall for-in@0.1.5 -9951 info postinstall json-stable-stringify@1.0.1 -9952 silly gunzTarPerm extractEntry ts/core/linq/observable/count.ts -9953 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/count.ts', 384, 420 ] -9954 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in/package.json -9955 silly gunzTarPerm extractEntry ts/core/linq/observable/create.ts -9956 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/create.ts', 384, 420 ] -9957 verbose unlock done using /home/ruanyf/.tnpm/_locks/json-stable-stringify-37de4acd438df36d.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream/node_modules/json-stable-stringify -9958 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -9959 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -9960 silly gunzTarPerm extractEntry includes.js -9961 silly gunzTarPerm extractEntry _nativeCreate.js -9962 silly gunzTarPerm extractEntry ts/core/linq/observable/debounce.ts -9963 silly gunzTarPerm extractEntry ts/core/linq/observable/defaultifempty.ts -9964 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/defaultifempty.ts', 384, 420 ] -9965 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in/package.json -9966 info linkStuff unique-stream@2.2.1 -9967 silly linkStuff unique-stream@2.2.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules -9968 silly linkStuff unique-stream@2.2.1 is part of a global install -9969 silly linkStuff unique-stream@2.2.1 is installed into a global node_modules -9970 silly gunzTarPerm extractEntry ts/core/linq/observable/defer.ts -9971 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/defer.ts', 384, 420 ] -9972 silly gunzTarPerm extractEntry ts/core/linq/observable/delay.ts -9973 verbose linkBins unique-stream@2.2.1 -9974 verbose linkMans unique-stream@2.2.1 -9975 verbose rebuildBundles unique-stream@2.2.1 -9976 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json -9977 verbose rebuildBundles [ 'json-stable-stringify' ] -9978 info install unique-stream@2.2.1 -9979 silly gunzTarPerm extractEntry ts/core/linq/observable/delaysubscription.ts -9980 silly gunzTarPerm extractEntry index.js -9981 silly gunzTarPerm extractEntry _metaMap.js -9982 silly install resolved [] -9983 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in -9984 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in -9985 info postinstall unique-stream@2.2.1 -9986 silly gunzTarPerm extractEntry ts/core/linq/observable/dematerialize.ts -9987 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/dematerialize.ts', 384, 420 ] -9988 info preinstall balanced-match@0.4.1 -9989 silly gunzTarPerm extractEntry ts/core/linq/observable/distinct.ts -9990 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/distinct.ts', 384, 420 ] -9991 verbose unlock done using /home/ruanyf/.tnpm/_locks/unique-stream-cabed25d6b4ec536.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/unique-stream -9992 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json -9993 info linkStuff for-in@0.1.5 -9994 silly linkStuff for-in@0.1.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules as its parent node_modules -9995 silly linkStuff for-in@0.1.5 is part of a global install -9996 silly linkStuff for-in@0.1.5 is installed into a global node_modules -9997 silly gunzTarPerm extractEntry ts/core/linq/observable/distinctuntilchanged.ts -9998 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/distinctuntilchanged.ts', 384, 420 ] -9999 verbose linkBins for-in@0.1.5 -10000 verbose linkMans for-in@0.1.5 -10001 verbose rebuildBundles for-in@0.1.5 -10002 silly gunzTarPerm extractEntry ts/core/linq/observable/dowhile.ts -10003 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/dowhile.ts', 384, 420 ] -10004 silly gunzTarPerm extractEntry indexOf.js -10005 silly gunzTarPerm extractEntry _mergeDefaults.js -10006 info install for-in@0.1.5 -10007 silly gunzTarPerm extractEntry ts/core/linq/observable/elementat.ts -10008 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/elementat.ts', 384, 420 ] -10009 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json -10010 info postinstall for-in@0.1.5 -10011 silly gunzTarPerm extractEntry ts/core/linq/observable/empty.ts -10012 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/package.json -10013 verbose unlock done using /home/ruanyf/.tnpm/_locks/for-in-fa6f3316a5c231bc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own/node_modules/for-in -10014 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -10015 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -10016 silly gunzTarPerm extractEntry ts/core/linq/observable/every.ts -10017 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/every.ts', 384, 420 ] -10018 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json -10019 silly install resolved [] -10020 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match -10021 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match -10022 silly gunzTarPerm extractEntry ts/core/linq/observable/expand.ts -10023 silly gunzTarPerm extractEntry initial.js -10024 silly gunzTarPerm extractEntry _mergeData.js -10025 info preinstall fill-range@2.2.3 -10026 silly gunzTarPerm extractEntry ts/core/linq/observable/filter.ts -10027 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/filter.ts', 384, 420 ] -10028 info linkStuff for-own@0.1.4 -10029 silly linkStuff for-own@0.1.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules as its parent node_modules -10030 silly linkStuff for-own@0.1.4 is part of a global install -10031 silly linkStuff for-own@0.1.4 is installed into a global node_modules -10032 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/package.json -10033 info preinstall concat-map@0.0.1 -10034 silly gunzTarPerm extractEntry ts/core/linq/observable/finally.ts -10035 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/finally.ts', 384, 420 ] -10036 info linkStuff balanced-match@0.4.1 -10037 silly linkStuff balanced-match@0.4.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules as its parent node_modules -10038 silly linkStuff balanced-match@0.4.1 is part of a global install -10039 silly linkStuff balanced-match@0.4.1 is installed into a global node_modules -10040 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json -10041 verbose linkBins for-own@0.1.4 -10042 verbose linkMans for-own@0.1.4 -10043 verbose rebuildBundles for-own@0.1.4 -10044 silly gunzTarPerm extractEntry ts/core/linq/observable/find.ts -10045 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/find.ts', 384, 420 ] -10046 verbose rebuildBundles [ 'for-in' ] -10047 info install for-own@0.1.4 -10048 verbose linkBins balanced-match@0.4.1 -10049 verbose linkMans balanced-match@0.4.1 -10050 verbose rebuildBundles balanced-match@0.4.1 -10051 info install balanced-match@0.4.1 -10052 silly gunzTarPerm extractEntry ts/core/linq/observable/findindex.ts -10053 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/findindex.ts', 384, 420 ] -10054 info postinstall for-own@0.1.4 -10055 silly prepareForInstallMany adding is-number@^2.1.0 from fill-range dependencies -10056 silly prepareForInstallMany adding isobject@^2.0.0 from fill-range dependencies -10057 silly prepareForInstallMany adding randomatic@^1.1.3 from fill-range dependencies -10058 silly prepareForInstallMany adding repeat-string@^1.5.2 from fill-range dependencies -10059 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/package.json -10060 silly gunzTarPerm extractEntry intersection.js -10061 silly gunzTarPerm extractEntry _matchesStrictComparable.js -10062 info postinstall balanced-match@0.4.1 -10063 silly gunzTarPerm extractEntry ts/core/linq/observable/first.ts -10064 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/first.ts', 384, 420 ] -10065 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json -10066 verbose unlock done using /home/ruanyf/.tnpm/_locks/for-own-951323b794acd7c8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit/node_modules/for-own -10067 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -10068 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -10069 verbose unlock done using /home/ruanyf/.tnpm/_locks/balanced-match-bf5358bf311e0864.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match -10070 silly cache add args [ 'is-number@^2.1.0', null ] -10071 verbose cache add spec is-number@^2.1.0 -10072 silly cache add args [ 'isobject@^2.0.0', null ] -10073 verbose cache add spec isobject@^2.0.0 -10074 silly cache add parsed spec Result { -10074 silly cache add raw: 'is-number@^2.1.0', -10074 silly cache add scope: null, -10074 silly cache add name: 'is-number', -10074 silly cache add rawSpec: '^2.1.0', -10074 silly cache add spec: '>=2.1.0 <3.0.0', -10074 silly cache add type: 'range' } -10075 silly addNamed is-number@>=2.1.0 <3.0.0 -10076 verbose addNamed ">=2.1.0 <3.0.0" is a valid semver range for is-number -10077 silly addNameRange { name: 'is-number', range: '>=2.1.0 <3.0.0', hasData: false } -10078 silly mapToRegistry name is-number -10079 silly mapToRegistry using default registry -10080 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -10081 silly mapToRegistry data Result { -10081 silly mapToRegistry raw: 'is-number', -10081 silly mapToRegistry scope: null, -10081 silly mapToRegistry name: 'is-number', -10081 silly mapToRegistry rawSpec: '', -10081 silly mapToRegistry spec: 'latest', -10081 silly mapToRegistry type: 'tag' } -10082 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/is-number -10083 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/is-number not in flight; fetching -10084 silly cache add parsed spec Result { -10084 silly cache add raw: 'isobject@^2.0.0', -10084 silly cache add scope: null, -10084 silly cache add name: 'isobject', -10084 silly cache add rawSpec: '^2.0.0', -10084 silly cache add spec: '>=2.0.0 <3.0.0', -10084 silly cache add type: 'range' } -10085 silly addNamed isobject@>=2.0.0 <3.0.0 -10086 verbose addNamed ">=2.0.0 <3.0.0" is a valid semver range for isobject -10087 silly addNameRange { name: 'isobject', range: '>=2.0.0 <3.0.0', hasData: false } -10088 silly mapToRegistry name isobject -10089 silly mapToRegistry using default registry -10090 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -10091 silly mapToRegistry data Result { -10091 silly mapToRegistry raw: 'isobject', -10091 silly mapToRegistry scope: null, -10091 silly mapToRegistry name: 'isobject', -10091 silly mapToRegistry rawSpec: '', -10091 silly mapToRegistry spec: 'latest', -10091 silly mapToRegistry type: 'tag' } -10092 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isobject -10093 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/isobject not in flight; fetching -10094 silly cache add args [ 'randomatic@^1.1.3', null ] -10095 verbose cache add spec randomatic@^1.1.3 -10096 silly cache add parsed spec Result { -10096 silly cache add raw: 'randomatic@^1.1.3', -10096 silly cache add scope: null, -10096 silly cache add name: 'randomatic', -10096 silly cache add rawSpec: '^1.1.3', -10096 silly cache add spec: '>=1.1.3 <2.0.0', -10096 silly cache add type: 'range' } -10097 silly addNamed randomatic@>=1.1.3 <2.0.0 -10098 verbose addNamed ">=1.1.3 <2.0.0" is a valid semver range for randomatic -10099 silly addNameRange { name: 'randomatic', range: '>=1.1.3 <2.0.0', hasData: false } -10100 silly mapToRegistry name randomatic -10101 silly mapToRegistry using default registry -10102 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -10103 silly mapToRegistry data Result { -10103 silly mapToRegistry raw: 'randomatic', -10103 silly mapToRegistry scope: null, -10103 silly mapToRegistry name: 'randomatic', -10103 silly mapToRegistry rawSpec: '', -10103 silly mapToRegistry spec: 'latest', -10103 silly mapToRegistry type: 'tag' } -10104 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/randomatic -10105 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/randomatic not in flight; fetching -10106 info linkStuff object.omit@2.0.0 -10107 silly linkStuff object.omit@2.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -10108 silly linkStuff object.omit@2.0.0 is part of a global install -10109 silly linkStuff object.omit@2.0.0 is installed into a global node_modules -10110 silly cache add args [ 'repeat-string@^1.5.2', null ] -10111 verbose cache add spec repeat-string@^1.5.2 -10112 silly cache add parsed spec Result { -10112 silly cache add raw: 'repeat-string@^1.5.2', -10112 silly cache add scope: null, -10112 silly cache add name: 'repeat-string', -10112 silly cache add rawSpec: '^1.5.2', -10112 silly cache add spec: '>=1.5.2 <2.0.0', -10112 silly cache add type: 'range' } -10113 silly addNamed repeat-string@>=1.5.2 <2.0.0 -10114 verbose addNamed ">=1.5.2 <2.0.0" is a valid semver range for repeat-string -10115 silly addNameRange { name: 'repeat-string', -10115 silly addNameRange range: '>=1.5.2 <2.0.0', -10115 silly addNameRange hasData: false } -10116 silly mapToRegistry name repeat-string -10117 silly mapToRegistry using default registry -10118 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -10119 silly mapToRegistry data Result { -10119 silly mapToRegistry raw: 'repeat-string', -10119 silly mapToRegistry scope: null, -10119 silly mapToRegistry name: 'repeat-string', -10119 silly mapToRegistry rawSpec: '', -10119 silly mapToRegistry spec: 'latest', -10119 silly mapToRegistry type: 'tag' } -10120 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/repeat-string -10121 verbose addNameRange registry:http://registry.npm.alibaba-inc.com/repeat-string not in flight; fetching -10122 silly install resolved [] -10123 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map -10124 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map -10125 silly gunzTarPerm extractEntry intersectionBy.js -10126 silly gunzTarPerm extractEntry _mapToArray.js -10127 silly gunzTarPerm extractEntry ts/core/linq/observable/flatmap.ts -10128 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/flatmap.ts', 384, 420 ] -10129 silly gunzTarPerm extractEntry ts/core/linq/observable/flatmapfirst.ts -10130 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/flatmapfirst.ts', 384, 420 ] -10131 verbose linkBins object.omit@2.0.0 -10132 verbose linkMans object.omit@2.0.0 -10133 verbose rebuildBundles object.omit@2.0.0 -10134 verbose rebuildBundles [ 'for-own', 'is-extendable' ] -10135 info install object.omit@2.0.0 -10136 verbose request uri http://registry.npm.alibaba-inc.com/is-number -10137 verbose request no auth needed -10138 info attempt registry request try #1 at 上午9:12:31 -10139 verbose etag "4bac-KD0NLWE9r5tGu+vCYNh0tw" -10140 http request GET http://registry.npm.alibaba-inc.com/is-number -10141 verbose request uri http://registry.npm.alibaba-inc.com/isobject -10142 verbose request no auth needed -10143 info attempt registry request try #1 at 上午9:12:31 -10144 verbose etag "3d8b-XIIXg0Ynotm1j7kXH7If2Q" -10145 http request GET http://registry.npm.alibaba-inc.com/isobject -10146 verbose request uri http://registry.npm.alibaba-inc.com/randomatic -10147 verbose request no auth needed -10148 info attempt registry request try #1 at 上午9:12:31 -10149 verbose etag "6509-jpTholhp6u/Jmb2JNbFX1Q" -10150 http request GET http://registry.npm.alibaba-inc.com/randomatic -10151 info linkStuff concat-map@0.0.1 -10152 silly linkStuff concat-map@0.0.1 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules as its parent node_modules -10153 silly linkStuff concat-map@0.0.1 is part of a global install -10154 silly linkStuff concat-map@0.0.1 is installed into a global node_modules -10155 info postinstall object.omit@2.0.0 -10156 verbose request uri http://registry.npm.alibaba-inc.com/repeat-string -10157 verbose request no auth needed -10158 info attempt registry request try #1 at 上午9:12:31 -10159 verbose etag "68be-poCgKsZKaSAUOBbgKNmBPQ" -10160 http request GET http://registry.npm.alibaba-inc.com/repeat-string -10161 verbose linkBins concat-map@0.0.1 -10162 verbose linkMans concat-map@0.0.1 -10163 verbose rebuildBundles concat-map@0.0.1 -10164 verbose unlock done using /home/ruanyf/.tnpm/_locks/object-omit-35dbc341880dbc51.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/object.omit -10165 info install concat-map@0.0.1 -10166 silly gunzTarPerm extractEntry intersectionWith.js -10167 silly gunzTarPerm extractEntry _mapCacheSet.js -10168 info postinstall concat-map@0.0.1 -10169 silly gunzTarPerm extractEntry ts/core/linq/observable/flatmaplatest.ts -10170 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/flatmaplatest.ts', 384, 420 ] -10171 silly gunzTarPerm extractEntry ts/core/linq/observable/flatmapwithmaxconcurrent.ts -10172 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/flatmapwithmaxconcurrent.ts', -10172 silly gunzTarPerm 384, -10172 silly gunzTarPerm 420 ] -10173 silly gunzTarPerm extractEntry ts/core/linq/observable/for.ts -10174 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/for.ts', 384, 420 ] -10175 silly gunzTarPerm extractEntry ts/core/linq/observable/forkjoin.ts -10176 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/forkjoin.ts', 384, 420 ] -10177 verbose unlock done using /home/ruanyf/.tnpm/_locks/concat-map-f61c715bbee21c52.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map -10178 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -10179 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -10180 silly gunzTarPerm extractEntry ts/core/linq/observable/forkjoinproto.ts -10181 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/forkjoinproto.ts', 384, 420 ] -10182 silly gunzTarPerm extractEntry ts/core/linq/observable/from.ts -10183 info linkStuff brace-expansion@1.1.4 -10184 silly linkStuff brace-expansion@1.1.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules as its parent node_modules -10185 silly linkStuff brace-expansion@1.1.4 is part of a global install -10186 silly linkStuff brace-expansion@1.1.4 is installed into a global node_modules -10187 silly gunzTarPerm extractEntry invert.js -10188 silly gunzTarPerm extractEntry _mapCacheHas.js -10189 silly gunzTarPerm extractEntry ts/core/linq/observable/fromarray.ts -10190 verbose linkBins brace-expansion@1.1.4 -10191 verbose linkMans brace-expansion@1.1.4 -10192 verbose rebuildBundles brace-expansion@1.1.4 -10193 silly gunzTarPerm extractEntry ts/core/linq/observable/fromcallback.ts -10194 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/fromcallback.ts', 384, 420 ] -10195 verbose rebuildBundles [ 'balanced-match', 'concat-map' ] -10196 info install brace-expansion@1.1.4 -10197 silly gunzTarPerm extractEntry ts/core/linq/observable/fromevent.ts -10198 info postinstall brace-expansion@1.1.4 -10199 silly gunzTarPerm extractEntry ts/core/linq/observable/fromeventpattern.ts -10200 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/fromeventpattern.ts', 384, 420 ] -10201 silly gunzTarPerm extractEntry invertBy.js -10202 silly gunzTarPerm extractEntry _mapCacheGet.js -10203 verbose unlock done using /home/ruanyf/.tnpm/_locks/brace-expansion-96a64109b5c596e2.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion -10204 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -10205 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -10206 silly gunzTarPerm extractEntry ts/core/linq/observable/fromnodecallback.ts -10207 info linkStuff minimatch@3.0.0 -10208 silly linkStuff minimatch@3.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules as its parent node_modules -10209 silly linkStuff minimatch@3.0.0 is part of a global install -10210 silly linkStuff minimatch@3.0.0 is installed into a global node_modules -10211 verbose linkBins minimatch@3.0.0 -10212 verbose linkMans minimatch@3.0.0 -10213 verbose rebuildBundles minimatch@3.0.0 -10214 silly gunzTarPerm extractEntry invoke.js -10215 silly gunzTarPerm extractEntry _mapCacheDelete.js -10216 verbose rebuildBundles [ 'brace-expansion' ] -10217 info install minimatch@3.0.0 -10218 silly gunzTarPerm extractEntry ts/core/linq/observable/frompromise.ts -10219 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/frompromise.ts', 384, 420 ] -10220 silly gunzTarPerm extractEntry ts/core/linq/observable/generate.ts -10221 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/generate.ts', 384, 420 ] -10222 silly gunzTarPerm extractEntry ts/core/linq/observable/generatewithabsolutetime.ts -10223 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/generatewithabsolutetime.ts', -10223 silly gunzTarPerm 384, -10223 silly gunzTarPerm 420 ] -10224 info postinstall minimatch@3.0.0 -10225 silly gunzTarPerm extractEntry ts/core/linq/observable/generatewithrelativetime.ts -10226 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/generatewithrelativetime.ts', -10226 silly gunzTarPerm 384, -10226 silly gunzTarPerm 420 ] -10227 silly gunzTarPerm extractEntry ts/core/linq/observable/groupby.ts -10228 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/groupby.ts', 384, 420 ] -10229 verbose unlock done using /home/ruanyf/.tnpm/_locks/minimatch-57daa14adac5f015.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/minimatch -10230 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -10231 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -10232 silly gunzTarPerm extractEntry ts/core/linq/observable/groupbyuntil.ts -10233 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/groupbyuntil.ts', 384, 420 ] -10234 silly gunzTarPerm extractEntry invokeMap.js -10235 silly gunzTarPerm extractEntry _mapCacheClear.js -10236 silly gunzTarPerm extractEntry ts/core/linq/observable/groupjoin.ts -10237 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/groupjoin.ts', 384, 420 ] -10238 info linkStuff glob@5.0.15 -10239 silly linkStuff glob@5.0.15 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules -10240 silly linkStuff glob@5.0.15 is part of a global install -10241 silly linkStuff glob@5.0.15 is installed into a global node_modules -10242 silly gunzTarPerm extractEntry ts/core/linq/observable/if.ts -10243 verbose linkBins glob@5.0.15 -10244 verbose linkMans glob@5.0.15 -10245 verbose rebuildBundles glob@5.0.15 -10246 silly gunzTarPerm extractEntry ts/core/linq/observable/ignoreelements.ts -10247 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/ignoreelements.ts', 384, 420 ] -10248 verbose rebuildBundles [ 'inflight', 'inherits', 'minimatch', 'once', 'path-is-absolute' ] -10249 info install glob@5.0.15 -10250 silly gunzTarPerm extractEntry ts/core/linq/observable/includes.ts -10251 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/includes.ts', 384, 420 ] -10252 info postinstall glob@5.0.15 -10253 silly gunzTarPerm extractEntry isArguments.js -10254 silly gunzTarPerm extractEntry _listCacheSet.js -10255 silly gunzTarPerm extractEntry ts/core/linq/observable/indexof.ts -10256 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/indexof.ts', 384, 420 ] -10257 verbose unlock done using /home/ruanyf/.tnpm/_locks/glob-e1e1511196958541.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob -10258 silly gunzTarPerm extractEntry ts/core/linq/observable/interval.ts -10259 silly gunzTarPerm extractEntry ts/core/linq/observable/isempty.ts -10260 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/isempty.ts', 384, 420 ] -10261 silly gunzTarPerm extractEntry ts/core/linq/observable/join.ts -10262 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/join.ts', 384, 420 ] -10263 silly gunzTarPerm extractEntry ts/core/linq/observable/jortsort.ts -10264 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/jortsort.ts', 384, 420 ] -10265 silly gunzTarPerm extractEntry isArray.js -10266 silly gunzTarPerm extractEntry _listCacheHas.js -10267 silly gunzTarPerm extractEntry isArrayBuffer.js -10268 silly gunzTarPerm extractEntry _listCacheGet.js -10269 silly gunzTarPerm extractEntry ts/core/linq/observable/jortsortuntil.ts -10270 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/jortsortuntil.ts', 384, 420 ] -10271 silly gunzTarPerm extractEntry ts/core/linq/observable/just.ts -10272 silly gunzTarPerm extractEntry isArrayLike.js -10273 silly gunzTarPerm extractEntry _listCacheDelete.js -10274 silly gunzTarPerm extractEntry ts/core/linq/observable/last.ts -10275 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/last.ts', 384, 420 ] -10276 silly gunzTarPerm extractEntry ts/core/linq/observable/let.ts -10277 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/let.ts', 384, 420 ] -10278 silly gunzTarPerm extractEntry ts/core/linq/observable/manyselect.ts -10279 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/manyselect.ts', 384, 420 ] -10280 silly gunzTarPerm extractEntry ts/core/linq/observable/map.ts -10281 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/map.ts', 384, 420 ] -10282 silly gunzTarPerm extractEntry ts/core/linq/observable/materialize.ts -10283 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/materialize.ts', 384, 420 ] -10284 silly gunzTarPerm extractEntry ts/core/linq/observable/max.ts -10285 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/max.ts', 384, 420 ] -10286 silly gunzTarPerm extractEntry ts/core/linq/observable/maxby.ts -10287 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/maxby.ts', 384, 420 ] -10288 silly gunzTarPerm extractEntry isArrayLikeObject.js -10289 silly gunzTarPerm extractEntry _listCacheClear.js -10290 silly gunzTarPerm extractEntry ts/core/linq/observable/merge.ts -10291 silly gunzTarPerm extractEntry ts/core/linq/observable/mergeall.ts -10292 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/mergeall.ts', 384, 420 ] -10293 silly gunzTarPerm extractEntry ts/core/linq/observable/mergeconcat.ts -10294 silly gunzTarPerm extractEntry ts/core/linq/observable/mergedelayerror.ts -10295 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/mergedelayerror.ts', 384, 420 ] -10296 silly gunzTarPerm extractEntry isBoolean.js -10297 silly gunzTarPerm extractEntry _lazyValue.js -10298 silly gunzTarPerm extractEntry ts/core/linq/observable/min.ts -10299 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/min.ts', 384, 420 ] -10300 silly gunzTarPerm extractEntry ts/core/linq/observable/ambproto.ts -10301 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/ambproto.ts', 384, 420 ] -10302 silly gunzTarPerm extractEntry ts/core/linq/observable/multicast.ts -10303 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/multicast.ts', 384, 420 ] -10304 silly gunzTarPerm extractEntry ts/core/linq/observable/never.ts -10305 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/never.ts', 384, 420 ] -10306 silly gunzTarPerm extractEntry isBuffer.js -10307 silly gunzTarPerm extractEntry _lazyReverse.js -10308 silly gunzTarPerm extractEntry ts/core/linq/observable/observeon.ts -10309 silly gunzTarPerm extractEntry ts/core/linq/observable/of.ts -10310 silly gunzTarPerm extractEntry ts/core/linq/observable/ofarraychanges.ts -10311 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/ofarraychanges.ts', 384, 420 ] -10312 silly gunzTarPerm extractEntry isDate.js -10313 silly gunzTarPerm extractEntry _lazyClone.js -10314 silly gunzTarPerm extractEntry ts/core/linq/observable/ofobjectchanges.ts -10315 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/ofobjectchanges.ts', 384, 420 ] -10316 silly gunzTarPerm extractEntry ts/core/linq/observable/onerrorresumenext.ts -10317 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/onerrorresumenext.ts', 384, 420 ] -10318 silly gunzTarPerm extractEntry ts/core/linq/observable/onerrorresumenextproto.ts -10319 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/onerrorresumenextproto.ts', 384, 420 ] -10320 silly gunzTarPerm extractEntry ts/core/linq/observable/pairs.ts -10321 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/pairs.ts', 384, 420 ] -10322 silly gunzTarPerm extractEntry isElement.js -10323 silly gunzTarPerm extractEntry _iteratorToArray.js -10324 http 304 http://registry.npm.alibaba-inc.com/isobject -10325 verbose headers { server: 'Tengine', -10325 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -10325 verbose headers connection: 'keep-alive', -10325 verbose headers etag: '"3d8b-XIIXg0Ynotm1j7kXH7If2Q"', -10325 verbose headers 'x-readtime': '27' } -10326 silly get cb [ 304, -10326 silly get { server: 'Tengine', -10326 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -10326 silly get connection: 'keep-alive', -10326 silly get etag: '"3d8b-XIIXg0Ynotm1j7kXH7If2Q"', -10326 silly get 'x-readtime': '27' } ] -10327 verbose etag http://registry.npm.alibaba-inc.com/isobject from cache -10328 verbose get saving isobject to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/isobject/.cache.json -10329 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -10330 silly gunzTarPerm extractEntry ts/core/linq/observable/pairwise.ts -10331 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/pairwise.ts', 384, 420 ] -10332 silly gunzTarPerm extractEntry ts/core/linq/observable/partition.ts -10333 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/partition.ts', 384, 420 ] -10334 http 304 http://registry.npm.alibaba-inc.com/is-number -10335 verbose headers { server: 'Tengine', -10335 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -10335 verbose headers connection: 'keep-alive', -10335 verbose headers etag: '"4bac-KD0NLWE9r5tGu+vCYNh0tw"', -10335 verbose headers 'x-readtime': '32' } -10336 silly get cb [ 304, -10336 silly get { server: 'Tengine', -10336 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -10336 silly get connection: 'keep-alive', -10336 silly get etag: '"4bac-KD0NLWE9r5tGu+vCYNh0tw"', -10336 silly get 'x-readtime': '32' } ] -10337 verbose etag http://registry.npm.alibaba-inc.com/is-number from cache -10338 verbose get saving is-number to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/is-number/.cache.json -10339 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -10340 http 304 http://registry.npm.alibaba-inc.com/randomatic -10341 verbose headers { server: 'Tengine', -10341 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -10341 verbose headers connection: 'keep-alive', -10341 verbose headers etag: '"6509-jpTholhp6u/Jmb2JNbFX1Q"', -10341 verbose headers 'x-readtime': '32' } -10342 silly get cb [ 304, -10342 silly get { server: 'Tengine', -10342 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -10342 silly get connection: 'keep-alive', -10342 silly get etag: '"6509-jpTholhp6u/Jmb2JNbFX1Q"', -10342 silly get 'x-readtime': '32' } ] -10343 verbose etag http://registry.npm.alibaba-inc.com/randomatic from cache -10344 verbose get saving randomatic to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/randomatic/.cache.json -10345 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -10346 silly gunzTarPerm extractEntry ts/core/linq/observable/pipe.ts -10347 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/pipe.ts', 384, 420 ] -10348 http 304 http://registry.npm.alibaba-inc.com/repeat-string -10349 verbose headers { server: 'Tengine', -10349 verbose headers date: 'Fri, 20 May 2016 01:12:31 GMT', -10349 verbose headers connection: 'keep-alive', -10349 verbose headers etag: '"68be-poCgKsZKaSAUOBbgKNmBPQ"', -10349 verbose headers 'x-readtime': '32' } -10350 silly get cb [ 304, -10350 silly get { server: 'Tengine', -10350 silly get date: 'Fri, 20 May 2016 01:12:31 GMT', -10350 silly get connection: 'keep-alive', -10350 silly get etag: '"68be-poCgKsZKaSAUOBbgKNmBPQ"', -10350 silly get 'x-readtime': '32' } ] -10351 verbose etag http://registry.npm.alibaba-inc.com/repeat-string from cache -10352 verbose get saving repeat-string to /home/ruanyf/.tnpm/registry.npm.alibaba-inc.com/repeat-string/.cache.json -10353 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -10354 silly gunzTarPerm extractEntry ts/core/linq/observable/pluck.ts -10355 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/pluck.ts', 384, 420 ] -10356 silly gunzTarPerm extractEntry isEmpty.js -10357 silly gunzTarPerm extractEntry _isStrictComparable.js -10358 silly gunzTarPerm extractEntry ts/core/linq/observable/publish.ts -10359 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/publish.ts', 384, 420 ] -10360 silly addNameRange number 2 { name: 'isobject', range: '>=2.0.0 <3.0.0', hasData: true } -10361 silly addNameRange versions [ 'isobject', -10361 silly addNameRange [ '2.1.0', -10361 silly addNameRange '2.0.0', -10361 silly addNameRange '1.0.2', -10361 silly addNameRange '1.0.1', -10361 silly addNameRange '1.0.0', -10361 silly addNameRange '0.2.0', -10361 silly addNameRange '0.1.1', -10361 silly addNameRange '0.1.0' ] ] -10362 silly addNamed isobject@2.1.0 -10363 verbose addNamed "2.1.0" is a plain semver version for isobject -10364 silly gunzTarPerm extractEntry ts/core/linq/observable/publishlast.ts -10365 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/publishlast.ts', 384, 420 ] -10366 silly addNameRange number 2 { name: 'is-number', range: '>=2.1.0 <3.0.0', hasData: true } -10367 silly addNameRange versions [ 'is-number', -10367 silly addNameRange [ '2.1.0', -10367 silly addNameRange '2.0.2', -10367 silly addNameRange '2.0.1', -10367 silly addNameRange '2.0.0', -10367 silly addNameRange '1.1.2', -10367 silly addNameRange '1.1.1', -10367 silly addNameRange '1.1.0', -10367 silly addNameRange '1.0.0', -10367 silly addNameRange '0.1.1', -10367 silly addNameRange '0.1.0' ] ] -10368 silly addNamed is-number@2.1.0 -10369 verbose addNamed "2.1.0" is a plain semver version for is-number -10370 silly addNameRange number 2 { name: 'randomatic', range: '>=1.1.3 <2.0.0', hasData: true } -10371 silly addNameRange versions [ 'randomatic', -10371 silly addNameRange [ '1.1.5', -10371 silly addNameRange '1.1.4', -10371 silly addNameRange '1.1.3', -10371 silly addNameRange '1.1.2', -10371 silly addNameRange '1.1.1', -10371 silly addNameRange '1.1.0', -10371 silly addNameRange '1.0.1', -10371 silly addNameRange '1.0.0', -10371 silly addNameRange '0.1.4', -10371 silly addNameRange '0.1.3', -10371 silly addNameRange '0.1.2', -10371 silly addNameRange '0.1.1', -10371 silly addNameRange '0.1.0' ] ] -10372 silly addNamed randomatic@1.1.5 -10373 verbose addNamed "1.1.5" is a plain semver version for randomatic -10374 silly gunzTarPerm extractEntry ts/core/linq/observable/publishvalue.ts -10375 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/publishvalue.ts', 384, 420 ] -10376 silly addNameRange number 2 { name: 'repeat-string', range: '>=1.5.2 <2.0.0', hasData: true } -10377 silly addNameRange versions [ 'repeat-string', -10377 silly addNameRange [ '1.5.4', -10377 silly addNameRange '1.5.2', -10377 silly addNameRange '1.5.1', -10377 silly addNameRange '1.5.0', -10377 silly addNameRange '1.4.0', -10377 silly addNameRange '1.3.0', -10377 silly addNameRange '1.2.0', -10377 silly addNameRange '1.1.0', -10377 silly addNameRange '1.0.0', -10377 silly addNameRange '0.2.2', -10377 silly addNameRange '0.2.1', -10377 silly addNameRange '0.2.0', -10377 silly addNameRange '0.1.2', -10377 silly addNameRange '0.1.1', -10377 silly addNameRange '0.1.0' ] ] -10378 silly addNamed repeat-string@1.5.4 -10379 verbose addNamed "1.5.4" is a plain semver version for repeat-string -10380 silly gunzTarPerm extractEntry ts/core/linq/observable/range.ts -10381 silly cache afterAdd isobject@2.1.0 -10382 verbose afterAdd /home/ruanyf/.tnpm/isobject/2.1.0/package/package.json not in flight; writing -10383 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -10384 silly gunzTarPerm extractEntry isEqual.js -10385 silly gunzTarPerm extractEntry _isPrototype.js -10386 silly gunzTarPerm extractEntry ts/core/linq/observable/reduce.ts -10387 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/reduce.ts', 384, 420 ] -10388 silly cache afterAdd is-number@2.1.0 -10389 verbose afterAdd /home/ruanyf/.tnpm/is-number/2.1.0/package/package.json not in flight; writing -10390 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -10391 silly cache afterAdd randomatic@1.1.5 -10392 verbose afterAdd /home/ruanyf/.tnpm/randomatic/1.1.5/package/package.json not in flight; writing -10393 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -10394 silly gunzTarPerm extractEntry ts/core/linq/observable/repeat.ts -10395 silly gunzTarPerm extractEntry ts/core/linq/observable/repeatproto.ts -10396 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/repeatproto.ts', 384, 420 ] -10397 verbose afterAdd /home/ruanyf/.tnpm/isobject/2.1.0/package/package.json written -10398 silly cache afterAdd repeat-string@1.5.4 -10399 verbose afterAdd /home/ruanyf/.tnpm/repeat-string/1.5.4/package/package.json not in flight; writing -10400 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -10401 verbose afterAdd /home/ruanyf/.tnpm/randomatic/1.1.5/package/package.json written -10402 verbose afterAdd /home/ruanyf/.tnpm/is-number/2.1.0/package/package.json written -10403 silly gunzTarPerm extractEntry ts/core/linq/observable/replay.ts -10404 silly gunzTarPerm extractEntry ts/core/linq/observable/retry.ts -10405 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/retry.ts', 384, 420 ] -10406 silly gunzTarPerm extractEntry isEqualWith.js -10407 silly gunzTarPerm extractEntry _isLaziable.js -10408 silly gunzTarPerm extractEntry ts/core/linq/observable/retrywhen.ts -10409 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/retrywhen.ts', 384, 420 ] -10410 verbose afterAdd /home/ruanyf/.tnpm/repeat-string/1.5.4/package/package.json written -10411 silly install resolved [ { name: 'isobject', -10411 silly install resolved description: 'Returns true if the value is an object and not an array or null.', -10411 silly install resolved version: '2.1.0', -10411 silly install resolved homepage: 'https://github.com/jonschlinkert/isobject', -10411 silly install resolved author: -10411 silly install resolved { name: 'Jon Schlinkert', -10411 silly install resolved url: 'https://github.com/jonschlinkert' }, -10411 silly install resolved repository: -10411 silly install resolved { type: 'git', -10411 silly install resolved url: 'git+https://github.com/jonschlinkert/isobject.git' }, -10411 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/isobject/issues' }, -10411 silly install resolved license: 'MIT', -10411 silly install resolved files: [ 'index.js' ], -10411 silly install resolved main: 'index.js', -10411 silly install resolved engines: { node: '>=0.10.0' }, -10411 silly install resolved scripts: { test: 'mocha' }, -10411 silly install resolved dependencies: { isarray: '1.0.0' }, -10411 silly install resolved devDependencies: { 'gulp-format-md': '^0.1.9', mocha: '^2.4.5' }, -10411 silly install resolved keywords: -10411 silly install resolved [ 'check', -10411 silly install resolved 'is', -10411 silly install resolved 'is-object', -10411 silly install resolved 'isobject', -10411 silly install resolved 'kind', -10411 silly install resolved 'kind-of', -10411 silly install resolved 'kindof', -10411 silly install resolved 'native', -10411 silly install resolved 'object', -10411 silly install resolved 'type', -10411 silly install resolved 'typeof', -10411 silly install resolved 'value' ], -10411 silly install resolved verb: -10411 silly install resolved { related: [Object], -10411 silly install resolved toc: false, -10411 silly install resolved layout: 'default', -10411 silly install resolved tasks: [Object], -10411 silly install resolved plugins: [Object], -10411 silly install resolved lint: [Object], -10411 silly install resolved reflinks: [Object] }, -10411 silly install resolved gitHead: 'd693ec8d31b02b42a19b2d806407a4ecb2f9fb73', -10411 silly install resolved _id: 'isobject@2.1.0', -10411 silly install resolved _shasum: 'f065561096a3f1da2ef46272f815c840d87e0c89', -10411 silly install resolved _from: 'isobject@>=2.0.0 <3.0.0', -10411 silly install resolved _npmVersion: '3.6.0', -10411 silly install resolved _nodeVersion: '5.5.0', -10411 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -10411 silly install resolved maintainers: [ [Object], [Object] ], -10411 silly install resolved dist: -10411 silly install resolved { shasum: 'f065561096a3f1da2ef46272f815c840d87e0c89', -10411 silly install resolved size: 2387, -10411 silly install resolved noattachment: false, -10411 silly install resolved key: 'isobject/-/isobject-2.1.0.tgz', -10411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isobject/download/isobject-2.1.0.tgz' }, -10411 silly install resolved _npmOperationalInternal: -10411 silly install resolved { host: 'packages-16-east.internal.npmjs.com', -10411 silly install resolved tmp: 'tmp/isobject-2.1.0.tgz_1461618425262_0.8524945541284978' }, -10411 silly install resolved directories: {}, -10411 silly install resolved publish_time: 1461618427504, -10411 silly install resolved _cnpm_publish_time: 1461618427504, -10411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isobject/download/isobject-2.1.0.tgz', -10411 silly install resolved readme: 'ERROR: No README data found!' }, -10411 silly install resolved { name: 'randomatic', -10411 silly install resolved description: 'Generate randomized strings of a specified length, fast. Only the length is necessary, but you can optionally generate patterns using any combination of numeric, alpha-numeric, alphabetical, special or custom characters.', -10411 silly install resolved version: '1.1.5', -10411 silly install resolved homepage: 'https://github.com/jonschlinkert/randomatic', -10411 silly install resolved author: -10411 silly install resolved { name: 'Jon Schlinkert', -10411 silly install resolved url: 'https://github.com/jonschlinkert' }, -10411 silly install resolved repository: -10411 silly install resolved { type: 'git', -10411 silly install resolved url: 'git+https://github.com/jonschlinkert/randomatic.git' }, -10411 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/randomatic/issues' }, -10411 silly install resolved license: 'MIT', -10411 silly install resolved files: [ 'index.js' ], -10411 silly install resolved main: 'index.js', -10411 silly install resolved scripts: { test: 'mocha' }, -10411 silly install resolved dependencies: { 'is-number': '^2.0.2', 'kind-of': '^3.0.2' }, -10411 silly install resolved devDependencies: -10411 silly install resolved { 'ansi-bold': '^0.1.1', -10411 silly install resolved benchmarked: '^0.1.4', -10411 silly install resolved glob: '^5.0.15', -10411 silly install resolved mocha: '*', -10411 silly install resolved should: '*' }, -10411 silly install resolved keywords: -10411 silly install resolved [ 'alpha', -10411 silly install resolved 'alpha-numeric', -10411 silly install resolved 'alphanumeric', -10411 silly install resolved 'characters', -10411 silly install resolved 'chars', -10411 silly install resolved 'numeric', -10411 silly install resolved 'rand', -10411 silly install resolved 'random', -10411 silly install resolved 'randomize', -10411 silly install resolved 'randomized' ], -10411 silly install resolved verb: { related: [Object], plugins: [Object] }, -10411 silly install resolved gitHead: '8d74759d683a580412484e95ec5f1b87d93fd50c', -10411 silly install resolved _id: 'randomatic@1.1.5', -10411 silly install resolved _shasum: '5e9ef5f2d573c67bd2b8124ae90b5156e457840b', -10411 silly install resolved _from: 'randomatic@>=1.1.3 <2.0.0', -10411 silly install resolved _npmVersion: '3.3.6', -10411 silly install resolved _nodeVersion: '5.0.0', -10411 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -10411 silly install resolved maintainers: [ [Object] ], -10411 silly install resolved dist: -10411 silly install resolved { shasum: '5e9ef5f2d573c67bd2b8124ae90b5156e457840b', -10411 silly install resolved size: 3537, -10411 silly install resolved noattachment: false, -10411 silly install resolved key: 'randomatic/-/randomatic-1.1.5.tgz', -10411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/randomatic/download/randomatic-1.1.5.tgz' }, -10411 silly install resolved directories: {}, -10411 silly install resolved publish_time: 1449774821356, -10411 silly install resolved _cnpm_publish_time: 1449774821356, -10411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/randomatic/download/randomatic-1.1.5.tgz', -10411 silly install resolved readme: 'ERROR: No README data found!' }, -10411 silly install resolved { name: 'is-number', -10411 silly install resolved description: 'Returns true if the value is a number. comprehensive tests.', -10411 silly install resolved version: '2.1.0', -10411 silly install resolved homepage: 'https://github.com/jonschlinkert/is-number', -10411 silly install resolved author: -10411 silly install resolved { name: 'Jon Schlinkert', -10411 silly install resolved url: 'https://github.com/jonschlinkert' }, -10411 silly install resolved repository: -10411 silly install resolved { type: 'git', -10411 silly install resolved url: 'git+https://github.com/jonschlinkert/is-number.git' }, -10411 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/is-number/issues' }, -10411 silly install resolved license: 'MIT', -10411 silly install resolved files: [ 'index.js' ], -10411 silly install resolved main: 'index.js', -10411 silly install resolved engines: { node: '>=0.10.0' }, -10411 silly install resolved scripts: { test: 'mocha' }, -10411 silly install resolved dependencies: { 'kind-of': '^3.0.2' }, -10411 silly install resolved devDependencies: { benchmarked: '^0.1.3', chalk: '^0.5.1', mocha: '*' }, -10411 silly install resolved keywords: -10411 silly install resolved [ 'check', -10411 silly install resolved 'coerce', -10411 silly install resolved 'coercion', -10411 silly install resolved 'integer', -10411 silly install resolved 'is', -10411 silly install resolved 'is number', -10411 silly install resolved 'is-number', -10411 silly install resolved 'istype', -10411 silly install resolved 'kind of', -10411 silly install resolved 'math', -10411 silly install resolved 'number', -10411 silly install resolved 'test', -10411 silly install resolved 'type', -10411 silly install resolved 'typeof', -10411 silly install resolved 'value' ], -10411 silly install resolved verb: { related: [Object] }, -10411 silly install resolved gitHead: 'd06c6e2cc048d3cad016cb8dfb055bb14d86fffa', -10411 silly install resolved _id: 'is-number@2.1.0', -10411 silly install resolved _shasum: '01fcbbb393463a548f2f466cce16dece49db908f', -10411 silly install resolved _from: 'is-number@>=2.1.0 <3.0.0', -10411 silly install resolved _npmVersion: '3.3.6', -10411 silly install resolved _nodeVersion: '5.0.0', -10411 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -10411 silly install resolved maintainers: [ [Object], [Object] ], -10411 silly install resolved dist: -10411 silly install resolved { shasum: '01fcbbb393463a548f2f466cce16dece49db908f', -10411 silly install resolved size: 2450, -10411 silly install resolved noattachment: false, -10411 silly install resolved key: 'is-number/-/is-number-2.1.0.tgz', -10411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/is-number/download/is-number-2.1.0.tgz' }, -10411 silly install resolved directories: {}, -10411 silly install resolved publish_time: 1448200616624, -10411 silly install resolved _cnpm_publish_time: 1448200616624, -10411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/is-number/download/is-number-2.1.0.tgz', -10411 silly install resolved readme: 'ERROR: No README data found!' }, -10411 silly install resolved { name: 'repeat-string', -10411 silly install resolved description: 'Repeat the given string n times. Fastest implementation for repeating a string.', -10411 silly install resolved version: '1.5.4', -10411 silly install resolved homepage: 'https://github.com/jonschlinkert/repeat-string', -10411 silly install resolved author: -10411 silly install resolved { name: 'Jon Schlinkert', -10411 silly install resolved url: 'http://github.com/jonschlinkert' }, -10411 silly install resolved repository: -10411 silly install resolved { type: 'git', -10411 silly install resolved url: 'git+https://github.com/jonschlinkert/repeat-string.git' }, -10411 silly install resolved bugs: { url: 'https://github.com/jonschlinkert/repeat-string/issues' }, -10411 silly install resolved license: 'MIT', -10411 silly install resolved files: [ 'index.js' ], -10411 silly install resolved main: 'index.js', -10411 silly install resolved engines: { node: '>=0.10' }, -10411 silly install resolved scripts: { test: 'mocha' }, -10411 silly install resolved devDependencies: -10411 silly install resolved { benchmarked: '^0.1.5', -10411 silly install resolved chalk: '^1.1.1', -10411 silly install resolved glob: '^7.0.0', -10411 silly install resolved 'gulp-format-md': '^0.1.7', -10411 silly install resolved mocha: '*', -10411 silly install resolved repeating: '^2.0.0', -10411 silly install resolved should: '*' }, -10411 silly install resolved keywords: -10411 silly install resolved [ 'fast', -10411 silly install resolved 'fastest', -10411 silly install resolved 'fill', -10411 silly install resolved 'left', -10411 silly install resolved 'left-pad', -10411 silly install resolved 'multiple', -10411 silly install resolved 'pad', -10411 silly install resolved 'padding', -10411 silly install resolved 'repeat', -10411 silly install resolved 'repeating', -10411 silly install resolved 'repetition', -10411 silly install resolved 'right', -10411 silly install resolved 'right-pad', -10411 silly install resolved 'string', -10411 silly install resolved 'times' ], -10411 silly install resolved verb: -10411 silly install resolved { related: [Object], -10411 silly install resolved toc: false, -10411 silly install resolved layout: 'default', -10411 silly install resolved tasks: [Object], -10411 silly install resolved plugins: [Object], -10411 silly install resolved reflinks: [Object] }, -10411 silly install resolved gitHead: '53b4ac32e4cfa5bf339aed73544fe86b0f3e9190', -10411 silly install resolved _id: 'repeat-string@1.5.4', -10411 silly install resolved _shasum: '64ec0c91e0f4b475f90d5b643651e3e6e5b6c2d5', -10411 silly install resolved _from: 'repeat-string@>=1.5.2 <2.0.0', -10411 silly install resolved _npmVersion: '3.6.0', -10411 silly install resolved _nodeVersion: '5.5.0', -10411 silly install resolved _npmUser: { name: 'jonschlinkert', email: 'github@sellside.com' }, -10411 silly install resolved maintainers: [ [Object], [Object] ], -10411 silly install resolved dist: -10411 silly install resolved { shasum: '64ec0c91e0f4b475f90d5b643651e3e6e5b6c2d5', -10411 silly install resolved size: 2855, -10411 silly install resolved noattachment: false, -10411 silly install resolved key: 'repeat-string/-/repeat-string-1.5.4.tgz', -10411 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/repeat-string/download/repeat-string-1.5.4.tgz' }, -10411 silly install resolved _npmOperationalInternal: -10411 silly install resolved { host: 'packages-5-east.internal.npmjs.com', -10411 silly install resolved tmp: 'tmp/repeat-string-1.5.4.tgz_1456747759357_0.14794702967628837' }, -10411 silly install resolved directories: {}, -10411 silly install resolved publish_time: 1456747760719, -10411 silly install resolved _cnpm_publish_time: 1456747760719, -10411 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/repeat-string/download/repeat-string-1.5.4.tgz', -10411 silly install resolved readme: 'ERROR: No README data found!' } ] -10412 info install isobject@2.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -10413 info install randomatic@1.1.5 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -10414 info install is-number@2.1.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -10415 info install repeat-string@1.5.4 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -10416 info installOne isobject@2.1.0 -10417 verbose installOne of isobject to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range not in flight; installing -10418 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -10419 info installOne randomatic@1.1.5 -10420 verbose installOne of randomatic to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range not in flight; installing -10421 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -10422 info installOne is-number@2.1.0 -10423 verbose installOne of is-number to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range not in flight; installing -10424 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -10425 info installOne repeat-string@1.5.4 -10426 verbose installOne of repeat-string to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range not in flight; installing -10427 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -10428 silly gunzTarPerm extractEntry ts/core/linq/observable/sample.ts -10429 verbose lock using /home/ruanyf/.tnpm/_locks/isobject-9016e78a1014758c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10430 verbose lock using /home/ruanyf/.tnpm/_locks/randomatic-cafe9c7b4df7f297.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic -10431 verbose lock using /home/ruanyf/.tnpm/_locks/is-number-e774981ed8f34323.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number -10432 verbose lock using /home/ruanyf/.tnpm/_locks/repeat-string-1f5fb425507e0c8b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string -10433 silly install write writing isobject 2.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10434 silly install write writing randomatic 1.1.5 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic -10435 silly install write writing is-number 2.1.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number -10436 silly install write writing repeat-string 1.5.4 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string -10437 silly gunzTarPerm extractEntry ts/core/linq/observable/scan.ts -10438 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/scan.ts', 384, 420 ] -10439 silly gunzTarPerm extractEntry isError.js -10440 silly gunzTarPerm extractEntry _isKeyable.js -10441 silly gunzTarPerm extractEntry ts/core/linq/observable/selectmanyobserver.ts -10442 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/selectmanyobserver.ts', 384, 420 ] -10443 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10444 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic -10445 silly gunzTarPerm extractEntry ts/core/linq/observable/sequenceequal.ts -10446 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/sequenceequal.ts', 384, 420 ] -10447 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number -10448 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string -10449 silly gunzTarPerm extractEntry ts/core/linq/observable/share.ts -10450 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/share.ts', 384, 420 ] -10451 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject is being purged from base /home/ruanyf/npm-global -10452 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10453 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic is being purged from base /home/ruanyf/npm-global -10454 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic -10455 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number is being purged from base /home/ruanyf/npm-global -10456 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number -10457 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string is being purged from base /home/ruanyf/npm-global -10458 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string -10459 verbose tar unpack /home/ruanyf/.tnpm/isobject/2.1.0/package.tgz -10460 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10461 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject is being purged -10462 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10463 verbose tar unpack /home/ruanyf/.tnpm/randomatic/1.1.5/package.tgz -10464 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic -10465 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic is being purged -10466 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic -10467 silly gunzTarPerm extractEntry ts/core/linq/observable/sharereplay.ts -10468 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/sharereplay.ts', 384, 420 ] -10469 verbose tar unpack /home/ruanyf/.tnpm/is-number/2.1.0/package.tgz -10470 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number -10471 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number is being purged -10472 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number -10473 verbose tar unpack /home/ruanyf/.tnpm/repeat-string/1.5.4/package.tgz -10474 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string -10475 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string is being purged -10476 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string -10477 silly gunzTarPerm modes [ '755', '644' ] -10478 silly gunzTarPerm modes [ '755', '644' ] -10479 silly gunzTarPerm modes [ '755', '644' ] -10480 silly gunzTarPerm modes [ '755', '644' ] -10481 silly gunzTarPerm extractEntry ts/core/linq/observable/sharevalue.ts -10482 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/sharevalue.ts', 384, 420 ] -10483 silly gunzTarPerm extractEntry isFinite.js -10484 silly gunzTarPerm extractEntry _isKey.js -10485 silly gunzTarPerm extractEntry ts/core/linq/observable/single.ts -10486 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/single.ts', 384, 420 ] -10487 silly gunzTarPerm extractEntry package.json -10488 silly gunzTarPerm extractEntry ts/core/linq/observable/singleinstance.ts -10489 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/singleinstance.ts', 384, 420 ] -10490 silly gunzTarPerm extractEntry package.json -10491 silly gunzTarPerm extractEntry package.json -10492 silly gunzTarPerm extractEntry package.json -10493 silly gunzTarPerm extractEntry ts/core/linq/observable/skip.ts -10494 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skip.ts', 384, 420 ] -10495 silly gunzTarPerm extractEntry README.md -10496 silly gunzTarPerm extractEntry LICENSE -10497 silly gunzTarPerm extractEntry ts/core/linq/observable/skiplast.ts -10498 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skiplast.ts', 384, 420 ] -10499 silly gunzTarPerm extractEntry isFunction.js -10500 silly gunzTarPerm extractEntry _isIterateeCall.js -10501 silly gunzTarPerm extractEntry README.md -10502 silly gunzTarPerm extractEntry LICENSE -10503 silly gunzTarPerm modified mode [ 'LICENSE', 448, 484 ] -10504 silly gunzTarPerm extractEntry README.md -10505 silly gunzTarPerm extractEntry LICENSE -10506 silly gunzTarPerm extractEntry README.md -10507 silly gunzTarPerm extractEntry LICENSE -10508 silly gunzTarPerm extractEntry ts/core/linq/observable/skiplastwithtime.ts -10509 silly gunzTarPerm extractEntry index.js -10510 silly gunzTarPerm extractEntry isInteger.js -10511 silly gunzTarPerm extractEntry ts/core/linq/observable/skipuntil.ts -10512 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skipuntil.ts', 384, 420 ] -10513 silly gunzTarPerm extractEntry ts/core/linq/observable/skipuntilwithtime.ts -10514 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skipuntilwithtime.ts', 384, 420 ] -10515 silly gunzTarPerm extractEntry ts/core/linq/observable/skipwhile.ts -10516 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skipwhile.ts', 384, 420 ] -10517 silly gunzTarPerm extractEntry index.js -10518 silly gunzTarPerm extractEntry index.js -10519 silly gunzTarPerm extractEntry index.js -10520 silly gunzTarPerm extractEntry ts/core/linq/observable/skipwithtime.ts -10521 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/skipwithtime.ts', 384, 420 ] -10522 silly gunzTarPerm extractEntry _isIndex.js -10523 silly gunzTarPerm extractEntry isLength.js -10524 silly gunzTarPerm extractEntry ts/core/linq/observable/some.ts -10525 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/some.ts', 384, 420 ] -10526 silly gunzTarPerm extractEntry ts/core/linq/observable/spawn.ts -10527 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/spawn.ts', 384, 420 ] -10528 silly gunzTarPerm extractEntry _isHostObject.js -10529 silly gunzTarPerm extractEntry isMap.js -10530 silly gunzTarPerm extractEntry ts/core/linq/observable/start.ts -10531 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/start.ts', 384, 420 ] -10532 silly gunzTarPerm extractEntry ts/core/linq/observable/startasync.ts -10533 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/startasync.ts', 384, 420 ] -10534 silly gunzTarPerm extractEntry ts/core/linq/observable/startwith.ts -10535 silly gunzTarPerm extractEntry ts/core/linq/observable/subscribeon.ts -10536 silly gunzTarPerm extractEntry ts/core/linq/observable/sum.ts -10537 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/sum.ts', 384, 420 ] -10538 silly gunzTarPerm extractEntry _isFlattenableIteratee.js -10539 silly gunzTarPerm extractEntry isMatch.js -10540 silly gunzTarPerm extractEntry ts/core/linq/observable/switch.ts -10541 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/switch.ts', 384, 420 ] -10542 silly gunzTarPerm extractEntry ts/core/linq/observable/switchfirst.ts -10543 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/switchfirst.ts', 384, 420 ] -10544 silly gunzTarPerm extractEntry ts/core/linq/observable/take.ts -10545 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/package.json -10546 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number/package.json -10547 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic/package.json -10548 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string/package.json -10549 silly gunzTarPerm extractEntry _isFlattenable.js -10550 silly gunzTarPerm extractEntry isMatchWith.js -10551 info preinstall isobject@2.1.0 -10552 info preinstall randomatic@1.1.5 -10553 info preinstall is-number@2.1.0 -10554 info preinstall repeat-string@1.5.4 -10555 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/package.json -10556 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic/package.json -10557 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number/package.json -10558 silly gunzTarPerm extractEntry ts/core/linq/observable/takelast.ts -10559 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takelast.ts', 384, 420 ] -10560 silly gunzTarPerm extractEntry ts/core/linq/observable/takelastbuffer.ts -10561 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takelastbuffer.ts', 384, 420 ] -10562 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string/package.json -10563 silly prepareForInstallMany adding isarray@1.0.0 from isobject dependencies -10564 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/package.json -10565 silly gunzTarPerm extractEntry _initCloneObject.js -10566 silly gunzTarPerm extractEntry isNaN.js -10567 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic/package.json -10568 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number/package.json -10569 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string/package.json -10570 silly gunzTarPerm extractEntry ts/core/linq/observable/takelastbufferwithtime.ts -10571 silly gunzTarPerm extractEntry ts/core/linq/observable/takelastwithtime.ts -10572 silly install resolved [] -10573 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic -10574 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic -10575 silly install resolved [] -10576 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number -10577 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number -10578 silly cache add args [ 'isarray@1.0.0', null ] -10579 verbose cache add spec isarray@1.0.0 -10580 silly cache add parsed spec Result { -10580 silly cache add raw: 'isarray@1.0.0', -10580 silly cache add scope: null, -10580 silly cache add name: 'isarray', -10580 silly cache add rawSpec: '1.0.0', -10580 silly cache add spec: '1.0.0', -10580 silly cache add type: 'version' } -10581 silly addNamed isarray@1.0.0 -10582 verbose addNamed "1.0.0" is a plain semver version for isarray -10583 silly mapToRegistry name isarray -10584 silly mapToRegistry using default registry -10585 silly mapToRegistry registry http://registry.npm.alibaba-inc.com/ -10586 silly mapToRegistry data Result { -10586 silly mapToRegistry raw: 'isarray', -10586 silly mapToRegistry scope: null, -10586 silly mapToRegistry name: 'isarray', -10586 silly mapToRegistry rawSpec: '', -10586 silly mapToRegistry spec: 'latest', -10586 silly mapToRegistry type: 'tag' } -10587 silly mapToRegistry uri http://registry.npm.alibaba-inc.com/isarray -10588 verbose addNameVersion registry:http://registry.npm.alibaba-inc.com/isarray not in flight; fetching -10589 silly install resolved [] -10590 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string -10591 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string -10592 silly gunzTarPerm extractEntry _initCloneByTag.js -10593 silly gunzTarPerm extractEntry isNative.js -10594 info linkStuff randomatic@1.1.5 -10595 silly linkStuff randomatic@1.1.5 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules as its parent node_modules -10596 silly linkStuff randomatic@1.1.5 is part of a global install -10597 silly linkStuff randomatic@1.1.5 is installed into a global node_modules -10598 info linkStuff is-number@2.1.0 -10599 silly linkStuff is-number@2.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules as its parent node_modules -10600 silly linkStuff is-number@2.1.0 is part of a global install -10601 silly linkStuff is-number@2.1.0 is installed into a global node_modules -10602 verbose get http://registry.npm.alibaba-inc.com/isarray not expired, no request -10603 info linkStuff repeat-string@1.5.4 -10604 silly linkStuff repeat-string@1.5.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules as its parent node_modules -10605 silly linkStuff repeat-string@1.5.4 is part of a global install -10606 silly linkStuff repeat-string@1.5.4 is installed into a global node_modules -10607 silly gunzTarPerm extractEntry ts/core/linq/observable/takeuntil.ts -10608 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takeuntil.ts', 384, 420 ] -10609 silly gunzTarPerm extractEntry ts/core/linq/observable/takeuntilwithtime.ts -10610 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takeuntilwithtime.ts', 384, 420 ] -10611 verbose linkBins randomatic@1.1.5 -10612 verbose linkMans randomatic@1.1.5 -10613 verbose rebuildBundles randomatic@1.1.5 -10614 verbose linkBins is-number@2.1.0 -10615 verbose linkMans is-number@2.1.0 -10616 verbose rebuildBundles is-number@2.1.0 -10617 info install randomatic@1.1.5 -10618 verbose linkBins repeat-string@1.5.4 -10619 verbose linkMans repeat-string@1.5.4 -10620 verbose rebuildBundles repeat-string@1.5.4 -10621 info install is-number@2.1.0 -10622 info install repeat-string@1.5.4 -10623 info postinstall randomatic@1.1.5 -10624 info postinstall is-number@2.1.0 -10625 silly gunzTarPerm extractEntry _initCloneArray.js -10626 silly gunzTarPerm extractEntry isNil.js -10627 silly cache afterAdd isarray@1.0.0 -10628 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json not in flight; writing -10629 verbose correctMkdir /home/ruanyf/.tnpm correctMkdir not in flight; initializing -10630 info postinstall repeat-string@1.5.4 -10631 verbose unlock done using /home/ruanyf/.tnpm/_locks/randomatic-cafe9c7b4df7f297.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/randomatic -10632 verbose unlock done using /home/ruanyf/.tnpm/_locks/is-number-e774981ed8f34323.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/is-number -10633 verbose unlock done using /home/ruanyf/.tnpm/_locks/repeat-string-1f5fb425507e0c8b.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/repeat-string -10634 silly gunzTarPerm extractEntry ts/core/linq/observable/takewhile.ts -10635 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takewhile.ts', 384, 420 ] -10636 silly gunzTarPerm extractEntry ts/core/linq/observable/takewithtime.ts -10637 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/takewithtime.ts', 384, 420 ] -10638 silly gunzTarPerm extractEntry ts/core/linq/observable/tap.ts -10639 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/tap.ts', 384, 420 ] -10640 verbose afterAdd /home/ruanyf/.tnpm/isarray/1.0.0/package/package.json written -10641 silly install resolved [ { name: 'isarray', -10641 silly install resolved description: 'Array#isArray for older browsers', -10641 silly install resolved version: '1.0.0', -10641 silly install resolved repository: -10641 silly install resolved { type: 'git', -10641 silly install resolved url: 'git://github.com/juliangruber/isarray.git' }, -10641 silly install resolved homepage: 'https://github.com/juliangruber/isarray', -10641 silly install resolved main: 'index.js', -10641 silly install resolved dependencies: {}, -10641 silly install resolved devDependencies: { tape: '~2.13.4' }, -10641 silly install resolved keywords: [ 'browser', 'isarray', 'array' ], -10641 silly install resolved author: -10641 silly install resolved { name: 'Julian Gruber', -10641 silly install resolved email: 'mail@juliangruber.com', -10641 silly install resolved url: 'http://juliangruber.com' }, -10641 silly install resolved license: 'MIT', -10641 silly install resolved testling: { files: 'test.js', browsers: [Object] }, -10641 silly install resolved scripts: { test: 'tape test.js' }, -10641 silly install resolved gitHead: '2a23a281f369e9ae06394c0fb4d2381355a6ba33', -10641 silly install resolved bugs: { url: 'https://github.com/juliangruber/isarray/issues' }, -10641 silly install resolved _id: 'isarray@1.0.0', -10641 silly install resolved _shasum: 'bb935d48582cba168c06834957a54a3e07124f11', -10641 silly install resolved _from: 'isarray@1.0.0', -10641 silly install resolved _npmVersion: '3.3.12', -10641 silly install resolved _nodeVersion: '5.1.0', -10641 silly install resolved _npmUser: { name: 'juliangruber', email: 'julian@juliangruber.com' }, -10641 silly install resolved dist: -10641 silly install resolved { shasum: 'bb935d48582cba168c06834957a54a3e07124f11', -10641 silly install resolved size: 2021, -10641 silly install resolved noattachment: false, -10641 silly install resolved key: 'isarray/-/isarray-1.0.0.tgz', -10641 silly install resolved tarball: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz' }, -10641 silly install resolved maintainers: [ [Object] ], -10641 silly install resolved directories: {}, -10641 silly install resolved publish_time: 1449741907067, -10641 silly install resolved _cnpm_publish_time: 1449741907067, -10641 silly install resolved _resolved: 'http://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz', -10641 silly install resolved readme: 'ERROR: No README data found!' } ] -10642 info install isarray@1.0.0 into /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10643 info installOne isarray@1.0.0 -10644 verbose installOne of isarray to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject not in flight; installing -10645 verbose correctMkdir /home/ruanyf/.tnpm/_locks correctMkdir not in flight; initializing -10646 silly gunzTarPerm extractEntry ts/core/linq/observable/thendo.ts -10647 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/thendo.ts', 384, 420 ] -10648 verbose lock using /home/ruanyf/.tnpm/_locks/isarray-e7c4ee874841fff3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray -10649 silly install write writing isarray 1.0.0 to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray -10650 silly gunzTarPerm extractEntry ts/core/linq/observable/throttle.ts -10651 silly gunzTarPerm extractEntry _indexOfNaN.js -10652 silly gunzTarPerm extractEntry isNull.js -10653 silly gunzTarPerm extractEntry ts/core/linq/observable/throw.ts -10654 silly gunzTarPerm extractEntry ts/core/linq/observable/timeinterval.ts -10655 verbose unbuild lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray -10656 silly gunzTarPerm extractEntry ts/core/linq/observable/timeout.ts -10657 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray is being purged from base /home/ruanyf/npm-global -10658 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray -10659 verbose tar unpack /home/ruanyf/.tnpm/isarray/1.0.0/package.tgz -10660 verbose tar unpacking to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray -10661 silly gentlyRm /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray is being purged -10662 verbose gentlyRm don't care about contents; nuking /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray -10663 silly gunzTarPerm extractEntry _indexKeys.js -10664 silly gunzTarPerm extractEntry isNumber.js -10665 silly gunzTarPerm modes [ '755', '644' ] -10666 silly gunzTarPerm extractEntry ts/core/linq/observable/timer.ts -10667 silly gunzTarPerm extractEntry package.json -10668 silly gunzTarPerm extractEntry _hashSet.js -10669 silly gunzTarPerm extractEntry isObject.js -10670 silly gunzTarPerm extractEntry .npmignore -10671 silly gunzTarPerm extractEntry README.md -10672 silly gunzTarPerm extractEntry ts/core/linq/observable/timestamp.ts -10673 silly gunzTarPerm extractEntry ts/core/linq/observable/toarray.ts -10674 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/toarray.ts', 384, 420 ] -10675 silly gunzTarPerm extractEntry _hashHas.js -10676 silly gunzTarPerm extractEntry isObjectLike.js -10677 silly gunzTarPerm extractEntry index.js -10678 silly gunzTarPerm extractEntry test.js -10679 silly gunzTarPerm extractEntry ts/core/linq/observable/toasync.ts -10680 silly gunzTarPerm extractEntry ts/core/linq/observable/tomap.ts -10681 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/tomap.ts', 384, 420 ] -10682 silly gunzTarPerm extractEntry _hashGet.js -10683 silly gunzTarPerm extractEntry isPlainObject.js -10684 silly gunzTarPerm extractEntry .travis.yml -10685 silly gunzTarPerm extractEntry Makefile -10686 silly gunzTarPerm extractEntry ts/core/linq/observable/topromise.ts -10687 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/topromise.ts', 384, 420 ] -10688 silly gunzTarPerm extractEntry ts/core/linq/observable/toset.ts -10689 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/toset.ts', 384, 420 ] -10690 silly gunzTarPerm extractEntry _hashDelete.js -10691 silly gunzTarPerm extractEntry isRegExp.js -10692 silly gunzTarPerm extractEntry component.json -10693 silly gunzTarPerm extractEntry ts/core/linq/observable/transduce.ts -10694 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/transduce.ts', 384, 420 ] -10695 silly gunzTarPerm extractEntry ts/core/linq/observable/using.ts -10696 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/using.ts', 384, 420 ] -10697 silly gunzTarPerm extractEntry ts/core/linq/observable/when.ts -10698 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/when.ts', 384, 420 ] -10699 silly gunzTarPerm extractEntry ts/core/linq/observable/while.ts -10700 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/while.ts', 384, 420 ] -10701 silly gunzTarPerm extractEntry _hashClear.js -10702 silly gunzTarPerm extractEntry isSafeInteger.js -10703 silly gunzTarPerm extractEntry ts/core/linq/observable/window.ts -10704 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/window.ts', 384, 420 ] -10705 silly gunzTarPerm extractEntry ts/core/linq/observable/windowwithcount.ts -10706 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/windowwithcount.ts', 384, 420 ] -10707 silly gunzTarPerm extractEntry ts/core/linq/observable/windowwithtime.ts -10708 silly gunzTarPerm extractEntry ts/core/linq/observable/windowwithtimeorcount.ts -10709 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/windowwithtimeorcount.ts', 384, 420 ] -10710 silly gunzTarPerm extractEntry _hasPath.js -10711 silly gunzTarPerm extractEntry isSet.js -10712 silly gunzTarPerm extractEntry _getView.js -10713 silly gunzTarPerm extractEntry isString.js -10714 silly gunzTarPerm extractEntry ts/core/linq/observable/withlatestfrom.ts -10715 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/withlatestfrom.ts', 384, 420 ] -10716 silly gunzTarPerm extractEntry ts/core/linq/observable/zip.ts -10717 silly gunzTarPerm extractEntry ts/core/linq/observable/zipiterable.ts -10718 silly gunzTarPerm modified mode [ 'ts/core/linq/observable/zipiterable.ts', 384, 420 ] -10719 silly gunzTarPerm extractEntry ts/core/notification.ts -10720 silly gunzTarPerm modified mode [ 'ts/core/notification.ts', 384, 420 ] -10721 silly gunzTarPerm extractEntry ts/core/observable.ts -10722 silly gunzTarPerm modified mode [ 'ts/core/observable.ts', 384, 420 ] -10723 silly gunzTarPerm extractEntry ts/core/observer-extras.ts -10724 silly gunzTarPerm modified mode [ 'ts/core/observer-extras.ts', 384, 420 ] -10725 silly gunzTarPerm extractEntry _getTag.js -10726 silly gunzTarPerm extractEntry isSymbol.js -10727 silly gunzTarPerm extractEntry ts/core/observer-lite.ts -10728 silly gunzTarPerm modified mode [ 'ts/core/observer-lite.ts', 384, 420 ] -10729 silly gunzTarPerm extractEntry ts/core/observer.ts -10730 silly gunzTarPerm modified mode [ 'ts/core/observer.ts', 384, 420 ] -10731 silly gunzTarPerm extractEntry ts/core/scheduledobserver.ts -10732 silly gunzTarPerm modified mode [ 'ts/core/scheduledobserver.ts', 384, 420 ] -10733 silly gunzTarPerm extractEntry ts/core/subjects/anonymoussubject.ts -10734 silly gunzTarPerm modified mode [ 'ts/core/subjects/anonymoussubject.ts', 384, 420 ] -10735 silly gunzTarPerm extractEntry _getSymbolsIn.js -10736 silly gunzTarPerm extractEntry isTypedArray.js -10737 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray/package.json -10738 silly gunzTarPerm extractEntry _getSymbols.js -10739 silly gunzTarPerm extractEntry isUndefined.js -10740 silly gunzTarPerm extractEntry ts/core/subjects/asyncsubject.ts -10741 silly gunzTarPerm modified mode [ 'ts/core/subjects/asyncsubject.ts', 384, 420 ] -10742 silly gunzTarPerm extractEntry ts/core/subjects/behaviorsubject.ts -10743 silly gunzTarPerm modified mode [ 'ts/core/subjects/behaviorsubject.ts', 384, 420 ] -10744 info preinstall isarray@1.0.0 -10745 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray/package.json -10746 silly gunzTarPerm extractEntry _getPrototype.js -10747 silly gunzTarPerm extractEntry isWeakMap.js -10748 silly gunzTarPerm extractEntry ts/core/subjects/replaysubject.ts -10749 silly gunzTarPerm extractEntry ts/core/subjects/subject.ts -10750 silly gunzTarPerm modified mode [ 'ts/core/subjects/subject.ts', 384, 420 ] -10751 silly gunzTarPerm extractEntry ts/core/testing/mockdisposable.ts -10752 silly gunzTarPerm modified mode [ 'ts/core/testing/mockdisposable.ts', 384, 420 ] -10753 silly gunzTarPerm extractEntry ts/core/testing/mockobserver.ts -10754 silly gunzTarPerm modified mode [ 'ts/core/testing/mockobserver.ts', 384, 420 ] -10755 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray/package.json -10756 silly gunzTarPerm extractEntry ts/core/testing/reactivetest.ts -10757 silly gunzTarPerm modified mode [ 'ts/core/testing/reactivetest.ts', 384, 420 ] -10758 silly gunzTarPerm extractEntry ts/core/testing/recorded.ts -10759 silly gunzTarPerm modified mode [ 'ts/core/testing/recorded.ts', 384, 420 ] -10760 silly gunzTarPerm extractEntry _getNative.js -10761 silly gunzTarPerm extractEntry isWeakSet.js -10762 silly gunzTarPerm extractEntry ts/core/testing/subscription.ts -10763 silly gunzTarPerm modified mode [ 'ts/core/testing/subscription.ts', 384, 420 ] -10764 silly install resolved [] -10765 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray -10766 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray -10767 silly gunzTarPerm extractEntry ts/core/testing/testscheduler.ts -10768 silly gunzTarPerm modified mode [ 'ts/core/testing/testscheduler.ts', 384, 420 ] -10769 silly gunzTarPerm extractEntry ts/iterable.es6.d.ts -10770 silly gunzTarPerm modified mode [ 'ts/iterable.es6.d.ts', 384, 420 ] -10771 info linkStuff isarray@1.0.0 -10772 silly linkStuff isarray@1.0.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules as its parent node_modules -10773 silly linkStuff isarray@1.0.0 is part of a global install -10774 silly linkStuff isarray@1.0.0 is installed into a global node_modules -10775 silly gunzTarPerm extractEntry _getMatchData.js -10776 silly gunzTarPerm extractEntry iteratee.js -10777 verbose linkBins isarray@1.0.0 -10778 verbose linkMans isarray@1.0.0 -10779 verbose rebuildBundles isarray@1.0.0 -10780 info install isarray@1.0.0 -10781 info postinstall isarray@1.0.0 -10782 silly gunzTarPerm extractEntry ts/rx.aggregates.d.ts -10783 silly gunzTarPerm extractEntry ts/rx.aggregates.es6.d.ts -10784 silly gunzTarPerm extractEntry ts/rx.all.d.ts -10785 verbose unlock done using /home/ruanyf/.tnpm/_locks/isarray-e7c4ee874841fff3.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject/node_modules/isarray -10786 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10787 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10788 silly gunzTarPerm extractEntry ts/rx.all.es6.d.ts -10789 silly gunzTarPerm extractEntry _getMapData.js -10790 silly gunzTarPerm extractEntry join.js -10791 silly gunzTarPerm extractEntry ts/rx.async.d.ts -10792 info linkStuff isobject@2.1.0 -10793 silly linkStuff isobject@2.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules as its parent node_modules -10794 silly linkStuff isobject@2.1.0 is part of a global install -10795 silly linkStuff isobject@2.1.0 is installed into a global node_modules -10796 silly gunzTarPerm extractEntry ts/rx.async.es6.d.ts -10797 verbose linkBins isobject@2.1.0 -10798 verbose linkMans isobject@2.1.0 -10799 verbose rebuildBundles isobject@2.1.0 -10800 silly gunzTarPerm extractEntry ts/rx.backpressure.d.ts -10801 verbose rebuildBundles [ 'isarray' ] -10802 info install isobject@2.1.0 -10803 silly gunzTarPerm extractEntry ts/rx.backpressure.es6.d.ts -10804 info postinstall isobject@2.1.0 -10805 silly gunzTarPerm extractEntry _getLength.js -10806 silly gunzTarPerm extractEntry kebabCase.js -10807 silly gunzTarPerm extractEntry ts/rx.binding.d.ts -10808 verbose unlock done using /home/ruanyf/.tnpm/_locks/isobject-9016e78a1014758c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range/node_modules/isobject -10809 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -10810 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -10811 silly gunzTarPerm extractEntry _getHolder.js -10812 silly gunzTarPerm extractEntry keyBy.js -10813 info linkStuff fill-range@2.2.3 -10814 silly linkStuff fill-range@2.2.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules as its parent node_modules -10815 silly linkStuff fill-range@2.2.3 is part of a global install -10816 silly linkStuff fill-range@2.2.3 is installed into a global node_modules -10817 silly gunzTarPerm extractEntry ts/rx.binding.es6.d.ts -10818 silly gunzTarPerm extractEntry ts/rx.coincidence.d.ts -10819 verbose linkBins fill-range@2.2.3 -10820 verbose linkMans fill-range@2.2.3 -10821 verbose rebuildBundles fill-range@2.2.3 -10822 verbose rebuildBundles [ 'is-number', 'isobject', 'randomatic', 'repeat-string' ] -10823 info install fill-range@2.2.3 -10824 info postinstall fill-range@2.2.3 -10825 silly gunzTarPerm extractEntry _getFuncName.js -10826 silly gunzTarPerm extractEntry keys.js -10827 verbose unlock done using /home/ruanyf/.tnpm/_locks/fill-range-211f70546d1bdea8.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range/node_modules/fill-range -10828 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -10829 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -10830 silly gunzTarPerm extractEntry ts/rx.coincidence.es6.d.ts -10831 silly gunzTarPerm extractEntry ts/rx.core.binding.d.ts -10832 info linkStuff expand-range@1.8.2 -10833 silly linkStuff expand-range@1.8.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules as its parent node_modules -10834 silly linkStuff expand-range@1.8.2 is part of a global install -10835 silly linkStuff expand-range@1.8.2 is installed into a global node_modules -10836 silly gunzTarPerm extractEntry _getData.js -10837 silly gunzTarPerm extractEntry keysIn.js -10838 verbose linkBins expand-range@1.8.2 -10839 verbose linkMans expand-range@1.8.2 -10840 verbose rebuildBundles expand-range@1.8.2 -10841 verbose rebuildBundles [ 'fill-range' ] -10842 info install expand-range@1.8.2 -10843 info postinstall expand-range@1.8.2 -10844 silly gunzTarPerm extractEntry ts/rx.core.binding.es6.d.ts -10845 silly gunzTarPerm extractEntry ts/rx.core.d.ts -10846 verbose unlock done using /home/ruanyf/.tnpm/_locks/expand-range-05d02f12f4c3112f.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces/node_modules/expand-range -10847 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -10848 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -10849 silly gunzTarPerm extractEntry _getAllKeysIn.js -10850 silly gunzTarPerm extractEntry lang.js -10851 info linkStuff braces@1.8.4 -10852 silly linkStuff braces@1.8.4 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules as its parent node_modules -10853 silly linkStuff braces@1.8.4 is part of a global install -10854 silly linkStuff braces@1.8.4 is installed into a global node_modules -10855 silly gunzTarPerm extractEntry ts/rx.core.es6.d.ts -10856 silly gunzTarPerm extractEntry ts/rx.core.testing.d.ts -10857 verbose linkBins braces@1.8.4 -10858 verbose linkMans braces@1.8.4 -10859 verbose rebuildBundles braces@1.8.4 -10860 verbose rebuildBundles [ 'expand-range', 'preserve', 'repeat-element' ] -10861 info install braces@1.8.4 -10862 info postinstall braces@1.8.4 -10863 silly gunzTarPerm extractEntry _getAllKeys.js -10864 silly gunzTarPerm extractEntry last.js -10865 verbose unlock done using /home/ruanyf/.tnpm/_locks/braces-097842f0c137e8be.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch/node_modules/braces -10866 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -10867 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -10868 silly gunzTarPerm extractEntry ts/es6-promise.es6.d.ts -10869 silly gunzTarPerm modified mode [ 'ts/es6-promise.es6.d.ts', 384, 420 ] -10870 silly gunzTarPerm extractEntry ts/rx.d.ts -10871 info linkStuff micromatch@2.3.8 -10872 silly linkStuff micromatch@2.3.8 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules as its parent node_modules -10873 silly linkStuff micromatch@2.3.8 is part of a global install -10874 silly linkStuff micromatch@2.3.8 is installed into a global node_modules -10875 silly gunzTarPerm extractEntry _escapeStringChar.js -10876 silly gunzTarPerm extractEntry lastIndexOf.js -10877 verbose linkBins micromatch@2.3.8 -10878 verbose linkMans micromatch@2.3.8 -10879 verbose rebuildBundles micromatch@2.3.8 -10880 verbose rebuildBundles [ 'arr-diff', -10880 verbose rebuildBundles 'array-unique', -10880 verbose rebuildBundles 'braces', -10880 verbose rebuildBundles 'expand-brackets', -10880 verbose rebuildBundles 'extglob', -10880 verbose rebuildBundles 'filename-regex', -10880 verbose rebuildBundles 'is-extglob', -10880 verbose rebuildBundles 'is-glob', -10880 verbose rebuildBundles 'kind-of', -10880 verbose rebuildBundles 'normalize-path', -10880 verbose rebuildBundles 'object.omit', -10880 verbose rebuildBundles 'parse-glob', -10880 verbose rebuildBundles 'regex-cache' ] -10881 info install micromatch@2.3.8 -10882 info postinstall micromatch@2.3.8 -10883 silly gunzTarPerm extractEntry ts/rx.es6.d.ts -10884 silly gunzTarPerm extractEntry ts/rx.experimental.d.ts -10885 verbose unlock done using /home/ruanyf/.tnpm/_locks/micromatch-24c668eacc4b7001.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/micromatch -10886 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -10887 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -10888 silly gunzTarPerm extractEntry _escapeHtmlChar.js -10889 silly gunzTarPerm extractEntry lodash.js -10890 info linkStuff glob-stream@5.3.2 -10891 silly linkStuff glob-stream@5.3.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules as its parent node_modules -10892 silly linkStuff glob-stream@5.3.2 is part of a global install -10893 silly linkStuff glob-stream@5.3.2 is installed into a global node_modules -10894 silly gunzTarPerm extractEntry ts/rx.experimental.es6.d.ts -10895 silly gunzTarPerm extractEntry ts/rx.joinpatterns.d.ts -10896 silly gunzTarPerm modified mode [ 'ts/rx.joinpatterns.d.ts', 384, 420 ] -10897 verbose linkBins glob-stream@5.3.2 -10898 verbose linkMans glob-stream@5.3.2 -10899 verbose rebuildBundles glob-stream@5.3.2 -10900 verbose rebuildBundles [ 'extend', -10900 verbose rebuildBundles 'glob', -10900 verbose rebuildBundles 'glob-parent', -10900 verbose rebuildBundles 'micromatch', -10900 verbose rebuildBundles 'ordered-read-streams', -10900 verbose rebuildBundles 'through2', -10900 verbose rebuildBundles 'to-absolute-glob', -10900 verbose rebuildBundles 'unique-stream' ] -10901 info install glob-stream@5.3.2 -10902 silly gunzTarPerm extractEntry _equalObjects.js -10903 info postinstall glob-stream@5.3.2 -10904 verbose unlock done using /home/ruanyf/.tnpm/_locks/glob-stream-e046c20b39469590.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs/node_modules/glob-stream -10905 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs -10906 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs -10907 silly gunzTarPerm extractEntry ts/rx.joinpatterns.es6.d.ts -10908 silly gunzTarPerm modified mode [ 'ts/rx.joinpatterns.es6.d.ts', 384, 420 ] -10909 silly gunzTarPerm extractEntry ts/rx.lite.d.ts -10910 silly gunzTarPerm extractEntry ts/rx.lite.es6.d.ts -10911 silly gunzTarPerm extractEntry lodash.min.js -10912 silly gunzTarPerm extractEntry _equalByTag.js -10913 info linkStuff vinyl-fs@2.4.3 -10914 silly linkStuff vinyl-fs@2.4.3 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules as its parent node_modules -10915 silly linkStuff vinyl-fs@2.4.3 is part of a global install -10916 silly linkStuff vinyl-fs@2.4.3 is installed into a global node_modules -10917 verbose linkBins vinyl-fs@2.4.3 -10918 verbose linkMans vinyl-fs@2.4.3 -10919 verbose rebuildBundles vinyl-fs@2.4.3 -10920 verbose rebuildBundles [ '.bin', -10920 verbose rebuildBundles 'duplexify', -10920 verbose rebuildBundles 'glob-stream', -10920 verbose rebuildBundles 'graceful-fs', -10920 verbose rebuildBundles 'gulp-sourcemaps', -10920 verbose rebuildBundles 'is-valid-glob', -10920 verbose rebuildBundles 'lazystream', -10920 verbose rebuildBundles 'lodash.isequal', -10920 verbose rebuildBundles 'merge-stream', -10920 verbose rebuildBundles 'mkdirp', -10920 verbose rebuildBundles 'object-assign', -10920 verbose rebuildBundles 'readable-stream', -10920 verbose rebuildBundles 'strip-bom', -10920 verbose rebuildBundles 'strip-bom-stream', -10920 verbose rebuildBundles 'through2-filter', -10920 verbose rebuildBundles 'vali-date', -10920 verbose rebuildBundles 'vinyl' ] -10921 info install vinyl-fs@2.4.3 -10922 info postinstall vinyl-fs@2.4.3 -10923 silly gunzTarPerm extractEntry ts/rx.lite.extras.d.ts -10924 silly gunzTarPerm extractEntry ts/rx.lite.extras.es6.d.ts -10925 silly gunzTarPerm extractEntry ts/rx.sorting.d.ts -10926 silly gunzTarPerm modified mode [ 'ts/rx.sorting.d.ts', 384, 420 ] -10927 silly gunzTarPerm extractEntry ts/rx.sorting.es6.d.ts -10928 silly gunzTarPerm modified mode [ 'ts/rx.sorting.es6.d.ts', 384, 420 ] -10929 silly gunzTarPerm extractEntry lowerCase.js -10930 silly gunzTarPerm extractEntry _equalArrays.js -10931 verbose unlock done using /home/ruanyf/.tnpm/_locks/vinyl-fs-98ccb0e2955699cc.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/vinyl-fs -10932 silly gunzTarPerm extractEntry ts/rx.testing.d.ts -10933 silly gunzTarPerm extractEntry ts/rx.testing.es6.d.ts -10934 silly gunzTarPerm extractEntry ts/rx.time.d.ts -10935 silly gunzTarPerm extractEntry ts/rx.time.es6.d.ts -10936 silly gunzTarPerm extractEntry lowerFirst.js -10937 silly gunzTarPerm extractEntry _deburrLetter.js -10938 silly gunzTarPerm extractEntry ts/rx.virtualtime.d.ts -10939 silly gunzTarPerm extractEntry ts/rx.virtualtime.es6.d.ts -10940 silly gunzTarPerm extractEntry ts/tsconfig.json -10941 silly gunzTarPerm modified mode [ 'ts/tsconfig.json', 384, 420 ] -10942 silly gunzTarPerm extractEntry lt.js -10943 silly gunzTarPerm extractEntry _createWrapper.js -10944 silly gunzTarPerm extractEntry lte.js -10945 silly gunzTarPerm extractEntry _createToPairs.js -10946 silly gunzTarPerm extractEntry map.js -10947 silly gunzTarPerm extractEntry _createSet.js -10948 silly gunzTarPerm extractEntry mapKeys.js -10949 silly gunzTarPerm extractEntry _createRound.js -10950 silly gunzTarPerm extractEntry mapValues.js -10951 silly gunzTarPerm extractEntry _createRelationalOperation.js -10952 silly gunzTarPerm extractEntry matches.js -10953 silly gunzTarPerm extractEntry _createRecurryWrapper.js -10954 silly gunzTarPerm extractEntry matchesProperty.js -10955 silly gunzTarPerm extractEntry _createRange.js -10956 silly gunzTarPerm extractEntry math.js -10957 silly gunzTarPerm extractEntry _createPartialWrapper.js -10958 silly gunzTarPerm extractEntry max.js -10959 silly gunzTarPerm extractEntry _createPadding.js -10960 silly gunzTarPerm extractEntry maxBy.js -10961 silly gunzTarPerm extractEntry _createOver.js -10962 silly gunzTarPerm extractEntry mean.js -10963 silly gunzTarPerm extractEntry _createMathOperation.js -10964 silly gunzTarPerm extractEntry meanBy.js -10965 silly gunzTarPerm extractEntry _createInverter.js -10966 silly gunzTarPerm extractEntry memoize.js -10967 silly gunzTarPerm extractEntry _createHybridWrapper.js -10968 silly gunzTarPerm extractEntry merge.js -10969 silly gunzTarPerm extractEntry _createFlow.js -10970 silly gunzTarPerm extractEntry mergeWith.js -10971 silly gunzTarPerm extractEntry _createCurryWrapper.js -10972 silly gunzTarPerm extractEntry method.js -10973 silly gunzTarPerm extractEntry _createCtorWrapper.js -10974 silly gunzTarPerm extractEntry methodOf.js -10975 silly gunzTarPerm extractEntry _createCompounder.js -10976 silly gunzTarPerm extractEntry min.js -10977 silly gunzTarPerm extractEntry _createCaseFirst.js -10978 silly gunzTarPerm extractEntry minBy.js -10979 silly gunzTarPerm extractEntry _createBaseWrapper.js -10980 silly gunzTarPerm extractEntry mixin.js -10981 silly gunzTarPerm extractEntry _createBaseFor.js -10982 silly gunzTarPerm extractEntry multiply.js -10983 silly gunzTarPerm extractEntry _createBaseEach.js -10984 silly gunzTarPerm extractEntry negate.js -10985 silly gunzTarPerm extractEntry _createAssigner.js -10986 silly gunzTarPerm extractEntry next.js -10987 silly gunzTarPerm extractEntry _createAggregator.js -10988 silly gunzTarPerm extractEntry noop.js -10989 silly gunzTarPerm extractEntry _countHolders.js -10990 silly gunzTarPerm extractEntry now.js -10991 silly gunzTarPerm extractEntry _copySymbols.js -10992 silly gunzTarPerm extractEntry nth.js -10993 silly gunzTarPerm extractEntry _copyObject.js -10994 silly gunzTarPerm extractEntry nthArg.js -10995 silly gunzTarPerm extractEntry _copyArray.js -10996 silly gunzTarPerm extractEntry number.js -10997 silly gunzTarPerm extractEntry _composeArgsRight.js -10998 silly gunzTarPerm extractEntry object.js -10999 silly gunzTarPerm extractEntry _composeArgs.js -11000 silly gunzTarPerm extractEntry omit.js -11001 silly gunzTarPerm extractEntry _compareMultiple.js -11002 silly gunzTarPerm extractEntry omitBy.js -11003 silly gunzTarPerm extractEntry _compareAscending.js -11004 silly gunzTarPerm extractEntry once.js -11005 silly gunzTarPerm extractEntry _cloneTypedArray.js -11006 silly gunzTarPerm extractEntry orderBy.js -11007 silly gunzTarPerm extractEntry _cloneSymbol.js -11008 silly gunzTarPerm extractEntry over.js -11009 silly gunzTarPerm extractEntry _cloneSet.js -11010 silly gunzTarPerm extractEntry overArgs.js -11011 silly gunzTarPerm extractEntry _cloneRegExp.js -11012 silly gunzTarPerm extractEntry overEvery.js -11013 silly gunzTarPerm extractEntry _cloneMap.js -11014 silly gunzTarPerm extractEntry overSome.js -11015 silly gunzTarPerm extractEntry _cloneDataView.js -11016 silly gunzTarPerm extractEntry _charsStartIndex.js -11017 silly gunzTarPerm extractEntry debounce.js -11018 silly gunzTarPerm extractEntry pad.js -11019 silly gunzTarPerm extractEntry _charsEndIndex.js -11020 silly gunzTarPerm extractEntry padEnd.js -11021 silly gunzTarPerm extractEntry _castSlice.js -11022 silly gunzTarPerm extractEntry padStart.js -11023 silly gunzTarPerm extractEntry _castPath.js -11024 silly gunzTarPerm extractEntry parseInt.js -11025 silly gunzTarPerm extractEntry _castFunction.js -11026 silly gunzTarPerm extractEntry partial.js -11027 silly gunzTarPerm extractEntry _castArrayLikeObject.js -11028 silly gunzTarPerm extractEntry partialRight.js -11029 silly gunzTarPerm extractEntry _cacheHas.js -11030 silly gunzTarPerm extractEntry partition.js -11031 silly gunzTarPerm extractEntry _baseZipObject.js -11032 silly gunzTarPerm extractEntry pick.js -11033 silly gunzTarPerm extractEntry _baseXor.js -11034 silly gunzTarPerm extractEntry pickBy.js -11035 silly gunzTarPerm extractEntry _baseWrapperValue.js -11036 silly gunzTarPerm extractEntry plant.js -11037 silly gunzTarPerm extractEntry _baseWhile.js -11038 silly gunzTarPerm extractEntry property.js -11039 silly gunzTarPerm extractEntry _baseValues.js -11040 silly gunzTarPerm extractEntry propertyOf.js -11041 silly gunzTarPerm extractEntry _baseUpdate.js -11042 silly gunzTarPerm extractEntry pull.js -11043 silly gunzTarPerm extractEntry _baseUnset.js -11044 silly gunzTarPerm extractEntry pullAll.js -11045 silly gunzTarPerm extractEntry _baseUniq.js -11046 silly gunzTarPerm extractEntry pullAllBy.js -11047 silly gunzTarPerm extractEntry _baseUnary.js -11048 silly gunzTarPerm extractEntry pullAllWith.js -11049 silly gunzTarPerm extractEntry _baseToString.js -11050 silly gunzTarPerm extractEntry pullAt.js -11051 silly gunzTarPerm extractEntry _baseToPairs.js -11052 silly gunzTarPerm extractEntry random.js -11053 silly gunzTarPerm extractEntry _baseToNumber.js -11054 silly gunzTarPerm extractEntry range.js -11055 silly gunzTarPerm extractEntry _baseTimes.js -11056 silly gunzTarPerm extractEntry rangeRight.js -11057 silly gunzTarPerm extractEntry _baseSum.js -11058 silly gunzTarPerm extractEntry rearg.js -11059 silly gunzTarPerm extractEntry _baseSortedUniq.js -11060 silly gunzTarPerm extractEntry reduce.js -11061 silly gunzTarPerm extractEntry _baseSortedIndexBy.js -11062 silly gunzTarPerm extractEntry reduceRight.js -11063 silly gunzTarPerm extractEntry _baseSortedIndex.js -11064 silly gunzTarPerm extractEntry reject.js -11065 silly gunzTarPerm extractEntry _baseSortBy.js -11066 silly gunzTarPerm extractEntry remove.js -11067 silly gunzTarPerm extractEntry _baseSome.js -11068 silly gunzTarPerm extractEntry repeat.js -11069 silly gunzTarPerm extractEntry _baseSlice.js -11070 silly gunzTarPerm extractEntry replace.js -11071 silly gunzTarPerm extractEntry _baseSetData.js -11072 silly gunzTarPerm extractEntry rest.js -11073 silly gunzTarPerm extractEntry _baseSet.js -11074 silly gunzTarPerm extractEntry result.js -11075 silly gunzTarPerm extractEntry _baseRepeat.js -11076 silly gunzTarPerm extractEntry reverse.js -11077 silly gunzTarPerm extractEntry _baseReduce.js -11078 silly gunzTarPerm extractEntry round.js -11079 silly gunzTarPerm extractEntry _baseRange.js -11080 silly gunzTarPerm extractEntry sample.js -11081 silly gunzTarPerm extractEntry _baseRandom.js -11082 silly gunzTarPerm extractEntry sampleSize.js -11083 silly gunzTarPerm extractEntry _basePullAt.js -11084 silly gunzTarPerm extractEntry seq.js -11085 silly gunzTarPerm extractEntry _basePullAll.js -11086 silly gunzTarPerm extractEntry set.js -11087 silly gunzTarPerm extractEntry _basePropertyDeep.js -11088 silly gunzTarPerm extractEntry setWith.js -11089 silly gunzTarPerm extractEntry _baseProperty.js -11090 silly gunzTarPerm extractEntry shuffle.js -11091 silly gunzTarPerm extractEntry _basePickBy.js -11092 silly gunzTarPerm extractEntry size.js -11093 silly gunzTarPerm extractEntry _basePick.js -11094 silly gunzTarPerm extractEntry slice.js -11095 silly gunzTarPerm extractEntry _baseOrderBy.js -11096 silly gunzTarPerm extractEntry snakeCase.js -11097 silly gunzTarPerm extractEntry _baseNth.js -11098 silly gunzTarPerm extractEntry some.js -11099 silly gunzTarPerm extractEntry _baseMergeDeep.js -11100 silly gunzTarPerm extractEntry sortBy.js -11101 silly gunzTarPerm extractEntry _baseMerge.js -11102 silly gunzTarPerm extractEntry sortedIndex.js -11103 silly gunzTarPerm extractEntry _baseMean.js -11104 silly gunzTarPerm extractEntry sortedIndexBy.js -11105 silly gunzTarPerm extractEntry _baseMatchesProperty.js -11106 silly gunzTarPerm extractEntry sortedIndexOf.js -11107 silly gunzTarPerm extractEntry _baseMatches.js -11108 silly gunzTarPerm extractEntry sortedLastIndex.js -11109 silly gunzTarPerm extractEntry _baseMap.js -11110 silly gunzTarPerm extractEntry sortedLastIndexBy.js -11111 silly gunzTarPerm extractEntry _baseLt.js -11112 silly gunzTarPerm extractEntry sortedLastIndexOf.js -11113 silly gunzTarPerm extractEntry _baseLodash.js -11114 silly gunzTarPerm extractEntry sortedUniq.js -11115 silly gunzTarPerm extractEntry _baseKeysIn.js -11116 silly gunzTarPerm extractEntry sortedUniqBy.js -11117 silly gunzTarPerm extractEntry _baseKeys.js -11118 silly gunzTarPerm extractEntry split.js -11119 silly gunzTarPerm extractEntry _baseIteratee.js -11120 silly gunzTarPerm extractEntry spread.js -11121 silly gunzTarPerm extractEntry _baseIsMatch.js -11122 silly gunzTarPerm extractEntry startCase.js -11123 silly gunzTarPerm extractEntry _baseIsEqualDeep.js -11124 silly gunzTarPerm extractEntry startsWith.js -11125 silly gunzTarPerm extractEntry _baseIsEqual.js -11126 silly gunzTarPerm extractEntry string.js -11127 silly gunzTarPerm extractEntry _baseInvoke.js -11128 silly gunzTarPerm extractEntry subtract.js -11129 silly gunzTarPerm extractEntry _baseInverter.js -11130 silly gunzTarPerm extractEntry sum.js -11131 silly gunzTarPerm extractEntry _baseIntersection.js -11132 silly gunzTarPerm extractEntry sumBy.js -11133 silly gunzTarPerm extractEntry _baseIndexOfWith.js -11134 silly gunzTarPerm extractEntry tail.js -11135 silly gunzTarPerm extractEntry _baseIndexOf.js -11136 silly gunzTarPerm extractEntry take.js -11137 silly gunzTarPerm extractEntry _baseInRange.js -11138 silly gunzTarPerm extractEntry takeRight.js -11139 silly gunzTarPerm extractEntry _baseHasIn.js -11140 silly gunzTarPerm extractEntry takeRightWhile.js -11141 silly gunzTarPerm extractEntry _baseHas.js -11142 silly gunzTarPerm extractEntry takeWhile.js -11143 silly gunzTarPerm extractEntry _baseGt.js -11144 silly gunzTarPerm extractEntry tap.js -11145 silly gunzTarPerm extractEntry _baseGetAllKeys.js -11146 silly gunzTarPerm extractEntry template.js -11147 silly gunzTarPerm extractEntry _baseGet.js -11148 silly gunzTarPerm extractEntry templateSettings.js -11149 silly gunzTarPerm extractEntry _baseFunctions.js -11150 silly gunzTarPerm extractEntry throttle.js -11151 silly gunzTarPerm extractEntry _baseForRight.js -11152 silly gunzTarPerm extractEntry thru.js -11153 silly gunzTarPerm extractEntry _baseForOwnRight.js -11154 silly gunzTarPerm extractEntry times.js -11155 silly gunzTarPerm extractEntry _baseForOwn.js -11156 silly gunzTarPerm extractEntry toArray.js -11157 silly gunzTarPerm extractEntry _baseFor.js -11158 silly gunzTarPerm extractEntry toFinite.js -11159 silly gunzTarPerm extractEntry _baseFlatten.js -11160 silly gunzTarPerm extractEntry toInteger.js -11161 silly gunzTarPerm extractEntry _baseFindIndex.js -11162 silly gunzTarPerm extractEntry toIterator.js -11163 silly gunzTarPerm extractEntry _baseFind.js -11164 silly gunzTarPerm extractEntry toJSON.js -11165 silly gunzTarPerm extractEntry _baseFilter.js -11166 silly gunzTarPerm extractEntry toLength.js -11167 silly gunzTarPerm extractEntry _baseFill.js -11168 silly gunzTarPerm extractEntry toLower.js -11169 silly gunzTarPerm extractEntry _baseExtremum.js -11170 silly gunzTarPerm extractEntry toNumber.js -11171 silly gunzTarPerm extractEntry _baseEvery.js -11172 silly gunzTarPerm extractEntry toPairs.js -11173 silly gunzTarPerm extractEntry _baseEachRight.js -11174 silly gunzTarPerm extractEntry toPairsIn.js -11175 silly gunzTarPerm extractEntry _baseEach.js -11176 silly gunzTarPerm extractEntry toPath.js -11177 silly gunzTarPerm extractEntry _baseDifference.js -11178 silly gunzTarPerm extractEntry toPlainObject.js -11179 silly gunzTarPerm extractEntry _baseDelay.js -11180 silly gunzTarPerm extractEntry toSafeInteger.js -11181 silly gunzTarPerm extractEntry _baseCreate.js -11182 silly gunzTarPerm extractEntry toString.js -11183 silly gunzTarPerm extractEntry _baseConforms.js -11184 silly gunzTarPerm extractEntry toUpper.js -11185 silly gunzTarPerm extractEntry _baseClone.js -11186 silly gunzTarPerm extractEntry transform.js -11187 silly gunzTarPerm extractEntry _baseClamp.js -11188 silly gunzTarPerm extractEntry trim.js -11189 silly gunzTarPerm extractEntry _baseAt.js -11190 silly gunzTarPerm extractEntry trimEnd.js -11191 silly gunzTarPerm extractEntry _baseAssign.js -11192 silly gunzTarPerm extractEntry trimStart.js -11193 silly gunzTarPerm extractEntry _baseAggregator.js -11194 silly gunzTarPerm extractEntry truncate.js -11195 silly gunzTarPerm extractEntry _assocIndexOf.js -11196 silly gunzTarPerm extractEntry unary.js -11197 silly gunzTarPerm extractEntry _assignValue.js -11198 silly gunzTarPerm extractEntry unescape.js -11199 silly gunzTarPerm extractEntry _assignMergeValue.js -11200 silly gunzTarPerm extractEntry union.js -11201 silly gunzTarPerm extractEntry _assignInDefaults.js -11202 silly gunzTarPerm extractEntry unionBy.js -11203 silly gunzTarPerm extractEntry _arraySome.js -11204 silly gunzTarPerm extractEntry unionWith.js -11205 silly gunzTarPerm extractEntry _arrayReduceRight.js -11206 silly gunzTarPerm extractEntry uniq.js -11207 silly gunzTarPerm extractEntry _arrayReduce.js -11208 silly gunzTarPerm extractEntry uniqBy.js -11209 silly gunzTarPerm extractEntry _arrayPush.js -11210 silly gunzTarPerm extractEntry uniqWith.js -11211 silly gunzTarPerm extractEntry _arrayMap.js -11212 silly gunzTarPerm extractEntry uniqueId.js -11213 silly gunzTarPerm extractEntry _arrayIncludesWith.js -11214 silly gunzTarPerm extractEntry unset.js -11215 silly gunzTarPerm extractEntry _arrayIncludes.js -11216 silly gunzTarPerm extractEntry unzip.js -11217 silly gunzTarPerm extractEntry _arrayFilter.js -11218 silly gunzTarPerm extractEntry unzipWith.js -11219 silly gunzTarPerm extractEntry _arrayEvery.js -11220 silly gunzTarPerm extractEntry update.js -11221 silly gunzTarPerm extractEntry _arrayEachRight.js -11222 silly gunzTarPerm extractEntry updateWith.js -11223 silly gunzTarPerm extractEntry _arrayEach.js -11224 silly gunzTarPerm extractEntry upperCase.js -11225 silly gunzTarPerm extractEntry _arrayAggregator.js -11226 silly gunzTarPerm extractEntry upperFirst.js -11227 silly gunzTarPerm extractEntry _apply.js -11228 silly gunzTarPerm extractEntry util.js -11229 silly gunzTarPerm extractEntry _addSetEntry.js -11230 silly gunzTarPerm extractEntry value.js -11231 silly gunzTarPerm extractEntry _addMapEntry.js -11232 silly gunzTarPerm extractEntry valueOf.js -11233 silly gunzTarPerm extractEntry _WeakMap.js -11234 silly gunzTarPerm extractEntry values.js -11235 silly gunzTarPerm extractEntry _Uint8Array.js -11236 silly gunzTarPerm extractEntry valuesIn.js -11237 silly gunzTarPerm extractEntry _Symbol.js -11238 silly gunzTarPerm extractEntry without.js -11239 silly gunzTarPerm extractEntry _Stack.js -11240 silly gunzTarPerm extractEntry words.js -11241 silly gunzTarPerm extractEntry _SetCache.js -11242 silly gunzTarPerm extractEntry wrap.js -11243 silly gunzTarPerm extractEntry _Set.js -11244 silly gunzTarPerm extractEntry wrapperAt.js -11245 silly gunzTarPerm extractEntry _Reflect.js -11246 silly gunzTarPerm extractEntry wrapperChain.js -11247 silly gunzTarPerm extractEntry _Promise.js -11248 silly gunzTarPerm extractEntry wrapperLodash.js -11249 silly gunzTarPerm extractEntry _MapCache.js -11250 silly gunzTarPerm extractEntry wrapperReverse.js -11251 silly gunzTarPerm extractEntry _Map.js -11252 silly gunzTarPerm extractEntry wrapperValue.js -11253 silly gunzTarPerm extractEntry _LodashWrapper.js -11254 silly gunzTarPerm extractEntry xor.js -11255 silly gunzTarPerm extractEntry _ListCache.js -11256 silly gunzTarPerm extractEntry xorBy.js -11257 silly gunzTarPerm extractEntry _LazyWrapper.js -11258 silly gunzTarPerm extractEntry xorWith.js -11259 silly gunzTarPerm extractEntry _Hash.js -11260 silly gunzTarPerm extractEntry zip.js -11261 silly gunzTarPerm extractEntry _DataView.js -11262 silly gunzTarPerm extractEntry zipObject.js -11263 silly gunzTarPerm extractEntry curryRight.js -11264 silly gunzTarPerm extractEntry zipWith.js -11265 silly gunzTarPerm extractEntry date.js -11266 silly gunzTarPerm extractEntry fp/__.js -11267 silly gunzTarPerm extractEntry fp/lastIndexOf.js -11268 silly gunzTarPerm extractEntry fp/lowerCase.js -11269 silly gunzTarPerm extractEntry fp/lowerFirst.js -11270 silly gunzTarPerm extractEntry fp/last.js -11271 silly gunzTarPerm extractEntry fp/lte.js -11272 silly gunzTarPerm extractEntry fp/map.js -11273 silly gunzTarPerm extractEntry fp/mapKeys.js -11274 silly gunzTarPerm extractEntry fp/mapValues.js -11275 silly gunzTarPerm extractEntry fp/matches.js -11276 silly gunzTarPerm extractEntry fp/lang.js -11277 silly gunzTarPerm extractEntry fp/matchesProperty.js -11278 silly gunzTarPerm extractEntry fp/keysIn.js -11279 silly gunzTarPerm extractEntry fp/math.js -11280 silly gunzTarPerm extractEntry fp/keys.js -11281 silly gunzTarPerm extractEntry fp/max.js -11282 silly gunzTarPerm extractEntry fp/keyBy.js -11283 silly gunzTarPerm extractEntry fp/maxBy.js -11284 silly gunzTarPerm extractEntry fp/kebabCase.js -11285 silly gunzTarPerm extractEntry fp/mean.js -11286 silly gunzTarPerm extractEntry fp/juxt.js -11287 silly gunzTarPerm extractEntry fp/meanBy.js -11288 silly gunzTarPerm extractEntry fp/join.js -11289 silly gunzTarPerm extractEntry fp/memoize.js -11290 silly gunzTarPerm extractEntry fp/iteratee.js -11291 silly gunzTarPerm extractEntry fp/merge.js -11292 silly gunzTarPerm extractEntry fp/isWeakSet.js -11293 silly gunzTarPerm extractEntry fp/mergeWith.js -11294 silly gunzTarPerm extractEntry fp/isWeakMap.js -11295 silly gunzTarPerm extractEntry fp/method.js -11296 silly gunzTarPerm extractEntry fp/isUndefined.js -11297 silly gunzTarPerm extractEntry fp/methodOf.js -11298 silly gunzTarPerm extractEntry fp/isTypedArray.js -11299 silly gunzTarPerm extractEntry fp/min.js -11300 silly gunzTarPerm extractEntry fp/isSymbol.js -11301 silly gunzTarPerm extractEntry fp/minBy.js -11302 silly gunzTarPerm extractEntry fp/isString.js -11303 silly gunzTarPerm extractEntry fp/mixin.js -11304 silly gunzTarPerm extractEntry fp/isSet.js -11305 silly gunzTarPerm extractEntry fp/multiply.js -11306 silly gunzTarPerm extractEntry fp/isSafeInteger.js -11307 silly gunzTarPerm extractEntry fp/nAry.js -11308 silly gunzTarPerm extractEntry fp/isRegExp.js -11309 silly gunzTarPerm extractEntry fp/negate.js -11310 silly gunzTarPerm extractEntry fp/isPlainObject.js -11311 silly gunzTarPerm extractEntry fp/next.js -11312 silly gunzTarPerm extractEntry fp/isObjectLike.js -11313 silly gunzTarPerm extractEntry fp/noop.js -11314 silly gunzTarPerm extractEntry fp/isObject.js -11315 silly gunzTarPerm extractEntry fp/now.js -11316 silly gunzTarPerm extractEntry fp/isNumber.js -11317 silly gunzTarPerm extractEntry fp/nth.js -11318 silly gunzTarPerm extractEntry fp/isNull.js -11319 silly gunzTarPerm extractEntry fp/nthArg.js -11320 silly gunzTarPerm extractEntry fp/isNil.js -11321 silly gunzTarPerm extractEntry fp/number.js -11322 silly gunzTarPerm extractEntry fp/isNative.js -11323 silly gunzTarPerm extractEntry fp/object.js -11324 silly gunzTarPerm extractEntry fp/isNaN.js -11325 silly gunzTarPerm extractEntry fp/omit.js -11326 silly gunzTarPerm extractEntry fp/isMatchWith.js -11327 silly gunzTarPerm extractEntry fp/omitAll.js -11328 silly gunzTarPerm extractEntry fp/isMatch.js -11329 silly gunzTarPerm extractEntry fp/omitBy.js -11330 silly gunzTarPerm extractEntry fp/isMap.js -11331 silly gunzTarPerm extractEntry fp/once.js -11332 silly gunzTarPerm extractEntry fp/isLength.js -11333 silly gunzTarPerm extractEntry fp/orderBy.js -11334 silly gunzTarPerm extractEntry fp/isInteger.js -11335 silly gunzTarPerm extractEntry fp/over.js -11336 silly gunzTarPerm extractEntry fp/isFunction.js -11337 silly gunzTarPerm extractEntry fp/overArgs.js -11338 silly gunzTarPerm extractEntry fp/isFinite.js -11339 silly gunzTarPerm extractEntry fp/overEvery.js -11340 silly gunzTarPerm extractEntry fp/isError.js -11341 silly gunzTarPerm extractEntry fp/overSome.js -11342 silly gunzTarPerm extractEntry fp/isEqualWith.js -11343 silly gunzTarPerm extractEntry fp/pad.js -11344 silly gunzTarPerm extractEntry fp/isEqual.js -11345 silly gunzTarPerm extractEntry fp/padChars.js -11346 silly gunzTarPerm extractEntry fp/isEmpty.js -11347 silly gunzTarPerm extractEntry fp/padCharsEnd.js -11348 silly gunzTarPerm extractEntry fp/isElement.js -11349 silly gunzTarPerm extractEntry fp/padCharsStart.js -11350 silly gunzTarPerm extractEntry fp/isDate.js -11351 silly gunzTarPerm extractEntry fp/padEnd.js -11352 silly gunzTarPerm extractEntry fp/isBuffer.js -11353 silly gunzTarPerm extractEntry fp/padStart.js -11354 silly gunzTarPerm extractEntry fp/isBoolean.js -11355 silly gunzTarPerm extractEntry fp/parseInt.js -11356 silly gunzTarPerm extractEntry fp/isArrayLikeObject.js -11357 silly gunzTarPerm extractEntry fp/partial.js -11358 silly gunzTarPerm extractEntry fp/isArrayLike.js -11359 silly gunzTarPerm extractEntry fp/partialRight.js -11360 silly gunzTarPerm extractEntry fp/isArrayBuffer.js -11361 silly gunzTarPerm extractEntry fp/partition.js -11362 silly gunzTarPerm extractEntry fp/isArray.js -11363 silly gunzTarPerm extractEntry fp/path.js -11364 silly gunzTarPerm extractEntry fp/isArguments.js -11365 silly gunzTarPerm extractEntry fp/pathEq.js -11366 silly gunzTarPerm extractEntry fp/invokeMap.js -11367 silly gunzTarPerm extractEntry fp/pathOr.js -11368 silly gunzTarPerm extractEntry fp/invokeArgsMap.js -11369 silly gunzTarPerm extractEntry fp/paths.js -11370 silly gunzTarPerm extractEntry fp/invokeArgs.js -11371 silly gunzTarPerm extractEntry fp/pick.js -11372 silly gunzTarPerm extractEntry fp/invoke.js -11373 silly gunzTarPerm extractEntry fp/pickAll.js -11374 silly gunzTarPerm extractEntry fp/invertObj.js -11375 silly gunzTarPerm extractEntry fp/pickBy.js -11376 silly gunzTarPerm extractEntry fp/invertBy.js -11377 silly gunzTarPerm extractEntry fp/pipe.js -11378 silly gunzTarPerm extractEntry fp/invert.js -11379 silly gunzTarPerm extractEntry fp/placeholder.js -11380 silly gunzTarPerm extractEntry fp/intersectionWith.js -11381 silly gunzTarPerm extractEntry fp/plant.js -11382 silly gunzTarPerm extractEntry fp/intersectionBy.js -11383 silly gunzTarPerm extractEntry fp/pluck.js -11384 silly gunzTarPerm extractEntry fp/intersection.js -11385 silly gunzTarPerm extractEntry fp/prop.js -11386 silly gunzTarPerm extractEntry fp/initial.js -11387 silly gunzTarPerm extractEntry fp/propEq.js -11388 silly gunzTarPerm extractEntry fp/init.js -11389 silly gunzTarPerm extractEntry fp/propOr.js -11390 silly gunzTarPerm extractEntry fp/indexOf.js -11391 silly gunzTarPerm extractEntry fp/property.js -11392 silly gunzTarPerm extractEntry fp/includes.js -11393 silly gunzTarPerm extractEntry fp/propertyOf.js -11394 silly gunzTarPerm extractEntry fp/inRange.js -11395 silly gunzTarPerm extractEntry fp/props.js -11396 silly gunzTarPerm extractEntry fp/identity.js -11397 silly gunzTarPerm extractEntry fp/pull.js -11398 silly gunzTarPerm extractEntry fp/identical.js -11399 silly gunzTarPerm extractEntry fp/pullAll.js -11400 silly gunzTarPerm extractEntry fp/head.js -11401 silly gunzTarPerm extractEntry fp/pullAllBy.js -11402 silly gunzTarPerm extractEntry fp/hasIn.js -11403 silly gunzTarPerm extractEntry fp/pullAllWith.js -11404 silly gunzTarPerm extractEntry fp/has.js -11405 silly gunzTarPerm extractEntry fp/pullAt.js -11406 silly gunzTarPerm extractEntry fp/gte.js -11407 silly gunzTarPerm extractEntry fp/random.js -11408 silly gunzTarPerm extractEntry fp/gt.js -11409 silly gunzTarPerm extractEntry fp/range.js -11410 silly gunzTarPerm extractEntry fp/groupBy.js -11411 silly gunzTarPerm extractEntry fp/rangeRight.js -11412 silly gunzTarPerm extractEntry fp/getOr.js -11413 silly gunzTarPerm extractEntry fp/rearg.js -11414 silly gunzTarPerm extractEntry fp/get.js -11415 silly gunzTarPerm extractEntry fp/reduce.js -11416 silly gunzTarPerm extractEntry fp/functionsIn.js -11417 silly gunzTarPerm extractEntry fp/reduceRight.js -11418 silly gunzTarPerm extractEntry fp/functions.js -11419 silly gunzTarPerm extractEntry fp/reject.js -11420 silly gunzTarPerm extractEntry fp/function.js -11421 silly gunzTarPerm extractEntry fp/remove.js -11422 silly gunzTarPerm extractEntry fp/fromPairs.js -11423 silly gunzTarPerm extractEntry fp/repeat.js -11424 silly gunzTarPerm extractEntry fp/forOwnRight.js -11425 silly gunzTarPerm extractEntry fp/replace.js -11426 silly gunzTarPerm extractEntry fp/forOwn.js -11427 silly gunzTarPerm extractEntry fp/rest.js -11428 silly gunzTarPerm extractEntry fp/forInRight.js -11429 silly gunzTarPerm extractEntry fp/restFrom.js -11430 silly gunzTarPerm extractEntry fp/forIn.js -11431 silly gunzTarPerm extractEntry fp/result.js -11432 silly gunzTarPerm extractEntry fp/forEachRight.js -11433 silly gunzTarPerm extractEntry fp/reverse.js -11434 silly gunzTarPerm extractEntry fp/forEach.js -11435 silly gunzTarPerm extractEntry fp/round.js -11436 silly gunzTarPerm extractEntry fp/flowRight.js -11437 silly gunzTarPerm extractEntry fp/sample.js -11438 silly gunzTarPerm extractEntry fp/flow.js -11439 silly gunzTarPerm extractEntry fp/sampleSize.js -11440 silly gunzTarPerm extractEntry fp/floor.js -11441 silly gunzTarPerm extractEntry fp/seq.js -11442 silly gunzTarPerm extractEntry fp/flip.js -11443 silly gunzTarPerm extractEntry fp/set.js -11444 silly gunzTarPerm extractEntry fp/flattenDepth.js -11445 silly gunzTarPerm extractEntry fp/setWith.js -11446 silly gunzTarPerm extractEntry fp/flattenDeep.js -11447 silly gunzTarPerm extractEntry fp/shuffle.js -11448 silly gunzTarPerm extractEntry fp/flatten.js -11449 silly gunzTarPerm extractEntry fp/size.js -11450 silly gunzTarPerm extractEntry fp/flatMapDepth.js -11451 silly gunzTarPerm extractEntry fp/slice.js -11452 silly gunzTarPerm extractEntry fp/flatMapDeep.js -11453 silly gunzTarPerm extractEntry fp/snakeCase.js -11454 silly gunzTarPerm extractEntry fp/flatMap.js -11455 silly gunzTarPerm extractEntry fp/some.js -11456 silly gunzTarPerm extractEntry fp/first.js -11457 silly gunzTarPerm extractEntry fp/sortBy.js -11458 silly gunzTarPerm extractEntry fp/findLastKey.js -11459 silly gunzTarPerm extractEntry fp/sortedIndex.js -11460 silly gunzTarPerm extractEntry fp/findLastIndex.js -11461 silly gunzTarPerm extractEntry fp/sortedIndexBy.js -11462 silly gunzTarPerm extractEntry fp/findLast.js -11463 silly gunzTarPerm extractEntry fp/sortedIndexOf.js -11464 silly gunzTarPerm extractEntry fp/findKey.js -11465 silly gunzTarPerm extractEntry fp/sortedLastIndex.js -11466 silly gunzTarPerm extractEntry fp/findIndex.js -11467 silly gunzTarPerm extractEntry fp/sortedLastIndexBy.js -11468 silly gunzTarPerm extractEntry fp/find.js -11469 silly gunzTarPerm extractEntry fp/sortedLastIndexOf.js -11470 silly gunzTarPerm extractEntry fp/filter.js -11471 silly gunzTarPerm extractEntry fp/sortedUniq.js -11472 silly gunzTarPerm extractEntry fp/fill.js -11473 silly gunzTarPerm extractEntry fp/sortedUniqBy.js -11474 silly gunzTarPerm extractEntry fp/extendWith.js -11475 silly gunzTarPerm extractEntry fp/split.js -11476 silly gunzTarPerm extractEntry fp/extend.js -11477 silly gunzTarPerm extractEntry fp/spread.js -11478 silly gunzTarPerm extractEntry fp/every.js -11479 silly gunzTarPerm extractEntry fp/spreadFrom.js -11480 silly gunzTarPerm extractEntry fp/escapeRegExp.js -11481 silly gunzTarPerm extractEntry fp/startCase.js -11482 silly gunzTarPerm extractEntry fp/escape.js -11483 silly gunzTarPerm extractEntry fp/startsWith.js -11484 silly gunzTarPerm extractEntry fp/equals.js -11485 silly gunzTarPerm extractEntry fp/string.js -11486 silly gunzTarPerm extractEntry fp/eq.js -11487 silly gunzTarPerm extractEntry fp/subtract.js -11488 silly gunzTarPerm extractEntry fp/entriesIn.js -11489 silly gunzTarPerm extractEntry fp/sum.js -11490 silly gunzTarPerm extractEntry fp/entries.js -11491 silly gunzTarPerm extractEntry fp/sumBy.js -11492 silly gunzTarPerm extractEntry fp/endsWith.js -11493 silly gunzTarPerm extractEntry fp/tail.js -11494 silly gunzTarPerm extractEntry fp/eachRight.js -11495 silly gunzTarPerm extractEntry fp/take.js -11496 silly gunzTarPerm extractEntry fp/each.js -11497 silly gunzTarPerm extractEntry fp/takeRight.js -11498 silly gunzTarPerm extractEntry fp/dropWhile.js -11499 silly gunzTarPerm extractEntry fp/takeRightWhile.js -11500 silly gunzTarPerm extractEntry fp/dropRightWhile.js -11501 silly gunzTarPerm extractEntry fp/takeWhile.js -11502 silly gunzTarPerm extractEntry fp/dropRight.js -11503 silly gunzTarPerm extractEntry fp/tap.js -11504 silly gunzTarPerm extractEntry fp/drop.js -11505 silly gunzTarPerm extractEntry fp/template.js -11506 silly gunzTarPerm extractEntry fp/divide.js -11507 silly gunzTarPerm extractEntry fp/templateSettings.js -11508 silly gunzTarPerm extractEntry fp/dissocPath.js -11509 silly gunzTarPerm extractEntry fp/throttle.js -11510 silly gunzTarPerm extractEntry fp/dissoc.js -11511 silly gunzTarPerm extractEntry fp/thru.js -11512 silly gunzTarPerm extractEntry fp/differenceWith.js -11513 silly gunzTarPerm extractEntry fp/times.js -11514 silly gunzTarPerm extractEntry fp/differenceBy.js -11515 silly gunzTarPerm extractEntry fp/toArray.js -11516 silly gunzTarPerm extractEntry fp/difference.js -11517 silly gunzTarPerm extractEntry fp/toFinite.js -11518 silly gunzTarPerm extractEntry fp/delay.js -11519 silly gunzTarPerm extractEntry fp/toInteger.js -11520 silly gunzTarPerm extractEntry fp/defer.js -11521 silly gunzTarPerm extractEntry fp/toIterator.js -11522 silly gunzTarPerm extractEntry fp/defaultsDeep.js -11523 silly gunzTarPerm extractEntry fp/toJSON.js -11524 silly gunzTarPerm extractEntry fp/defaults.js -11525 silly gunzTarPerm extractEntry fp/toLength.js -11526 silly gunzTarPerm extractEntry fp/deburr.js -11527 silly gunzTarPerm extractEntry fp/toLower.js -11528 silly gunzTarPerm extractEntry fp/debounce.js -11529 silly gunzTarPerm extractEntry fp/toNumber.js -11530 silly gunzTarPerm extractEntry fp/date.js -11531 silly gunzTarPerm extractEntry fp/toPairs.js -11532 silly gunzTarPerm extractEntry fp/curryRightN.js -11533 silly gunzTarPerm extractEntry fp/toPairsIn.js -11534 silly gunzTarPerm extractEntry fp/curryRight.js -11535 silly gunzTarPerm extractEntry fp/toPath.js -11536 silly gunzTarPerm extractEntry fp/curryN.js -11537 silly gunzTarPerm extractEntry fp/toPlainObject.js -11538 silly gunzTarPerm extractEntry fp/curry.js -11539 silly gunzTarPerm extractEntry fp/toSafeInteger.js -11540 silly gunzTarPerm extractEntry fp/create.js -11541 silly gunzTarPerm extractEntry fp/toString.js -11542 silly gunzTarPerm extractEntry fp/countBy.js -11543 silly gunzTarPerm extractEntry fp/toUpper.js -11544 silly gunzTarPerm extractEntry fp/convert.js -11545 silly gunzTarPerm extractEntry fp/transform.js -11546 silly gunzTarPerm extractEntry fp/contains.js -11547 silly gunzTarPerm extractEntry fp/trim.js -11548 silly gunzTarPerm extractEntry fp/constant.js -11549 silly gunzTarPerm extractEntry fp/trimChars.js -11550 silly gunzTarPerm extractEntry fp/conforms.js -11551 silly gunzTarPerm extractEntry fp/trimCharsEnd.js -11552 silly gunzTarPerm extractEntry fp/cond.js -11553 silly gunzTarPerm extractEntry fp/trimCharsStart.js -11554 silly gunzTarPerm extractEntry fp/concat.js -11555 silly gunzTarPerm extractEntry fp/trimEnd.js -11556 silly gunzTarPerm extractEntry fp/compose.js -11557 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx/package.json -11558 info preinstall rx@4.1.0 -11559 silly gunzTarPerm extractEntry fp/trimStart.js -11560 silly gunzTarPerm extractEntry fp/complement.js -11561 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx/package.json -11562 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx/package.json -11563 silly gunzTarPerm extractEntry fp/truncate.js -11564 silly gunzTarPerm extractEntry fp/compact.js -11565 silly install resolved [] -11566 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx -11567 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx -11568 silly gunzTarPerm extractEntry fp/unapply.js -11569 silly gunzTarPerm extractEntry fp/commit.js -11570 info linkStuff rx@4.1.0 -11571 silly linkStuff rx@4.1.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -11572 silly linkStuff rx@4.1.0 is part of a global install -11573 silly linkStuff rx@4.1.0 is installed into a global node_modules -11574 verbose linkBins rx@4.1.0 -11575 verbose linkMans rx@4.1.0 -11576 verbose rebuildBundles rx@4.1.0 -11577 info install rx@4.1.0 -11578 info postinstall rx@4.1.0 -11579 silly gunzTarPerm extractEntry fp/unary.js -11580 silly gunzTarPerm extractEntry fp/collection.js -11581 verbose unlock done using /home/ruanyf/.tnpm/_locks/rx-a88d72d456f97785.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/rx -11582 silly gunzTarPerm extractEntry fp/unescape.js -11583 silly gunzTarPerm extractEntry fp/cloneWith.js -11584 silly gunzTarPerm extractEntry fp/union.js -11585 silly gunzTarPerm extractEntry fp/cloneDeepWith.js -11586 silly gunzTarPerm extractEntry fp/unionBy.js -11587 silly gunzTarPerm extractEntry fp/cloneDeep.js -11588 silly gunzTarPerm extractEntry fp/unionWith.js -11589 silly gunzTarPerm extractEntry fp/clone.js -11590 silly gunzTarPerm extractEntry fp/uniq.js -11591 silly gunzTarPerm extractEntry fp/clamp.js -11592 silly gunzTarPerm extractEntry fp/uniqBy.js -11593 silly gunzTarPerm extractEntry fp/chunk.js -11594 silly gunzTarPerm extractEntry fp/uniqWith.js -11595 silly gunzTarPerm extractEntry fp/chain.js -11596 silly gunzTarPerm extractEntry fp/uniqueId.js -11597 silly gunzTarPerm extractEntry fp/ceil.js -11598 silly gunzTarPerm extractEntry fp/unnest.js -11599 silly gunzTarPerm extractEntry fp/castArray.js -11600 silly gunzTarPerm extractEntry fp/unset.js -11601 silly gunzTarPerm extractEntry fp/capitalize.js -11602 silly gunzTarPerm extractEntry fp/unzip.js -11603 silly gunzTarPerm extractEntry fp/camelCase.js -11604 silly gunzTarPerm extractEntry fp/unzipWith.js -11605 silly gunzTarPerm extractEntry fp/bindKey.js -11606 silly gunzTarPerm extractEntry fp/update.js -11607 silly gunzTarPerm extractEntry fp/bindAll.js -11608 silly gunzTarPerm extractEntry fp/updateWith.js -11609 silly gunzTarPerm extractEntry fp/bind.js -11610 silly gunzTarPerm extractEntry fp/upperCase.js -11611 silly gunzTarPerm extractEntry fp/before.js -11612 silly gunzTarPerm extractEntry fp/upperFirst.js -11613 silly gunzTarPerm extractEntry fp/attempt.js -11614 silly gunzTarPerm extractEntry fp/useWith.js -11615 silly gunzTarPerm extractEntry fp/at.js -11616 silly gunzTarPerm extractEntry fp/util.js -11617 silly gunzTarPerm extractEntry fp/assocPath.js -11618 silly gunzTarPerm extractEntry fp/value.js -11619 silly gunzTarPerm extractEntry fp/assoc.js -11620 silly gunzTarPerm extractEntry fp/valueOf.js -11621 silly gunzTarPerm extractEntry fp/assignWith.js -11622 silly gunzTarPerm extractEntry fp/values.js -11623 silly gunzTarPerm extractEntry fp/assignInWith.js -11624 silly gunzTarPerm extractEntry fp/valuesIn.js -11625 silly gunzTarPerm extractEntry fp/assignIn.js -11626 silly gunzTarPerm extractEntry fp/whereEq.js -11627 silly gunzTarPerm extractEntry fp/assign.js -11628 silly gunzTarPerm extractEntry fp/without.js -11629 silly gunzTarPerm extractEntry fp/ary.js -11630 silly gunzTarPerm extractEntry fp/words.js -11631 silly gunzTarPerm extractEntry fp/array.js -11632 silly gunzTarPerm extractEntry fp/wrap.js -11633 silly gunzTarPerm extractEntry fp/apply.js -11634 silly gunzTarPerm extractEntry fp/wrapperAt.js -11635 silly gunzTarPerm extractEntry fp/anyPass.js -11636 silly gunzTarPerm extractEntry fp/wrapperChain.js -11637 silly gunzTarPerm extractEntry fp/any.js -11638 silly gunzTarPerm extractEntry fp/wrapperLodash.js -11639 silly gunzTarPerm extractEntry fp/always.js -11640 silly gunzTarPerm extractEntry fp/wrapperReverse.js -11641 silly gunzTarPerm extractEntry fp/allPass.js -11642 silly gunzTarPerm extractEntry fp/wrapperValue.js -11643 silly gunzTarPerm extractEntry fp/all.js -11644 silly gunzTarPerm extractEntry fp/xor.js -11645 silly gunzTarPerm extractEntry fp/after.js -11646 silly gunzTarPerm extractEntry fp/xorBy.js -11647 silly gunzTarPerm extractEntry fp/add.js -11648 silly gunzTarPerm extractEntry fp/xorWith.js -11649 silly gunzTarPerm extractEntry fp/_util.js -11650 silly gunzTarPerm extractEntry fp/zip.js -11651 silly gunzTarPerm extractEntry fp/_mapping.js -11652 silly gunzTarPerm extractEntry fp/zipObj.js -11653 silly gunzTarPerm extractEntry fp/_falseOptions.js -11654 silly gunzTarPerm extractEntry fp/zipObject.js -11655 silly gunzTarPerm extractEntry fp/_convertBrowser.js -11656 silly gunzTarPerm extractEntry fp/zipObjectDeep.js -11657 silly gunzTarPerm extractEntry fp/_baseConvert.js -11658 silly gunzTarPerm extractEntry fp/zipWith.js -11659 silly gunzTarPerm extractEntry fp/lt.js -11660 verbose write writing to /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash/package.json -11661 info preinstall lodash@4.12.0 -11662 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash/package.json -11663 verbose readDependencies loading dependencies from /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash/package.json -11664 silly install resolved [] -11665 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash -11666 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash -11667 info linkStuff lodash@4.12.0 -11668 silly linkStuff lodash@4.12.0 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules as its parent node_modules -11669 silly linkStuff lodash@4.12.0 is part of a global install -11670 silly linkStuff lodash@4.12.0 is installed into a global node_modules -11671 verbose linkBins lodash@4.12.0 -11672 verbose linkMans lodash@4.12.0 -11673 verbose rebuildBundles lodash@4.12.0 -11674 info install lodash@4.12.0 -11675 info postinstall lodash@4.12.0 -11676 verbose unlock done using /home/ruanyf/.tnpm/_locks/lodash-18cb345c53418e4c.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer/node_modules/lodash -11677 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -11678 info build /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -11679 info linkStuff inquirer@1.0.2 -11680 silly linkStuff inquirer@1.0.2 has /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules as its parent node_modules -11681 silly linkStuff inquirer@1.0.2 is part of a global install -11682 silly linkStuff inquirer@1.0.2 is installed into a global node_modules -11683 verbose linkBins inquirer@1.0.2 -11684 verbose linkMans inquirer@1.0.2 -11685 verbose rebuildBundles inquirer@1.0.2 -11686 verbose rebuildBundles [ 'ansi-escapes', -11686 verbose rebuildBundles 'chalk', -11686 verbose rebuildBundles 'cli-cursor', -11686 verbose rebuildBundles 'cli-width', -11686 verbose rebuildBundles 'figures', -11686 verbose rebuildBundles 'lodash', -11686 verbose rebuildBundles 'mute-stream', -11686 verbose rebuildBundles 'pinkie-promise', -11686 verbose rebuildBundles 'run-async', -11686 verbose rebuildBundles 'rx', -11686 verbose rebuildBundles 'string-width', -11686 verbose rebuildBundles 'strip-ansi', -11686 verbose rebuildBundles 'through' ] -11687 info install inquirer@1.0.2 -11688 info postinstall inquirer@1.0.2 -11689 verbose unlock done using /home/ruanyf/.tnpm/_locks/inquirer-f296c232979e4521.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init/node_modules/inquirer -11690 verbose about to build /home/ruanyf/npm-global/lib/node_modules/antd-init -11691 info build /home/ruanyf/npm-global/lib/node_modules/antd-init -11692 info linkStuff antd-init@1.1.1 -11693 silly linkStuff antd-init@1.1.1 has /home/ruanyf/npm-global/lib/node_modules as its parent node_modules -11694 silly linkStuff antd-init@1.1.1 is part of a global install -11695 silly linkStuff antd-init@1.1.1 is installed into a global node_modules -11696 silly linkStuff antd-init@1.1.1 is installed into the top-level global node_modules -11697 verbose linkBins antd-init@1.1.1 -11698 verbose link bins [ { 'antd-init': './bin/antd-init' }, -11698 verbose link bins '/home/ruanyf/npm-global/bin', -11698 verbose link bins true ] -11699 verbose linkMans antd-init@1.1.1 -11700 verbose rebuildBundles antd-init@1.1.1 -11701 verbose rebuildBundles [ '.bin', 'inquirer', 'through2', 'vinyl-fs', 'which' ] -11702 silly gentlyRm /home/ruanyf/npm-global/bin/antd-init is being gently removed -11703 silly gentlyRm verifying /home/ruanyf/npm-global is an npm working directory -11704 silly gentlyRm containing path /home/ruanyf/npm-global is under npm's control, in /home/ruanyf/npm-global -11705 silly gentlyRm deletion target /home/ruanyf/npm-global/bin/antd-init is under /home/ruanyf/npm-global -11706 verbose gentlyRm vacuuming from /home/ruanyf/npm-global/bin/antd-init up to /home/ruanyf/npm-global -11707 info install antd-init@1.1.1 -11708 info postinstall antd-init@1.1.1 -11709 verbose unlock done using /home/ruanyf/.tnpm/_locks/antd-init-240ac15f17eb2aec.lock for /home/ruanyf/npm-global/lib/node_modules/antd-init -11710 verbose validateInstall loading /home/ruanyf/npm-global/lib/package.json for validation -11711 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/engine.io requires debug@'1.0.3' but will load -11711 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, -11711 warn unmet dependency which is version 2.2.0 -11712 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/enhanced-resolve requires graceful-fs@'^3.0.5' but will load -11712 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/graceful-fs, -11712 warn unmet dependency which is version 4.1.2 -11713 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/engine.io-client requires debug@'1.0.4' but will load -11713 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, -11713 warn unmet dependency which is version 2.2.0 -11714 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/engine.io-client requires parseuri@'0.0.4' but will load -11714 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/parseuri, -11714 warn unmet dependency which is version 0.0.2 -11715 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/express requires qs@'4.0.0' but will load -11715 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/qs, -11715 warn unmet dependency which is version 2.4.1 -11716 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/has-binary requires isarray@'0.0.1' but will load -11716 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, -11716 warn unmet dependency which is version 1.0.0 -11717 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/has-binary-data requires isarray@'0.0.1' but will load -11717 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, -11717 warn unmet dependency which is version 1.0.0 -11718 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isobject requires isarray@'0.0.1' but will load -11718 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, -11718 warn unmet dependency which is version 1.0.0 -11719 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/jstransform requires esprima-fb@'13001.1001.0-dev-harmony-fb' but will load -11719 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/esprima-fb, -11719 warn unmet dependency which is version 15001.1001.0-dev-harmony-fb -11720 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/jstransform requires source-map@'0.1.31' but will load -11720 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map, -11720 warn unmet dependency which is version 0.4.4 -11721 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/optimist requires minimist@'~0.0.1' but will load -11721 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/minimist, -11721 warn unmet dependency which is version 1.2.0 -11722 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/readable-stream requires isarray@'0.0.1' but will load -11722 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, -11722 warn unmet dependency which is version 1.0.0 -11723 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/recast requires source-map@'~0.5.0' but will load -11723 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map, -11723 warn unmet dependency which is version 0.4.4 -11724 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/readdirp requires readable-stream@'^2.0.2' but will load -11724 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/readable-stream, -11724 warn unmet dependency which is version 1.1.13 -11725 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/reduce-css-calc requires balanced-match@'^0.1.0' but will load -11725 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/balanced-match, -11725 warn unmet dependency which is version 0.3.0 -11726 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/send requires mime@'1.3.4' but will load -11726 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/mime, -11726 warn unmet dependency which is version 1.2.11 -11727 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-client requires debug@'0.7.4' but will load -11727 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, -11727 warn unmet dependency which is version 2.2.0 -11728 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-parser requires debug@'0.7.4' but will load -11728 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, -11728 warn unmet dependency which is version 2.2.0 -11729 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-parser requires isarray@'0.0.1' but will load -11729 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/isarray, -11729 warn unmet dependency which is version 1.0.0 -11730 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io requires debug@'2.1.0' but will load -11730 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, -11730 warn unmet dependency which is version 2.2.0 -11731 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map-support requires source-map@'0.1.32' but will load -11731 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map, -11731 warn unmet dependency which is version 0.4.4 -11732 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-adapter requires debug@'1.0.2' but will load -11732 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/debug, -11732 warn unmet dependency which is version 2.2.0 -11733 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-adapter requires socket.io-parser@'2.2.2' but will load -11733 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/socket.io-parser, -11733 warn unmet dependency which is version 2.2.4 -11734 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/url requires punycode@'1.3.2' but will load -11734 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/punycode, -11734 warn unmet dependency which is version 1.4.0 -11735 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/defs requires yargs@'~3.27.0' but will load -11735 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/yargs, -11735 warn unmet dependency which is version 3.15.0 -11736 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/mkdirp requires minimist@'0.0.8' but will load -11736 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/minimist, -11736 warn unmet dependency which is version 1.2.0 -11737 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/uglify-js requires async@'~0.2.6' but will load -11737 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/async, -11737 warn unmet dependency which is version 1.5.0 -11738 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/uglify-js requires source-map@'0.1.34' but will load -11738 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/source-map, -11738 warn unmet dependency which is version 0.4.4 -11739 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/uglify-js requires yargs@'~3.5.4' but will load -11739 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/yargs, -11739 warn unmet dependency which is version 3.15.0 -11740 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/autoprefixer requires browserslist@'~1.0.1' but will load -11740 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/browserslist, -11740 warn unmet dependency which is version 0.4.0 -11741 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/cssnano requires object-assign@'^4.0.1' but will load -11741 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/object-assign, -11741 warn unmet dependency which is version 3.0.0 -11742 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/webpack/node_modules/watchpack/node_modules/chokidar/node_modules/anymatch/node_modules/micromatch requires kind-of@'^3.0.2' but will load -11742 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/kind-of, -11742 warn unmet dependency which is version 2.0.1 -11743 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/webpack-dev-server/node_modules/webpack-dev-middleware requires mime@'^1.3.4' but will load -11743 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/mime, -11743 warn unmet dependency which is version 1.2.11 -11744 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/webpack-dev-server/node_modules/webpack-dev-middleware/node_modules/memory-fs requires readable-stream@'^2.0.1' but will load -11744 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/readable-stream, -11744 warn unmet dependency which is version 1.1.13 -11745 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/webpack-require/node_modules/uglify-js requires async@'~0.2.6' but will load -11745 warn unmet dependency /home/ruanyf/npm-global/lib/node_modules/rwb/node_modules/async, -11745 warn unmet dependency which is version 1.5.0 -11746 verbose stack Error: The package handlebars@4.0.5 does not satisfy its siblings' peerDependencies requirements! -11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/lib/install.js:125:32 -11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/lib/install.js:268:7 -11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:142:5 -11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:263:14 -11746 verbose stack at cb (/home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/slide/lib/async-map.js:47:24) -11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:263:14 -11746 verbose stack at cb (/home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/slide/lib/async-map.js:47:24) -11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:263:14 -11746 verbose stack at cb (/home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/slide/lib/async-map.js:47:24) -11746 verbose stack at /home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/node_modules/read-installed/read-installed.js:263:14 -11747 verbose cwd /home/ruanyf/project/es6tutorial -11748 error Linux 3.16.0-4-amd64 -11749 error argv "/usr/bin/nodejs" "/home/ruanyf/npm-global/lib/node_modules/tnpm/node_modules/npm/bin/npm-cli.js" "install" "--cache=/home/ruanyf/.tnpm" "--node_sqlite3_binary_host_mirror=https://npm.taobao.org/mirrors/" "--fse_binary_host_mirror=https://npm.taobao.org/mirrors/fsevents/" "--no-proxy" "--disturl=https://npm.taobao.org/mirrors/node" "--userconfig=/home/ruanyf/.tnpmrc" "--registry=http://registry.npm.alibaba-inc.com" "antd-init" "-g" -11750 error node v4.4.3 -11751 error npm v2.15.6 -11752 error code EPEERINVALID -11753 error peerinvalid The package handlebars@4.0.5 does not satisfy its siblings' peerDependencies requirements! -11754 verbose exit [ 1, true ] From 550df8c3b89b76d84858c801a3ecdf63753a128c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 16 Jun 2016 17:19:10 +0800 Subject: [PATCH 054/994] =?UTF-8?q?docs(let):=20add=20=E5=9D=97=E7=BA=A7?= =?UTF-8?q?=E4=BD=9C=E7=94=A8=E5=9F=9F=E4=B9=8B=E4=B8=AD=E5=A3=B0=E6=98=8E?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/let.md | 185 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 125 insertions(+), 60 deletions(-) diff --git a/docs/let.md b/docs/let.md index 8230825ca..b3d6c4296 100644 --- a/docs/let.md +++ b/docs/let.md @@ -271,56 +271,147 @@ ES6允许块级作用域的任意嵌套。 } ``` -另外,ES6也规定,函数本身的作用域,在其所在的块级作用域之内。 +### 块级作用域与函数声明 + +函数能不能在块级作用域之中声明,是一个相当令人混淆的问题。 + +ES5规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明。 + +```javascript +// 情况一 +if (true) { + function f() {} +} + +// 情况二 +try { + function f() {} +} catch(e) { +} +``` + +上面代码的两种函数声明,根据ES5的规定都是非法的。 + +但是,浏览器没有遵守这个规定,还是支持在块级作用域之中声明函数,因此上面两种情况实际都能运行,不会报错。不过,“严格模式”下还是会报错。 + +```javascript +// ES5严格模式 +'use strict'; +if (true) { + function f() {} +} +// 报错 +``` + +ES6引入了块级作用域,明确允许在块级作用域之中声明函数。 + +```javascript +// ES6严格模式 +'use strict'; +if (true) { + function f() {} +} +// 不报错 +``` + +并且ES6规定,块级作用域之中,函数声明语句的行为类似于`let`,在块级作用域之外不可引用。 + +```javascript +function f() { console.log('I am outside!'); } +(function () { + if (false) { + // 重复声明一次函数f + function f() { console.log('I am inside!'); } + } + + f(); +}()); +``` + +上面代码在ES5中运行,会得到“I am inside!”,因为在`if`内声明的函数`f`会被提升到函数头部,实际运行的代码如下。 + +```javascript +// ES5版本 +function f() { console.log('I am outside!'); } +(function () { + function f() { console.log('I am inside!'); } + if (false) { + } + f(); +}()); +``` + +ES6的运行结果就完全不一样了,会得到“I am outside!”。因为块级作用域内声明的函数类似于`let`,对作用域之外没有影响,实际运行的代码如下。 ```javascript +// ES6版本 function f() { console.log('I am outside!'); } (function () { - if(false) { + f(); +}()); +``` + +很显然,这种行为差异会对老代码产生很大影响。为了减轻因此产生的不兼容问题,ES6在[附录B](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-block-level-function-declarations-web-legacy-compatibility-semantics)里面规定,浏览器的实现可以不遵守上面的规定,有自己的[行为方式](http://stackoverflow.com/questions/31419897/what-are-the-precise-semantics-of-block-level-functions-in-es6)。 + +- 允许在块级作用域内声明函数。 +- 函数声明类似于`var`,即会提升到全局作用域或函数作用域的头部。 +- 同时,函数声明还会提升到所在的块级作用域的头部。 + +注意,上面三条规则只对ES6的浏览器实现有效,其他环境的实现不用遵守,还是将块级作用域的函数声明当作`let`处理。 + +前面那段代码,在Chrome环境下运行会报错。 + +```javascript +// ES6的浏览器环境 +function f() { console.log('I am outside!'); } +(function () { + if (false) { // 重复声明一次函数f function f() { console.log('I am inside!'); } } f(); }()); +// Uncaught TypeError: f is not a function ``` -上面代码在ES5中运行,会得到“I am inside!”,但是在ES6中运行,会得到“I am outside!”。这是因为ES5存在函数提升,不管会不会进入 `if`代码块,函数声明都会提升到当前作用域的顶部,得到执行;而ES6支持块级作用域,不管会不会进入if代码块,其内部声明的函数皆不会影响到作用域的外部。 +上面的代码报错,是因为实际运行的是下面的代码。 ```javascript +// ES6的浏览器环境 +function f() { console.log('I am outside!'); } +(function () { + var f = undefined; + if (false) { + function f() { console.log('I am inside!'); } + } + + f(); +}()); +// Uncaught TypeError: f is not a function +``` + +考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数。如果确实需要,也应该写成函数表达式,而不是函数声明语句。 + +```javascript +// 函数声明语句 { let a = 'secret'; function f() { return a; } } -f(); // 报错 -``` - -上面代码中,块级作用域外部,无法调用块级作用域内部定义的函数。如果确实需要调用,就要像下面这样处理。 -```javascript -let f; +// 函数表达式 { let a = 'secret'; - f = function () { + let f = function () { return a; }; } -f(); // "secret" ``` -ES5的严格模式规定,函数只能在顶层作用域和函数内声明,其他情况(比如`if`代码块、循环代码块)的声明都会报错。 - -```javascript -// ES5 -'use strict'; -if (true) { - function f() {} // 报错 -} -``` - -ES6由于引入了块级作用域,这种情况可以理解成函数在块级作用域内声明,因此不报错,但是构成区块的大括号不能少,否则还是会报错。 +另外,还有一个需要注意的地方。ES6的块级作用域允许声明函数的规则,只在使用大括号的情况下成立,如果没有使用大括号,就会报错。 ```javascript // 不报错 @@ -335,56 +426,30 @@ if (true) function f() {} ``` -另外,这样声明的函数,在区块外是不可用的。 - -```javascript -'use strict'; -if (true) { - function f() {} -} -f(); // ReferenceError: f is not defined -``` - -上面代码中,函数`f`是在块级作用域内部声明的,外部是不可用的。 - ## const命令 -const 声明一个只读的常量。一旦声明,常量的值就不能改变。 +`const`声明一个只读的常量。一旦声明,常量的值就不能改变。 ```javascript -'use strict'; const PI = 3.1415; PI // 3.1415 PI = 3; -// TypeError: "PI" is read-only +// TypeError: Assignment to constant variable. ``` -上面代码表明改变常量的值会报错。注意,如果是常规模式,对常量赋值不会报错,但也是无效的。 +上面代码表明改变常量的值会报错。 -```javascript -const PI = 3.1415; -PI = 3; // 常规模式时,重新赋值无效,但不报错 -PI // 3.1415 -``` - -const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。 +`const`声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。 ```javascript -'use strict'; const foo; -// SyntaxError: missing = in const declaration +// SyntaxError: Missing initializer in const declaration ``` -上面代码表示,对于const来说,只声明不赋值,就会报错。同样的,这行命令在常规模式下不报错,但`foo`以后也没法重新赋值了。 - -```javascript -const foo; -foo = 1; // 常规模式,重新赋值无效 -foo // undefined -``` +上面代码表示,对于`const`来说,只声明不赋值,就会报错。 -const的作用域与let命令相同:只在声明所在的块级作用域内有效。 +`const`的作用域与`let`命令相同:只在声明所在的块级作用域内有效。 ```javascript if (true) { @@ -394,7 +459,7 @@ if (true) { MAX // Uncaught ReferenceError: MAX is not defined ``` -const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。 +`const`命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。 ```javascript if (true) { @@ -405,7 +470,7 @@ if (true) { 上面代码在常量`MAX`声明之前就调用,结果报错。 -const声明的常量,也与`let`一样不可重复声明。 +`const`声明的常量,也与`let`一样不可重复声明。 ```javascript var message = "Hello!"; @@ -416,7 +481,7 @@ const message = "Goodbye!"; const age = 30; ``` -对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。 +对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。`const`命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。 ```javascript const foo = {}; @@ -434,9 +499,9 @@ foo = {}; // TypeError: "foo" is read-only ```js const a = []; -a.push("Hello"); // 可执行 +a.push('Hello'); // 可执行 a.length = 0; // 可执行 -a = ["Dave"]; // 报错 +a = ['Dave']; // 报错 ``` 上面代码中,常量`a`是一个数组,这个数组本身是可写的,但是如果将另一个数组赋值给`a`,就会报错。 From bea8187933e20b905ce3398511960730f446a0ea Mon Sep 17 00:00:00 2001 From: UFOwl Date: Mon, 20 Jun 2016 16:20:05 +0800 Subject: [PATCH 055/994] Update async.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据后面generator和async的写法,这里似乎应该用of。 --- docs/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index 44f0e29f7..ca3909391 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1171,7 +1171,7 @@ function chainAnimationsPromise(elem, animations) { var p = Promise.resolve(); // 使用then方法,添加所有动画 - for(var anim in animations) { + for(var anim of animations) { p = p.then(function(val) { ret = val; return anim(elem); From 4e2fadc8ddfe1a99c0b92e25d77dbe0f784c7bc4 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 21 Jun 2016 09:00:06 +0800 Subject: [PATCH 056/994] docs(string): edit normalize --- docs/string.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/string.md b/docs/string.md index cb72cc153..bcc3a2bfd 100644 --- a/docs/string.md +++ b/docs/string.md @@ -191,7 +191,7 @@ ES5对字符串对象提供`charAt`方法,返回字符串给定位置的字符 ## normalize() -为了表示语调和重音符号,Unicode提供了两种方法。一种是直接提供带重音符号的字符,比如`Ǒ`(\u01D1)。另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如`O`(\u004F)和`ˇ`(\u030C)合成`Ǒ`(\u004F\u030C)。 +许多欧洲语言有语调符号和重音符合。为了表示它们,Unicode提供了两种方法。一种是直接提供带重音符号的字符,比如`Ǒ`(\u01D1)。另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如`O`(\u004F)和`ˇ`(\u030C)合成`Ǒ`(\u004F\u030C)。 这两种表示方法,在视觉和语义上都等价,但是JavaScript不能识别。 @@ -211,7 +211,7 @@ ES6提供字符串实例的`normalize()`方法,用来将字符的不同表示 // true ``` -`normalize`方法可以接受四个参数。 +`normalize`方法可以接受一个参数来指定`normalize`的方式,参数的四个可选值如下。 - `NFC`,默认参数,表示“标准等价合成”(Normalization Form Canonical Composition),返回多个简单字符的合成字符。所谓“标准等价”指的是视觉和语义上的等价。 - `NFD`,表示“标准等价分解”(Normalization Form Canonical Decomposition),即在标准等价的前提下,返回合成字符分解的多个简单字符。 From 42c51c073ecd1739d38fde12524a15263c10a198 Mon Sep 17 00:00:00 2001 From: hawkphantomnet Date: Tue, 28 Jun 2016 00:36:05 +0800 Subject: [PATCH 057/994] Fix typo in async.md --- docs/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index 44f0e29f7..bd170ac40 100644 --- a/docs/async.md +++ b/docs/async.md @@ -98,7 +98,7 @@ Promise 的最大问题是代码冗余,原来的任务被Promise 包装了一 举例来说,读取文件的协程写法如下。 ```javascript -function *asnycJob() { +function *asyncJob() { // ...其他代码 var f = yield readFile(fileA); // ...其他代码 From 9b169be660da4270f089f4b911832af52d5f9ccb Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 30 Jun 2016 17:07:50 +0800 Subject: [PATCH 058/994] docs(symbol): fix some error --- docs/symbol.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/symbol.md b/docs/symbol.md index 1096bc3aa..5e37d003f 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -392,7 +392,7 @@ class MyClass { } } -[1, 2, 3] instanceof MyClass() // true +[1, 2, 3] instanceof new MyClass() // true ``` ### Symbol.isConcatSpreadable @@ -420,17 +420,19 @@ obj[Symbol.isConcatSpreadable] = true; ['a', 'b'].concat(obj, 'e') // ['a', 'b', 'c', 'd', 'e'] ``` -对于一个类来说,`Symbol.isConcatSpreadable`属性必须写成一个返回布尔值的方法。 +对于一个类来说,`Symbol.isConcatSpreadable`属性必须写成实例的属性。 ```javascript class A1 extends Array { - [Symbol.isConcatSpreadable]() { - return true; + constructor(args) { + super(args); + this[Symbol.isConcatSpreadable] = true; } } class A2 extends Array { - [Symbol.isConcatSpreadable]() { - return false; + constructor(args) { + super(args); + this[Symbol.isConcatSpreadable] = false; } } let a1 = new A1(); @@ -443,7 +445,7 @@ a2[1] = 6; // [1, 2, 3, 4, [5, 6]] ``` -上面代码中,类`A1`是可扩展的,类`A2`是不可扩展的,所以使用`concat`时有不一样的结果。 +上面代码中,类`A1`是可展开的,类`A2`是不可展开的,所以使用`concat`时有不一样的结果。 ### Symbol.species @@ -582,7 +584,7 @@ let obj = { 2 * obj // 246 3 + obj // '3default' -obj === 'default' // true +obj == 'default' // true String(obj) // 'str' ``` From 0199e3182d3b35de6d1db2a64a4aee661632ca80 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 4 Jul 2016 06:25:28 +0800 Subject: [PATCH 059/994] docs(array): fix type --- docs/array.md | 2 +- docs/object.md | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/array.md b/docs/array.md index ddcc7cfce..7b2f7be04 100644 --- a/docs/array.md +++ b/docs/array.md @@ -414,7 +414,7 @@ ES5对空位的处理,已经很不一致了,大多数情况下会忽略空 ```javascript // forEach方法 -[,'a'].forEach((x,i) => log(i)); // 1 +[,'a'].forEach((x,i) => console.log(i)); // 1 // filter方法 ['a',,'b'].filter(x => true) // ['a','b'] diff --git a/docs/object.md b/docs/object.md index 292adcdb4..3c548e8d9 100644 --- a/docs/object.md +++ b/docs/object.md @@ -873,7 +873,11 @@ function* entries(obj) { // 非Generator函数的版本 function entries(obj) { - return (for (key of Object.keys(obj)) [key, obj[key]]); + let arr = []; + for (key of Object.keys(obj)) { + arr.push([key, obj[key]]); + } + return arr; } ``` From 94656ce7cc1cab7bb581a73e4e92702de872cf3e Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 5 Jul 2016 13:37:08 +0800 Subject: [PATCH 060/994] docs(arrayBuffer): edit TypedArray.from() --- docs/arraybuffer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index a1b0e0bff..eeecc98c3 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -660,7 +660,7 @@ Int16Array.from(Int8Array.of(127, 126, 125), x => 2 * x) // Int16Array [ 254, 252, 250 ] ``` -上面的例子中,`from`方法没有发生溢出,这说明遍历是针对新生成的16位整数数组,而不是针对原来的8位整数数组。也就是说,`from`会将第一个参数指定的TypedArray数组,拷贝到另一段内存之中(占用内存从3字节变为6字节),然后再进行处理。 +上面的例子中,`from`方法没有发生溢出,这说明遍历不是针对原来的8位整数数组。也就是说,`from`会将第一个参数指定的TypedArray数组,拷贝到另一段内存之中,处理之后再将结果转成指定的数组格式。 ## 复合视图 From 2b9f9c350caab24d5357a35e412fe4c810c8465c Mon Sep 17 00:00:00 2001 From: catwarrior Date: Fri, 8 Jul 2016 16:37:49 +0800 Subject: [PATCH 061/994] Update async.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 横向 纵向的比喻的感觉不太自然, 还不如直接点。 --- docs/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index 76f23324e..24a0ab507 100644 --- a/docs/async.md +++ b/docs/async.md @@ -52,7 +52,7 @@ fs.readFile(fileA, function (err, data) { 不难想象,如果依次读取多个文件,就会出现多重嵌套。代码不是纵向发展,而是横向发展,很快就会乱成一团,无法管理。这种情况就称为"回调函数噩梦"(callback hell)。 -Promise就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的横向加载,改成纵向加载。采用Promise,连续读取多个文件,写法如下。 +Promise就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的嵌套,改成链式。采用Promise,连续读取多个文件,写法如下。 ```javascript var readFile = require('fs-readfile-promise'); From eb53f2cef240cedfd0c57b3c2a27e9c08aa2a92d Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 9 Jul 2016 20:17:22 +0800 Subject: [PATCH 062/994] docs(async): edit async --- docs/async.md | 2 +- docs/object.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/async.md b/docs/async.md index 24a0ab507..72239f734 100644 --- a/docs/async.md +++ b/docs/async.md @@ -52,7 +52,7 @@ fs.readFile(fileA, function (err, data) { 不难想象,如果依次读取多个文件,就会出现多重嵌套。代码不是纵向发展,而是横向发展,很快就会乱成一团,无法管理。这种情况就称为"回调函数噩梦"(callback hell)。 -Promise就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的嵌套,改成链式。采用Promise,连续读取多个文件,写法如下。 +Promise就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的嵌套,改成链式调用。采用Promise,连续读取多个文件,写法如下。 ```javascript var readFile = require('fs-readfile-promise'); diff --git a/docs/object.md b/docs/object.md index 3c548e8d9..a02ec9e8a 100644 --- a/docs/object.md +++ b/docs/object.md @@ -874,7 +874,7 @@ function* entries(obj) { // 非Generator函数的版本 function entries(obj) { let arr = []; - for (key of Object.keys(obj)) { + for (let key of Object.keys(obj)) { arr.push([key, obj[key]]); } return arr; From 0b22d85c74f1fba32439fe50605cd78f0a02898f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 10 Jul 2016 04:14:49 +0800 Subject: [PATCH 063/994] =?UTF-8?q?docs(class):=20edit=20=E6=9E=84?= =?UTF-8?q?=E9=80=A0=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/class.md | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/docs/class.md b/docs/class.md index 9cdc92c22..128564333 100644 --- a/docs/class.md +++ b/docs/class.md @@ -7,7 +7,7 @@ JavaScript语言的传统方法是通过构造函数,定义并生成新对象。下面是一个例子。 ```javascript -function Point(x,y){ +function Point(x, y) { this.x = x; this.y = y; } @@ -15,11 +15,13 @@ function Point(x,y){ Point.prototype.toString = function () { return '(' + this.x + ', ' + this.y + ')'; }; + +var p = new Point(1, 2); ``` 上面这种写法跟传统的面向对象语言(比如C++和Java)差异很大,很容易让新学习这门语言的程序员感到困惑。 -ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过`class`关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的`class`写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用ES6的“类”改写,就是下面这样。 +ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过`class`关键字,可以定义类。基本上,ES6的`class`可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的`class`写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用ES6的“类”改写,就是下面这样。 ```javascript //定义类 @@ -37,12 +39,12 @@ class Point { 上面代码定义了一个“类”,可以看到里面有一个`constructor`方法,这就是构造方法,而`this`关键字则代表实例对象。也就是说,ES5的构造函数`Point`,对应ES6的`Point`类的构造方法。 -Point类除了构造方法,还定义了一个`toString`方法。注意,定义“类”的方法的时候,前面不需要加上`function`这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。 +`Point`类除了构造方法,还定义了一个`toString`方法。注意,定义“类”的方法的时候,前面不需要加上`function`这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。 ES6的类,完全可以看作构造函数的另一种写法。 ```javascript -class Point{ +class Point { // ... } @@ -52,6 +54,19 @@ Point === Point.prototype.constructor // true 上面代码表明,类的数据类型就是函数,类本身就指向构造函数。 +使用的时候,也是直接对类使用`new`命令,跟构造函数的用法完全一致。 + +```javascript +class Bar { + doStuff() { + console.log('stuff'); + } +} + +var b = new Bar(); +b.doStuff() // "stuff" +``` + 构造函数的`prototype`属性,在ES6的“类”上面继续存在。事实上,类的所有方法都定义在类的`prototype`属性上面。 ```javascript @@ -131,7 +146,7 @@ Object.getOwnPropertyNames(Point.prototype) 上面代码中,`toString`方法是`Point`类内部定义的方法,它是不可枚举的。这一点与ES5的行为不一致。 ```javascript -var Point = function (x, y){ +var Point = function (x, y) { // ... }; @@ -162,7 +177,7 @@ class Square{ } ``` -上面代码中,Square类的方法名getArea,是从表达式得到的。 +上面代码中,`Square`类的方法名`getArea`,是从表达式得到的。 ### constructor方法 @@ -187,6 +202,19 @@ new Foo() instanceof Foo 上面代码中,`constructor`函数返回一个全新的对象,结果导致实例对象不是`Foo`类的实例。 +类的构造函数,不使用`new`是没法调用的,会报错。这是它跟普通构造函数的一个主要区别,后者不用`new`也可以执行。 + +```javascript +class Foo { + constructor() { + return Object.create(null); + } +} + +Foo() +// TypeError: Class constructor Foo cannot be invoked without 'new' +``` + ### 类的实例对象 生成类的实例对象的写法,与ES5完全一样,也是使用`new`命令。如果忘记加上`new`,像函数那样调用`Class`,将会报错。 From 4b455c493e978166973031577576d73563804b31 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 10 Jul 2016 04:55:18 +0800 Subject: [PATCH 064/994] docs(async): edit async --- docs/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index 72239f734..214e7f9db 100644 --- a/docs/async.md +++ b/docs/async.md @@ -990,7 +990,7 @@ function spawn(genF) { ### async 函数的用法 -同Generator函数一样,`async`函数返回一个Promise对象,可以使用`then`方法添加回调函数。当函数执行的时候,一旦遇到`await`就会先返回,等到触发的异步操作完成,再接着执行函数体内后面的语句。 +`async`函数返回一个Promise对象,可以使用`then`方法添加回调函数。当函数执行的时候,一旦遇到`await`就会先返回,等到触发的异步操作完成,再接着执行函数体内后面的语句。 下面是一个例子。 From c73b7b6f6944d1e001f25af0afa46ac2035a26c8 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 10 Jul 2016 05:06:47 +0800 Subject: [PATCH 065/994] docs(intro): edit es2016 --- docs/intro.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/intro.md b/docs/intro.md index 100faa333..2ae49ac7f 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -2,7 +2,9 @@ ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 -标准的制定者有计划,以后每年发布一次标准,使用年份作为标准的版本。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。也就是说,ES6就是ES2015,下一年应该会发布小幅修订的ES2016。 +标准的制定者有计划,以后每年发布一次标准,使用年份作为标准的版本。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。 + +2016年6月,发布了小幅修订的《ECMAScript 2016 标准》(简称 ES2016)。由于变动非常小(只新增了数组实例的`includes`方法和指数运算符),因此 ES2016 与 ES2015 基本上是同一个标准,都被看作是 ES6。根据计划,2017年6月将发布 ES2017 标准。 ## ECMAScript和JavaScript的关系 From 262dd0311373e04b8b75d919cc8ea90c26ce6b0d Mon Sep 17 00:00:00 2001 From: SudoKillMe <348262038@qq.com> Date: Mon, 11 Jul 2016 12:56:59 +0800 Subject: [PATCH 066/994] Update generator.md --- docs/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator.md b/docs/generator.md index 7983d08d9..660fe872b 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -309,7 +309,7 @@ genObj.next('b') ## for...of循环 -`for...of`循环可以自动遍历Generator函数,且此时不再需要调用`next`方法。 +`for...of`循环可以自动遍历调用Generator函数时生成的Iterator对象,且此时不再需要调用`next`方法。 ```javascript function *foo() { From 18b98ed3d2abed225a9c35af1cd5f4a92ebd521e Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 12 Jul 2016 08:56:00 +0800 Subject: [PATCH 067/994] docs(destructuring): edit object destructuring --- docs/destructuring.md | 38 ++++++++++++++++++++++++++------------ docs/string.md | 4 ++++ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index c24941bc6..d2368f5fd 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -200,7 +200,7 @@ baz // undefined 如果变量名与属性名不一致,必须写成下面这样。 ```javascript -var { foo: baz } = { foo: "aaa", bar: "bbb" }; +var { foo: baz } = { foo: 'aaa', bar: 'bbb' }; baz // "aaa" let obj = { first: 'hello', last: 'world' }; @@ -225,7 +225,7 @@ foo // error: foo is not defined 上面代码中,真正被赋值的是变量`baz`,而不是模式`foo`。 -注意,采用这种写法时,变量的声明和赋值是一体的。对于let和const来说,变量不能重新声明,所以一旦赋值的变量以前声明过,就会报错。 +注意,采用这种写法时,变量的声明和赋值是一体的。对于`let`和`const`来说,变量不能重新声明,所以一旦赋值的变量以前声明过,就会报错。 ```javascript let foo; @@ -235,7 +235,7 @@ let baz; let {bar: baz} = {bar: 1}; // SyntaxError: Duplicate declaration "baz" ``` -上面代码中,解构赋值的变量都会重新声明,所以报错了。不过,因为`var`命令允许重新声明,所以这个错误只会在使用`let`和`const`命令时出现。如果没有第二个let命令,上面的代码就不会报错。 +上面代码中,解构赋值的变量都会重新声明,所以报错了。不过,因为`var`命令允许重新声明,所以这个错误只会在使用`let`和`const`命令时出现。如果没有第二个`let`命令,上面的代码就不会报错。 ```javascript let foo; @@ -245,13 +245,15 @@ let baz; ({bar: baz} = {bar: 1}); // 成功 ``` +上面代码中,`let`命令下面一行的圆括号是必须的,否则会报错。因为解析器会将起首的大括号,理解成一个代码块,而不是赋值语句。 + 和数组一样,解构也可以用于嵌套结构的对象。 ```javascript var obj = { p: [ - "Hello", - { y: "World" } + 'Hello', + { y: 'World' } ] }; @@ -302,7 +304,13 @@ var {x, y = 5} = {x: 1}; x // 1 y // 5 -var { message: msg = "Something went wrong" } = {}; +var {x:y = 3} = {}; +y // 3 + +var {x:y = 3} = {x: 5}; +y // 5 + +var { message: msg = 'Something went wrong' } = {}; msg // "Something went wrong" ``` @@ -343,7 +351,6 @@ _tmp.foo.bar // 报错 ```javascript // 错误的写法 - var x; {x} = {x: 1}; // SyntaxError: syntax error @@ -376,6 +383,17 @@ let { log, sin, cos } = Math; 上面代码将`Math`对象的对数、正弦、余弦三个方法,赋值到对应的变量上,使用起来就会方便很多。 +由于数组本质是特殊的对象,因此可以对数组进行对象属性的解构。 + +```javascript +var arr = [1, 2, 3]; +var {0 : first, [arr.length - 1] : last} = arr; +first // 1 +last // 3 +``` + +上面代码对数组进行对象结构。数组`arr`的`0`键对应的值是`1`,`[arr.length - 1]`就是`2`键,对应的值是`3`。方括号这种写法,属于“属性名表达式”,参见《对象的扩展》一章。 + ## 字符串的解构赋值 字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。 @@ -551,7 +569,7 @@ function f([(z)]) { return z; } [x, y] = [y, x]; ``` -上面代码交换变量x和y的值,这样的写法不仅简洁,而且易读,语义非常清晰。 +上面代码交换变量`x`和`y`的值,这样的写法不仅简洁,而且易读,语义非常清晰。 **(2)从函数返回多个值** @@ -612,7 +630,6 @@ console.log(id, status, number); **(5)函数参数的默认值** ```javascript - jQuery.ajax = function (url, { async = true, beforeSend = function () {}, @@ -624,7 +641,6 @@ jQuery.ajax = function (url, { }) { // ... do stuff }; - ``` 指定参数的默认值,就避免了在函数体内部再写`var foo = config.foo || 'default foo';`这样的语句。 @@ -664,7 +680,5 @@ for (let [,value] of map) { 加载模块时,往往需要指定输入那些方法。解构赋值使得输入语句非常清晰。 ```javascript - const { SourceMapConsumer, SourceNode } = require("source-map"); - ``` diff --git a/docs/string.md b/docs/string.md index bcc3a2bfd..98143d664 100644 --- a/docs/string.md +++ b/docs/string.md @@ -644,11 +644,15 @@ alert(123) 标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。 +但是,如果模板字符里面有变量,就不是简单的调用了,而是会将模板字符串先处理成多个参数,再调用函数。 + ```javascript var a = 5; var b = 10; tag`Hello ${ a + b } world ${ a * b }`; +// 等同于 +tag(['Hello ', ' world ', '''], 15, 50); ``` 上面代码中,模板字符串前面有一个标识名`tag`,它是一个函数。整个表达式的返回值,就是`tag`函数处理模板字符串后的返回值。 From 0ad6b4eb8019b61e55cddf6d15f967134724db85 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Tue, 12 Jul 2016 17:06:22 +0800 Subject: [PATCH 068/994] Update class.md --- docs/class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/class.md b/docs/class.md index 128564333..80fd45d55 100644 --- a/docs/class.md +++ b/docs/class.md @@ -876,7 +876,7 @@ Foo.classMethod() // 'hello' var foo = new Foo(); foo.classMethod() -// TypeError: undefined is not a function +// TypeError: foo.classMethod is not a function ``` 上面代码中,`Foo`类的`classMethod`方法前有`static`关键字,表明该方法是一个静态方法,可以直接在`Foo`类上调用(`Foo.classMethod()`),而不是在`Foo`类的实例上调用。如果在实例上调用静态方法,会抛出一个错误,表示不存在该方法。 From 4fb1dcbf6276df135e58aad5d4e7c09182bbca5b Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 13 Jul 2016 06:41:19 +0800 Subject: [PATCH 069/994] fix: when location.url is a sub section url, 'edit' button get wrong link --- js/ditto.js | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/js/ditto.js b/js/ditto.js index a5b00eb81..b22622b71 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -152,23 +152,24 @@ function goSection(sectionId){ } function init_edit_button() { - if (ditto.base_url === null) { - alert("Error! You didn't set 'base_url' when calling ditto.run()!"); - - } else { - $(ditto.edit_id).show(); - $(ditto.edit_id).on("click", function() { - var hash = location.hash.replace("#", "/"); - - if (hash === "") { - hash = "/" + ditto.index.replace(".md", ""); - } + if (ditto.base_url === null) { + alert("Error! You didn't set 'base_url' when calling ditto.run()!"); + } else { + $(ditto.edit_id).show(); + $(ditto.edit_id).on("click", function() { + var hash = location.hash.replace("#", "/"); + if (/#.*$/.test(hash)) { + hash = hash.replace(/#.*$/, ''); + } + if (hash === "") { + hash = "/" + ditto.index.replace(".md", ""); + } - window.open(ditto.base_url + hash + ".md"); - // open is better than redirecting, as the previous page history - // with redirect is a bit messed up - }); - } + window.open(ditto.base_url + hash + ".md"); + // open is better than redirecting, as the previous page history + // with redirect is a bit messed up + }); + } } function replace_symbols(text) { From 0490d0b32fe98af9fe5bfdc57f97d61d672a4162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B5=B7=E9=BE=99?= Date: Thu, 14 Jul 2016 12:47:26 +0800 Subject: [PATCH 070/994] Update generator.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 阮大神,近日在阅读ES6这本书的时候,发现Generator中关于yield*和for...of的关系描述的不是特别准确,因此加上了几句话,读者读起来的时候会更清晰些。 --- docs/generator.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/generator.md b/docs/generator.md index 7983d08d9..2485ca7ed 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -821,7 +821,7 @@ for(let value of delegatingIterator) { 上面代码中,`delegatingIterator`是代理者,`delegatedIterator`是被代理者。由于`yield* delegatedIterator`语句得到的值,是一个遍历器,所以要用星号表示。运行结果就是使用一个遍历器,遍历了多个Generator函数,有递归的效果。 -`yield*`语句等同于在Generator函数内部,部署一个`for...of`循环。 +`yield*`后面的Generator函数没有`return`语句,等同于在Generator函数内部,部署一个`for...of`循环。 ```javascript function* concat(iter1, iter2) { @@ -841,7 +841,7 @@ function* concat(iter1, iter2) { } ``` -上面代码说明,`yield*`不过是`for...of`的一种简写形式,完全可以用后者替代前者。 +上面代码说明,`yield*`后面的Generator函数没有`return`语句时,不过是`for...of`的一种简写形式,完全可以用后者替代前者。反之,则需要用'var value=yield* Generator函数'的形式获取'return'语句的值。 如果`yield*`后面跟着一个数组,由于数组原生支持遍历器,因此就会遍历数组成员。 From e657a675e8663cada9e74276808e24a3f6b1c126 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 14 Jul 2016 14:59:02 +0800 Subject: [PATCH 071/994] docs(generator): edit generator --- docs/generator.md | 42 ++---------------------------------------- docs/promise.md | 9 ++++++--- docs/proxy.md | 4 +++- docs/symbol.md | 3 ++- 4 files changed, 13 insertions(+), 45 deletions(-) diff --git a/docs/generator.md b/docs/generator.md index 660fe872b..8fda352ce 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -537,47 +537,9 @@ try { 上面代码中,`throw`命令抛出的错误不会影响到遍历器的状态,所以两次执行`next`方法,都取到了正确的操作。 -这种函数体内捕获错误的机制,大大方便了对错误的处理。如果使用回调函数的写法,想要捕获多个错误,就不得不为每个函数写一个错误处理语句。 +这种函数体内捕获错误的机制,大大方便了对错误的处理。如果使用回调函数的写法,想要捕获多个错误,就不得不为每个函数内部写一个错误处理语句。现在可以只在Generator函数内部写一次`catch`语句。 -```javascript -foo('a', function (a) { - if (a.error) { - throw new Error(a.error); - } - - foo('b', function (b) { - if (b.error) { - throw new Error(b.error); - } - - foo('c', function (c) { - if (c.error) { - throw new Error(c.error); - } - - console.log(a, b, c); - }); - }); -}); -``` - -使用Generator函数可以大大简化上面的代码。 - -```javascript -function* g(){ - try { - var a = yield foo('a'); - var b = yield foo('b'); - var c = yield foo('c'); - } catch (e) { - console.log(e); - } - - console.log(a, b, c); -} -``` - -反过来,Generator函数内抛出的错误,也可以被函数体外的`catch`捕获。 +Generator函数体外抛出的错误,可以在函数体内捕获;反过来,Generator函数体内抛出的错误,也可以被函数体外的`catch`捕获。 ```javascript function *foo() { diff --git a/docs/promise.md b/docs/promise.md index 7d4fec272..ae32d4357 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -168,15 +168,18 @@ var p2 = new Promise(function (resolve, reject) { var p1 = new Promise(function (resolve, reject) { setTimeout(() => reject(new Error('fail')), 3000) }) + var p2 = new Promise(function (resolve, reject) { setTimeout(() => resolve(p1), 1000) }) -p2.then(result => console.log(result)) -p2.catch(error => console.log(error)) + +p2 + .then(result => console.log(result)) + .catch(error => console.log(error)) // Error: fail ``` -上面代码中,`p1`是一个Promise,3秒之后变为`rejected`。`p2`的状态由`p1`决定,1秒之后,`p2`调用`resolve`方法,但是此时`p1`的状态还没有改变,因此`p2`的状态也不会变。又过了2秒,`p1`变为`rejected`,`p2`也跟着变为`rejected`。 +上面代码中,`p1`是一个Promise,3秒之后变为`rejected`。`p2`的状态在1秒之后改变,`resolve`方法返回的是`p1`。此时,由于`p2`返回的是另一个Promise,所以后面的`then`语句都变成针对后者(`p1`)。又过了2秒,`p1`变为`rejected`,导致触发`catch`方法指定的回调函数。 ## Promise.prototype.then() diff --git a/docs/proxy.md b/docs/proxy.md index be626fc21..61a6d9c90 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -127,7 +127,9 @@ fproxy.foo // "Hello, foo" **(1)get(target, propKey, receiver)** -拦截对象属性的读取,比如`proxy.foo`和`proxy['foo']`,返回类型不限。最后一个参数`receiver`可选,当`target`对象设置了`propKey`属性的`get`函数时,`receiver`对象会绑定`get`函数的`this`对象。 +拦截对象属性的读取,比如`proxy.foo`和`proxy['foo']`。 + +最后一个参数`receiver`是一个对象,可选,参见下面`Reflect.get`的部分。 **(2)set(target, propKey, value, receiver)** diff --git a/docs/symbol.md b/docs/symbol.md index 5e37d003f..63e79ad13 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -402,13 +402,14 @@ class MyClass { ```javascript let arr1 = ['c', 'd']; ['a', 'b'].concat(arr1, 'e') // ['a', 'b', 'c', 'd', 'e'] +arr1[Symbol.isConcatSpreadable] // undefined let arr2 = ['c', 'd']; arr2[Symbol.isConcatSpreadable] = false; ['a', 'b'].concat(arr2, 'e') // ['a', 'b', ['c','d'], 'e'] ``` -上面代码说明,数组的`Symbol.isConcatSpreadable`属性默认为`true`,表示可以展开。 +上面代码说明,数组的默认行为是可以展开。`Symbol.isConcatSpreadable`属性等于`true`或`undefined`,都有这个效果。 类似数组的对象也可以展开,但它的`Symbol.isConcatSpreadable`属性默认为`false`,必须手动打开。 From baabc6fc2c3f6c4571acbf6d1d5c400ed6577604 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 14 Jul 2016 15:01:16 +0800 Subject: [PATCH 072/994] docs(generator): edit generator --- docs/generator.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/generator.md b/docs/generator.md index 14a4f5804..6bdd22702 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -783,7 +783,7 @@ for(let value of delegatingIterator) { 上面代码中,`delegatingIterator`是代理者,`delegatedIterator`是被代理者。由于`yield* delegatedIterator`语句得到的值,是一个遍历器,所以要用星号表示。运行结果就是使用一个遍历器,遍历了多个Generator函数,有递归的效果。 -`yield*`后面的Generator函数没有`return`语句,等同于在Generator函数内部,部署一个`for...of`循环。 +`yield*`后面的Generator函数(没有`return`语句时),等同于在Generator函数内部,部署一个`for...of`循环。 ```javascript function* concat(iter1, iter2) { @@ -803,7 +803,7 @@ function* concat(iter1, iter2) { } ``` -上面代码说明,`yield*`后面的Generator函数没有`return`语句时,不过是`for...of`的一种简写形式,完全可以用后者替代前者。反之,则需要用'var value=yield* Generator函数'的形式获取'return'语句的值。 +上面代码说明,`yield*`后面的Generator函数(没有`return`语句时),不过是`for...of`的一种简写形式,完全可以用后者替代前者。反之,则需要用`var value = yield* iterator`的形式获取`return`语句的值。 如果`yield*`后面跟着一个数组,由于数组原生支持遍历器,因此就会遍历数组成员。 From a33b92815811b0c8a5c624cb63dce39d63f82926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=81=E4=B8=89?= Date: Thu, 14 Jul 2016 16:45:49 +0800 Subject: [PATCH 073/994] fix: function Fibonacci2 bug --- docs/function.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/function.md b/docs/function.md index 0de2df712..9d38365fc 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1216,7 +1216,7 @@ factorial(5, 1) // 120 ```javascript function Fibonacci (n) { if ( n <= 1 ) {return 1}; - + return Fibonacci(n - 1) + Fibonacci(n - 2); } @@ -1230,8 +1230,8 @@ Fibonacci(10); // 89 ```javascript function Fibonacci2 (n , ac1 = 1 , ac2 = 1) { - if( n <= 1 ) {return ac1}; - + if( n <= 1 ) {return ac2}; + return Fibonacci2 (n-1 , ac2 , ac1 + ac2); } From fdf489eafbfc07001fb20a0931fe9b3d78577fd9 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 14 Jul 2016 21:27:34 +0800 Subject: [PATCH 074/994] docs(class): edit extends --- docs/class.md | 6 +++--- docs/set-map.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/class.md b/docs/class.md index 80fd45d55..32024d8e6 100644 --- a/docs/class.md +++ b/docs/class.md @@ -492,7 +492,7 @@ Object.setPrototypeOf(B, A); 《对象的扩展》一章给出过`Object.setPrototypeOf`方法的实现。 -``` +```javascript Object.setPrototypeOf = function (obj, proto) { obj.__proto__ = proto; return obj; @@ -514,7 +514,7 @@ B.__proto__ = A; 这两条继承链,可以这样理解:作为一个对象,子类(`B`)的原型(`__proto__`属性)是父类(`A`);作为一个构造函数,子类(`B`)的原型(`prototype`属性)是父类的实例。 ```javascript -B.prototype = new A(); +bject.create(A.prototype); // 等同于 B.prototype.__proto__ = A.prototype; ``` @@ -528,7 +528,7 @@ class B extends A { } ``` -上面代码的`A`,只要是一个有`prototype`属性的函数,就能被`B`继承。由于函数都有`prototype`属性,因此`A`可以是任意函数。 +上面代码的`A`,只要是一个有`prototype`属性的函数,就能被`B`继承。由于函数都有`prototype`属性(除了`Function.prototype`函数),因此`A`可以是任意函数。 下面,讨论三种特殊情况。 diff --git a/docs/set-map.md b/docs/set-map.md index ddebf3107..68b6a8923 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -396,7 +396,7 @@ class Foo { ### Map结构的目的和基本用法 -JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是只能用字符串当作键。这给它的使用带来了很大的限制。 +JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。 ```javascript var data = {}; @@ -406,7 +406,7 @@ data[element] = metadata; data["[Object HTMLDivElement]"] // metadata ``` -上面代码原意是将一个DOM节点作为对象data的键,但是由于对象只接受字符串作为键名,所以`element`被自动转为字符串`[Object HTMLDivElement]`。 +上面代码原意是将一个DOM节点作为对象`data`的键,但是由于对象只接受字符串作为键名,所以`element`被自动转为字符串`[Object HTMLDivElement]`。 为了解决这个问题,ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。 @@ -422,7 +422,7 @@ m.delete(o) // true m.has(o) // false ``` -上面代码使用`set`方法,将对象`o`当作m的一个键,然后又使用`get`方法读取这个键,接着使用`delete`方法删除了这个键。 +上面代码使用`set`方法,将对象`o`当作`m`的一个键,然后又使用`get`方法读取这个键,接着使用`delete`方法删除了这个键。 作为构造函数,Map也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。 From 4fb1525a362638a3950569da7d1e74b2222f11aa Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 15 Jul 2016 20:36:23 +0800 Subject: [PATCH 075/994] docs(function): edit tail optimization --- docs/function.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/function.md b/docs/function.md index 9d38365fc..bc625ba7f 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1232,11 +1232,11 @@ Fibonacci(10); // 89 function Fibonacci2 (n , ac1 = 1 , ac2 = 1) { if( n <= 1 ) {return ac2}; - return Fibonacci2 (n-1 , ac2 , ac1 + ac2); + return Fibonacci2 (n - 1, ac2, ac1 + ac2); } -Fibonacci2(100) // 354224848179262000000 -Fibonacci2(1000) // 4.346655768693743e+208 +Fibonacci2(100) // 573147844013817200000 +Fibonacci2(1000) // 7.0330367711422765e+208 Fibonacci2(10000) // Infinity ``` From 371f467baa77d9d6d543536b1401a81b45e3269c Mon Sep 17 00:00:00 2001 From: Yan Zhang Date: Sun, 17 Jul 2016 10:44:00 +0800 Subject: [PATCH 076/994] Update string.md --- docs/string.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/string.md b/docs/string.md index 98143d664..a96588b71 100644 --- a/docs/string.md +++ b/docs/string.md @@ -652,7 +652,7 @@ var b = 10; tag`Hello ${ a + b } world ${ a * b }`; // 等同于 -tag(['Hello ', ' world ', '''], 15, 50); +tag(['Hello ', ' world ', ''], 15, 50); ``` 上面代码中,模板字符串前面有一个标识名`tag`,它是一个函数。整个表达式的返回值,就是`tag`函数处理模板字符串后的返回值。 From 4c8c37c863eadcd1dd77f139dcd6385b12f5cae5 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 19 Jul 2016 09:35:20 +0800 Subject: [PATCH 077/994] docs(module): edit SystemJS --- docs/class.md | 95 ++++++++++++++++++++++++++++++++++++++++++-------- docs/module.md | 2 +- 2 files changed, 82 insertions(+), 15 deletions(-) diff --git a/docs/class.md b/docs/class.md index 32024d8e6..ddfe4c8f6 100644 --- a/docs/class.md +++ b/docs/class.md @@ -285,16 +285,26 @@ p3.printName() // "Oops" 上面代码在`p1`的原型上添加了一个`printName`方法,由于`p1`的原型就是`p2`的原型,因此`p2`也可以调用这个方法。而且,此后新建的实例`p3`也可以调用这个方法。这意味着,使用实例的`__proto__`属性改写原型,必须相当谨慎,不推荐使用,因为这会改变Class的原始定义,影响到所有实例。 -### name属性 +### 不存在变量提升 -由于本质上,ES6的Class只是ES5的构造函数的一层包装,所以函数的许多特性都被Class继承,包括`name`属性。 +Class不存在变量提升(hoist),这一点与ES5完全不同。 ```javascript -class Point {} -Point.name // "Point" +new Foo(); // ReferenceError +class Foo {} ``` -`name`属性总是返回紧跟在`class`关键字后面的类名。 +上面代码中,`Foo`类使用在前,定义在后,这样会报错,因为ES6不会把变量声明提升到代码头部。这种规定的原因与下文要提到的继承有关,必须保证子类在父类之后定义。 + +```javascript +{ + let Foo = class {}; + class Bar extends Foo { + } +} +``` + +上面的代码不会报错,因为`class`继承`Foo`的时候,`Foo`已经有定义了。但是,如果存在Class的提升,上面代码就会报错,因为`class`会被提升到代码头部,而`let`命令是不提升的,所以导致`class`继承`Foo`的时候,`Foo`还没有定义。 ### Class表达式 @@ -342,26 +352,72 @@ person.sayName(); // "张三" 上面代码中,person是一个立即执行的Class的实例。 -### 不存在变量提升 +### 私有方法 -Class不存在变量提升(hoist),这一点与ES5完全不同。 +私有方法是常见需求,但ES6不提供,只能通过变通方法模拟实现。 + +一种做法是在命名上加以区别。 ```javascript -new Foo(); // ReferenceError -class Foo {} +class Widget { + + // 公有方法 + foo (baz) { + this._bar(baz); + } + + // 私有方法 + _bar(baz) { + return this.snaf = baz; + } + + // ... +} ``` -上面代码中,`Foo`类使用在前,定义在后,这样会报错,因为ES6不会把变量声明提升到代码头部。这种规定的原因与下文要提到的继承有关,必须保证子类在父类之后定义。 +上面代码中,`_bar`方法前面的下划线,表示这是一个只限于内部使用的私有方法。但是,这种命名是不保险的,在类的外部,还是可以调用到这个方法。 + +另一种方法就是索性将私有方法移出模块,因为模块内部的所有方法都是对外可见的。 ```javascript -{ - let Foo = class {}; - class Bar extends Foo { +class Widget { + foo (baz) { + bar.call(this, baz); } + + // ... +} + +function bar(baz) { + return this.snaf = baz; } ``` -上面的代码不会报错,因为`class`继承`Foo`的时候,`Foo`已经有定义了。但是,如果存在Class的提升,上面代码就会报错,因为`class`会被提升到代码头部,而`let`命令是不提升的,所以导致`class`继承`Foo`的时候,`Foo`还没有定义。 +上面代码中,`foo`是公有方法,内部调用了`bar.call(this, baz)`。这使得`bar`实际上成为了当前模块的私有方法。 + +还有一种方法是利用`Symbol`值的唯一性,将私有方法的名字命名为一个Symbol值。 + +```javascript +const bar = Symbol('bar'); +const snaf = Symbol('snaf'); + +export default subclassFactory({ + + // 共有方法 + foo (baz) { + this[bar](baz); + } + + // 私有方法 + [bar](baz) { + return this[snaf] = baz; + } + + // ... +}); +``` + +上面代码中,`bar`和`snaf`都是Symbol值,导致第三方无法获取到它们,因此达到了私有方法和私有属性的效果。 ### 严格模式 @@ -369,6 +425,17 @@ class Foo {} 考虑到未来所有的代码,其实都是运行在模块之中,所以ES6实际上把整个语言升级到了严格模式。 +### name属性 + +由于本质上,ES6的Class只是ES5的构造函数的一层包装,所以函数的许多特性都被Class继承,包括`name`属性。 + +```javascript +class Point {} +Point.name // "Point" +``` + +`name`属性总是返回紧跟在`class`关键字后面的类名。 + ## Class的继承 ### 基本用法 diff --git a/docs/module.md b/docs/module.md index b61ad777d..0f59a32d1 100644 --- a/docs/module.md +++ b/docs/module.md @@ -967,7 +967,7 @@ $ compile-modules convert -o out.js file1.js ```html ``` From 717ddb15dc1c8af31a2243868b3e9636ff999f78 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 21 Jul 2016 09:29:36 +0800 Subject: [PATCH 078/994] docs(set): fix example --- docs/set-map.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/set-map.md b/docs/set-map.md index 68b6a8923..3decf2821 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -267,15 +267,15 @@ let b = new Set([4, 3, 2]); // 并集 let union = new Set([...a, ...b]); -// [1, 2, 3, 4] +// Set {1, 2, 3, 4} // 交集 let intersect = new Set([...a].filter(x => b.has(x))); -// [2, 3] +// set {2, 3} // 差集 let difference = new Set([...a].filter(x => !b.has(x))); -// [1] +// Set {1} ``` 如果想在遍历操作中,同步改变原来的Set结构,目前没有直接的方法,但有两种变通方法。一种是利用原Set结构映射出一个新的结构,然后赋值给原来的Set结构;另一种是利用`Array.from`方法。 @@ -400,13 +400,13 @@ JavaScript的对象(Object),本质上是键值对的集合(Hash结构) ```javascript var data = {}; -var element = document.getElementById("myDiv"); +var element = document.getElementById('myDiv'); -data[element] = metadata; -data["[Object HTMLDivElement]"] // metadata +data[element] = 'metadata'; +data['[object HTMLDivElement]'] // "metadata" ``` -上面代码原意是将一个DOM节点作为对象`data`的键,但是由于对象只接受字符串作为键名,所以`element`被自动转为字符串`[Object HTMLDivElement]`。 +上面代码原意是将一个DOM节点作为对象`data`的键,但是由于对象只接受字符串作为键名,所以`element`被自动转为字符串`[object HTMLDivElement]`。 为了解决这个问题,ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。 From 8b9202cd6c73ac9b35714e16d9184ccd902e6f3d Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 21 Jul 2016 21:41:19 +0800 Subject: [PATCH 079/994] docs(symbol): add an example of Singleton --- docs/intro.md | 8 +++---- docs/reference.md | 1 + docs/symbol.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 4 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index 2ae49ac7f..5ad689a8f 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -1,10 +1,10 @@ # ECMAScript 6简介 -ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 +ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 -标准的制定者有计划,以后每年发布一次标准,使用年份作为标准的版本。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。 +标准的制定者有计划,以后每年发布一次标准,使用年份作为版本。因为ES6的第一个版本是在2015年发布的,所以又称ECMAScript 2015(简称ES2015)。 -2016年6月,发布了小幅修订的《ECMAScript 2016 标准》(简称 ES2016)。由于变动非常小(只新增了数组实例的`includes`方法和指数运算符),因此 ES2016 与 ES2015 基本上是同一个标准,都被看作是 ES6。根据计划,2017年6月将发布 ES2017 标准。 +2016年6月,小幅修订的《ECMAScript 2016 标准》(简称 ES2016)如期发布。由于变动非常小(只新增了数组实例的`includes`方法和指数运算符),因此 ES2016 与 ES2015 基本上是同一个标准,都被看作是 ES6。根据计划,2017年6月将发布 ES2017。 ## ECMAScript和JavaScript的关系 @@ -14,7 +14,7 @@ ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经 该标准从一开始就是针对JavaScript语言制定的,但是之所以不叫JavaScript,有两个原因。一是商标,Java是Sun公司的商标,根据授权协议,只有Netscape公司可以合法地使用JavaScript这个名字,且JavaScript本身也已经被Netscape公司注册为商标。二是想体现这门语言的制定者是ECMA,不是Netscape,这样有利于保证这门语言的开放性和中立性。 -因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。在日常场合,这两个词是可以互换的。 +因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。日常场合,这两个词是可以互换的。 ## ECMAScript的历史 diff --git a/docs/reference.md b/docs/reference.md index 167229f69..e25947a4b 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -108,6 +108,7 @@ - Jason Orendorff, [ES6 In Depth: Symbols](https://hacks.mozilla.org/2015/06/es6-in-depth-symbols/) - Keith Cirkel, [Metaprogramming in ES6: Symbols and why they're awesome](http://blog.keithcirkel.co.uk/metaprogramming-in-es6-symbols/): Symbol的深入介绍 - Axel Rauschmayer, [Customizing ES6 via well-known symbols](http://www.2ality.com/2015/09/well-known-symbols-es6.html) +- Derick Bailey, [Creating A True Singleton In Node.js, With ES6 Symbols](https://derickbailey.com/2016/03/09/creating-a-true-singleton-in-node-js-with-es6-symbols/) ## 二进制数组 diff --git a/docs/symbol.md b/docs/symbol.md index 63e79ad13..789c76be6 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -377,6 +377,64 @@ iframe.contentWindow.Symbol.for('foo') === Symbol.for('foo') 上面代码中,iframe窗口生成的Symbol值,可以在主页面得到。 +## 实例:模块的 Singleton 模式 + +Singleton模式指的是调用一个类,任何时候返回的都是同一个实例。 + +对于 Node 来说,模块文件可以看成是一个类。怎么保证每次执行这个模块文件,返回的都是同一个实例呢? + +很容易想到,可以把实例放到顶层对象`global`。 + +```javascript +// mod.js +function A() { + this.foo = 'hello'; +} + +if (!global._foo) { + global._foo = new A(); +} + +module.exports = global._foo; +``` + +然后,加载上面的`mod.js`。 + +```javascript +var a = require('./mod.js'); +console.log(a.foo); +``` + +上面代码中,变量`a`任何时候加载的都是`A`的同一个实例。 + +但是,这里有一个问题,全局变量`global._foo`是可写的,任何文件都可以修改。 + +```javascript +var a = require('./mod.js'); +global._foo = 123; +``` + +上面的代码,会使得别的脚本加载`mod.js`都失真。 + +为了防止这种情况出现,我们就可以使用Symbol。 + +```javascript +// mod.js +const FOO_KEY = Symbol.for('foo'); + +function A() { + this.foo = 'hello'; +} + +if (!global[FOO_KEY]) { + global[FOO_KEY] = new A(); +} + +module.exports = global[FOO_KEY]; +``` + +上面代码中,可以保证`global[FOO_KEY]`不会被其他脚本改写。 + ## 内置的Symbol值 除了定义自己使用的Symbol值以外,ES6还提供了11个内置的Symbol值,指向语言内部使用的方法。 From e1cb574009db7f44666bf4d60d94c80990c825eb Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 22 Jul 2016 17:15:38 +0800 Subject: [PATCH 080/994] docs(function): edit default parameter --- docs/async.md | 16 ++++++++++------ docs/function.md | 14 ++++++++++++++ docs/set-map.md | 4 ++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/docs/async.md b/docs/async.md index 214e7f9db..2a6dbc4f9 100644 --- a/docs/async.md +++ b/docs/async.md @@ -468,25 +468,29 @@ function run(fn) { next(); } -run(gen); +function* g() { + // ... +} + +run(g); ``` -上面代码的run函数,就是一个Generator函数的自动执行器。内部的next函数就是Thunk的回调函数。next函数先将指针移到Generator函数的下一步(gen.next方法),然后判断Generator函数是否结束(result.done 属性),如果没结束,就将next函数再传入Thunk函数(result.value属性),否则就直接退出。 +上面代码的`run`函数,就是一个Generator函数的自动执行器。内部的`next`函数就是Thunk的回调函数。`next`函数先将指针移到Generator函数的下一步(`gen.next`方法),然后判断Generator函数是否结束(`result.done`属性),如果没结束,就将`next`函数再传入Thunk函数(`result.value`属性),否则就直接退出。 -有了这个执行器,执行Generator函数方便多了。不管有多少个异步操作,直接传入`run`函数即可。当然,前提是每一个异步操作,都要是Thunk函数,也就是说,跟在`yield`命令后面的必须是Thunk函数。 +有了这个执行器,执行Generator函数方便多了。不管内部有多少个异步操作,直接把Generator函数传入`run`函数即可。当然,前提是每一个异步操作,都要是Thunk函数,也就是说,跟在`yield`命令后面的必须是Thunk函数。 ```javascript -var gen = function* (){ +var g = function* (){ var f1 = yield readFile('fileA'); var f2 = yield readFile('fileB'); // ... var fn = yield readFile('fileN'); }; -run(gen); +run(g); ``` -上面代码中,函数`gen`封装了`n`个异步的读取文件操作,只要执行`run`函数,这些操作就会自动完成。这样一来,异步操作不仅可以写得像同步操作,而且一行代码就可以执行。 +上面代码中,函数`g`封装了`n`个异步的读取文件操作,只要执行`run`函数,这些操作就会自动完成。这样一来,异步操作不仅可以写得像同步操作,而且一行代码就可以执行。 Thunk函数并不是Generator函数自动执行的唯一方案。因为自动执行的关键是,必须有一种机制,自动控制Generator函数的流程,接收和交还程序的执行权。回调函数可以做到这一点,Promise 对象也可以做到这一点。 diff --git a/docs/function.md b/docs/function.md index bc625ba7f..651a59845 100644 --- a/docs/function.md +++ b/docs/function.md @@ -255,6 +255,20 @@ function f(y = x) { f() // ReferenceError: x is not defined ``` +下面这样写,也会报错。 + +```javascript +var x = 1; + +function foo(x = x) { + // ... +} + +foo() // ReferenceError: x is not defined +``` + +上面代码中,函数`foo`的参数`x`的默认值也是`x`。这时,默认值`x`的作用域是函数作用域,而不是全局作用域。由于在函数作用域中,存在变量`x`,但是默认值在`x`赋值之前先执行了,所以这时属于暂时性死区(参见《let和const命令》一章),任何对`x`的操作都会报错。 + 如果函数`A`的参数默认值是函数`B`,由于函数的作用域是其声明时所在的作用域,那么函数`B`的作用域不是函数`A`,而是全局作用域。请看下面的例子。 ```javascript diff --git a/docs/set-map.md b/docs/set-map.md index 3decf2821..6957090b7 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -705,9 +705,9 @@ let map2 = new Map( 此外,Map还有一个`forEach`方法,与数组的`forEach`方法类似,也可以实现遍历。 ```javascript -map.forEach(function(value, key, map)) { +map.forEach(function(value, key, map) { console.log("Key: %s, Value: %s", key, value); -}; +}); ``` `forEach`方法还可以接受第二个参数,用来绑定`this`。 From aa7f34527b47e45f39833d436f27b9ee1ed1bd03 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 23 Jul 2016 07:32:32 +0800 Subject: [PATCH 081/994] docs(class): fix typo --- docs/class.md | 2 +- docs/function.md | 46 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/docs/class.md b/docs/class.md index ddfe4c8f6..dc2ec1ed2 100644 --- a/docs/class.md +++ b/docs/class.md @@ -581,7 +581,7 @@ B.__proto__ = A; 这两条继承链,可以这样理解:作为一个对象,子类(`B`)的原型(`__proto__`属性)是父类(`A`);作为一个构造函数,子类(`B`)的原型(`prototype`属性)是父类的实例。 ```javascript -bject.create(A.prototype); +Object.create(A.prototype); // 等同于 B.prototype.__proto__ = A.prototype; ``` diff --git a/docs/function.md b/docs/function.md index 651a59845..95e4d8df2 100644 --- a/docs/function.md +++ b/docs/function.md @@ -242,7 +242,7 @@ function f(y = x) { f() // 1 ``` -上面代码中,函数调用时,`y`的默认值变量`x`尚未在函数内部生成,所以`x`指向全局变量,结果又不一样。 +上面代码中,函数调用时,`y`的默认值变量`x`尚未在函数内部生成,所以`x`指向全局变量。 如果此时,全局变量`x`不存在,就会报错。 @@ -269,7 +269,7 @@ foo() // ReferenceError: x is not defined 上面代码中,函数`foo`的参数`x`的默认值也是`x`。这时,默认值`x`的作用域是函数作用域,而不是全局作用域。由于在函数作用域中,存在变量`x`,但是默认值在`x`赋值之前先执行了,所以这时属于暂时性死区(参见《let和const命令》一章),任何对`x`的操作都会报错。 -如果函数`A`的参数默认值是函数`B`,由于函数的作用域是其声明时所在的作用域,那么函数`B`的作用域不是函数`A`,而是全局作用域。请看下面的例子。 +如果参数的默认值是一个函数,该函数的作用域是其声明时所在的作用域。请看下面的例子。 ```javascript let foo = 'outer'; @@ -282,29 +282,47 @@ function bar(func = x => foo) { bar(); ``` -上面代码中,函数`bar`的参数`func`,默认是一个匿名函数,返回值为变量`foo`。这个匿名函数的作用域就不是`bar`。这个匿名函数声明时,是处在外层作用域,所以内部的`foo`指向函数体外的声明,输出`outer`。它实际上等同于下面的代码。 +上面代码中,函数`bar`的参数`func`的默认值是一个匿名函数,返回值为变量`foo`。这个匿名函数声明时,`bar`函数的作用域还没有形成,所以匿名函数里面的`foo`指向外层作用域的`foo`,输出`outer`。 -```javascript -let foo = 'outer'; -let f = x => foo; +如果写成下面这样,就会报错。 -function bar(func = f) { +```javascript +function bar(func = () => foo) { let foo = 'inner'; - console.log(func()); // outer + console.log(func()); } -bar(); +bar() // ReferenceError: foo is not defined ``` -如果写成下面这样,就会报错。 +上面代码中,匿名函数里面的`foo`指向函数外层,但是函数外层并没有声明`foo`,所以就报错了。 + +下面是一个更复杂的例子。 ```javascript -function bar(func = () => foo) { - let foo = 'inner'; - console.log(func()); +var x = 1; +function foo(x, y = function() { x = 2; }) { + var x = 3; + y(); + console.log(x); } -bar() // ReferenceError: foo is not defined +foo() // 3 +``` + +上面代码中,函数`foo`的参数`y`的默认值是一个匿名函数。函数`foo`调用时,它的参数`x`的值为`undefined`,所以`y`函数内部的`x`一开始是`undefined`,后来被重新赋值`2`。但是,函数`foo`内部重新声明了一个`x`,值为`3`,这两个`x`是不一样的,互相不产生影响,因此最后输出`3`。 + +如果将`var x = 3`的`var`去除,两个`x`就是一样的,最后输出的就是`2`。 + +```javascript +var x = 1; +function foo(x, y = function() { x = 2; }) { + x = 3; + y(); + console.log(x); +} + +foo() // 2 ``` ### 应用 From e18aa221dae03f90011592c4d5ce4b1ef7c6e62a Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 24 Jul 2016 11:11:25 +0800 Subject: [PATCH 082/994] docs(generator): edit generator.throw() --- docs/async.md | 20 +++++++++++++++- docs/generator.md | 61 +++++++++++++++++++++++++++++++++++++---------- docs/intro.md | 2 +- 3 files changed, 68 insertions(+), 15 deletions(-) diff --git a/docs/async.md b/docs/async.md index 2a6dbc4f9..3c02f0f51 100644 --- a/docs/async.md +++ b/docs/async.md @@ -414,7 +414,25 @@ ft(1, 2)(print); 你可能会问, Thunk函数有什么用?回答是以前确实没什么用,但是ES6有了Generator函数,Thunk函数现在可以用于Generator函数的自动流程管理。 -以读取文件为例。下面的Generator函数封装了两个异步操作。 +Generator函数可以自动执行。 + +```javascript +function* gen() { + // ... +} + +var g = gen(); +var res = g.next(); + +while(!res.done){ + console.log(res.value); + res = g.next(); +} +``` + +上面代码中,Generator函数`gen`会自动执行完所有步骤。 + +但是,这不适合异步操作。如果必须保证前一步执行完,才能执行后一步,上面的自动执行就不可行。这时,Thunk函数就能派上用处。以读取文件为例。下面的Generator函数封装了两个异步操作。 ```javascript var fs = require('fs'); diff --git a/docs/generator.md b/docs/generator.md index 6bdd22702..658d6ec89 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -443,6 +443,23 @@ try { 上面代码中,遍历器对象`i`连续抛出两个错误。第一个错误被Generator函数体内的`catch`语句捕获。`i`第二次抛出错误,由于Generator函数内部的`catch`语句已经执行过了,不会再捕捉到这个错误了,所以这个错误就被抛出了Generator函数体,被函数体外的`catch`语句捕获。 +`throw`方法可以接受一个参数,该参数会被`catch`语句接收,建议抛出`Error`对象的实例。 + +```javascript +var g = function* () { + try { + yield; + } catch (e) { + console.log(e); + } +}; + +var i = g(); +i.next(); +i.throw(new Error('出错了!')); +// Error: 出错了!(…) +``` + 注意,不要混淆遍历器对象的`throw`方法和全局的`throw`命令。上面代码的错误,是用遍历器对象的`throw`方法抛出的,而不是用`throw`命令抛出的。后者只能被函数体外的`catch`语句捕获。 ```javascript @@ -493,29 +510,47 @@ try { // 外部捕获 a ``` -上面代码中,遍历器函数`g`内部没有部署`try...catch`代码块,所以抛出的错误直接被外部`catch`代码块捕获。 +上面代码中,Generator函数`g`内部没有部署`try...catch`代码块,所以抛出的错误直接被外部`catch`代码块捕获。 -如果Generator函数内部部署了`try...catch`代码块,那么遍历器的`throw`方法抛出的错误,不影响下一次遍历,否则遍历直接终止。 +如果Generator函数内部和外部,都没有部署`try...catch`代码块,那么程序将报错,直接中断执行。 ```javascript var gen = function* gen(){ - try { - yield console.log('hello'); - } catch (e) { - // ... - } + yield console.log('hello'); yield console.log('world'); } var g = gen(); g.next(); g.throw(); -g.next(); // hello -// world +// Uncaught undefined ``` -上面代码在两次`next`方法之间,使用`throw`方法抛出了一个错误。由于这个错误在Generator函数内部被捕获了,所以不影响第二次`next`方法的执行。 +上面代码中,`g.throw`抛出错误以后,没有任何`try...catch`代码块可以捕获这个错误,导致程序报错,中断执行。 + +`throw`方法被捕获以后,会附带执行下一条`yield`语句。也就是说,会附带执行一次`next`方法。 + +```javascript +var gen = function* gen(){ + try { + yield console.log('a'); + } catch (e) { + // ... + } + yield console.log('b'); + yield console.log('c'); +} + +var g = gen(); +g.next() // a +g.throw() // b +g.next() // c +``` + +上面代码中,`g.throw`方法被捕获以后,自动执行了一次`next`方法,所以会打印`b`。另外,也可以看到,只要Generator函数内部部署了`try...catch`代码块,那么遍历器的`throw`方法抛出的错误,不影响下一次遍历。 + +另外,`throw`命令与`g.throw`方法是无关的,两者互不影响。 ```javascript var gen = function* gen(){ @@ -535,9 +570,9 @@ try { // world ``` -上面代码中,`throw`命令抛出的错误不会影响到遍历器的状态,所以两次执行`next`方法,都取到了正确的操作。 +上面代码中,`throw`命令抛出的错误不会影响到遍历器的状态,所以两次执行`next`方法,都进行了正确的操作。 -这种函数体内捕获错误的机制,大大方便了对错误的处理。如果使用回调函数的写法,想要捕获多个错误,就不得不为每个函数内部写一个错误处理语句。现在可以只在Generator函数内部写一次`catch`语句。 +这种函数体内捕获错误的机制,大大方便了对错误的处理。多个`yield`语句,可以只用一个`try...catch`代码块来捕获错误。如果使用回调函数的写法,想要捕获多个错误,就不得不为每个函数内部写一个错误处理语句,现在只在Generator函数内部写一次`catch`语句就可以了。 Generator函数体外抛出的错误,可以在函数体内捕获;反过来,Generator函数体内抛出的错误,也可以被函数体外的`catch`捕获。 @@ -561,7 +596,7 @@ try { 上面代码中,第二个`next`方法向函数体内传入一个参数42,数值是没有`toUpperCase`方法的,所以会抛出一个TypeError错误,被函数体外的`catch`捕获。 -一旦Generator执行过程中抛出错误,就不会再执行下去了。如果此后还调用next方法,将返回一个`value`属性等于`undefined`、`done`属性等于`true`的对象,即JavaScript引擎认为这个Generator已经运行结束了。 +一旦Generator执行过程中抛出错误,且没有被内部捕获,就不会再执行下去了。如果此后还调用`next`方法,将返回一个`value`属性等于`undefined`、`done`属性等于`true`的对象,即JavaScript引擎认为这个Generator已经运行结束了。 ```javascript function* g() { diff --git a/docs/intro.md b/docs/intro.md index 5ad689a8f..d6f532a64 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -95,7 +95,7 @@ $ node --v8-options | grep harmony 上面命令的输出结果,会因为版本的不同而有所不同。 -我写了一个[ES-Checker](https://github.com/ruanyf/es-checker)模块,用来检查各种运行环境对ES6的支持情况。访问[ruanyf.github.io/es-checker](http://ruanyf.github.io/es-checker),可以看到您的浏览器支持ES6的程度。运行下面的命令,可以查看本机支持ES6的程度。 +我写了一个[ES-Checker](https://github.com/ruanyf/es-checker)模块,用来检查各种运行环境对ES6的支持情况。访问[ruanyf.github.io/es-checker](http://ruanyf.github.io/es-checker),可以看到您的浏览器支持ES6的程度。运行下面的命令,可以查看你正在使用的Node环境对ES6的支持程度。 ```bash $ npm install -g es-checker From 188d1a957669ee66fd04d012a792f9927d440939 Mon Sep 17 00:00:00 2001 From: jacty Date: Mon, 25 Jul 2016 16:44:47 +0800 Subject: [PATCH 083/994] =?UTF-8?q?=E5=9B=A0=E4=B8=BAES6=E5=AF=B9=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E6=8F=90=E5=8D=87=E7=9A=84=E5=AE=9A=E4=B9=89=E5=B9=B6?= =?UTF-8?q?=E4=B8=8D=E5=BD=B1=E5=93=8DES5=E7=9A=84=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E3=80=82=E6=89=80=E4=BB=A5=EF=BC=8C=E5=BD=93?= =?UTF-8?q?=E4=BB=A5ES6=E4=B8=BA=E4=B8=BB=E7=9A=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=89=87=E4=B8=AD=EF=BC=8C=E4=BD=BF=E7=94=A8var=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=8F=98=E9=87=8F=EF=BC=8C=E5=88=99=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E8=BF=98=E6=98=AF=E5=AD=98=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E3=80=82=E6=95=85=E8=80=8C=EF=BC=8C=E6=88=91=E8=AE=A4=E4=B8=BA?= =?UTF-8?q?ES6=E5=8F=AA=E6=98=AF=E5=AF=B9=E5=8F=98=E9=87=8F=E6=8F=90?= =?UTF-8?q?=E5=8D=87=E5=81=9A=E4=BA=86=E4=B8=80=E4=BA=9B=E4=BF=AE=E8=AE=A2?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E4=B8=8D=E6=98=AF=E5=8F=96=E6=B6=88=E3=80=82?= =?UTF-8?q?=E8=8B=A5=E4=B8=BA=E5=8F=96=E6=B6=88=EF=BC=8C=E6=88=91=E8=AE=A4?= =?UTF-8?q?=E4=B8=BA=E5=BA=94=E8=AF=A5=E5=9C=A8ES6=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E4=B8=8B=EF=BC=8C=E8=AE=BE=E5=AE=9Avar=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E7=9A=84=E5=8F=98=E9=87=8F=E4=B9=9F=E4=B8=8D=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E6=8F=90=E5=8D=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/let.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/let.md b/docs/let.md index b3d6c4296..1a4f4e561 100644 --- a/docs/let.md +++ b/docs/let.md @@ -142,7 +142,7 @@ function bar(x = 2, y = x) { bar(); // [2, 2] ``` -ES6规定暂时性死区和不存在变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在ES5是很常见的,现在有了这种规定,避免此类错误就很容易了。 +ES6规定暂时性死区和修订变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在ES5是很常见的,现在有了这种规定,避免此类错误就很容易了。 总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。 From e3a8d9f863533695f6df8d0488266d10fc749f21 Mon Sep 17 00:00:00 2001 From: jacty Date: Mon, 25 Jul 2016 17:19:39 +0800 Subject: [PATCH 084/994] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/let.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/let.md b/docs/let.md index 1a4f4e561..118392f0a 100644 --- a/docs/let.md +++ b/docs/let.md @@ -359,7 +359,7 @@ function f() { console.log('I am outside!'); } 注意,上面三条规则只对ES6的浏览器实现有效,其他环境的实现不用遵守,还是将块级作用域的函数声明当作`let`处理。 -前面那段代码,在Chrome环境下运行会报错。 +前面那段代码,在老版本的Chrome环境下运行会报错。 ```javascript // ES6的浏览器环境 From 3d9dcd86adf44536ddaee842a2c161aae0762ec5 Mon Sep 17 00:00:00 2001 From: qingming <358242939@qq.com> Date: Wed, 27 Jul 2016 11:09:41 +0800 Subject: [PATCH 085/994] fix typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 不加return会继续往下执行resolve --- docs/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index 3c02f0f51..eff770ef8 100644 --- a/docs/async.md +++ b/docs/async.md @@ -574,7 +574,7 @@ var fs = require('fs'); var readFile = function (fileName){ return new Promise(function (resolve, reject){ fs.readFile(fileName, function(error, data){ - if (error) reject(error); + if (error) return reject(error); resolve(data); }); }); From 832024cc4b7f12d467832312fbb12a367f8fe620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E7=A7=A6?= Date: Sun, 31 Jul 2016 11:49:00 +0800 Subject: [PATCH 086/994] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=20}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/destructuring.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index d2368f5fd..79fcf488e 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -514,7 +514,7 @@ var [(a)] = [1]; var {x: (c)} = {}; var ({x: c}) = {}; var {(x: c)} = {}; -var {(x): c} = {};} +var {(x): c} = {}; var { o: ({ p: p }) } = { o: { p: 2 } }; ``` From f1325571454c985d36b1340de93c15f9c22fa408 Mon Sep 17 00:00:00 2001 From: kei0502 Date: Wed, 10 Aug 2016 16:47:36 +0800 Subject: [PATCH 087/994] Update array.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit undefined拼错 --- docs/array.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/array.md b/docs/array.md index 7b2f7be04..f3626270b 100644 --- a/docs/array.md +++ b/docs/array.md @@ -74,7 +74,7 @@ function foo() { ```javascript Array.from({ length: 3 }); -// [ undefined, undefined, undefinded ] +// [ undefined, undefined, undefined ] ``` 上面代码中,`Array.from`返回了一个具有三个成员的数组,每个位置的值都是`undefined`。扩展运算符转换不了这个对象。 From fe3446c15789c1ccae64677fbe7cf265cd1232f7 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 16 Aug 2016 15:41:37 +0800 Subject: [PATCH 088/994] docs(symbol): edit simbol.hasInstance --- docs/class.md | 18 +++++++++++++++++- docs/let.md | 4 ++-- docs/string.md | 11 ++++++++++- docs/symbol.md | 16 ++++++++++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/docs/class.md b/docs/class.md index dc2ec1ed2..0224ffe0d 100644 --- a/docs/class.md +++ b/docs/class.md @@ -753,7 +753,23 @@ colors.length = 0; colors[0] // "red" ``` -之所以会发生这种情况,是因为子类无法获得原生构造函数的内部属性,通过`Array.apply()`或者分配给原型对象都不行。ES5是先新建子类的实例对象`this`,再将父类的属性添加到子类上,由于父类的内部属性无法获取,导致无法继承原生的构造函数。比如,Array构造函数有一个内部属性`[[DefineOwnProperty]]`,用来定义新属性时,更新`length`属性,这个内部属性无法在子类获取,导致子类的`length`属性行为不正常。 +之所以会发生这种情况,是因为子类无法获得原生构造函数的内部属性,通过`Array.apply()`或者分配给原型对象都不行。原生构造函数会忽略`apply`方法传入的`this`,也就是说,原生构造函数的`this`无法绑定,导致拿不到内部属性。 + +ES5是先新建子类的实例对象`this`,再将父类的属性添加到子类上,由于父类的内部属性无法获取,导致无法继承原生的构造函数。比如,Array构造函数有一个内部属性`[[DefineOwnProperty]]`,用来定义新属性时,更新`length`属性,这个内部属性无法在子类获取,导致子类的`length`属性行为不正常。 + +下面的例子中,我们想让一个普通对象继承`Error`对象。 + +```javascript +var e = {}; + +Object.getOwnPropertyNames(Error.call(e)) +// [ 'stack' ] + +Object.getOwnPropertyNames(e) +// [] +``` + +上面代码中,我们想通过`Error.call(e)`这种写法,让普通对象`e`具有`Error`对象的实例属性。但是,`Error.call()`完全忽略传入的第一个参数,而是返回一个新对象,`e`本身没有任何变化。这证明了`Error.call(e)`这种写法,无法继承原生构造函数。 ES6允许继承原生构造函数定义子类,因为ES6是先新建父类的实例对象`this`,然后再用子类的构造函数修饰`this`,使得父类的所有行为都可以继承。下面是一个继承`Array`的例子。 diff --git a/docs/let.md b/docs/let.md index 118392f0a..74ef3f0fe 100644 --- a/docs/let.md +++ b/docs/let.md @@ -142,7 +142,7 @@ function bar(x = 2, y = x) { bar(); // [2, 2] ``` -ES6规定暂时性死区和修订变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在ES5是很常见的,现在有了这种规定,避免此类错误就很容易了。 +ES6规定暂时性死区和`let`、`const`语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在ES5是很常见的,现在有了这种规定,避免此类错误就很容易了。 总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。 @@ -359,7 +359,7 @@ function f() { console.log('I am outside!'); } 注意,上面三条规则只对ES6的浏览器实现有效,其他环境的实现不用遵守,还是将块级作用域的函数声明当作`let`处理。 -前面那段代码,在老版本的Chrome环境下运行会报错。 +前面那段代码,在Chrome环境下运行会报错。 ```javascript // ES6的浏览器环境 diff --git a/docs/string.md b/docs/string.md index a96588b71..b78aa17e3 100644 --- a/docs/string.md +++ b/docs/string.md @@ -774,7 +774,16 @@ function SaferHTML(templateData) { } ``` -上面代码中,经过`SaferHTML`函数处理,HTML字符串的特殊字符都会被转义。 +上面代码中,`sender`变量往往是用户提供的,经过`SaferHTML`函数处理,里面的特殊字符都会被转义。 + +```javascript +var sender = ''; // 恶意代码 +var message = SaferHTML`

    ${sender} has sent you a message.

    `; + +message +//

    <script>alert("abc")</script> has sent you a message.

    +``` + 标签模板的另一个应用,就是多语言转换(国际化处理)。 diff --git a/docs/symbol.md b/docs/symbol.md index 789c76be6..1cfdbdd14 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -453,6 +453,22 @@ class MyClass { [1, 2, 3] instanceof new MyClass() // true ``` +上面代码中,`MyClass`是一个类,`new MyClass()`会返回一个实例。该实例的`Symbol.hasInstance`方法,会在进行`instanceof`运算时自动调用,判断左侧的运算子是否为`Array`的实例。 + +下面是另一个例子。 + +```javascript +class Even { + static [Symbol.hasInstance](obj) { + return Number(obj) % 2 === 0; + } +} + +1 instanceof Even // false +2 instanceof Even // true +12345 instanceof Even // false +``` + ### Symbol.isConcatSpreadable 对象的`Symbol.isConcatSpreadable`属性等于一个布尔值,表示该对象使用`Array.prototype.concat()`时,是否可以展开。 From 508ad08def9ed2fbf7453582522f0072a3aa1896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=83=E7=A7=92=E4=B8=8D=E8=A7=89=E6=A2=A6?= <7seconddream@gmail.com> Date: Wed, 17 Aug 2016 00:20:46 +0800 Subject: [PATCH 089/994] edit (fix typo) in arraybuff.md --- docs/arraybuffer.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index eeecc98c3..6cd11499b 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -629,9 +629,9 @@ let tarr = Uint8Array.of(1,2,3); // 方法三 let tarr = new Uint8Array(3); -tarr[0] = 0; -tarr[1] = 1; -tarr[2] = 2; +tarr[0] = 1; +tarr[1] = 2; +tarr[2] = 3; ``` ### TypedArray.from() From dd98409b96251ca0946beec69de7b70604e38f82 Mon Sep 17 00:00:00 2001 From: wuxiaoxiong <408054668@qq.com> Date: Tue, 23 Aug 2016 12:00:08 +0800 Subject: [PATCH 090/994] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 感觉`非无穷`有些绕口,不如按英文直译来的更清晰 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite The Number.isFinite() method determines whether the passed value is a finite number. --- docs/number.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/number.md b/docs/number.md index a4a66d3c1..1721cfda8 100644 --- a/docs/number.md +++ b/docs/number.md @@ -33,9 +33,9 @@ Number('0o10') // 8 ## Number.isFinite(), Number.isNaN() -ES6在Number对象上,新提供了`Number.isFinite()`和`Number.isNaN()`两个方法,用来检查`Infinite`和`NaN`这两个特殊值。 +ES6在Number对象上,新提供了`Number.isFinite()`和`Number.isNaN()`两个方法。 -`Number.isFinite()`用来检查一个数值是否非无穷(infinity)。 +`Number.isFinite()`用来检查一个数值是否为有限的(finite)。 ```javascript Number.isFinite(15); // true From cc6a82dcc3f5e6b0be6005c06f4a3f9516841183 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 23 Aug 2016 14:42:33 +0800 Subject: [PATCH 091/994] docs(promise): delete async --- docs/promise.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/promise.md b/docs/promise.md index ae32d4357..46af4b003 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -769,9 +769,3 @@ run(g); 上面代码的Generator函数`g`之中,有一个异步操作`getFoo`,它返回的就是一个`Promise`对象。函数`run`用来处理这个`Promise`对象,并调用下一个`next`方法。 -## async函数 - -async函数与Promise、Generator函数一样,是用来取代回调函数、解决异步操作的一种方法。它本质上是Generator函数的语法糖。async函数并不属于ES6,而是被列入了ES7,但是traceur、Babel.js、regenerator等转码器已经支持这个功能,转码后立刻就能使用。 - -async函数的详细介绍,请看《异步操作》一章。 - From c07300266262570c271edc5fcf3e4e9e6375744a Mon Sep 17 00:00:00 2001 From: 7sDream <7seconddream@gmail.com> Date: Tue, 30 Aug 2016 15:37:38 +0800 Subject: [PATCH 092/994] doc(arraybuff): remove/add inline-code style for some words --- docs/arraybuffer.md | 122 ++++++++++++++++++++++---------------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index 6cd11499b..063a29287 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -1,6 +1,6 @@ # 二进制数组 -二进制数组(ArrayBuffer对象、TypedArray视图和DataView视图)是JavaScript操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011年2月发布),ES6将它们纳入了ECMAScript规格,并且增加了新的方法。 +二进制数组(`ArrayBuffer`对象、TypedArray视图和`DataView`视图)是JavaScript操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011年2月发布),ES6将它们纳入了ECMAScript规格,并且增加了新的方法。 这个接口的原始设计目的,与WebGL项目有关。所谓WebGL,就是指浏览器与显卡之间的通信接口,为了满足JavaScript与显卡之间大量的、实时的数据交换,它们之间的数据通信必须是二进制的,而不能是传统的文本格式。文本格式传递一个32位整数,两端的JavaScript脚本与显卡都要进行格式转化,将非常耗时。这时要是存在一种机制,可以像C语言那样,直接操作字节,将4个字节的32位整数,以二进制形式原封不动地送入显卡,脚本的性能就会大幅提升。 @@ -8,15 +8,15 @@ 二进制数组由三类对象组成。 -**(1)ArrayBuffer对象**:代表内存之中的一段二进制数据,可以通过“视图”进行操作。“视图”部署了数组接口,这意味着,可以用数组的方法操作内存。 +**(1)`ArrayBuffer`对象**:代表内存之中的一段二进制数据,可以通过“视图”进行操作。“视图”部署了数组接口,这意味着,可以用数组的方法操作内存。 -**(2)TypedArray视图**:共包括9种类型的视图,比如Uint8Array(无符号8位整数)数组视图, Int16Array(16位整数)数组视图, Float32Array(32位浮点数)数组视图等等。 +**(2)TypedArray视图**:共包括9种类型的视图,比如`Uint8Array`(无符号8位整数)数组视图, `Int16Array`(16位整数)数组视图, `Float32Array`(32位浮点数)数组视图等等。 -**(3)DataView视图**:可以自定义复合格式的视图,比如第一个字节是Uint8(无符号8位整数)、第二、三个字节是Int16(16位整数)、第四个字节开始是Float32(32位浮点数)等等,此外还可以自定义字节序。 +**(3)`DataView`视图**:可以自定义复合格式的视图,比如第一个字节是Uint8(无符号8位整数)、第二、三个字节是Int16(16位整数)、第四个字节开始是Float32(32位浮点数)等等,此外还可以自定义字节序。 -简单说,ArrayBuffer对象代表原始的二进制数据,TypedArray视图用来读写简单类型的二进制数据,DataView视图用来读写复杂类型的二进制数据。 +简单说,`ArrayBuffer`对象代表原始的二进制数据,TypedArray视图用来读写简单类型的二进制数据,`DataView`视图用来读写复杂类型的二进制数据。 -TypedArray视图支持的数据类型一共有9种(DataView视图支持除Uint8C以外的其他8种)。 +TypedArray视图支持的数据类型一共有9种(`DataView`视图支持除Uint8C以外的其他8种)。 数据类型 | 字节长度 | 含义 | 对应的C语言类型 --------|--------|----|--------------- @@ -44,7 +44,7 @@ Float64|8|64位浮点数|double ### 概述 -`ArrayBuffer`对象代表储存二进制数据的一段内存,它不能直接读写,只能通过视图(`TypedArray`视图和`DataView`视图)来读写,视图的作用是以指定格式解读二进制数据。 +`ArrayBuffer`对象代表储存二进制数据的一段内存,它不能直接读写,只能通过视图(TypedArray视图和`DataView`视图)来读写,视图的作用是以指定格式解读二进制数据。 `ArrayBuffer`也是一个构造函数,可以分配一段可以存放数据的连续内存区域。 @@ -62,9 +62,9 @@ var dataView = new DataView(buf); dataView.getUint8(0) // 0 ``` -上面代码对一段32字节的内存,建立`DataView`视图,然后以不带符号的8位整数格式,读取第一个元素,结果得到0,因为原始内存的ArrayBuffer对象,默认所有位都是0。 +上面代码对一段32字节的内存,建立`DataView`视图,然后以不带符号的8位整数格式,读取第一个元素,结果得到0,因为原始内存的`ArrayBuffer`对象,默认所有位都是0。 -另一种`TypedArray`视图,与`DataView`视图的一个区别是,它不是一个构造函数,而是一组构造函数,代表不同的数据格式。 +另一种TypedArray视图,与`DataView`视图的一个区别是,它不是一个构造函数,而是一组构造函数,代表不同的数据格式。 ```javascript var buffer = new ArrayBuffer(12); @@ -77,9 +77,9 @@ x2[0] = 2; x1[0] // 2 ``` -上面代码对同一段内存,分别建立两种视图:32位带符号整数(Int32Array构造函数)和8位不带符号整数(Uint8Array构造函数)。由于两个视图对应的是同一段内存,一个视图修改底层内存,会影响到另一个视图。 +上面代码对同一段内存,分别建立两种视图:32位带符号整数(`Int32Array`构造函数)和8位不带符号整数(`Uint8Array`构造函数)。由于两个视图对应的是同一段内存,一个视图修改底层内存,会影响到另一个视图。 -TypedArray视图的构造函数,除了接受`ArrayBuffer`实例作为参数,还可以接受普通数组作为参数,直接分配内存生成底层的ArrayBuffer实例,并同时完成对这段内存的赋值。 +TypedArray视图的构造函数,除了接受`ArrayBuffer`实例作为参数,还可以接受普通数组作为参数,直接分配内存生成底层的`ArrayBuffer`实例,并同时完成对这段内存的赋值。 ```javascript var typedArray = new Uint8Array([0,1,2]); @@ -89,7 +89,7 @@ typedArray[0] = 5; typedArray // [5, 1, 2] ``` -上面代码使用`TypedArray`视图的`Uint8Array`构造函数,新建一个不带符号的8位整数视图。可以看到,`Uint8Array`直接使用普通数组作为参数,对底层内存的赋值同时完成。 +上面代码使用TypedArray视图的`Uint8Array`构造函数,新建一个不带符号的8位整数视图。可以看到,`Uint8Array`直接使用普通数组作为参数,对底层内存的赋值同时完成。 ### ArrayBuffer.prototype.byteLength @@ -128,7 +128,7 @@ var newBuffer = buffer.slice(0, 3); ### ArrayBuffer.isView() -`ArrayBuffer`有一个静态方法`isView`,返回一个布尔值,表示参数是否为`ArrayBuffer`的视图实例。这个方法大致相当于判断参数,是否为TypedArray实例或DataView实例。 +`ArrayBuffer`有一个静态方法`isView`,返回一个布尔值,表示参数是否为`ArrayBuffer`的视图实例。这个方法大致相当于判断参数,是否为TypedArray实例或`DataView`实例。 ```javascript var buffer = new ArrayBuffer(8); @@ -142,26 +142,26 @@ ArrayBuffer.isView(v) // true ### 概述 -`ArrayBuffer`对象作为内存区域,可以存放多种类型的数据。同一段内存,不同数据有不同的解读方式,这就叫做“视图”(view)。`ArrayBuffer`有两种视图,一种是TypedArray视图,另一种是DataView视图。前者的数组成员都是同一个数据类型,后者的数组成员可以是不同的数据类型。 +`ArrayBuffer`对象作为内存区域,可以存放多种类型的数据。同一段内存,不同数据有不同的解读方式,这就叫做“视图”(view)。`ArrayBuffer`有两种视图,一种是TypedArray视图,另一种是`DataView`视图。前者的数组成员都是同一个数据类型,后者的数组成员可以是不同的数据类型。 目前,TypedArray视图一共包括9种类型,每一种视图都是一种构造函数。 -- **Int8Array**:8位有符号整数,长度1个字节。 -- **Uint8Array**:8位无符号整数,长度1个字节。 -- **Uint8ClampedArray**:8位无符号整数,长度1个字节,溢出处理不同。 -- **Int16Array**:16位有符号整数,长度2个字节。 -- **Uint16Array**:16位无符号整数,长度2个字节。 -- **Int32Array**:32位有符号整数,长度4个字节。 -- **Uint32Array**:32位无符号整数,长度4个字节。 -- **Float32Array**:32位浮点数,长度4个字节。 -- **Float64Array**:64位浮点数,长度8个字节。 +- **`Int8Array`**:8位有符号整数,长度1个字节。 +- **`Uint8Array`**:8位无符号整数,长度1个字节。 +- **`Uint8ClampedArray`**:8位无符号整数,长度1个字节,溢出处理不同。 +- **`Int16Array`**:16位有符号整数,长度2个字节。 +- **`Uint16Array`**:16位无符号整数,长度2个字节。 +- **`Int32Array`**:32位有符号整数,长度4个字节。 +- **`Uint32Array`**:32位无符号整数,长度4个字节。 +- **`Float32Array`**:32位浮点数,长度4个字节。 +- **`Float64Array`**:64位浮点数,长度8个字节。 这9个构造函数生成的数组,统称为TypedArray视图。它们很像普通数组,都有`length`属性,都能用方括号运算符(`[]`)获取单个元素,所有数组的方法,在它们上面都能使用。普通数组与TypedArray数组的差异主要在以下方面。 -- `TypedArray`数组的所有成员,都是同一种类型。 -- `TypedArray`数组的成员是连续的,不会有空位。 -- `TypedArray`数组成员的默认值为0。比如,`new Array(10)`返回一个普通数组,里面没有任何成员,只是10个空位;`new Uint8Array(10)`返回一个TypedArray数组,里面10个成员都是0。 -- `TypedArray`数组只是一层视图,本身不储存数据,它的数据都储存在底层的`ArrayBuffer`对象之中,要获取底层对象必须使用`buffer`属性。 +- TypedArray数组的所有成员,都是同一种类型。 +- TypedArray数组的成员是连续的,不会有空位。 +- TypedArray数组成员的默认值为0。比如,`new Array(10)`返回一个普通数组,里面没有任何成员,只是10个空位;`new Uint8Array(10)`返回一个TypedArray数组,里面10个成员都是0。 +- TypedArray数组只是一层视图,本身不储存数据,它的数据都储存在底层的`ArrayBuffer`对象之中,要获取底层对象必须使用`buffer`属性。 ### 构造函数 @@ -207,7 +207,7 @@ var i16 = new Int16Array(buffer, 1); 上面代码中,新生成一个8个字节的`ArrayBuffer`对象,然后在这个对象的第一个字节,建立带符号的16位整数视图,结果报错。因为,带符号的16位整数需要两个字节,所以`byteOffset`参数必须能够被2整除。 -如果想从任意字节开始解读`ArrayBuffer`对象,必须使用`DataView`视图,因为`TypedArray`视图只提供9种固定的解读格式。 +如果想从任意字节开始解读`ArrayBuffer`对象,必须使用`DataView`视图,因为TypedArray视图只提供9种固定的解读格式。 **(2)TypedArray(length)** @@ -268,9 +268,9 @@ var typedArray = new Uint8Array([1, 2, 3, 4]); 注意,这时TypedArray视图会重新开辟内存,不会在原数组的内存上建立视图。 -上面代码从一个普通的数组,生成一个8位无符号整数的`TypedArray`实例。 +上面代码从一个普通的数组,生成一个8位无符号整数的TypedArray实例。 -`TypedArray`数组也可以转换回普通数组。 +TypedArray数组也可以转换回普通数组。 ```javascript var normalArray = Array.prototype.slice.call(typedArray); @@ -326,7 +326,7 @@ concatenate(Uint8Array, Uint8Array.of(1, 2), Uint8Array.of(3, 4)) // Uint8Array [1, 2, 3, 4] ``` -另外,`TypedArray`数组与普通数组一样,部署了Iterator接口,所以可以被遍历。 +另外,TypedArray数组与普通数组一样,部署了Iterator接口,所以可以被遍历。 ```javascript let ui8 = Uint8Array.of(0, 1, 2); @@ -371,7 +371,7 @@ for (var i = 0; i < int16View.length; i++) { // Entry 7: 0 ``` -由于每个16位整数占据2个字节,所以整个ArrayBuffer对象现在分成8段。然后,由于x86体系的计算机都采用小端字节序(little endian),相对重要的字节排在后面的内存地址,相对不重要字节排在前面的内存地址,所以就得到了上面的结果。 +由于每个16位整数占据2个字节,所以整个`ArrayBuffer`对象现在分成8段。然后,由于x86体系的计算机都采用小端字节序(little endian),相对重要的字节排在后面的内存地址,相对不重要字节排在前面的内存地址,所以就得到了上面的结果。 比如,一个占据四个字节的16进制数`0x12345678`,决定其大小的最重要的字节是“12”,最不重要的是“78”。小端字节序将最不重要的字节排在前面,储存顺序就是`78563412`;大端字节序则完全相反,将最重要的字节排在前面,储存顺序就是`12345678`。目前,所有个人电脑几乎都是小端字节序,所以TypedArray数组内部也采用小端字节序读写数据,或者更准确的说,按照本机操作系统设定的字节序读写数据。 @@ -439,7 +439,7 @@ Float32Array.BYTES_PER_ELEMENT // 4 Float64Array.BYTES_PER_ELEMENT // 8 ``` -这个属性在`TypedArray`实例上也能获取,即有`TypedArray.prototype.BYTES_PER_ELEMENT`。 +这个属性在TypedArray实例上也能获取,即有`TypedArray.prototype.BYTES_PER_ELEMENT`。 ### ArrayBuffer与字符串的互相转换 @@ -517,7 +517,7 @@ uint8c[0] // 0 ### TypedArray.prototype.buffer -TypedArray实例的buffer属性,返回整段内存区域对应的`ArrayBuffer`对象。该属性为只读属性。 +TypedArray实例的`buffer`属性,返回整段内存区域对应的`ArrayBuffer`对象。该属性为只读属性。 ```javascript var a = new Float32Array(64); @@ -674,7 +674,7 @@ var usernameView = new Uint8Array(buffer, 4, 16); var amountDueView = new Float32Array(buffer, 20, 1); ``` -上面代码将一个24字节长度的ArrayBuffer对象,分成三个部分: +上面代码将一个24字节长度的`ArrayBuffer`对象,分成三个部分: - 字节0到字节3:1个32位无符号整数 - 字节4到字节19:16个8位整数 @@ -709,24 +709,24 @@ var buffer = new ArrayBuffer(24); var dv = new DataView(buffer); ``` -`DataView`实例有以下属性,含义与`TypedArray`实例的同名方法相同。 +`DataView`实例有以下属性,含义与TypedArray实例的同名方法相同。 -- DataView.prototype.buffer:返回对应的ArrayBuffer对象 -- DataView.prototype.byteLength:返回占据的内存字节长度 -- DataView.prototype.byteOffset:返回当前视图从对应的ArrayBuffer对象的哪个字节开始 +- `DataView.prototype.buffer`:返回对应的ArrayBuffer对象 +- `DataView.prototype.byteLength`:返回占据的内存字节长度 +- `DataView.prototype.byteOffset`:返回当前视图从对应的ArrayBuffer对象的哪个字节开始 `DataView`实例提供8个方法读取内存。 -- **getInt8**:读取1个字节,返回一个8位整数。 -- **getUint8**:读取1个字节,返回一个无符号的8位整数。 -- **getInt16**:读取2个字节,返回一个16位整数。 -- **getUint16**:读取2个字节,返回一个无符号的16位整数。 -- **getInt32**:读取4个字节,返回一个32位整数。 -- **getUint32**:读取4个字节,返回一个无符号的32位整数。 -- **getFloat32**:读取4个字节,返回一个32位浮点数。 -- **getFloat64**:读取8个字节,返回一个64位浮点数。 +- **`getInt8`**:读取1个字节,返回一个8位整数。 +- **`getUint8`**:读取1个字节,返回一个无符号的8位整数。 +- **`getInt16`**:读取2个字节,返回一个16位整数。 +- **`getUint16`**:读取2个字节,返回一个无符号的16位整数。 +- **`getInt32`**:读取4个字节,返回一个32位整数。 +- **`getUint32`**:读取4个字节,返回一个无符号的32位整数。 +- **`getFloat32`**:读取4个字节,返回一个32位浮点数。 +- **`getFloat64`**:读取8个字节,返回一个64位浮点数。 -这一系列get方法的参数都是一个字节序号(不能是负数,否则会报错),表示从哪个字节开始读取。 +这一系列`get`方法的参数都是一个字节序号(不能是负数,否则会报错),表示从哪个字节开始读取。 ```javascript var buffer = new ArrayBuffer(24); @@ -759,16 +759,16 @@ var v3 = dv.getUint16(3); DataView视图提供8个方法写入内存。 -- **setInt8**:写入1个字节的8位整数。 -- **setUint8**:写入1个字节的8位无符号整数。 -- **setInt16**:写入2个字节的16位整数。 -- **setUint16**:写入2个字节的16位无符号整数。 -- **setInt32**:写入4个字节的32位整数。 -- **setUint32**:写入4个字节的32位无符号整数。 -- **setFloat32**:写入4个字节的32位浮点数。 -- **setFloat64**:写入8个字节的64位浮点数。 +- **`setInt8`**:写入1个字节的8位整数。 +- **`setUint8`**:写入1个字节的8位无符号整数。 +- **`setInt16`**:写入2个字节的16位整数。 +- **`setUint16`**:写入2个字节的16位无符号整数。 +- **`setInt32`**:写入4个字节的32位整数。 +- **`setUint32`**:写入4个字节的32位无符号整数。 +- **`setFloat32`**:写入4个字节的32位浮点数。 +- **`setFloat64`**:写入8个字节的64位浮点数。 -这一系列set方法,接受两个参数,第一个参数是字节序号,表示从哪个字节开始写入,第二个参数为写入的数据。对于那些写入两个或两个以上字节的方法,需要指定第三个参数,false或者undefined表示使用大端字节序写入,true表示使用小端字节序写入。 +这一系列`set`方法,接受两个参数,第一个参数是字节序号,表示从哪个字节开始写入,第二个参数为写入的数据。对于那些写入两个或两个以上字节的方法,需要指定第三个参数,`false`或者`undefined`表示使用大端字节序写入,`true`表示使用小端字节序写入。 ```javascript // 在第1个字节,以大端字节序写入值为25的32位整数 @@ -841,7 +841,7 @@ var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); var uint8ClampedArray = imageData.data; ``` -需要注意的是,上面代码的`typedArray`虽然是一个TypedArray数组,但是它的视图类型是一种针对`Canvas`元素的专有类型`Uint8ClampedArray`。这个视图类型的特点,就是专门针对颜色,把每个字节解读为无符号的8位整数,即只能取值0~255,而且发生运算的时候自动过滤高位溢出。这为图像处理带来了巨大的方便。 +需要注意的是,上面代码的`uint8ClampedArray`虽然是一个TypedArray数组,但是它的视图类型是一种针对`Canvas`元素的专有类型`Uint8ClampedArray`。这个视图类型的特点,就是专门针对颜色,把每个字节解读为无符号的8位整数,即只能取值0~255,而且发生运算的时候自动过滤高位溢出。这为图像处理带来了巨大的方便。 举例来说,如果把像素的颜色值设为`Uint8Array`类型,那么乘以一个gamma值的时候,就必须这样计算: @@ -849,7 +849,7 @@ var uint8ClampedArray = imageData.data; u8[i] = Math.min(255, Math.max(0, u8[i] * gamma)); ``` -因为`Uint8Array`类型对于大于255的运算结果(比如0xFF+1),会自动变为0x00,所以图像处理必须要像上面这样算。这样做很麻烦,而且影响性能。如果将颜色值设为`Uint8ClampedArray`类型,计算就简化许多。 +因为`Uint8Array`类型对于大于255的运算结果(比如`0xFF+1`),会自动变为`0x00`,所以图像处理必须要像上面这样算。这样做很麻烦,而且影响性能。如果将颜色值设为`Uint8ClampedArray`类型,计算就简化许多。 ```javascript pixels[i] *= gamma; @@ -895,7 +895,7 @@ fetch(url) ### File API -如果知道一个文件的二进制数据类型,也可以将这个文件读取为ArrayBuffer对象。 +如果知道一个文件的二进制数据类型,也可以将这个文件读取为`ArrayBuffer`对象。 ```javascript var fileInput = document.getElementById('fileInput'); @@ -916,7 +916,7 @@ reader.addEventListener("load", processimage, false); reader.readAsArrayBuffer(file); ``` -然后,定义处理图像的回调函数:先在二进制数据之上建立一个DataView视图,再建立一个bitmap对象,用于存放处理后的数据,最后将图像展示在canvas元素之中。 +然后,定义处理图像的回调函数:先在二进制数据之上建立一个`DataView`视图,再建立一个`bitmap`对象,用于存放处理后的数据,最后将图像展示在Canvas元素之中。 ```javascript function processimage(e) { From 1dc64e7789d3c69f229b445b357a9fbf66928fdf Mon Sep 17 00:00:00 2001 From: 7sDream <7seconddream@gmail.com> Date: Tue, 30 Aug 2016 22:27:12 +0800 Subject: [PATCH 093/994] doc(arraybuff): add code style for word "Uint8C" and "Canvas" --- docs/arraybuffer.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index 063a29287..8c4e65d98 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -16,7 +16,7 @@ 简单说,`ArrayBuffer`对象代表原始的二进制数据,TypedArray视图用来读写简单类型的二进制数据,`DataView`视图用来读写复杂类型的二进制数据。 -TypedArray视图支持的数据类型一共有9种(`DataView`视图支持除Uint8C以外的其他8种)。 +TypedArray视图支持的数据类型一共有9种(`DataView`视图支持除`Uint8C`以外的其他8种)。 数据类型 | 字节长度 | 含义 | 对应的C语言类型 --------|--------|----|--------------- @@ -916,7 +916,7 @@ reader.addEventListener("load", processimage, false); reader.readAsArrayBuffer(file); ``` -然后,定义处理图像的回调函数:先在二进制数据之上建立一个`DataView`视图,再建立一个`bitmap`对象,用于存放处理后的数据,最后将图像展示在Canvas元素之中。 +然后,定义处理图像的回调函数:先在二进制数据之上建立一个`DataView`视图,再建立一个`bitmap`对象,用于存放处理后的数据,最后将图像展示在`Canvas`元素之中。 ```javascript function processimage(e) { @@ -962,4 +962,4 @@ var start = bitmap.fileheader.bfOffBits; bitmap.pixels = new Uint8Array(buffer, start); ``` -至此,图像文件的数据全部处理完成。下一步,可以根据需要,进行图像变形,或者转换格式,或者展示在Canvas网页元素之中。 +至此,图像文件的数据全部处理完成。下一步,可以根据需要,进行图像变形,或者转换格式,或者展示在`Canvas`网页元素之中。 From d0fd2b623e5f64966b48fe3c9ff28b990c785748 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 4 Sep 2016 01:38:44 +0800 Subject: [PATCH 094/994] docs(map): edit map --- docs/class.md | 98 ++++++++++++++++++++++++++++++++++++++++------- docs/reference.md | 1 + docs/set-map.md | 23 +++++++++-- 3 files changed, 105 insertions(+), 17 deletions(-) diff --git a/docs/class.md b/docs/class.md index 0224ffe0d..2fb1534b4 100644 --- a/docs/class.md +++ b/docs/class.md @@ -66,7 +66,7 @@ class Bar { var b = new Bar(); b.doStuff() // "stuff" ``` - +.ant-menu-horizontal > li.ant-menu-item 构造函数的`prototype`属性,在ES6的“类”上面继续存在。事实上,类的所有方法都定义在类的`prototype`属性上面。 ```javascript @@ -294,7 +294,7 @@ new Foo(); // ReferenceError class Foo {} ``` -上面代码中,`Foo`类使用在前,定义在后,这样会报错,因为ES6不会把变量声明提升到代码头部。这种规定的原因与下文要提到的继承有关,必须保证子类在父类之后定义。 +上面代码中,`Foo`类使用在前,定义在后,这样会报错,因为ES6不会把类的声明提升到代码头部。这种规定的原因与下文要提到的继承有关,必须保证子类在父类之后定义。 ```javascript { @@ -304,11 +304,11 @@ class Foo {} } ``` -上面的代码不会报错,因为`class`继承`Foo`的时候,`Foo`已经有定义了。但是,如果存在Class的提升,上面代码就会报错,因为`class`会被提升到代码头部,而`let`命令是不提升的,所以导致`class`继承`Foo`的时候,`Foo`还没有定义。 +上面的代码不会报错,因为`class`继承`Foo`的时候,`Foo`已经有定义了。但是,如果存在`class`的提升,上面代码就会报错,因为`class`会被提升到代码头部,而`let`命令是不提升的,所以导致`class`继承`Foo`的时候,`Foo`还没有定义。 ### Class表达式 -与函数一样,Class也可以使用表达式的形式定义。 +与函数一样,类也可以使用表达式的形式定义。 ```javascript const MyClass = class Me { @@ -328,7 +328,7 @@ Me.name // ReferenceError: Me is not defined 上面代码表示,`Me`只在Class内部有定义。 -如果Class内部没用到的话,可以省略`Me`,也就是可以写成下面的形式。 +如果类的内部没用到的话,可以省略`Me`,也就是可以写成下面的形式。 ```javascript const MyClass = class { /* ... */ }; @@ -350,7 +350,7 @@ let person = new class { person.sayName(); // "张三" ``` -上面代码中,person是一个立即执行的Class的实例。 +上面代码中,`person`是一个立即执行的类的实例。 ### 私有方法 @@ -395,16 +395,16 @@ function bar(baz) { 上面代码中,`foo`是公有方法,内部调用了`bar.call(this, baz)`。这使得`bar`实际上成为了当前模块的私有方法。 -还有一种方法是利用`Symbol`值的唯一性,将私有方法的名字命名为一个Symbol值。 +还有一种方法是利用`Symbol`值的唯一性,将私有方法的名字命名为一个`Symbol`值。 ```javascript const bar = Symbol('bar'); const snaf = Symbol('snaf'); -export default subclassFactory({ +export default class myClass{ - // 共有方法 - foo (baz) { + // 公有方法 + foo(baz) { this[bar](baz); } @@ -414,10 +414,82 @@ export default subclassFactory({ } // ... -}); +}; +``` + +上面代码中,`bar`和`snaf`都是`Symbol`值,导致第三方无法获取到它们,因此达到了私有方法和私有属性的效果。 + +### this的指向 + +类的方法内部如果含有`this`,它默认指向类的实例。但是,必须非常小心,一旦单独使用该方法,很可能报错。 + +```javascript +class Logger { + printName(name = 'there') { + this.print(`Hello ${name}`); + } + + print(text) { + console.log(text); + } +} + +const logger = new Logger(); +const { printName } = logger; +printName(); // TypeError: Cannot read property 'print' of undefined ``` -上面代码中,`bar`和`snaf`都是Symbol值,导致第三方无法获取到它们,因此达到了私有方法和私有属性的效果。 +上面代码中,`printName`方法中的`this`,默认指向`Logger`类的实例。但是,如果将这个方法提取出来单独使用,`this`会指向该方法运行时所在的环境,因为找不到`print`方法而导致报错。 + +一个比较简单的解决方法是,在构造方法中绑定`this`,这样就不会找不到`print`方法了。 + +```javascript +class Logger { + constructor() { + this.printName = this.printName.bind(this); + } + + // ... +} +``` + +另一种解决方法是使用箭头函数。 + +```javascript +class Logger { + constructor() { + this.printName = (name = 'there') => { + this.print(`Hello ${name}`); + }; + } + + // ... +} +``` + +还有一种解决方法是使用`Proxy`,获取方法的时候,自动绑定`this`。 + +```javascript +function selfish (target) { + const cache = new WeakMap(); + const handler = { + get (target, key) { + const value = Reflect.get(target, key); + if (typeof value !== 'function') { + return value; + } + if (!cache.has(value)) { + cache.set(value, value.bind(target)); + } + return cache.get(value); + } + }; + const proxy = new Proxy(target, handler); + return proxy; +} + +const logger = selfish(new Logger()); +``` ### 严格模式 @@ -427,7 +499,7 @@ export default subclassFactory({ ### name属性 -由于本质上,ES6的Class只是ES5的构造函数的一层包装,所以函数的许多特性都被Class继承,包括`name`属性。 +由于本质上,ES6的类只是ES5的构造函数的一层包装,所以函数的许多特性都被`Class`继承,包括`name`属性。 ```javascript class Point {} diff --git a/docs/reference.md b/docs/reference.md index e25947a4b..2b24084d0 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -177,6 +177,7 @@ - Axel Rauschmayer, [ECMAScript 6: new OOP features besides classes](http://www.2ality.com/2014/12/es6-oop.html) - Axel Rauschmayer, [Classes in ECMAScript 6 (final semantics)](http://www.2ality.com/2015/02/es6-classes-final.html): Class语法的详细介绍和设计思想分析 - Eric Faust, [ES6 In Depth: Subclassing](https://hacks.mozilla.org/2015/08/es6-in-depth-subclassing/): Class语法的深入介绍 +- Nicolás Bevacqua, [Binding Methods to Class Instance Objects](https://ponyfoo.com/articles/binding-methods-to-class-instance-objects): 如何绑定类的实例中的this ## Decorator diff --git a/docs/set-map.md b/docs/set-map.md index 6957090b7..727948754 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -412,9 +412,9 @@ data['[object HTMLDivElement]'] // "metadata" ```javascript var m = new Map(); -var o = {p: "Hello World"}; +var o = {p: 'Hello World'}; -m.set(o, "content") +m.set(o, 'content') m.get(o) // "content" m.has(o) // true @@ -427,7 +427,10 @@ m.has(o) // false 作为构造函数,Map也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。 ```javascript -var map = new Map([['name', '张三'], ['title', 'Author']]); +var map = new Map([ + ['name', '张三'], + ['title', 'Author'] +]); map.size // 2 map.has('name') // true @@ -449,6 +452,18 @@ var map = new Map(); items.forEach(([key, value]) => map.set(key, value)); ``` +下面的例子中,字符串`true`和布尔值`true`是两个不同的键。 + +```javascript +var m = new Map([ + [true, 'foo'], + ['true', 'bar'] +]); + +m.get(true) // 'foo' +m.get('true') // 'bar' +``` + 如果对同一个键多次赋值,后面的值将覆盖前面的值。 ```javascript @@ -501,7 +516,7 @@ map.get(k2) // 222 由上可知,Map的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题,我们扩展别人的库的时候,如果使用对象作为键名,就不用担心自己的属性与原作者的属性同名。 -如果Map的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map将其视为一个键,包括0和-0。另外,虽然NaN不严格相等于自身,但Map将其视为同一个键。 +如果Map的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map将其视为一个键,包括`0`和`-0`。另外,虽然`NaN`不严格相等于自身,但Map将其视为同一个键。 ```javascript let map = new Map(); From 8c06336a27eb25e0e5f7869dfc30ae52e4a4c2e1 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 5 Sep 2016 14:04:01 +0800 Subject: [PATCH 095/994] =?UTF-8?q?docs(generator):=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20for...of=20=E5=BE=AA=E7=8E=AF=E4=BE=9D=E6=AC=A1=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E9=A2=84=E5=AE=9A=E7=9A=84=E6=93=8D=E4=BD=9C=E6=AD=A5?= =?UTF-8?q?=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/generator.md | 80 ++++++++++++++++++++++++++++++++++++----------- docs/reference.md | 1 + 2 files changed, 63 insertions(+), 18 deletions(-) diff --git a/docs/generator.md b/docs/generator.md index 658d6ec89..4e75f41fd 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -309,7 +309,7 @@ genObj.next('b') ## for...of循环 -`for...of`循环可以自动遍历调用Generator函数时生成的Iterator对象,且此时不再需要调用`next`方法。 +`for...of`循环可以自动遍历Generator函数时生成的`Iterator`对象,且此时不再需要调用`next`方法。 ```javascript function *foo() { @@ -346,34 +346,49 @@ for (let n of fibonacci()) { } ``` -从上面代码可见,使用`for...of`语句时不需要使用next方法。 +从上面代码可见,使用`for...of`语句时不需要使用`next`方法。 -前面章节曾经介绍过,`for...of`循环、扩展运算符(`...`)、解构赋值和`Array.from`方法内部调用的,都是遍历器接口。这意味着,它们可以将Generator函数返回的Iterator对象,作为参数。 +由于`for...of`循环会自动依次执行`yield`命令,这启发我们可以将一些按步骤操作的任务,写在Generator函数里面。 ```javascript -function* numbers () { - yield 1 - yield 2 - return 3 - yield 4 +let steps = [step1Func, step2Func, step3Func]; + +function *iterateSteps(steps){ + for (var i=0; i< steps.length; i++){ + var step = steps[i]; + yield step(); + } } +``` -[...numbers()] // [1, 2] +上面代码中,数组`steps`封装了一个任务的多个步骤,Generator函数`iterateSteps`则是依次为这些步骤加上`yield`命令。 -Array.from(numbers()) // [1, 2] +将任务分解成步骤之后,还可以将项目分解成多个依次执行的任务。 -let [x, y] = numbers(); -x // 1 -y // 2 +```javascript +let jobs = [job1, job2, job3]; -for (let n of numbers()) { - console.log(n) +function *iterateJobs(jobs){ + for (var i=0; i< jobs.length; i++){ + var job = jobs[i]; + yield *iterateSteps(job.steps); + } +} +``` + +上面代码中,数组`jobs`封装了一个项目的多个任务,Generator函数`iterateJobs`则是依次为这些任务加上`yield *`命令(`yield *`命令的介绍详见后文)。 + +最后,就可以用`for...of`循环一次性依次执行所有任务的所有步骤。 + +```javascript +for (var step of iterateJobs(jobs)){ + console.log(step.id); } -// 1 -// 2 ``` -利用`for...of`循环,可以写出遍历任意对象的方法。原生的JavaScript对象没有遍历接口,无法使用`for...of`循环,通过Generator函数为它加上这个接口,就可以用了。 +注意,上面的做法只能用于所有步骤都是同步操作的情况,不能有异步操作的步骤。如果想要依次执行异步的步骤,必须使用下一章介绍的方法。 + +利用`for...of`循环,可以写出遍历任意对象(object)的方法。原生的JavaScript对象没有遍历接口,无法使用`for...of`循环,通过Generator函数为它加上这个接口,就可以用了。 ```javascript function* objectEntries(obj) { @@ -415,6 +430,35 @@ for (let [key, value] of jane) { // last: Doe ``` +除了`for...of`循环以外,扩展运算符(`...`)、解构赋值和`Array.from`方法内部调用的,都是遍历器接口。这意味着,它们都可以将Generator函数返回的Iterator对象,作为参数。 + +```javascript +function* numbers () { + yield 1 + yield 2 + return 3 + yield 4 +} + +// 扩展运算符 +[...numbers()] // [1, 2] + +// Array.form 方法 +Array.from(numbers()) // [1, 2] + +// 解构赋值 +let [x, y] = numbers(); +x // 1 +y // 2 + +// for...of 循环 +for (let n of numbers()) { + console.log(n) +} +// 1 +// 2 +``` + ## Generator.prototype.throw() Generator函数返回的遍历器对象,都有一个`throw`方法,可以在函数体外抛出错误,然后在Generator函数体内捕获。 diff --git a/docs/reference.md b/docs/reference.md index 2b24084d0..739693f88 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -151,6 +151,7 @@ - Mahdi Dibaiee, [ES7 Array and Generator comprehensions](http://dibaiee.ir/es7-array-generator-comprehensions/):ES7的Generator推导 - Nicolas Bevacqua, [ES6 Generators in Depth](http://ponyfoo.com/articles/es6-generators-in-depth) - Axel Rauschmayer, [ES6 generators in depth](http://www.2ality.com/2015/03/es6-generators.html): Generator规格的详尽讲解 +- Derick Bailey, [Using ES6 Generators To Short-Circuit Hierarchical Data Iteration](https://derickbailey.com/2015/10/05/using-es6-generators-to-short-circuit-hierarchical-data-iteration/) ## Promise对象 From 3cbb8476e360a8366c9035724fc7823d509bf211 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 5 Sep 2016 18:53:57 +0800 Subject: [PATCH 096/994] =?UTF-8?q?docs(generator):=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20for...of=20=E5=BE=AA=E7=8E=AF=E4=BE=9D=E6=AC=A1=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E9=A2=84=E5=AE=9A=E7=9A=84=E6=93=8D=E4=BD=9C=E6=AD=A5?= =?UTF-8?q?=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/generator.md | 129 +++++++++++++++++++--------------------------- docs/reference.md | 2 +- 2 files changed, 55 insertions(+), 76 deletions(-) diff --git a/docs/generator.md b/docs/generator.md index 4e75f41fd..315d164c1 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -348,46 +348,6 @@ for (let n of fibonacci()) { 从上面代码可见,使用`for...of`语句时不需要使用`next`方法。 -由于`for...of`循环会自动依次执行`yield`命令,这启发我们可以将一些按步骤操作的任务,写在Generator函数里面。 - -```javascript -let steps = [step1Func, step2Func, step3Func]; - -function *iterateSteps(steps){ - for (var i=0; i< steps.length; i++){ - var step = steps[i]; - yield step(); - } -} -``` - -上面代码中,数组`steps`封装了一个任务的多个步骤,Generator函数`iterateSteps`则是依次为这些步骤加上`yield`命令。 - -将任务分解成步骤之后,还可以将项目分解成多个依次执行的任务。 - -```javascript -let jobs = [job1, job2, job3]; - -function *iterateJobs(jobs){ - for (var i=0; i< jobs.length; i++){ - var job = jobs[i]; - yield *iterateSteps(job.steps); - } -} -``` - -上面代码中,数组`jobs`封装了一个项目的多个任务,Generator函数`iterateJobs`则是依次为这些任务加上`yield *`命令(`yield *`命令的介绍详见后文)。 - -最后,就可以用`for...of`循环一次性依次执行所有任务的所有步骤。 - -```javascript -for (var step of iterateJobs(jobs)){ - console.log(step.id); -} -``` - -注意,上面的做法只能用于所有步骤都是同步操作的情况,不能有异步操作的步骤。如果想要依次执行异步的步骤,必须使用下一章介绍的方法。 - 利用`for...of`循环,可以写出遍历任意对象(object)的方法。原生的JavaScript对象没有遍历接口,无法使用`for...of`循环,通过Generator函数为它加上这个接口,就可以用了。 ```javascript @@ -1298,7 +1258,7 @@ step1(function (value1) { 采用Promise改写上面的代码。 ```javascript -Q.fcall(step1) +Promise.resolve(step1) .then(step2) .then(step3) .then(step4) @@ -1313,12 +1273,12 @@ Q.fcall(step1) 上面代码已经把回调函数,改成了直线执行的形式,但是加入了大量Promise的语法。Generator函数可以进一步改善代码运行流程。 ```javascript -function* longRunningTask() { +function* longRunningTask(value1) { try { - var value1 = yield step1(); - var value2 = yield step2(value1); - var value3 = yield step3(value2); - var value4 = yield step4(value3); + var value2 = yield step1(value1); + var value3 = yield step2(value2); + var value4 = yield step3(value3); + var value5 = yield step4(value4); // Do something with value4 } catch (e) { // Handle any error from step1 through step4 @@ -1329,53 +1289,72 @@ function* longRunningTask() { 然后,使用一个函数,按次序自动执行所有步骤。 ```javascript -scheduler(longRunningTask()); +scheduler(longRunningTask(initialValue)); function scheduler(task) { - setTimeout(function() { - var taskObj = task.next(task.value); - // 如果Generator函数未结束,就继续调用 - if (!taskObj.done) { - task.value = taskObj.value - scheduler(task); - } - }, 0); + var taskObj = task.next(task.value); + // 如果Generator函数未结束,就继续调用 + if (!taskObj.done) { + task.value = taskObj.value + scheduler(task); + } } ``` -注意,yield语句是同步运行,不是异步运行(否则就失去了取代回调函数的设计目的了)。实际操作中,一般让yield语句返回Promise对象。 +注意,上面这种做法,只适合同步操作,即所有的`task`都必须是同步的,不能有异步操作。因为这里的代码一得到返回值,就继续往下执行,没有判断异步操作何时完成。如果要控制异步的操作流程,详见下一节。 + +下面,利用`for...of`循环会自动依次执行`yield`命令的特性,提供一种更一般的控制流管理的方法。 ```javascript -var Q = require('q'); +let steps = [step1Func, step2Func, step3Func]; -function delay(milliseconds) { - var deferred = Q.defer(); - setTimeout(deferred.resolve, milliseconds); - return deferred.promise; +function *iterateSteps(steps){ + for (var i=0; i< steps.length; i++){ + var step = steps[i]; + yield step(); + } } - -function* f(){ - yield delay(100); -}; ``` -上面代码使用Promise的函数库`Q`,`yield`语句返回的就是一个Promise对象。 +上面代码中,数组`steps`封装了一个任务的多个步骤,Generator函数`iterateSteps`则是依次为这些步骤加上`yield`命令。 -如果`yield`语句后面的参数,是一个具有遍历器接口的对象,`yield`会遍历这个对象,再往下执行。这意味着, +将任务分解成步骤之后,还可以将项目分解成多个依次执行的任务。 -多个任务按顺序一个接一个执行时,`yield`语句可以按顺序排列。多个任务需要并列执行时(比如只有A任务和B任务都执行完,才能执行C任务),可以采用数组的写法。 +```javascript +let jobs = [job1, job2, job3]; + +function *iterateJobs(jobs){ + for (var i=0; i< jobs.length; i++){ + var job = jobs[i]; + yield *iterateSteps(job.steps); + } +} +``` + +上面代码中,数组`jobs`封装了一个项目的多个任务,Generator函数`iterateJobs`则是依次为这些任务加上`yield *`命令(`yield *`命令的介绍详见后文)。 + +最后,就可以用`for...of`循环一次性依次执行所有任务的所有步骤。 ```javascript -function* parallelTasks() { - let [resultA, resultB] = yield [ - taskA(), - taskB() - ]; - console.log(resultA, resultB); +for (var step of iterateJobs(jobs)){ + console.log(step.id); } ``` -上面代码中,`yield`语句的参数是一个数组,成员就是两个任务taskA和taskB,只有等这两个任务都完成了,才会接着执行下面的语句。 +再次提醒,上面的做法只能用于所有步骤都是同步操作的情况,不能有异步操作的步骤。如果想要依次执行异步的步骤,必须使用下一章介绍的方法。 + +`for...of`的本质是一个`while`循环,所以上面的代码实质上执行的是下面的逻辑。 + +```javascript +var it = iterateJobs(jobs); +var res = it.next(); + +while (!res.done){ + var result = res.value; + // ... + res = it.next(); +} +``` ### (3)部署iterator接口 diff --git a/docs/reference.md b/docs/reference.md index 739693f88..9622b1684 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -151,7 +151,7 @@ - Mahdi Dibaiee, [ES7 Array and Generator comprehensions](http://dibaiee.ir/es7-array-generator-comprehensions/):ES7的Generator推导 - Nicolas Bevacqua, [ES6 Generators in Depth](http://ponyfoo.com/articles/es6-generators-in-depth) - Axel Rauschmayer, [ES6 generators in depth](http://www.2ality.com/2015/03/es6-generators.html): Generator规格的详尽讲解 -- Derick Bailey, [Using ES6 Generators To Short-Circuit Hierarchical Data Iteration](https://derickbailey.com/2015/10/05/using-es6-generators-to-short-circuit-hierarchical-data-iteration/) +- Derick Bailey, [Using ES6 Generators To Short-Circuit Hierarchical Data Iteration](https://derickbailey.com/2015/10/05/using-es6-generators-to-short-circuit-hierarchical-data-iteration/):使用 for...of 循环完成预定的操作步骤 ## Promise对象 From 3d6368c404cb11d95df5006e85c0ad32b8bb9d22 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 6 Sep 2016 09:35:18 +0800 Subject: [PATCH 097/994] =?UTF-8?q?240=E8=A1=8C=E4=BB=A3=E7=A0=81=E7=BC=BA?= =?UTF-8?q?=E5=B0=91=E5=BC=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 240行代码缺少引号。 p.then((val) => console.log(fulfilled:", val)) 改p.then((val) => console.log("fulfilled:", val))为 --- docs/promise.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/promise.md b/docs/promise.md index 46af4b003..0594c217e 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -242,8 +242,7 @@ p.then((val) => console.log("fulfilled:", val)) .catch((err) => console.log("rejected:", err)); // 等同于 - -p.then((val) => console.log(fulfilled:", val)) +p.then((val) => console.log("fulfilled:", val)) .then(null, (err) => console.log("rejected:", err)); ``` From 1092e53793ac3a52465f971a1fb0d21ae288c6de Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 6 Sep 2016 23:09:59 +0800 Subject: [PATCH 098/994] .ant-menu-horizontal > li.ant-menu-item MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ant-design 乱入,去掉貌似是css语言的内容 .ant-menu-horizontal > li.ant-menu-item --- docs/class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/class.md b/docs/class.md index 2fb1534b4..3293d96b2 100644 --- a/docs/class.md +++ b/docs/class.md @@ -66,7 +66,7 @@ class Bar { var b = new Bar(); b.doStuff() // "stuff" ``` -.ant-menu-horizontal > li.ant-menu-item + 构造函数的`prototype`属性,在ES6的“类”上面继续存在。事实上,类的所有方法都定义在类的`prototype`属性上面。 ```javascript From 102bf25570ba57fb9b75dab6f98e27aaf040d6a7 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 14 Sep 2016 23:40:41 +0800 Subject: [PATCH 099/994] fix(string): fix typo --- docs/generator.md | 12 ++++++------ docs/string.md | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/generator.md b/docs/generator.md index 315d164c1..9efebf878 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -1301,7 +1301,7 @@ function scheduler(task) { } ``` -注意,上面这种做法,只适合同步操作,即所有的`task`都必须是同步的,不能有异步操作。因为这里的代码一得到返回值,就继续往下执行,没有判断异步操作何时完成。如果要控制异步的操作流程,详见下一节。 +注意,上面这种做法,只适合同步操作,即所有的`task`都必须是同步的,不能有异步操作。因为这里的代码一得到返回值,就继续往下执行,没有判断异步操作何时完成。如果要控制异步的操作流程,详见后面的《异步操作》一章。 下面,利用`for...of`循环会自动依次执行`yield`命令的特性,提供一种更一般的控制流管理的方法。 @@ -1331,7 +1331,7 @@ function *iterateJobs(jobs){ } ``` -上面代码中,数组`jobs`封装了一个项目的多个任务,Generator函数`iterateJobs`则是依次为这些任务加上`yield *`命令(`yield *`命令的介绍详见后文)。 +上面代码中,数组`jobs`封装了一个项目的多个任务,Generator函数`iterateJobs`则是依次为这些任务加上`yield *`命令。 最后,就可以用`for...of`循环一次性依次执行所有任务的所有步骤。 @@ -1341,7 +1341,7 @@ for (var step of iterateJobs(jobs)){ } ``` -再次提醒,上面的做法只能用于所有步骤都是同步操作的情况,不能有异步操作的步骤。如果想要依次执行异步的步骤,必须使用下一章介绍的方法。 +再次提醒,上面的做法只能用于所有步骤都是同步操作的情况,不能有异步操作的步骤。如果想要依次执行异步的步骤,必须使用后面的《异步操作》一章介绍的方法。 `for...of`的本质是一个`while`循环,所以上面的代码实质上执行的是下面的逻辑。 @@ -1356,9 +1356,9 @@ while (!res.done){ } ``` -### (3)部署iterator接口 +### (3)部署Iterator接口 -利用Generator函数,可以在任意对象上部署iterator接口。 +利用Generator函数,可以在任意对象上部署Iterator接口。 ```javascript function* iterEntries(obj) { @@ -1379,7 +1379,7 @@ for (let [key, value] of iterEntries(myObj)) { // bar 7 ``` -上述代码中,myObj是一个普通对象,通过iterEntries函数,就有了iterator接口。也就是说,可以在任意对象上部署next方法。 +上述代码中,`myObj`是一个普通对象,通过`iterEntries`函数,就有了Iterator接口。也就是说,可以在任意对象上部署`next`方法。 下面是一个对数组部署Iterator接口的例子,尽管数组原生具有这个接口。 diff --git a/docs/string.md b/docs/string.md index b78aa17e3..4edf47c5c 100644 --- a/docs/string.md +++ b/docs/string.md @@ -191,7 +191,7 @@ ES5对字符串对象提供`charAt`方法,返回字符串给定位置的字符 ## normalize() -许多欧洲语言有语调符号和重音符合。为了表示它们,Unicode提供了两种方法。一种是直接提供带重音符号的字符,比如`Ǒ`(\u01D1)。另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如`O`(\u004F)和`ˇ`(\u030C)合成`Ǒ`(\u004F\u030C)。 +许多欧洲语言有语调符号和重音符号。为了表示它们,Unicode提供了两种方法。一种是直接提供带重音符号的字符,比如`Ǒ`(\u01D1)。另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如`O`(\u004F)和`ˇ`(\u030C)合成`Ǒ`(\u004F\u030C)。 这两种表示方法,在视觉和语义上都等价,但是JavaScript不能识别。 From 9ac9f943f50a22e58c96b61fae12690d7788dd3c Mon Sep 17 00:00:00 2001 From: Air_cc Date: Tue, 20 Sep 2016 17:29:06 +0800 Subject: [PATCH 100/994] Update generator.md --- docs/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator.md b/docs/generator.md index 9efebf878..056b21b33 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -403,7 +403,7 @@ function* numbers () { // 扩展运算符 [...numbers()] // [1, 2] -// Array.form 方法 +// Array.from 方法 Array.from(numbers()) // [1, 2] // 解构赋值 From 6c8bd07b8ed0c9a1af3c6ee056fd13ed3c758f4b Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 21 Sep 2016 19:47:59 +0800 Subject: [PATCH 101/994] docs(proxy): edit proxy.has() --- docs/proxy.md | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 61a6d9c90..08d3ed5a6 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -474,11 +474,13 @@ var p = new Proxy(obj, { 上面代码中,`obj`对象禁止扩展,结果使用`has`拦截就会报错。 -值得注意的是,`has`方法拦截的是`HasProperty`操作,而不是`HasOwnProperty`操作,即`has`方法不判断一个属性是对象自身的属性,还是继承的属性。由于`for...in`操作内部也会用到`HasProperty`操作,所以`has`方法在`for...in`循环时也会生效。 +值得注意的是,`has`方法拦截的是`HasProperty`操作,而不是`HasOwnProperty`操作,即`has`方法不判断一个属性是对象自身的属性,还是继承的属性。 + +另外,虽然`for...in`循环也用到了`in`运算符,但是`has`拦截对`for...in`循环不生效。 ```javascript -let stu1 = {name: 'Owen', score: 59}; -let stu2 = {name: 'Mark', score: 99}; +let stu1 = {name: '张三', score: 59}; +let stu2 = {name: '李四', score: 99}; let handler = { has(target, prop) { @@ -493,20 +495,27 @@ let handler = { let oproxy1 = new Proxy(stu1, handler); let oproxy2 = new Proxy(stu2, handler); +'score' in oproxy1 +// 张三 不及格 +// false + +'score' in oproxy2 +// true + for (let a in oproxy1) { console.log(oproxy1[a]); } -// Owen -// Owen 不及格 +// 张三 +// 59 for (let b in oproxy2) { console.log(oproxy2[b]); } -// Mark -// Mark 99 +// 李四 +// 99 ``` -上面代码中,`for...in`循环时,`has`拦截会生效,导致不符合要求的属性被排除在`for...in`循环之外。 +上面代码中,`has`拦截只对`in`循环生效,对`for...in`循环不生效,导致不符合要求的属性没有被排除在`for...in`循环之外。 ### construct() From 49919866cdfe5500b11c332c31c4e315a4bd28a2 Mon Sep 17 00:00:00 2001 From: Jacty Date: Fri, 23 Sep 2016 11:22:28 +0800 Subject: [PATCH 102/994] Update destructuring.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正395行错别字:‘结构’-》‘解构’ --- docs/destructuring.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index 79fcf488e..c22338ede 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -392,7 +392,7 @@ first // 1 last // 3 ``` -上面代码对数组进行对象结构。数组`arr`的`0`键对应的值是`1`,`[arr.length - 1]`就是`2`键,对应的值是`3`。方括号这种写法,属于“属性名表达式”,参见《对象的扩展》一章。 +上面代码对数组进行对象解构。数组`arr`的`0`键对应的值是`1`,`[arr.length - 1]`就是`2`键,对应的值是`3`。方括号这种写法,属于“属性名表达式”,参见《对象的扩展》一章。 ## 字符串的解构赋值 From 1cd457d5cfe395b629056c8c9dec203c21230302 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 28 Sep 2016 19:33:55 +0800 Subject: [PATCH 103/994] docs(object): fix object --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index a02ec9e8a..a1a6d7c35 100644 --- a/docs/object.md +++ b/docs/object.md @@ -529,7 +529,7 @@ const DEFAULTS = { }; function processContent(options) { - let options = Object.assign({}, DEFAULTS, options); + options = Object.assign({}, DEFAULTS, options); } ``` From b2b5556b25e000261d153187a9d5753a89876561 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 29 Sep 2016 22:12:46 +0800 Subject: [PATCH 104/994] =?UTF-8?q?docs(Symbol):=20edit=20Singleton=20?= =?UTF-8?q?=E7=9A=84=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/symbol.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/symbol.md b/docs/symbol.md index 1cfdbdd14..4b7e61af0 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -381,7 +381,7 @@ iframe.contentWindow.Symbol.for('foo') === Symbol.for('foo') Singleton模式指的是调用一个类,任何时候返回的都是同一个实例。 -对于 Node 来说,模块文件可以看成是一个类。怎么保证每次执行这个模块文件,返回的都是同一个实例呢? +对于Node来说,模块文件可以看成是一个类。怎么保证每次执行这个模块文件,返回的都是同一个实例呢? 很容易想到,可以把实例放到顶层对象`global`。 @@ -433,7 +433,24 @@ if (!global[FOO_KEY]) { module.exports = global[FOO_KEY]; ``` -上面代码中,可以保证`global[FOO_KEY]`不会被其他脚本改写。 +上面代码中,可以保证`global[FOO_KEY]`不会被无意间覆盖,但还是可以被改写。 + +```javascript +var a = require('./mod.js'); +global[Symbol.for('foo')] = 123; +``` + +如果键名使用`Symbol`方法生成,那么外部将无法引用这个值,当然也就无法改写。 + +```javascript +```javascript +// mod.js +const FOO_KEY = Symbol('foo'); + +// 后面代码相同 …… +``` + +上面代码将导致其他脚本都无法引用`FOO_KEY`。但这样也有一个问题,就是如果多次执行这个脚本,每次得到的`FOO_KEY`都是不一样的。虽然Node会将脚本的执行结果缓存,一般情况下,不会多次执行同一个脚本,但是用户可以手动清除缓存,所以也不是完全可靠。 ## 内置的Symbol值 From 96b6c5a3fd8689aec9308c6082b9eefa4167b2bc Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 3 Oct 2016 22:46:08 +0800 Subject: [PATCH 105/994] docs(regex): add Unicode property class --- docs/object.md | 24 ++-- docs/reference.md | 9 +- docs/regex.md | 61 ++++++++ docs/simd.md | 357 +++++++++++++++++++++++++++++++++++++++++----- docs/string.md | 44 +++++- 5 files changed, 442 insertions(+), 53 deletions(-) diff --git a/docs/object.md b/docs/object.md index a1a6d7c35..9669045fd 100644 --- a/docs/object.md +++ b/docs/object.md @@ -883,11 +883,11 @@ function entries(obj) { ## 对象的扩展运算符 -目前,ES7有一个[提案](https://github.com/sebmarkbage/ecmascript-rest-spread),将Rest解构赋值/扩展运算符(...)引入对象。Babel转码器已经支持这项功能。 +目前,ES7有一个[提案](https://github.com/sebmarkbage/ecmascript-rest-spread),将Rest运算符(解构赋值)/扩展运算符(`...`)引入对象。Babel转码器已经支持这项功能。 -**(1)Rest解构赋值** +**(1)解构赋值** -对象的Rest解构赋值用于从一个对象取值,相当于将所有可遍历的、但尚未被读取的属性,分配到指定的对象上面。所有的键和它们的值,都会拷贝到新对象上面。 +对象的解构赋值用于从一个对象取值,相当于将所有可遍历的、但尚未被读取的属性,分配到指定的对象上面。所有的键和它们的值,都会拷贝到新对象上面。 ```javascript let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; @@ -896,25 +896,25 @@ y // 2 z // { a: 3, b: 4 } ``` -上面代码中,变量`z`是Rest解构赋值所在的对象。它获取等号右边的所有尚未读取的键(`a`和`b`),将它们和它们的值拷贝过来。 +上面代码中,变量`z`是解构赋值所在的对象。它获取等号右边的所有尚未读取的键(`a`和`b`),将它们连同值一起拷贝过来。 -由于Rest解构赋值要求等号右边是一个对象,所以如果等号右边是`undefined`或`null`,就会报错,因为它们无法转为对象。 +由于解构赋值要求等号右边是一个对象,所以如果等号右边是`undefined`或`null`,就会报错,因为它们无法转为对象。 ```javascript let { x, y, ...z } = null; // 运行时错误 let { x, y, ...z } = undefined; // 运行时错误 ``` -Rest解构赋值必须是最后一个参数,否则会报错。 +解构赋值必须是最后一个参数,否则会报错。 ```javascript let { ...x, y, z } = obj; // 句法错误 let { x, ...y, ...z } = obj; // 句法错误 ``` -上面代码中,Rest解构赋值不是最后一个参数,所以会报错。 +上面代码中,解构赋值不是最后一个参数,所以会报错。 -注意,Rest解构赋值的拷贝是浅拷贝,即如果一个键的值是复合类型的值(数组、对象、函数)、那么Rest解构赋值拷贝的是这个值的引用,而不是这个值的副本。 +注意,解构赋值的拷贝是浅拷贝,即如果一个键的值是复合类型的值(数组、对象、函数)、那么解构赋值拷贝的是这个值的引用,而不是这个值的副本。 ```javascript let obj = { a: { b: 1 } }; @@ -923,9 +923,9 @@ obj.a.b = 2; x.a.b // 2 ``` -上面代码中,`x`是Rest解构赋值所在的对象,拷贝了对象`obj`的`a`属性。`a`属性引用了一个对象,修改这个对象的值,会影响到Rest解构赋值对它的引用。 +上面代码中,`x`是解构赋值所在的对象,拷贝了对象`obj`的`a`属性。`a`属性引用了一个对象,修改这个对象的值,会影响到解构赋值对它的引用。 -另外,Rest解构赋值不会拷贝继承自原型对象的属性。 +另外,解构赋值不会拷贝继承自原型对象的属性。 ```javascript let o1 = { a: 1 }; @@ -949,9 +949,9 @@ y // undefined z // 3 ``` -上面代码中,变量`x`是单纯的解构赋值,所以可以读取继承的属性;Rest解构赋值产生的变量`y`和`z`,只能读取对象自身的属性,所以只有变量`z`可以赋值成功。 +上面代码中,变量`x`是单纯的解构赋值,所以可以读取继承的属性;解构赋值产生的变量`y`和`z`,只能读取对象自身的属性,所以只有变量`z`可以赋值成功。 -Rest解构赋值的一个用处,是扩展某个函数的参数,引入其他操作。 +解构赋值的一个用处,是扩展某个函数的参数,引入其他操作。 ```javascript function baseFunction({ a, b }) { diff --git a/docs/reference.md b/docs/reference.md index 9622b1684..40563da69 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -2,9 +2,12 @@ ## 官方文件 -- [ECMAScript® 2015 Language Specification](http://www.ecma-international.org/ecma-262/6.0/index.html): ES6语言规格 -- [ECMAScript Current Proposals](https://github.com/tc39/ecma262): ECMAScript当前的各种提案 -- [ECMAScript® 2016 Language Specification](http://tc39.github.io/ecma262/): ECMAScript 2016草案 +- [ECMAScript® 2015 Language Specification](http://www.ecma-international.org/ecma-262/6.0/index.html): ECMAScript 2015规格 +- [ECMAScript® 2016 Language Specification](http://www.ecma-international.org/ecma-262/7.0/): ECMAScript 2016规格 +- [ECMAScript® 2017 Language Specification](https://tc39.github.io/ecma262/):ECMAScript 2017规格(草案) +- [ECMAScript Current Proposals](https://github.com/tc39/ecma262): ECMAScript当前的所有提案 +- [ECMAScript Active Proposals](https://github.com/tc39/proposals): 已经进入正式流程的提案 +- [ECMAScript Daily](https://ecmascript-daily.github.io/): TC39委员会的动态 ## 综合介绍 diff --git a/docs/regex.md b/docs/regex.md index 04361d793..cdd7899dd 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -409,3 +409,64 @@ JavaScript语言的正则表达式,只支持先行断言(lookahead)和先 ``` 上面代码中,如果后行断言的反斜杠引用(`\1`)放在括号的后面,就不会得到匹配结果,必须放在前面才可以。 + +## Unicode属性类 + +目前,有一个[提案](https://github.com/mathiasbynens/es-regexp-unicode-property-escapes),引入了一种新的类的写法`\p{...}`和`\P{...}`,允许正则表达式匹配符合Unicode某种属性的所有字符。 + +```javascript +const regexGreekSymbol = /\p{Script=Greek}/u; +regexGreekSymbol.test('π') // u +``` + +上面代码中,`\p{Script=Greek}`指定匹配一个希腊文字母,所以匹配`π`成功。 + +Unicode属性类要指定属性名和属性值。 + +```javascript +\p{UnicodePropertyName=UnicodePropertyValue} +``` + +对于某些属性,可以只写属性名。 + +```javascript +\p{UnicodePropertyName} +``` + +`\P{…}`是`\p{…}`的反向匹配,即匹配不满足条件的字符。 + +注意,这两种类只对Unicode有效,所以使用的时候一定要加上`u`修饰符。如果不加`u`修饰符,正则表达式使用`\p`和`\P`会报错,ECMAScript预留了这两个类。 + +由于Unicode的各种属性非常多,所以这种新的类的表达能力非常强。 + +```javascript +const regex = /^\p{Decimal_Number}+$/u; +regex.test('𝟏𝟐𝟑𝟜𝟝𝟞𝟩𝟪𝟫𝟬𝟭𝟮𝟯𝟺𝟻𝟼') // true +``` + +上面代码中,属性类指定匹配所有十进制字符,可以看到各种字型的十进制字符都会匹配成功。 + +`\p{Number}`甚至能匹配罗马数字。 + +```javascript +// 匹配所有数字 +const regex = /^\p{Number}+$/u; +regex.test('²³¹¼½¾') // true +regex.test('㉛㉜㉝') // true +regex.test('ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ') // true +``` + +下面是其他一些例子。 + +```javascript +// 匹配各种文字的所有字母,等同于Unicode版的\w +[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}] + +// 匹配各种文字的所有非字母的字符,等同于Unicode版的\W +[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}] + +// 匹配所有的箭头字符 +const regexArrows = /^\p{Block=Arrows}+$/u; +regexArrows.test('←↑→↓↔↕↖↗↘↙⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇧⇩') // true +``` + diff --git a/docs/simd.md b/docs/simd.md index e3ce17000..e8a2dfea3 100644 --- a/docs/simd.md +++ b/docs/simd.md @@ -2,7 +2,7 @@ ## 概述 -SIMD是“Single Instruction/Multiple Data”的缩写,意为“单指令,多数据”。它是JavaScript操作CPU对应指令的接口,你可以看做这是一种不同的运算执行模式。与它相对的是SISD(“Single Instruction/Single Data”),即“单指令,单数据”。 +SIMD(发音`/sim-dee/`)是“Single Instruction/Multiple Data”的缩写,意为“单指令,多数据”。它是JavaScript操作CPU对应指令的接口,你可以看做这是一种不同的运算执行模式。与它相对的是SISD(“Single Instruction/Single Data”),即“单指令,单数据”。 SIMD的含义是使用一个指令,完成多个数据的运算;SISD的含义是使用一个指令,完成单个数据的运算,这是JavaScript的默认运算模式。显而易见,SIMD的执行效率要高于SISD,所以被广泛用于3D图形运算、物理模拟等运算量超大的项目之中。 @@ -17,7 +17,7 @@ c[0] = a[0] + b[0]; c[1] = a[1] + b[1]; c[2] = a[2] + b[2]; c[3] = a[3] + b[3]; -c; // Array[6, 8, 10, 12] +c // Array[6, 8, 10, 12] ``` 上面代码中,数组`a`和`b`的对应成员相加,结果放入数组`c`。它的运算模式是依次处理每个数组成员,一共有四个数组成员,所以需要运算4次。 @@ -41,9 +41,9 @@ v + w = 〈v1, …, vn〉+ 〈w1, …, wn〉 = 〈v1+w1, …, vn+wn〉 ``` -上面代码中,`v`和`w`是两个多元矢量。它们的加运算,在SIMD下是一个指令、而不是n个指令完成的,这就大大提高了效率。这对于3D动画、图像处理、信号处理、数值处理、加密等运算是非常重要的。 +上面代码中,`v`和`w`是两个多元矢量。它们的加运算,在SIMD下是一个指令、而不是n个指令完成的,这就大大提高了效率。这对于3D动画、图像处理、信号处理、数值处理、加密等运算是非常重要的。比如,Canvas的`getImageData()`会将图像文件读成一个二进制数组,SIMD就很适合对于这种数组的处理。 -总得来说,SIMD是数据并行处理(parallelism)的一种手段。 +总得来说,SIMD是数据并行处理(parallelism)的一种手段,可以加速一些运算密集型操作的速度。 ## 数据类型 @@ -62,21 +62,51 @@ SIMD提供多种数据类型。 - Bool8x16:十六个8位布尔值 - Bool64x2:两个64位布尔值 +每种数据类型被`x`号分隔成两部分,后面的部分表示通道数,前面的部分表示每个通道的宽度和类型。比如,`Float32x4`就表示这个值有4个通道,每个通道是一个32位浮点数。 + 每种数据类型都是一个方法,可以传入参数,生成对应的值。 ```javascript var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); ``` -上面代码中,变量`a`就是一个128位、包含四个32位浮点数的值。 +上面代码中,变量`a`就是一个128位、包含四个32位浮点数(即四个通道)的值。 注意,这些数据类型方法都不是构造函数,前面不能加`new`,否则会报错。 ```javascript -var v = new SIMD.Float32x4(0,1,2,3); +var v = new SIMD.Float32x4(0, 1, 2, 3); // TypeError: SIMD.Float32x4 is not a constructor ``` +如果所有数据通道都是同样的值,可以使用`splat`方法生成值。 + +```javascript +var v = SIMD.Float32x4.splat(0.0); +``` + +上面代码中,`v`的四个通道都是`0.0`。 + +如果要取出单个通道的值,可以使用`extractLane`方法。 + +```javascript +var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); +var b = SIMD.Float32x4.extractLane(a, 0); // 1.0 +``` + +上面代码中,`extractLane`方法的第一个参数是一个SIMD值,第二个参数是通道的编号(从0开始)。 + +如果要修改某个通道的值,可以使用`replaceLane`方法。 + +```javascript +var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); +var c = SIMD.Float32x4.replaceLane(a, 0, 5.0); +``` + +上面代码中,经过替换后,得到一个新的SIMD值:`(5.0, 2.0, 3.0, 4.0)`。可以看到,`replaceLane`接受三个参数:SIMD值、通道的编号(从0开始)、新的值。 + +## 方法:数学运算 + 每种数据类型都有一系列运算符,下面是其中的一些。 - float32x4.abs(v):返回`v`的绝对值 @@ -86,64 +116,316 @@ var v = new SIMD.Float32x4(0,1,2,3); - float32x4.mul(v, w):`v`和`w`对应项的相乘 - float32x4.equal(v, w):比较`v`和`w`对应项是否相等,返回的布尔值组成一个`uint32x4`的值 -下面是一个`add`运算符的例子。 +### SIMD.%type%.add() + +`add`方法接受两个SIMD值作为参数,将它们的每个通道相加,返回一个新的SIMD值。 + +```javascript +var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); +var b = SIMD.Float32x4(5.0, 10.0, 15.0, 20.0); +var c = SIMD.Float32x4.add(a, b); +``` + +上面代码中,经过加法运算,新的SIMD值为`(6.0, 12.0, 18.0. 24.0)`。 + +### SIMD.%type%.mul() + +`mul`方法接受两个SIMD值作为参数,将它们的每个通道相乘,返回一个新的SIMD值。 + +```javascript +var a = SIMD.Float32x4(-1, -2, 3, 4); +var b = SIMD.Float32x4(3, 3, 3, 3); +SIMD.Float32x4.mul(a, b); +// Float32x4[-3, -6, 9, 12] +``` + +### SIMD.%type%.shiftLeftByScalar() + +`shiftLeftByScalar`方法接受一个SIMD值作为参数,然后将每个通道的值左移指定的位数,返回一个新的SIMD值。 + +```javascript +var a = SIMD.Int32x4(1, 2, 4, 8); +SIMD.Int32x4.shiftLeftByScalar(a, 1); +// Int32x4[2, 4, 8, 16] +``` + +如果左移后,新的值超出了当前数据类型的位数,溢出的部分会被丢弃。 + +```javascript +var ix4 = SIMD.Int32x4(1, 2, 3, 4); +var jx4 = SIMD.Int32x4.shiftLeftByScalar(ix4, 32); +// Int32x4[0, 0, 0, 0] +``` + +### SIMD.%type%.shiftRightByScalar() + +`shiftRightByScalar`方法接受一个SIMD值作为参数,然后将每个通道的值右移指定的位数,返回一个新的SIMD值。 + +```javascript +var a = SIMD.Int32x4(1, 2, 4, -8); +SIMD.Int32x4.shiftRightByScalar(a, 1); +// Int32x4[0, 1, 2, -4] +``` + +如果原来通道的值是带符号的值,则符号位保持不变,不受右移影响。如果是不带符号位的值,则右移后头部会补`0`。 + +```javascript +var a = SIMD.Uint32x4(1, 2, 4, -8); +SIMD.Uint32x4.shiftRightByScalar(a, 1); +// Uint32x4[0, 1, 2, 2147483644] +``` + +上面代码中,`-8`右移一位变成了`2147483644`,是因为对于32位无符号整数来说,`-8`的二进制形式是`11111111111111111111111111111000`,右移一位就变成了`01111111111111111111111111111100`,相当于`2147483644`。 + +## 方法:通道处理 + +### SIMD.%type%.load() + +`load`方法用于从二进制数组读入数据,生成一个新的SIMD值。 ```javascript -c[i] = SIMD.float32x4.add(a[i], b[i]); +var a = new Int32Array([1,2,3,4,5,6,7,8]); +SIMD.Int32x4.load(a, 0); +// Int32x4[1, 2, 3, 4] + +var b = new Int32Array([1,2,3,4,5,6,7,8]); +SIMD.Int32x4.load(a, 2); +// Int32x4[3, 4, 5, 6] +``` -// 或者 +`load`方法接受两个参数:一个二进制数组和开始读取的位置(从0开始)。如果位置不合法(比如`-1`或者超出二进制数组的大小),就会抛出一个错误。 -var tmp0 = a[i]; -var tmp1 = b[i]; -var tmp2 = SIMD.float32x4.add(tmp0, tmp1); -c[i] = tmp2; +这个方法还有三个变种`load1()`、`load2()`、`load3()`,表示从指定位置开始,只加载一个通道、二个通道、三个通道的值。 + +```javascript +// 格式 +SIMD.Int32x4.load(tarray, index) +SIMD.Int32x4.load1(tarray, index) +SIMD.Int32x4.load2(tarray, index) +SIMD.Int32x4.load3(tarray, index) + +// 实例 +var a = new Int32Array([1,2,3,4,5,6,7,8]); +SIMD.Int32x4.load1(a, 0); +// Int32x4[1, 0, 0, 0] +SIMD.Int32x4.load2(a, 0); +// Int32x4[1, 2, 0, 0] +SIMD.Int32x4.load3(a, 0); +// Int32x4[1, 2, 3,0] ``` -此外,每种数据类型还有操作方法。 +### SIMD.%type%.splat() -`getAt`方法返回指定位置的值。 +`splat`方法返回一个新的SIMD值,该值的所有通道都会设成同一个预先给定的值。 ```javascript -var a = SIMD.float32x4(1.0, 2.0, 3.0, 4.0); -var b = a.getAt(0); // 1.0 +SIMD.Float32x4.splat(3); +// Float32x4[3, 3, 3, 3] +SIMD.Float64x2.splat(3); +// Float64x2[3, 3] ``` -`zero`方法可以将SIMD值清零。 +如果省略参数,所有整数型的SIMD值都会设定`0`,浮点型的SIMD值都会设成`NaN`。 + +### SIMD.%type%.swizzle() + +`swizzle`方法返回一个新的SIMD值,重新排列原有的SIMD值的通道顺序。 ```javascript -var b = SIMD.float32x4.zero(); +var t = SIMD.Float32x4(1, 2, 3, 4); +SIMD.Float32x4.swizzle(t, 1, 2, 0, 3); +// Float32x4[2,3,1,4] ``` -上面代码中,变量`b`包含的四个32位浮点数全部是0.0。 +上面代码中,`swizzle`方法的第一个参数是原有的SIMD值,后面的参数对应将要返回的SIMD值的四个通道。它的意思是新的SIMD的四个通道,依次是原来SIMD值的1号通道、2号通道、0号通道、3号通道。由于SIMD值最多可以有16个通道,所以`swizzle`方法除了第一个参数以外,最多还可以接受16个参数。 -`shuffle`方法根据指定模式,重新生成一个SIMD值。 +下面是另一个例子。 ```javascript -var a = SIMD.float32x4(1.0, 2.0, 3.0, 4.0); -var b = SIMD.float32x4.shuffle(a, SIMD.float32x4.XXYY); -// [1.0, 1.0, 2.0, 2.0] +var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); +// Float32x4[1.0, 2.0, 3.0, 4.0] + +var b = SIMD.Float32x4.swizzle(a, 0, 0, 1, 1); +// Float32x4[1.0, 1.0, 2.0, 2.0] -var c = SIMD.float32x4.shuffle(a, SIMD.float32x4.WWWW); -// [4.0, 4.0, 4.0, 4.0] +var c = SIMD.Float32x4.swizzle(a, 3, 3, 3, 3); +// Float32x4[4.0, 4.0, 4.0, 4.0] -var d = SIMD.float32x4.shuffle(a, SIMD.float32x4.WZYX); -// [4.0, 3.0, 2.0, 1.0] +var d = SIMD.Float32x4.swizzle(a, 3, 2, 1, 0); +// Float32x4[4.0, 3.0, 2.0, 1.0] ``` -下面是一个求平均值的例子。 +### SIMD.%type%.shuffle() + +`shuffle`方法从两个SIMD值之中取出指定通道,返回一个新的SIMD值。 ```javascript -function average(f32x4list) { - var n = f32x4list.length; - var sum = SIMD.float32x4.zero(); - for (int i = 0; i < n; i++) { - sum = SIMD.float32x4.add(sum, f32x4list.getAt(i)); +var a = SIMD.Float32x4(1, 2, 3, 4); +var b = SIMD.Float32x4(5, 6, 7, 8); + +SIMD.Float32x4.shuffle(a, b, 1, 5, 7, 2); +// Float32x4[2, 6, 8, 3] +``` + +上面代码中,`a`和`b`一共有8个通道,依次编号为0到7。`shuffle`根据编号,取出相应的通道,返回一个新的SIMD值。 + +## 方法:比较运算 + +### SIMD.%type%.greaterThan() + +`greatThan`方法用来比较两个SIMD值`a`和`b`的每一个通道,如果在该通道中,`a`较大就得到`true`,否则得到`false`。最后,所有通道的比较结果,会组成一个新的SIMD值,作为掩码返回。 + +```javascript +var a = SIMD.Float32x4(1, 6, 3, 11); +var b = SIMD.Float32x4(1, 4, 7, 9); + +var mask = SIMD.Float32x4.greaterThan(a,b); +// Bool32x4[false, true, false, true] +``` + +### SIMD.%type%.lessThan() + +`lessThan`方法用来比较两个SIMD值`a`和`b`的每一个通道,如果在该通道中,`a`较小就得到`true`,否则得到`false`。最后,所有通道的比较结果,会组成一个新的SIMD值,作为掩码返回。 + +```javascript +var a = SIMD.Float32x4(1, 2, 3, 11); +var b = SIMD.Float32x4(1, 4, 7, 9); + +var mask = SIMD.Float32x4.lessThan(a,b); +// Bool32x4[false, true, true, false] +``` + +### SIMD.%type%.select() + +`select`方法通过掩码生成一个新的SIMD值。它接受三个参数,分别是掩码和两个SIMD值。 + +```javascript +var a = SIMD.Float32x4(1, 2, 3, 4); +var b = SIMD.Float32x4(5, 6, 7, 8); + +var mask = SIMD.Bool32x4(true, false, false, true); + +SIMD.Float32x4.select(mask, a, b); +// Float32x4[1, 6, 7, 4] +``` + +上面代码中,`select`方法接受掩码和两个SIMD值作为参数。当某个通道对应的掩码为`true`时,会选择第一个SIMD值的对应通道,否则选择第二个SIMD值的对应通道。 + +这个方法通常与比较运算符结合使用。 + +```javascript +var a = SIMD.Float32x4(0, 12, 3, 4); +var b = SIMD.Float32x4(0, 6, 7, 50); + +var mask = SIMD.Float32x4.lessThan(a,b); +// Bool32x4[false, false, true, true] + +var result = SIMD.Float32x4.select(mask, a, b); +// Float32x4[0, 6, 3, 4] +``` + +上面代码中,先通过`lessThan`方法生成一个掩码,然后通过`select`方法生成一个由每个通道的较小值组成的新的SIMD值。 + +### SIMD.%type%.allTrue(),SIMD.%type%.anyTrue() + +`allTrue`方法接受一个SIMD值作为参数,然后返回一个布尔值,表示该SIMD值的所有通道是否都为`true`。 + +```javascript +var a = SIMD.Bool32x4(true, true, true, true); +var b = SIMD.Bool32x4(true, false, true, true); + +SIMD.Bool32x4.allTrue(a); // true +SIMD.Bool32x4.allTrue(b); // false +``` + +`anyTrue`方法则是只要有一个通道为`true`,就返回`true`,否则返回`false`。 + +```javascript +var a = SIMD.Bool32x4(false, false, false, false); +var b = SIMD.Bool32x4(false, false, true, false); + +SIMD.Bool32x4.anyTrue(a); // false +SIMD.Bool32x4.anyTrue(b); // true +``` + +这两个方法通常与比较运算符结合使用。 + +```javascript +var ax4 = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); +var bx4 = SIMD.Float32x4(0.0, 6.0, 7.0, 8.0); +var ix4 = SIMD.Float32x4.lessThan(ax4, bx4); +var b1 = SIMD.Int32x4.allTrue(ix4); // false +var b2 = SIMD.Int32x4.anyTrue(ix4); // true +``` + +### SIMD.%type%.min(),SIMD.%type%.minNum() + +`min`方法接受两个SIMD值作为参数,将它们的每个通道的较小值,组成一个新的SIMD值返回。 + +```javascript +var a = SIMD.Float32x4(-1, -2, 3, 5.2); +var b = SIMD.Float32x4(0, -4, 6, 5.5); +SIMD.Float32x4.min(a, b); +// Float32x4[-1, -4, 3, 5.2] +``` + +如果有一个通道的值是`NaN`,则会返回`NaN`。 + +```javascript +var c = SIMD.Float64x2(NaN, Infinity) +var d = SIMD.Float64x2(1337, 42); +SIMD.Float64x2.min(c, d); +// Float64x2[NaN, 42] +``` + +`minNum`方法与`min`方法的作用一模一样,唯一的区别是如果有一个通道的值是`NaN`,则会优先返回另一个通道的值。 + +```javascript +var ax4 = SIMD.Float32x4(1.0, 2.0, NaN, NaN); +var bx4 = SIMD.Float32x4(2.0, 1.0, 3.0, NaN); +var cx4 = SIMD.Float32x4.min(ax4, bx4); +// Float32x4[1.0, 1.0, NaN, NaN] +var dx4 = SIMD.Float32x4.minNum(ax4, bx4); +// Float32x4[1.0, 1.0, 3.0, NaN] +``` + +## 实例:求平均值 + +正常模式下,计算`n`个值的平均值,需要运算`n`次。 + +```javascript +function average(list) { + var n = list.length; + var sum = 0.0; + for (var i = 0; i < n; i++) { + sum += list[i]; + } + return sum / n; +} +``` + +使用SIMD,可以将计算次数减少到`n`次的四分之一。 + +```javascript +function average(list) { + var n = list.length; + var sum = SIMD.Float32x4.splat(0.0); + for (var i = 0; i < n; i += 4) { + sum = SIMD.Float32x4.add( + sum, + SIMD.Float32x4.load(list, i) + ); } - var total = sum.x + sum.y + sum.z + sum.w; - return total / (n * 4); + var total = SIMD.Float32x4.extractLane(sum, 0) + + SIMD.Float32x4.extractLane(sum, 1) + + SIMD.Float32x4.extractLane(sum, 2) + + SIMD.Float32x4.extractLane(sum, 3); + return total / n; } ``` +上面代码先是每隔四位,将所有的值读入一个SIMD,然后立刻累加。然后,得到累加值四个通道的总和,再除以`n`就可以了。 + ## 二进制数组 SIMD可以与二进制数组结合,生成数组实例。 @@ -158,7 +440,7 @@ var _ui16x8 = new Uint16Array(_f32x4.buffer); var _ui8x16 = new Uint8Array(_f32x4.buffer); ``` -下面是一些应用的例子。 +下面是一个例子。 ```javascript // a 和 b 是float32x4数组实例 @@ -173,6 +455,7 @@ function addArrays(a, b) { ## 参考链接 +- TC39, [SIMD.js Stage 2](https://docs.google.com/presentation/d/1MY9NHrHmL7ma7C8dyNXvmYNNGgVmmxXk8ZIiQtPlfH4/edit#slide=id.p19) - MDN, [SIMD](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD) - TC39, [ECMAScript SIMD](https://github.com/tc39/ecmascript_simd) - Axel Rauschmayer, [JavaScript gains support for SIMD](http://www.2ality.com/2013/12/simd-js.html) diff --git a/docs/string.md b/docs/string.md index 4edf47c5c..e3677c170 100644 --- a/docs/string.md +++ b/docs/string.md @@ -846,7 +846,7 @@ function tag(strings) { } ``` -上面代码中,`tag`函数的第一个参数`strings`,有一个`raw`属性,也指向一个数组。该数组的成员与`strings`数组完全一致。比如,`strings`数组是`["First line\nSecond line"]`,那么`strings.raw`数组就是`["First line\\nSecond line"]`。两者唯一的区别,就是字符串里面的斜杠都被转义了。比如,strings.raw数组会将`\n`视为`\`和`n`两个字符,而不是换行符。这是为了方便取得转义之前的原始模板而设计的。 +上面代码中,`tag`函数的第一个参数`strings`,有一个`raw`属性,也指向一个数组。该数组的成员与`strings`数组完全一致。比如,`strings`数组是`["First line\nSecond line"]`,那么`strings.raw`数组就是`["First line\\nSecond line"]`。两者唯一的区别,就是字符串里面的斜杠都被转义了。比如,strings.raw数组会将`\n`视为`\\`和`n`两个字符,而不是换行符。这是为了方便取得转义之前的原始模板而设计的。 ## String.raw() @@ -894,3 +894,45 @@ String.raw({ raw: 'test' }, 0, 1, 2); // 等同于 String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2); ``` + +## 模板字符串的限制 + +前面提到标签模板里面,可以内嵌其他语言。但是,模板字符串默认会将字符串转义,因此导致了无法嵌入其他语言。 + +举例来说,在标签模板里面可以潜入Latex语言。 + +```javascript +function latex(strings) { + // ... +} + +let document = latex` +\newcommand{\fun}{\textbf{Fun!}} // 正常工作 +\newcommand{\unicode}{\textbf{Unicode!}} // 报错 +\newcommand{\xerxes}{\textbf{King!}} // 报错 + +Breve over the h goes \u{h}ere // 报错 +` +``` + +上面代码中,变量`document`内嵌的模板字符串,对于Latex语言来说完全是合法的,但是JavaScript引擎会报错。原因就在于字符串的转义。 + +模板字符串会将`\u00FF`和`\u{42}`当作Unicode字符进行转义,所以`\unicode`解析时报错;而`\x56`会被当作十六进制字符串转义,所以`\xerxes`会报错。 + +为了解决这个问题,现在有一个[提案](https://tc39.github.io/proposal-template-literal-revision/),放松对标签模板里面的字符串转义的限制。如果遇到不合法的字符串转义,就返回`undefined`,而不是报错,并且从`raw`属性上面可以得到原始字符串。 + +```javascript +function tag(strs) { + strs[0] === undefined + strs.raw[0] === "\\unicode and \\u{55}"; +} +tag`\unicode and \u{55}` +``` + +上面代码中,模板字符串原本是应该报错的,但是由于放松了对字符串转义的限制,所以不报错了,JavaScript引擎将第一个字符设置为`undefined`,但是`raw`属性依然可以得到原始字符串,因此`tag`函数还是可以对原字符串进行处理。 + +注意,这种对字符串转义的放松,只在标签模板解析字符串时生效,不是标签模板的场合,依然会报错。 + +```javascript +let bad = `bad escape sequence: \unicode`; // 报错 +``` From bf30299b482ebb8974ab933ef7adbd76157037dd Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 4 Oct 2016 18:41:24 +0800 Subject: [PATCH 106/994] docs(simd): add simd chapter --- docs/async.md | 59 +++++++ docs/function.md | 8 +- docs/reference.md | 1 + docs/simd.md | 407 +++++++++++++++++++++++++++++++++++++--------- sidebar.md | 3 +- 5 files changed, 401 insertions(+), 77 deletions(-) diff --git a/docs/async.md b/docs/async.md index eff770ef8..de938a8ee 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1252,3 +1252,62 @@ async function chainAnimationsAsync(elem, animations) { 可以看到Async函数的实现最简洁,最符合语义,几乎没有语义不相关的代码。它将Generator写法中的自动执行器,改在语言层面提供,不暴露给用户,因此代码量最少。如果使用Generator写法,自动执行器需要用户自己提供。 +## 异步遍历器 + +《遍历器》一章说过,Iterator接口是一种数据遍历的协议,只要调用遍历器的`next`方法,就会得到一个对象值`{value, done}`。其中,`value`表示当前的数据的值,`done`是一个布尔值,表示遍历是否结束。 + +这意味着,`next`方法是同步的,只要调用就必须立刻返回值。也就是说,一旦执行`next`方法,就必须同步地得到`value`和`done`这两方面的信息。这对于同步操作,当然没有问题,但对于异步操作,就不太合适了。目前的解决方法是,Generator函数里面的异步操作,返回一个Thunk函数或者Promise对象,即`value`属性是一个Thunk函数或者Promise对象,等待以后返回真正的值,而`done`属性则还是同步产生的。 + +目前,有一个[提案](https://github.com/tc39/proposal-async-iteration),为异步操作提供原生的遍历器接口,即`value`和`done`这两个属性都是异步产生,这称为”异步遍历器“(Async Iterator)。 + +### 异步遍历的接口 + +异步遍历器的最大的语法特点,就是调用遍历器的`next`方法,返回的是一个Promise对象。 + +```javascript +asyncIterator + .next() + .then( + ({ value, done }) => /* ... */ + ); +``` + +上面代码中,`asyncIterator`是一个异步遍历器,调用`next`方法以后,返回一个Promise对象。因此,可以使用`then`方法指定,这个Promise对象的状态变为`resolve`以后的回调函数。回调函数的参数,则是一个具有`value`和`done`两个属性的对象,这个跟同步遍历器是一样的。 + +我们知道,一个对象的同步遍历器的接口,部署在`Symbol.iterator`属性上面。同样地,对象的异步遍历器接口,部署在`Symbol.asyncIterator`属性上面。不管是什么样的对象,只要它的`Symbol.asyncIterator`属性有值,就表示应该对它进行异步遍历。 + +### for await...of + +前面介绍过,`for...of`循环用于遍历同步的Iterator接口。新引入的`for await...of`循环,则是用于遍历异步的Iterator接口。 + +```javascript +for await (const line of readLines(filePath)) { + console.log(line); +} +``` + +上面代码中,`readLines`函数返回一个异步遍历器,每次调用它的`next`方法,就会返回一个Promise对象。`await`表示等待这个Promise对象`resolve`,一旦完成,变量`line`就是Promise对象返回的`value`值。 + +### 异步Generator函数 + +就像Generator函数返回一个同步遍历器对象一样,异步Generator函数的作用,是返回一个异步遍历器对象。 + +在语法上,异步Generator函数就是`async`函数与Generator函数的结合。 + +```javascript +async function* readLines(path) { + let file = await fileOpen(path); + + try { + while (!file.EOF) { + yield await file.readLine(); + } + } finally { + await file.close(); + } +} +``` + +上面代码中,异步操作前面使用`await`关键字标明,`next`方法所在的中断之处使用`yield`关键字标明。 + +注意,普通的`async`函数返回的是一个Promise对象,而异步Generator函数返回的是一个异步Iterator对象。 diff --git a/docs/function.md b/docs/function.md index 95e4d8df2..7df8a5c94 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1446,9 +1446,9 @@ sum(1, 100000) ## 函数参数的尾逗号 -ES7有一个[提案](https://github.com/jeffmo/es-trailing-function-commas),允许函数的最后一个参数有尾逗号(trailing comma)。 +ECMAScript 2017将[允许](https://github.com/jeffmo/es-trailing-function-commas)函数的最后一个参数有尾逗号(trailing comma)。 -目前,函数定义和调用时,都不允许有参数的尾逗号。 +此前,函数定义和调用时,都不允许最后一个参数后面出现逗号。 ```javascript function clownsEverywhere( @@ -1462,7 +1462,9 @@ clownsEverywhere( ); ``` -如果以后要在函数的定义之中添加参数,就势必还要添加一个逗号。这对版本管理系统来说,就会显示,添加逗号的那一行也发生了变动。这看上去有点冗余,因此新提案允许定义和调用时,尾部直接有一个逗号。 +上面代码中,如果在`param2`或`bar`后面加一个逗号,就会报错。 + +这样的话,如果以后修改代码,想为函数`clownsEverywhere`添加第三个参数,就势必要在第二个参数后面添加一个逗号。这对版本管理系统来说,就会显示,添加逗号的那一行也发生了变动。这看上去有点冗余,因此新的语法允许定义和调用时,尾部直接有一个逗号。 ```javascript function clownsEverywhere( diff --git a/docs/reference.md b/docs/reference.md index 40563da69..639e61ae0 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -7,6 +7,7 @@ - [ECMAScript® 2017 Language Specification](https://tc39.github.io/ecma262/):ECMAScript 2017规格(草案) - [ECMAScript Current Proposals](https://github.com/tc39/ecma262): ECMAScript当前的所有提案 - [ECMAScript Active Proposals](https://github.com/tc39/proposals): 已经进入正式流程的提案 +- [ECMAscript proposals](https://github.com/hemanth/es-next):从阶段0到阶段4的所有提案列表 - [ECMAScript Daily](https://ecmascript-daily.github.io/): TC39委员会的动态 ## 综合介绍 diff --git a/docs/simd.md b/docs/simd.md index e8a2dfea3..09473a2d8 100644 --- a/docs/simd.md +++ b/docs/simd.md @@ -1,4 +1,4 @@ -# SIMD 的用法 +# SIMD ## 概述 @@ -47,7 +47,7 @@ v + w = 〈v1, …, vn〉+ 〈w1, …, wn〉 ## 数据类型 -SIMD提供多种数据类型。 +SIMD提供12种数据类型,总长度都是128个二进制位。 - Float32x4:四个32位浮点数 - Float64x2:两个64位浮点数 @@ -62,9 +62,16 @@ SIMD提供多种数据类型。 - Bool8x16:十六个8位布尔值 - Bool64x2:两个64位布尔值 -每种数据类型被`x`号分隔成两部分,后面的部分表示通道数,前面的部分表示每个通道的宽度和类型。比如,`Float32x4`就表示这个值有4个通道,每个通道是一个32位浮点数。 +每种数据类型被`x`符号分隔成两部分,后面的部分表示通道数,前面的部分表示每个通道的宽度和类型。比如,`Float32x4`就表示这个值有4个通道,每个通道是一个32位浮点数。 -每种数据类型都是一个方法,可以传入参数,生成对应的值。 +每个通道之中,可以放置四种数据。 + +- 浮点数(float,比如1.0) +- 带符号的整数(Int,比如-1) +- 无符号的整数(Uint,比如1) +- 布尔值(Bool,包含`true`和`false`两种值) + +每种SIMD的数据类型都是一个函数方法,可以传入参数,生成对应的值。 ```javascript var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); @@ -79,69 +86,140 @@ var v = new SIMD.Float32x4(0, 1, 2, 3); // TypeError: SIMD.Float32x4 is not a constructor ``` -如果所有数据通道都是同样的值,可以使用`splat`方法生成值。 +## 静态方法:数学运算 + +每种数据类型都有一系列运算符,支持基本的数学运算。 + +### SIMD.%type%.abs(),SIMD.%type%.neg() + +`abs`方法接受一个SIMD值作为参数,将它的每个通道都转成绝对值,作为一个新的SIMD值返回。 ```javascript -var v = SIMD.Float32x4.splat(0.0); +var a = SIMD.Float32x4(-1, -2, 0, NaN); +SIMD.Float32x4.abs(a) +// Float32x4[1, 2, 0, NaN] ``` -上面代码中,`v`的四个通道都是`0.0`。 +`neg`方法接受一个SIMD值作为参数,将它的每个通道都转成负值,作为一个新的SIMD值返回。 -如果要取出单个通道的值,可以使用`extractLane`方法。 +```javascript +var a = SIMD.Float32x4(-1, -2, 3, 0); +SIMD.Float32x4.neg(a) +// Float32x4[1, 2, -3, -0] + +var b = SIMD.Float64x2(NaN, Infinity); +SIMD.Float64x2.neg(b) +// Float64x2[NaN, -Infinity] +``` + +### SIMD.%type%.add(),SIMD.%type%.addSaturate() + +`add`方法接受两个SIMD值作为参数,将它们的每个通道相加,作为一个新的SIMD值返回。 ```javascript var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); -var b = SIMD.Float32x4.extractLane(a, 0); // 1.0 +var b = SIMD.Float32x4(5.0, 10.0, 15.0, 20.0); +var c = SIMD.Float32x4.add(a, b); ``` -上面代码中,`extractLane`方法的第一个参数是一个SIMD值,第二个参数是通道的编号(从0开始)。 +上面代码中,经过加法运算,新的SIMD值为`(6.0, 12.0, 18.0. 24.0)`。 -如果要修改某个通道的值,可以使用`replaceLane`方法。 +`addSaturate`方法跟`add`方法的作用相同,都是两个通道相加,但是溢出的处理不一致。对于`add`方法,如果两个值相加发生溢出,溢出的二进制位会被丢弃; `addSaturate`方法则是返回该数据类型的最大值。 ```javascript -var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); -var c = SIMD.Float32x4.replaceLane(a, 0, 5.0); +var a = SIMD.Uint16x8(65533, 65534, 65535, 65535, 1, 1, 1, 1); +var b = SIMD.Uint16x8(1, 1, 1, 5000, 1, 1, 1, 1); +SIMD.Uint16x8.addSaturate(a, b); +// Uint16x8[65534, 65535, 65535, 65535, 2, 2, 2, 2] + +var c = SIMD.Int16x8(32765, 32766, 32767, 32767, 1, 1, 1, 1); +var d = SIMD.Int16x8(1, 1, 1, 5000, 1, 1, 1, 1); +SIMD.Int16x8.addSaturate(c, d); +// Int16x8[32766, 32767, 32767, 32767, 2, 2, 2, 2] ``` -上面代码中,经过替换后,得到一个新的SIMD值:`(5.0, 2.0, 3.0, 4.0)`。可以看到,`replaceLane`接受三个参数:SIMD值、通道的编号(从0开始)、新的值。 +上面代码中,`Uint16`的最大值是65535,`Int16`的最大值是32767。一旦发生溢出,就返回这两个值。 -## 方法:数学运算 +注意,`Uint32x4`和`Int32x4`这两种数据类型没有`addSaturate`方法。 -每种数据类型都有一系列运算符,下面是其中的一些。 +### SIMD.%type%.sub(),SIMD.%type%.subSaturate() -- float32x4.abs(v):返回`v`的绝对值 -- float32x4.neg(v):返回`v`的绝对值的负值 -- float32x4.sqrt(v):返回`v`的平方根 -- float32x4.add(v, w):`v`和`w`对应项的相加 -- float32x4.mul(v, w):`v`和`w`对应项的相乘 -- float32x4.equal(v, w):比较`v`和`w`对应项是否相等,返回的布尔值组成一个`uint32x4`的值 +`sub`方法接受两个SIMD值作为参数,将它们的每个通道相减,作为一个新的SIMD值返回。 -### SIMD.%type%.add() +```javascript +var a = SIMD.Float32x4(-1, -2, 3, 4); +var b = SIMD.Float32x4(3, 3, 3, 3); +SIMD.Float32x4.sub(a, b) +// Float32x4[-4, -5, 0, 1] +``` -`add`方法接受两个SIMD值作为参数,将它们的每个通道相加,返回一个新的SIMD值。 +`subSaturate`方法跟`sub`方法的作用相同,都是两个通道相减,但是溢出的处理不一致。对于`sub`方法,如果两个值相减发生溢出,溢出的二进制位会被丢弃; `subSaturate`方法则是返回该数据类型的最小值。 ```javascript -var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); -var b = SIMD.Float32x4(5.0, 10.0, 15.0, 20.0); -var c = SIMD.Float32x4.add(a, b); +var a = SIMD.Uint16x8(5, 1, 1, 1, 1, 1, 1, 1); +var b = SIMD.Uint16x8(10, 1, 1, 1, 1, 1, 1, 1); +SIMD.Uint16x8.subSaturate(a, b) +// Uint16x8[0, 0, 0, 0, 0, 0, 0, 0] + +var c = SIMD.Int16x8(-100, 0, 0, 0, 0, 0, 0, 0); +var d = SIMD.Int16x8(32767, 0, 0, 0, 0, 0, 0, 0); +SIMD.Int16x8.subSaturate(c, d) +// Int16x8[-32768, 0, 0, 0, 0, 0, 0, 0, 0] ``` -上面代码中,经过加法运算,新的SIMD值为`(6.0, 12.0, 18.0. 24.0)`。 +上面代码中,`Uint16`的最小值是`0`,`subSaturate`的最小值是`-32678`。一旦运算发生溢出,就返回最小值。 -### SIMD.%type%.mul() +### SIMD.%type%.mul(),SIMD.%type%.div(),SIMD.%type%.sqrt() -`mul`方法接受两个SIMD值作为参数,将它们的每个通道相乘,返回一个新的SIMD值。 +`mul`方法接受两个SIMD值作为参数,将它们的每个通道相乘,作为一个新的SIMD值返回。 ```javascript var a = SIMD.Float32x4(-1, -2, 3, 4); var b = SIMD.Float32x4(3, 3, 3, 3); -SIMD.Float32x4.mul(a, b); +SIMD.Float32x4.mul(a, b) // Float32x4[-3, -6, 9, 12] ``` -### SIMD.%type%.shiftLeftByScalar() +`div`方法接受两个SIMD值作为参数,将它们的每个通道相除,作为一个新的SIMD值返回。 + +```javascript +var a = SIMD.Float32x4(2, 2, 2, 2); +var b = SIMD.Float32x4(4, 4, 4, 4); +SIMD.Float32x4.div(a, b) +// Float32x4[0.5, 0.5, 0.5, 0.5] +``` + +`sqrt`方法接受一个SIMD值作为参数,求出每个通道的平方根,作为一个新的SIMD值返回。 + +```javascript +var b = SIMD.Float64x2(4, 8); +SIMD.Float64x2.sqrt(b) +// Float64x2[2, 2.8284271247461903] +``` + +### SIMD.%FloatType%.reciprocalApproximation(),SIMD.%type%.reciprocalSqrtApproximation() + +`reciprocalApproximation`方法接受一个SIMD值作为参数,求出每个通道的倒数(`1 / x`),作为一个新的SIMD值返回。 + +```javascript +var a = SIMD.Float32x4(1, 2, 3, 4); +SIMD.Float32x4.reciprocalApproximation(a); +// Float32x4[1, 0.5, 0.3333333432674408, 0.25] +``` + +`reciprocalSqrtApproximation`方法接受一个SIMD值作为参数,求出每个通道的平方根的倒数(`1 / (x^0.5)`),作为一个新的SIMD值返回。 + +```javascript +var a = SIMD.Float32x4(1, 2, 3, 4); +SIMD.Float32x4.reciprocalSqrtApproximation(a) +// Float32x4[1, 0.7071067690849304, 0.5773502588272095, 0.5] +``` + +注意,只有浮点数的数据类型才有这两个方法。 + +### SIMD.%IntegerType%.shiftLeftByScalar() -`shiftLeftByScalar`方法接受一个SIMD值作为参数,然后将每个通道的值左移指定的位数,返回一个新的SIMD值。 +`shiftLeftByScalar`方法接受一个SIMD值作为参数,然后将每个通道的值左移指定的位数,作为一个新的SIMD值返回。 ```javascript var a = SIMD.Int32x4(1, 2, 4, 8); @@ -157,7 +235,9 @@ var jx4 = SIMD.Int32x4.shiftLeftByScalar(ix4, 32); // Int32x4[0, 0, 0, 0] ``` -### SIMD.%type%.shiftRightByScalar() +注意,只有整数的数据类型才有这个方法。 + +### SIMD.%IntegerType%.shiftRightByScalar() `shiftRightByScalar`方法接受一个SIMD值作为参数,然后将每个通道的值右移指定的位数,返回一个新的SIMD值。 @@ -177,7 +257,41 @@ SIMD.Uint32x4.shiftRightByScalar(a, 1); 上面代码中,`-8`右移一位变成了`2147483644`,是因为对于32位无符号整数来说,`-8`的二进制形式是`11111111111111111111111111111000`,右移一位就变成了`01111111111111111111111111111100`,相当于`2147483644`。 -## 方法:通道处理 +注意,只有整数的数据类型才有这个方法。 + +## 静态方法:通道处理 + +### SIMD.%type%.check() + +`check`方法用于检查一个值是否为当前类型的SIMD值。如果是的,就返回这个值,否则就报错。 + +```javascript +var a = SIMD.Float32x4(1, 2, 3, 9); + +SIMD.Float32x4.check(a); +// Float32x4[1, 2, 3, 9] + +SIMD.Float32x4.check([1,2,3,4]) // 报错 +SIMD.Int32x4.check(a) // 报错 +SIMD.Int32x4.check('hello world') // 报错 +``` + +### SIMD.%type%.extractLane(),SIMD.%type%.replaceLane() + +`extractLane`方法用于返回给定通道的值。它接受两个参数,分别是SIMD值和通道编号。 + +```javascript +var t = SIMD.Float32x4(1, 2, 3, 4); +SIMD.Float32x4.extractLane(t, 2) // 3 +``` + +`replaceLane`方法用于替换指定通道的值,并返回一个新的SIMD值。它接受三个参数,分别是原来的SIMD值、通道编号和新的通道值。 + +```javascript +var t = SIMD.Float32x4(1, 2, 3, 4); +SIMD.Float32x4.replaceLane(t, 2, 42) +// Float32x4[1, 2, 42, 4] +``` ### SIMD.%type%.load() @@ -214,6 +328,33 @@ SIMD.Int32x4.load3(a, 0); // Int32x4[1, 2, 3,0] ``` +### SIMD.%type%.store() + +`store`方法用于将一个SIMD值,写入一个二进制数组。它接受三个参数,分别是二进制数组、开始写入的数组位置、SIMD值。它返回写入值以后的二进制数组。 + +```javascript +var t1 = new Int32Array(8); +var v1 = SIMD.Int32x4(1, 2, 3, 4); +SIMD.Int32x4.store(t1, 0, v1) +// Int32Array[1, 2, 3, 4, 0, 0, 0, 0] + +var t2 = new Int32Array(8); +var v2 = SIMD.Int32x4(1, 2, 3, 4); +SIMD.Int32x4.store(t2, 2, v2) +// Int32Array[0, 0, 1, 2, 3, 4, 0, 0] +``` + +上面代码中,`t1`是一个二进制数组,`v1`是一个SIMD值,只有四个通道。所以写入`t1`以后,只有前四个位置有值,后四个位置都是0。而`t2`是从2号位置开始写入,所以前两个位置和后两个位置都是0。 + +这个方法还有三个变种`store1()`、`store2()`和`store3()`,表示只写入一个通道、二个通道和三个通道的值。 + +```javascript +var tarray = new Int32Array(8); +var value = SIMD.Int32x4(1, 2, 3, 4); +SIMD.Int32x4.store1(tarray, 0, value); +// Int32Array[1, 0, 0, 0, 0, 0, 0, 0] +``` + ### SIMD.%type%.splat() `splat`方法返回一个新的SIMD值,该值的所有通道都会设成同一个预先给定的值。 @@ -269,30 +410,51 @@ SIMD.Float32x4.shuffle(a, b, 1, 5, 7, 2); 上面代码中,`a`和`b`一共有8个通道,依次编号为0到7。`shuffle`根据编号,取出相应的通道,返回一个新的SIMD值。 -## 方法:比较运算 +## 静态方法:比较运算 + +### SIMD.%type%.equal(),SIMD.%type%.notEqual() + +`equal`方法用来比较两个SIMD值`a`和`b`的每一个通道,根据两者是否精确相等(`a === b`),得到一个布尔值。最后,所有通道的比较结果,组成一个新的SIMD值,作为掩码返回。`notEqual`方法则是比较两个通道是否不相等(`a !== b`)。 + +```javascript +var a = SIMD.Float32x4(1, 2, 3, 9); +var b = SIMD.Float32x4(1, 4, 7, 9); + +SIMD.Float32x4.equal(a,b) +// Bool32x4[true, false, false, true] + +SIMD.Float32x4.notEqual(a,b); +// Bool32x4[false, true, true, false] +``` -### SIMD.%type%.greaterThan() +### SIMD.%type%.greaterThan(),SIMD.%type%.greaterThanOrEqual() -`greatThan`方法用来比较两个SIMD值`a`和`b`的每一个通道,如果在该通道中,`a`较大就得到`true`,否则得到`false`。最后,所有通道的比较结果,会组成一个新的SIMD值,作为掩码返回。 +`greatThan`方法用来比较两个SIMD值`a`和`b`的每一个通道,如果在该通道中,`a`较大就得到`true`,否则得到`false`。最后,所有通道的比较结果,组成一个新的SIMD值,作为掩码返回。`greaterThanOrEqual`则是比较`a`是否大于等于`b`。 ```javascript var a = SIMD.Float32x4(1, 6, 3, 11); var b = SIMD.Float32x4(1, 4, 7, 9); -var mask = SIMD.Float32x4.greaterThan(a,b); +SIMD.Float32x4.greaterThan(a, b) // Bool32x4[false, true, false, true] + +SIMD.Float32x4.greaterThanOrEqual(a, b) +// Bool32x4[true, true, false, true] ``` -### SIMD.%type%.lessThan() +### SIMD.%type%.lessThan(),SIMD.%type%.lessThanOrEqual() -`lessThan`方法用来比较两个SIMD值`a`和`b`的每一个通道,如果在该通道中,`a`较小就得到`true`,否则得到`false`。最后,所有通道的比较结果,会组成一个新的SIMD值,作为掩码返回。 +`lessThan`方法用来比较两个SIMD值`a`和`b`的每一个通道,如果在该通道中,`a`较小就得到`true`,否则得到`false`。最后,所有通道的比较结果,会组成一个新的SIMD值,作为掩码返回。`lessThanOrEqual`方法则是比较`a`是否等于`b`。 ```javascript var a = SIMD.Float32x4(1, 2, 3, 11); var b = SIMD.Float32x4(1, 4, 7, 9); -var mask = SIMD.Float32x4.lessThan(a,b); +SIMD.Float32x4.lessThan(a, b) // Bool32x4[false, true, true, false] + +SIMD.Float32x4.lessThanOrEqual(a, b) +// Bool32x4[true, true, true, false] ``` ### SIMD.%type%.select() @@ -326,7 +488,7 @@ var result = SIMD.Float32x4.select(mask, a, b); 上面代码中,先通过`lessThan`方法生成一个掩码,然后通过`select`方法生成一个由每个通道的较小值组成的新的SIMD值。 -### SIMD.%type%.allTrue(),SIMD.%type%.anyTrue() +### SIMD.%BooleanType%.allTrue(),SIMD.%BooleanType%.anyTrue() `allTrue`方法接受一个SIMD值作为参数,然后返回一个布尔值,表示该SIMD值的所有通道是否都为`true`。 @@ -348,6 +510,8 @@ SIMD.Bool32x4.anyTrue(a); // false SIMD.Bool32x4.anyTrue(b); // true ``` +注意,只有四种布尔值数据类型(`Bool32x4`、`Bool16x8`、`Bool8x16`、`Bool64x2`)才有这两个方法。 + 这两个方法通常与比较运算符结合使用。 ```javascript @@ -360,7 +524,7 @@ var b2 = SIMD.Int32x4.anyTrue(ix4); // true ### SIMD.%type%.min(),SIMD.%type%.minNum() -`min`方法接受两个SIMD值作为参数,将它们的每个通道的较小值,组成一个新的SIMD值返回。 +`min`方法接受两个SIMD值作为参数,将两者的对应通道的较小值,组成一个新的SIMD值返回。 ```javascript var a = SIMD.Float32x4(-1, -2, 3, 5.2); @@ -369,7 +533,7 @@ SIMD.Float32x4.min(a, b); // Float32x4[-1, -4, 3, 5.2] ``` -如果有一个通道的值是`NaN`,则会返回`NaN`。 +如果有一个通道的值是`NaN`,则会优先返回`NaN`。 ```javascript var c = SIMD.Float64x2(NaN, Infinity) @@ -378,7 +542,7 @@ SIMD.Float64x2.min(c, d); // Float64x2[NaN, 42] ``` -`minNum`方法与`min`方法的作用一模一样,唯一的区别是如果有一个通道的值是`NaN`,则会优先返回另一个通道的值。 +`minNum`方法与`min`的作用一模一样,唯一的区别是如果有一个通道的值是`NaN`,则会优先返回另一个通道的值。 ```javascript var ax4 = SIMD.Float32x4(1.0, 2.0, NaN, NaN); @@ -389,6 +553,130 @@ var dx4 = SIMD.Float32x4.minNum(ax4, bx4); // Float32x4[1.0, 1.0, 3.0, NaN] ``` +### SIMD.%type%.max(),SIMD.%type%.maxNum() + +`max`方法接受两个SIMD值作为参数,将两者的对应通道的较大值,组成一个新的SIMD值返回。 + +```javascript +var a = SIMD.Float32x4(-1, -2, 3, 5.2); +var b = SIMD.Float32x4(0, -4, 6, 5.5); +SIMD.Float32x4.max(a, b); +// Float32x4[0, -2, 6, 5.5] +``` + +如果有一个通道的值是`NaN`,则会优先返回`NaN`。 + +```javascript +var c = SIMD.Float64x2(NaN, Infinity) +var d = SIMD.Float64x2(1337, 42); +SIMD.Float64x2.max(c, d) +// Float64x2[NaN, Infinity] +``` + +`maxNum`方法与`max`的作用一模一样,唯一的区别是如果有一个通道的值是`NaN`,则会优先返回另一个通道的值。 + +```javascript +var c = SIMD.Float64x2(NaN, Infinity) +var d = SIMD.Float64x2(1337, 42); +SIMD.Float64x2.maxNum(c, d) +// Float64x2[1337, Infinity] +``` + +## 静态方法:位运算 + +### SIMD.%type%.and(),SIMD.%type%.or(),SIMD.%type%.xor(),SIMD.%type%.not() + +`and`方法接受两个SIMD值作为参数,返回两者对应的通道进行二进制`AND`运算(`&`)后得到的新的SIMD值。 + +```javascript +var a = SIMD.Int32x4(1, 2, 4, 8); +var b = SIMD.Int32x4(5, 5, 5, 5); +SIMD.Int32x4.and(a, b) +// Int32x4[1, 0, 4, 0] +``` + +上面代码中,以通道`0`为例,`1`的二进制形式是`0001`,`5`的二进制形式是`01001`,所以进行`AND`运算以后,得到`0001`。 + +`or`方法接受两个SIMD值作为参数,返回两者对应的通道进行二进制`OR`运算(`|`)后得到的新的SIMD值。 + +```javascript +var a = SIMD.Int32x4(1, 2, 4, 8); +var b = SIMD.Int32x4(5, 5, 5, 5); +SIMD.Int32x4.or(a, b) +// Int32x4[5, 7, 5, 13] +``` + +`xor`方法接受两个SIMD值作为参数,返回两者对应的通道进行二进制”异或“运算(`^`)后得到的新的SIMD值。 + +```javascript +var a = SIMD.Int32x4(1, 2, 4, 8); +var b = SIMD.Int32x4(5, 5, 5, 5); +SIMD.Int32x4.xor(a, b) +// Int32x4[4, 7, 1, 13] +``` + +`not`方法接受一个SIMD值作为参数,返回每个通道进行二进制”否“运算(`~`)后得到的新的SIMD值。 + +```javascript +var a = SIMD.Int32x4(1, 2, 4, 8); +SIMD.Int32x4.not(a) +// Int32x4[-2, -3, -5, -9] +``` + +上面代码中,`1`的否运算之所以得到`-2`,是因为在计算机内部,负数采用”2的补码“这种形式进行表示。也就是说,整数`n`的负数形式`-n`,是对每一个二进制位取反以后,再加上1。因此,直接取反就相当于负数形式再减去1,比如`1`的负数形式是`-1`,再减去1,就得到了`-2`。 + +## 静态方法:数据类型转换 + +SIMD提供以下方法,用来将一种数据类型转为另一种数据类型。 + +- `SIMD.%type%.fromFloat32x4()` +- `SIMD.%type%.fromFloat32x4Bits()` +- `SIMD.%type%.fromFloat64x2Bits()` +- `SIMD.%type%.fromInt32x4()` +- `SIMD.%type%.fromInt32x4Bits()` +- `SIMD.%type%.fromInt16x8Bits()` +- `SIMD.%type%.fromInt8x16Bits()` +- `SIMD.%type%.fromUint32x4()` +- `SIMD.%type%.fromUint32x4Bits()` +- `SIMD.%type%.fromUint16x8Bits()` +- `SIMD.%type%.fromUint8x16Bits()` + +带有`Bits`后缀的方法,会原封不动地将二进制位拷贝到新的数据类型;不带后缀的方法,则会进行数据类型转换。 + +```javascript +var t = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); +SIMD.Int32x4.fromFloat32x4(t); +// Int32x4[1, 2, 3, 4] + +SIMD.Int32x4.fromFloat32x4Bits(t); +// Int32x4[1065353216, 1073741824, 1077936128, 1082130432] +``` + +上面代码中,`fromFloat32x4`是将浮点数转为整数,然后存入新的数据类型;`fromFloat32x4Bits`则是将二进制位原封不动地拷贝进入新的数据类型,然后进行解读。 + +`Bits`后缀的方法,还可以用于通道数目不对等的拷贝。 + +```javascript +var t = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); +SIMD.Int16x8.fromFloat32x4Bits(t); +// Int16x8[0, 16256, 0, 16384, 0, 16448, 0, 16512] +``` + +上面代码中,原始SIMD值`t`是4通道的,而目标值是8通道的。 + +如果数据转换时,原通道的数据大小,超过了目标通道的最大宽度,就会报错。 + +## 实例方法 + +### SIMD.%type%.prototype.toString() + +`toString`方法返回一个SIMD值的字符串形式。 + +```javascript +var a = SIMD.Float32x4(11, 22, 33, 44); +a.toString() // "SIMD.Float32x4(11, 22, 33, 44)" +``` + ## 实例:求平均值 正常模式下,计算`n`个值的平均值,需要运算`n`次。 @@ -426,33 +714,6 @@ function average(list) { 上面代码先是每隔四位,将所有的值读入一个SIMD,然后立刻累加。然后,得到累加值四个通道的总和,再除以`n`就可以了。 -## 二进制数组 - -SIMD可以与二进制数组结合,生成数组实例。 - -```javascript -var _f64x2 = new Float64Array(_f32x4.buffer); -var _i32x4 = new Int32Array(_f32x4.buffer); -var _i16x8 = new Int16Array(_f32x4.buffer); -var _i8x16 = new Int8Array(_f32x4.buffer); -var _ui32x4 = new Uint32Array(_f32x4.buffer); -var _ui16x8 = new Uint16Array(_f32x4.buffer); -var _ui8x16 = new Uint8Array(_f32x4.buffer); -``` - -下面是一个例子。 - -```javascript -// a 和 b 是float32x4数组实例 -function addArrays(a, b) { - var c = new Float32x4Array(a.length); - for (var i = 0; i < a.length; i++) { - c[i] = SIMD.float32x4.add(a[i], b[i]); - } - return c; -} -``` - ## 参考链接 - TC39, [SIMD.js Stage 2](https://docs.google.com/presentation/d/1MY9NHrHmL7ma7C8dyNXvmYNNGgVmmxXk8ZIiQtPlfH4/edit#slide=id.p19) diff --git a/sidebar.md b/sidebar.md index c4133f260..ce4ede529 100644 --- a/sidebar.md +++ b/sidebar.md @@ -17,7 +17,6 @@ 1. [对象的扩展](#docs/object) 1. [Symbol](#docs/symbol) 1. [Proxy和Reflect](#docs/proxy) -1. [二进制数组](#docs/arraybuffer) 1. [Set和Map数据结构](#docs/set-map) 1. [Iterator和for...of循环](#docs/iterator) 1. [Generator函数](#docs/generator) @@ -28,6 +27,8 @@ 1. [Module](#docs/module) 1. [编程风格](#docs/style) 1. [读懂规格](#docs/spec) +1. [二进制数组](#docs/arraybuffer) +1. [SIMD](#docs/simd) 1. [参考链接](#docs/reference) ## 其他 From 20f27c28335931b4325b9e4d555ab2224689ca2e Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 4 Oct 2016 18:50:56 +0800 Subject: [PATCH 107/994] docs(reference): edit reference --- docs/reference.md | 23 +++++++++++++++-------- docs/simd.md | 6 ------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/docs/reference.md b/docs/reference.md index 639e61ae0..2aee99072 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -114,14 +114,6 @@ - Axel Rauschmayer, [Customizing ES6 via well-known symbols](http://www.2ality.com/2015/09/well-known-symbols-es6.html) - Derick Bailey, [Creating A True Singleton In Node.js, With ES6 Symbols](https://derickbailey.com/2016/03/09/creating-a-true-singleton-in-node-js-with-es6-symbols/) -## 二进制数组 - -- Ilmari Heikkinen, [Typed Arrays: Binary Data in the Browser](http://www.html5rocks.com/en/tutorials/webgl/typed_arrays/) -- Khronos, [Typed Array Specification](http://www.khronos.org/registry/typedarray/specs/latest/) -- Ian Elliot, [Reading A BMP File In JavaScript](http://www.i-programmer.info/projects/36-web/6234-reading-a-bmp-file-in-javascript.html) -- Renato Mangini, [How to convert ArrayBuffer to and from String](http://updates.html5rocks.com/2012/06/How-to-convert-ArrayBuffer-to-and-from-String) -- Axel Rauschmayer, [Typed Arrays in ECMAScript 6](http://www.2ality.com/2015/09/typed-arrays.html) - ## Set和Map - Mozilla Developer Network, [WeakSet](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet):介绍WeakSet数据结构 @@ -202,6 +194,21 @@ - Ben Newman, [The Importance of import and export](http://benjamn.github.io/empirenode-2015/#/): ES6模块的设计思想 - ESDiscuss, [Why is "export default var a = 1;" invalid syntax?](https://esdiscuss.org/topic/why-is-export-default-var-a-1-invalid-syntax) +## 二进制数组 + +- Ilmari Heikkinen, [Typed Arrays: Binary Data in the Browser](http://www.html5rocks.com/en/tutorials/webgl/typed_arrays/) +- Khronos, [Typed Array Specification](http://www.khronos.org/registry/typedarray/specs/latest/) +- Ian Elliot, [Reading A BMP File In JavaScript](http://www.i-programmer.info/projects/36-web/6234-reading-a-bmp-file-in-javascript.html) +- Renato Mangini, [How to convert ArrayBuffer to and from String](http://updates.html5rocks.com/2012/06/How-to-convert-ArrayBuffer-to-and-from-String) +- Axel Rauschmayer, [Typed Arrays in ECMAScript 6](http://www.2ality.com/2015/09/typed-arrays.html) + +## SIMD + +- TC39, [SIMD.js Stage 2](https://docs.google.com/presentation/d/1MY9NHrHmL7ma7C8dyNXvmYNNGgVmmxXk8ZIiQtPlfH4/edit#slide=id.p19) +- MDN, [SIMD](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD) +- TC39, [ECMAScript SIMD](https://github.com/tc39/ecmascript_simd) +- Axel Rauschmayer, [JavaScript gains support for SIMD](http://www.2ality.com/2013/12/simd-js.html) + ## 工具 - Babel, [Babel Handbook](https://github.com/thejameskyle/babel-handbook/tree/master/translations/en): Babel的用法介绍 diff --git a/docs/simd.md b/docs/simd.md index 09473a2d8..a151fff45 100644 --- a/docs/simd.md +++ b/docs/simd.md @@ -714,9 +714,3 @@ function average(list) { 上面代码先是每隔四位,将所有的值读入一个SIMD,然后立刻累加。然后,得到累加值四个通道的总和,再除以`n`就可以了。 -## 参考链接 - -- TC39, [SIMD.js Stage 2](https://docs.google.com/presentation/d/1MY9NHrHmL7ma7C8dyNXvmYNNGgVmmxXk8ZIiQtPlfH4/edit#slide=id.p19) -- MDN, [SIMD](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD) -- TC39, [ECMAScript SIMD](https://github.com/tc39/ecmascript_simd) -- Axel Rauschmayer, [JavaScript gains support for SIMD](http://www.2ality.com/2013/12/simd-js.html) From 0465e7b34ae03fd07298c16ad56df0cfea49f1b3 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 6 Oct 2016 19:57:16 +0800 Subject: [PATCH 108/994] docs(let): edit let --- docs/let.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/let.md b/docs/let.md index 74ef3f0fe..b8c01e45a 100644 --- a/docs/let.md +++ b/docs/let.md @@ -18,16 +18,16 @@ b // 1 上面代码在代码块之中,分别用`let`和`var`声明了两个变量。然后在代码块之外调用这两个变量,结果`let`声明的变量报错,`var`声明的变量返回了正确的值。这表明,`let`声明的变量只在它所在的代码块有效。 -`for`循环的计数器,就很合适使用let命令。 +`for`循环的计数器,就很合适使用`let`命令。 ```javascript -for (let i = 0; i < arr.length; i++) {} +for (let i = 0; i < 10; i++) {} console.log(i); //ReferenceError: i is not defined ``` -上面代码的计数器`i`,只在`for`循环体内有效。 +上面代码中,计数器`i`只在`for`循环体内有效,在循环体外引用就会报错。 下面的代码如果使用`var`,最后输出的是10。 From 3a1b3690c713427701f817f7edae5ca129b0fe5d Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 7 Oct 2016 12:05:29 +0800 Subject: [PATCH 109/994] docs(intro): edit intro --- docs/intro.md | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index d6f532a64..fdc849000 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -2,10 +2,6 @@ ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 -标准的制定者有计划,以后每年发布一次标准,使用年份作为版本。因为ES6的第一个版本是在2015年发布的,所以又称ECMAScript 2015(简称ES2015)。 - -2016年6月,小幅修订的《ECMAScript 2016 标准》(简称 ES2016)如期发布。由于变动非常小(只新增了数组实例的`includes`方法和指数运算符),因此 ES2016 与 ES2015 基本上是同一个标准,都被看作是 ES6。根据计划,2017年6月将发布 ES2017。 - ## ECMAScript和JavaScript的关系 一个常见的问题是,ECMAScript和JavaScript到底是什么关系? @@ -16,6 +12,24 @@ ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已 因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。日常场合,这两个词是可以互换的。 +## ES6与ECMAScript 2015的关系 + +媒体里面经常可以看到”ECMAScript 2015“这个词,它与ES6是什么关系呢? + +2011年,ECMAScript 5.1版发布后,就开始制定6.0版了。因此,”ES6”这个词的原意,就是指JavaScript语言的下一个版本。 + +但是,因为这个版本引入的语法功能太多,而且制定过程当中,还有很多组织和个人不断提交新功能。事情很快就变得清楚了,不可能在一个版本里面包括所有将要引入的功能。常规的做法是先发布6.0版,过一段时间再发6.1版,然后是6.2版、6.3版等等。 + +但是,标准的制定者不想这样做。他们想让标准的升级成为常规流程:任何人在任何时候,都可以向标准委员会提交新语法的提案,然后标准委员会每个月开一次会,评估这些提案是否可以接受,需要哪些改进。如果经过多次会议以后,一个提案足够成熟了,就可以正式进入标准了。这就是说,标准的版本升级成为了一个不断滚动的流程,每个月都会有变动。 + +标准委员会最终决定,标准在每年的6月份正式发布一次,作为当年的正式版本。接下来的时间,就在这个版本的基础上做改动,直到下一年的6月份,草案就自然变成了新一年的版本。这样一来,就不需要以前的版本号了,只要用年份标记就可以了。 + +ES6的第一个版本,就这样在2015年6月发布了,正式名称就是《ECMAScript 2015标准》(简称ES2015)。2016年6月,小幅修订的《ECMAScript 2016标准》(简称ES2016)如期发布,这个版本可以看作是ES6.1版,因为两者的差异非常小(只新增了数组实例的`includes`方法和指数运算符),基本上是同一个标准。根据计划,2017年6月将发布ES2017标准。 + +因此,ES6既是一个历史名词,也是一个泛指,含义是5.1版以后的JavaScript的下一代标准,涵盖了ES2015、ES2016、ES2017等等。ES2015则是正式名称,特指该年发布的正式版本的语言标准。 + +本书的目标是介绍5.1版本以后所有的新语法,不仅包括已经写入标准的语法,还包括正在讨论的、已经纳入标准的提案。书中提到“ES6”的地方,都是这个泛指的含义。 + ## ECMAScript的历史 ES6从开始制定到最后发布,整整用了15年。 From d95493c10af01f0b54d66f3172ea04beeeaaae42 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 7 Oct 2016 12:51:15 +0800 Subject: [PATCH 110/994] docs(intro): edit intro --- docs/intro.md | 67 +++++++++++---------------------------------------- 1 file changed, 14 insertions(+), 53 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index fdc849000..b651f7e61 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -26,9 +26,21 @@ ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已 ES6的第一个版本,就这样在2015年6月发布了,正式名称就是《ECMAScript 2015标准》(简称ES2015)。2016年6月,小幅修订的《ECMAScript 2016标准》(简称ES2016)如期发布,这个版本可以看作是ES6.1版,因为两者的差异非常小(只新增了数组实例的`includes`方法和指数运算符),基本上是同一个标准。根据计划,2017年6月将发布ES2017标准。 -因此,ES6既是一个历史名词,也是一个泛指,含义是5.1版以后的JavaScript的下一代标准,涵盖了ES2015、ES2016、ES2017等等。ES2015则是正式名称,特指该年发布的正式版本的语言标准。 +因此,ES6既是一个历史名词,也是一个泛指,含义是5.1版以后的JavaScript的下一代标准,涵盖了ES2015、ES2016、ES2017等等,而ES2015则是正式名称,特指该年发布的正式版本的语言标准。本书中提到“ES6”的地方,一般是指ES2015标准,但有时也是泛指“下一代JavaScript语言”。 -本书的目标是介绍5.1版本以后所有的新语法,不仅包括已经写入标准的语法,还包括正在讨论的、已经纳入标准的提案。书中提到“ES6”的地方,都是这个泛指的含义。 +## 语法提案的批准流程 + +任何人都可以向TC39标准委员会提案。一种新的语法从提案到变成正式标准,需要经历五个阶段。每个阶段的变动都需要由TC39委员会批准。 + +- Stage 0 - Strawman(展示阶段) +- Stage 1 - Proposal(征求意见阶段) +- Stage 2 - Draft(草案阶段) +- Stage 3 - Candidate(候选人阶段) +- Stage 4 - Finished(定案阶段) + +一个提案只要能进入Stage 2,就差不多等于肯定会包括在以后的正式标准里面。ECMAScript当前的所有提案,可以在TC39的官方网站[Github.com/tc39/ecma262](https://github.com/tc39/ecma262)查看。 + +本书的写作目标之一,是跟踪ECMAScript语言的最新进展,介绍5.1版本以后所有的新语法。对于那些明确将要列入标准的新语法,尤其是那些Babel转码器(详见后文)已经支持的功能,也将予以介绍。 ## ECMAScript的历史 @@ -635,54 +647,3 @@ fs.writeFileSync('out.js', result.js); fs.writeFileSync('out.js.map', result.sourceMap); ``` -## ECMAScript 7 - -2013年3月,ES6的草案封闭,不再接受新功能了。新的功能将被加入ES7。 - -任何人都可以向TC39提案,从提案到变成正式标准,需要经历五个阶段。每个阶段的变动都需要由TC39委员会批准。 - -- Stage 0 - Strawman(展示阶段) -- Stage 1 - Proposal(征求意见阶段) -- Stage 2 - Draft(草案阶段) -- Stage 3 - Candidate(候选人阶段) -- Stage 4 - Finished(定案阶段) - -一个提案只要能进入Stage 2,就差不多等于肯定会包括在ES7里面。 - -本书的写作目标之一,是跟踪ECMAScript语言的最新进展。对于那些明确的、或者很有希望列入ES7的功能,尤其是那些Babel已经支持的功能,都将予以介绍。 - -本书介绍的ES7功能清单如下。 - -**Stage 0**: - -- Function Bind Syntax:函数的绑定运算符 -- String.prototype.at:字符串的静态方法at - -**Stage 1**: - -- Class and Property Decorators:Class的修饰器 -- Class Property Declarations:Class的属性声明 -- Additional export-from Statements:export的写法改进 -- String.prototype.{trimLeft,trimRight}:字符串删除头尾空格的方法 - -**Stage 2**: - -- Rest/Spread Properties:对象的Rest参数和扩展运算符 - -**Stage 3** - -- SIMD API:“单指令,多数据”命令集 -- Async Functions:async函数 -- Object.values/Object.entries:Object的静态方法values()和entries() -- String padding:字符串长度补全 -- Trailing commas in function parameter lists and calls:函数参数的尾逗号 -- Object.getOwnPropertyDescriptors:Object的静态方法getOwnPropertyDescriptors - -**Stage 4**: - -- Array.prototype.includes:数组实例的includes方法 -- Exponentiation Operator:指数运算符 - -ECMAScript当前的所有提案,可以在TC39的官方网站[Github.com/tc39/ecma262](https://github.com/tc39/ecma262)查看。 - -Babel转码器可以通过安装和使用插件来使用各个stage的语法。 From ddf6220289809897b08224be589a8206dd45392b Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 8 Oct 2016 01:35:33 +0800 Subject: [PATCH 111/994] docs(let): edit let/global --- docs/let.md | 73 +++++++++++++++++++++++++++++++++++++++++++---- docs/reference.md | 1 + 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/docs/let.md b/docs/let.md index b8c01e45a..b4c2f64de 100644 --- a/docs/let.md +++ b/docs/let.md @@ -533,9 +533,9 @@ var constantize = (obj) => { ES5只有两种声明变量的方法:`var`命令和`function`命令。ES6除了添加`let`和`const`命令,后面章节还会提到,另外两种声明变量的方法:`import`命令和`class`命令。所以,ES6一共有6种声明变量的方法。 -## 全局对象的属性 +## 顶层对象的属性 -全局对象是最顶层的对象,在浏览器环境指的是`window`对象,在Node.js指的是`global`对象。ES5之中,全局对象的属性与全局变量是等价的。 +顶层对象,在浏览器环境指的是`window`对象,在Node指的是`global`对象。ES5之中,顶层对象的属性与全局变量是等价的。 ```javascript window.a = 1; @@ -545,11 +545,11 @@ a = 2; window.a // 2 ``` -上面代码中,全局对象的属性赋值与全局变量的赋值,是同一件事。(对于Node来说,这一条只对REPL环境适用,模块环境之中,全局变量必须显式声明成`global`对象的属性。) +上面代码中,顶层对象的属性赋值与全局变量的赋值,是同一件事。 -未声明的全局变量,自动成为全局对象`window`的属性,这被认为是JavaScript语言最大的设计败笔之一。这样的设计带来了两个很大的问题,首先是没法在编译时就报出变量未声明的错误,只有运行时才能知道,其次程序员很容易不知不觉地就创建了全局变量(比如打字出错)。另一方面,从语义上讲,语言的顶层对象是一个有实体含义的对象,也是不合适的。 +顶层对象的属性与全局变量挂钩,被认为是JavaScript语言最大的设计败笔之一。这样的设计带来了两个很大的问题,首先是没法在编译时就报出变量未声明的错误,只有运行时才能知道(因为全局变量可能是顶层对象的属性创造的,而属性的创造是动态的);其次,程序员很容易不知不觉地就创建了全局变量(比如打字出错)。另一方面,`window`对象有实体含义,指的是浏览器的窗口对象,顶层对象是一个有实体含义的对象,也是不合适的。 -ES6为了改变这一点,一方面规定,为了保持兼容性,`var`命令和`function`命令声明的全局变量,依旧是全局对象的属性;另一方面规定,`let`命令、`const`命令、`class`命令声明的全局变量,不属于全局对象的属性。也就是说,从ES6开始,全局变量将逐步与全局对象的属性脱钩。 +ES6为了改变这一点,一方面规定,为了保持兼容性,`var`命令和`function`命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,`let`命令、`const`命令、`class`命令声明的全局变量,不属于顶层对象的属性。也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩。 ```javascript var a = 1; @@ -561,4 +561,65 @@ let b = 1; window.b // undefined ``` -上面代码中,全局变量`a`由`var`命令声明,所以它是全局对象的属性;全局变量`b`由`let`命令声明,所以它不是全局对象的属性,返回`undefined`。 +上面代码中,全局变量`a`由`var`命令声明,所以它是顶层对象的属性;全局变量`b`由`let`命令声明,所以它不是顶层对象的属性,返回`undefined`。 + +## 顶层对象 + +ES5的顶层对象,本身也是一个问题,因为它在各种实现里面是不统一的。 + +- 浏览器里面,顶层对象是`window`,但Node和Web Worker没有`window`。 +- 浏览器和Web Worker里面,`self`也指向顶层对象,但是Node没有`self`。 +- Node里面,顶层对象是`global`,但其他环境都不支持。 + +为了能够在各种环境,都能取到顶层对象,现在一般是使用`this`变量。 + +- 全局环境中,`this`会返回顶层对象。但是,Node模块和ES6模块中,`this`返回的是当前模块。 +- 函数里面的`this`,如果函数不是作为对象的方法运行,而是单纯作为函数运行,`this`会指向顶层对象。但是,严格模式下,这时`this`会返回`undefined`。 +- 不管是严格模式,还是普通模式,`new Function('return this')()`,总是会返回全局对象。但是,如果浏览器用了CSP(Content Security Policy,内容安全政策),那么`eval`、`new Function`这些方法都可能无法使用。 + +综上所述,很难找到一种方法,可以在所有情况下,都取到顶层对象。下面是两种勉强可以使用的方法。 + +```javascript +// 方法一 +(typeof window !== 'undefined' + ? window + : (typeof process === 'object' && + typeof require === 'function' && + typeof global === 'object') + ? global + : this); + +// 方法二 +var getGlobal = function () { + if (typeof self !== 'undefined') { return self; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + throw new Error('unable to locate global object'); +}; +``` + +现在有一个[提案](https://github.com/tc39/proposal-global),在语言标准的层面,引入`global`作为顶层对象。也就是说,在所有环境下,`global`都是存在的,都可以从它拿到顶层对象。 + +垫片库[`system.global`](https://github.com/ljharb/System.global)模拟了这个提案,可以在所有环境拿到`global`。 + +```javascript +// CommonJS的写法 +require('system.global/shim')(); + +// ES6模块的写法 +import shim from 'system.global/shim'; shim(); +``` + +上面代码可以保证`global`对象存在。 + +```javascript +// CommonJS的写法 +var global = require('system.global')(); + +// ES6模块的写法 +import getGlobal from 'system.global'; +const global = getGlobal(); +``` + +上面代码将顶层对象放入一个变量。 + diff --git a/docs/reference.md b/docs/reference.md index 2aee99072..38af7881c 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -40,6 +40,7 @@ - Axel Rauschmayer, [Variables and scoping in ECMAScript 6](http://www.2ality.com/2015/02/es6-scoping.html): 讨论块级作用域与let和const的行为 - Nicolas Bevacqua, [ES6 Let, Const and the “Temporal Dead Zone” (TDZ) in Depth](http://ponyfoo.com/articles/es6-let-const-and-temporal-dead-zone-in-depth) - acorn, [Function statements in strict mode](https://github.com/ternjs/acorn/issues/118): 块级作用域对严格模式的函数声明的影响 +- Axel Rauschmayer, [ES proposal: global](http://www.2ality.com/2016/09/global.html): 顶层对象`global` ## 解构赋值 From 70ab40fd3d5743e0e40df701c841dd4fdcd95d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B3=96=E9=A5=BC?= Date: Sun, 9 Oct 2016 10:30:20 +0800 Subject: [PATCH 112/994] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/string.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/string.md b/docs/string.md index e3677c170..c1f22c4b6 100644 --- a/docs/string.md +++ b/docs/string.md @@ -899,7 +899,7 @@ String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2); 前面提到标签模板里面,可以内嵌其他语言。但是,模板字符串默认会将字符串转义,因此导致了无法嵌入其他语言。 -举例来说,在标签模板里面可以潜入Latex语言。 +举例来说,在标签模板里面可以嵌入Latex语言。 ```javascript function latex(strings) { From e364ba968ae2dd2ab80f3182774892dc0c246b1d Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 12 Oct 2016 22:22:23 +0800 Subject: [PATCH 113/994] docs(async): async Iterator --- docs/async.md | 221 ++++++++++++++++++++++++++++++++++++++++++++-- docs/iterator.md | 21 ++++- docs/let.md | 8 +- docs/reference.md | 1 + 4 files changed, 239 insertions(+), 12 deletions(-) diff --git a/docs/async.md b/docs/async.md index de938a8ee..257d4bb6f 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1254,9 +1254,9 @@ async function chainAnimationsAsync(elem, animations) { ## 异步遍历器 -《遍历器》一章说过,Iterator接口是一种数据遍历的协议,只要调用遍历器的`next`方法,就会得到一个对象值`{value, done}`。其中,`value`表示当前的数据的值,`done`是一个布尔值,表示遍历是否结束。 +《遍历器》一章说过,Iterator接口是一种数据遍历的协议,只要调用遍历器对象的`next`方法,就会得到一个表示当前成员信息的对象`{value, done}`。其中,`value`表示当前的数据的值,`done`是一个布尔值,表示遍历是否结束。 -这意味着,`next`方法是同步的,只要调用就必须立刻返回值。也就是说,一旦执行`next`方法,就必须同步地得到`value`和`done`这两方面的信息。这对于同步操作,当然没有问题,但对于异步操作,就不太合适了。目前的解决方法是,Generator函数里面的异步操作,返回一个Thunk函数或者Promise对象,即`value`属性是一个Thunk函数或者Promise对象,等待以后返回真正的值,而`done`属性则还是同步产生的。 +这隐含着规定,`next`方法是同步的,只要调用就必须立刻返回值。也就是说,一旦执行`next`方法,就必须同步地得到`value`和`done`这两方面的信息。这对于同步操作,当然没有问题,但对于异步操作,就不太合适了。目前的解决方法是,Generator函数里面的异步操作,返回一个Thunk函数或者Promise对象,即`value`属性是一个Thunk函数或者Promise对象,等待以后返回真正的值,而`done`属性则还是同步产生的。 目前,有一个[提案](https://github.com/tc39/proposal-async-iteration),为异步操作提供原生的遍历器接口,即`value`和`done`这两个属性都是异步产生,这称为”异步遍历器“(Async Iterator)。 @@ -1276,17 +1276,104 @@ asyncIterator 我们知道,一个对象的同步遍历器的接口,部署在`Symbol.iterator`属性上面。同样地,对象的异步遍历器接口,部署在`Symbol.asyncIterator`属性上面。不管是什么样的对象,只要它的`Symbol.asyncIterator`属性有值,就表示应该对它进行异步遍历。 +下面是一个异步遍历器的例子。 + +```javascript +const asyncIterable = createAsyncIterable(['a', 'b']); +const asyncIterator = someCollection[Symbol.asyncIterator](); + +asyncIterator.next() +.then(iterResult1 => { + console.log(iterResult1); // { value: 'a', done: false } + return asyncIterator.next(); +}).then(iterResult2 => { + console.log(iterResult2); // { value: 'b', done: false } + return asyncIterator.next(); +}).then(iterResult3 => { + console.log(iterResult3); // { value: undefined, done: true } +}); +``` + +上面代码中,异步遍历器其实返回了两次值。第一次调用的时候,返回一个Promise对象;等到Promise对象`resolve`了,再返回一个表示当前数据成员信息的对象。这就是说,异步遍历器与同步遍历器最终行为是一致的,只是会先返回Promise对象,作为中介。 + +由于异步遍历器的`next`方法,返回的是一个Promise对象。因此,可以把它放在`await`命令后面。 + +```javascript +async function f() { + const asyncIterable = createAsyncIterable(['a', 'b']); + const asyncIterator = asyncIterable[Symbol.asyncIterator](); + console.log(await asyncIterator.next()); + // { value: 'a', done: false } + console.log(await asyncIterator.next()); + // { value: 'b', done: false } + console.log(await asyncIterator.next()); + // { value: undefined, done: true } +} +``` + +上面代码中,`next`方法用`await`处理以后,就不必使用`then`方法了。整个流程已经很接近同步处理了。 + +注意,异步遍历器的`next`方法是可以连续调用的,不必等到上一步产生的Promise对象`resolve`以后再调用。这种情况下,`next`方法会累积起来,自动按照每一步的顺序运行下去。下面是一个例子,把所有的`next`方法放在`Promise.all`方法里面。 + +```javascript +const asyncGenObj = createAsyncIterable(['a', 'b']); +const [{value: v1}, {value: v2}] = await Promise.all([ + asyncGenObj.next(), asyncGenObj.next() +]); + +console.log(v1, v2); // a b +``` + +另一种用法是一次性调用所有的`next`方法,然后`await`最后一步操作。 + +```javascript +const writer = openFile('someFile.txt'); +writer.next('hello'); +writer.next('world'); +await writer.return(); +``` + ### for await...of 前面介绍过,`for...of`循环用于遍历同步的Iterator接口。新引入的`for await...of`循环,则是用于遍历异步的Iterator接口。 ```javascript -for await (const line of readLines(filePath)) { - console.log(line); +async function f() { + for await (const x of createAsyncIterable(['a', 'b'])) { + console.log(x); + } } +// a +// b ``` -上面代码中,`readLines`函数返回一个异步遍历器,每次调用它的`next`方法,就会返回一个Promise对象。`await`表示等待这个Promise对象`resolve`,一旦完成,变量`line`就是Promise对象返回的`value`值。 +上面代码中,`createAsyncIterable()`返回一个异步遍历器,`for...of`循环自动调用这个遍历器的`next`方法,会得到一个Promise对象。`await`用来处理这个Promise对象,一旦`resolve`,就把得到的值(`x`)传入`for...of`的循环体。 + +如果`next`方法返回的Promise对象被`reject`,那么就要用`try...catch`捕捉。 + +```javascript +async function () { + try { + for await (const x of createRejectingIterable()) { + console.log(x); + } + } catch (e) { + console.error(e); + } +} +``` + +注意,`for await...of`循环也可以用于同步遍历器。 + +```javascript +(async function () { + for await (const x of ['a', 'b']) { + console.log(x); + } +})(); +// a +// b +``` ### 异步Generator函数 @@ -1308,6 +1395,126 @@ async function* readLines(path) { } ``` -上面代码中,异步操作前面使用`await`关键字标明,`next`方法所在的中断之处使用`yield`关键字标明。 +上面代码中,异步操作前面使用`await`关键字标明,即`await`后面的操作,应该返回Promise对象。凡是使用`yield`关键字的地方,就是`next`方法的停下来的地方,它后面的表达式的值(即`await file.readLine()`的值),会作为`next()`返回对象的`value`属性,这一点是于同步Generator函数一致的。 + +可以像下面这样,使用上面代码定义的异步Generator函数。 -注意,普通的`async`函数返回的是一个Promise对象,而异步Generator函数返回的是一个异步Iterator对象。 +```javascript +for await (const line of readLines(filePath)) { + console.log(line); +} +``` + +异步Generator函数可以与`for await...of`循环结合起来使用。 + +```javascript +async function* prefixLines(asyncIterable) { + for await (const line of asyncIterable) { + yield '> ' + line; + } +} +``` + +`yield`命令依然是立刻返回的,但是返回的是一个Promise对象。 + +```javascript +async function* asyncGenerator() { + console.log('Start'); + const result = await doSomethingAsync(); // (A) + yield 'Result: '+ result; // (B) + console.log('Done'); +} +``` + +上面代码中,调用`next`方法以后,会在`B`处暂停执行,`yield`命令立刻返回一个Promise对象。这个Promise对象不同于`A`处`await`命令后面的那个Promise对象。主要有两点不同,一是`A`处的Promise对象`resolve`以后产生的值,会放入`result`变量;二是`B`处的Promise对象`resolve`以后产生的值,是表达式`'Result: ' + result`的值;二是`A`处的Promise对象一定先于`B`处的Promise对象`resolve`。 + +如果异步Generator函数抛出错误,会被Promise对象`reject`,然后抛出的错误被`catch`方法捕获。 + +```javascript +async function* asyncGenerator() { + throw new Error('Problem!'); +} + +asyncGenerator() +.next() +.catch(err => console.log(err)); // Error: Problem! +``` + +注意,普通的`async`函数返回的是一个Promise对象,而异步Generator函数返回的是一个异步Iterator对象。基本上,可以这样理解,`async`函数和异步Generator函数,是封装异步操作的两种方法,都用来达到同一种目的。区别在于,前者自带执行器,后者通过`for await...of`执行,或者自己编写执行器。下面就是一个异步Generator函数的执行器。 + +```javascript +async function takeAsync(asyncIterable, count=Infinity) { + const result = []; + const iterator = asyncIterable[Symbol.asyncIterator](); + while (result.length < count) { + const {value,done} = await iterator.next(); + if (done) break; + result.push(value); + } + return result; +} +``` + +上面代码中,异步Generator函数产生的异步遍历器,会通过`while`循环自动执行,每当`await iterator.next()`完成,就会进入下一轮循环。 + +下面是这个自动执行器的一个使用实例。 + +```javascript +async function f() { + async function* gen() { + yield 'a'; + yield 'b'; + yield 'c'; + } + + return await takeAsync(gen()); +} + +f().then(function (result) { + console.log(result); // ['a', 'b', 'c'] +}) +``` + +异步Generator函数出现以后,JavaScript就有了四种函数形式:普通函数、`async`函数、Generator函数和异步Generator函数。请注意区分每种函数的不同之处。 + +最后,同步的数据结构,也可以使用异步Generator函数。 + +```javascript +async function* createAsyncIterable(syncIterable) { + for (const elem of syncIterable) { + yield elem; + } +} +``` + +上面代码中,由于没有异步操作,所以也就没有使用`await`关键字。 + +### yield* 语句 + +`yield*`语句也可以跟一个异步遍历器。 + +```javascript +async function* gen1() { + yield 'a'; + yield 'b'; + return 2; +} + +async function* gen2() { + const result = yield* gen1(); +} +``` + +上面代码中,`gen2`函数里面的`result`变量,最后的值是`2`。 + +与同步Generator函数一样,`for await...of`循环会展开`yield*`。 + +```javascript +(async function () { + for await (const x of gen2()) { + console.log(x); + } +})(); +// a +// b +``` diff --git a/docs/iterator.md b/docs/iterator.md index 5c2d623a3..efb3bfc88 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -110,7 +110,26 @@ interface IterationResult { Iterator接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即`for...of`循环(详见下文)。当使用`for...of`循环遍历某种数据结构时,该循环会自动去寻找Iterator接口。 -ES6规定,默认的Iterator接口部署在数据结构的`Symbol.iterator`属性,或者说,一个数据结构只要具有`Symbol.iterator`属性,就可以认为是“可遍历的”(iterable)。调用`Symbol.iterator`方法,就会得到当前数据结构默认的遍历器生成函数。`Symbol.iterator`本身是一个表达式,返回Symbol对象的`iterator`属性,这是一个预定义好的、类型为Symbol的特殊值,所以要放在方括号内(请参考Symbol一章)。 +一种数据结构只要部署了Iterator接口,我们就称这种数据结构是”可遍历的“(iterable)。 + +ES6规定,默认的Iterator接口部署在数据结构的`Symbol.iterator`属性,或者说,一个数据结构只要具有`Symbol.iterator`属性,就可以认为是“可遍历的”(iterable)。`Symbol.iterator`属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。至于属性名`Symbol.iterator`,它是一个表达式,返回`Symbol`对象的`iterator`属性,这是一个预定义好的、类型为Symbol的特殊值,所以要放在方括号内。(参见Symbol一章)。 + +```javascript +const obj = { + [Symbol.iterator] : function () { + return { + next: function () { + return { + value: 1, + done: true + }; + } + }; + } +}; +``` + +上面代码中,对象`obj`是可遍历的(iterable),因为具有`Symbol.iterator`属性。执行这个属性,会返回一个遍历器对象。该对象的根本特征就是具有`next`方法。每次调用`next`方法,都会返回一个代表当前成员的信息对象,具有`value`和`done`两个属性。 在ES6中,有三类数据结构原生具备Iterator接口:数组、某些类似数组的对象、Set和Map结构。 diff --git a/docs/let.md b/docs/let.md index b4c2f64de..4e3cd6574 100644 --- a/docs/let.md +++ b/docs/let.md @@ -547,7 +547,7 @@ window.a // 2 上面代码中,顶层对象的属性赋值与全局变量的赋值,是同一件事。 -顶层对象的属性与全局变量挂钩,被认为是JavaScript语言最大的设计败笔之一。这样的设计带来了两个很大的问题,首先是没法在编译时就报出变量未声明的错误,只有运行时才能知道(因为全局变量可能是顶层对象的属性创造的,而属性的创造是动态的);其次,程序员很容易不知不觉地就创建了全局变量(比如打字出错)。另一方面,`window`对象有实体含义,指的是浏览器的窗口对象,顶层对象是一个有实体含义的对象,也是不合适的。 +顶层对象的属性与全局变量挂钩,被认为是JavaScript语言最大的设计败笔之一。这样的设计带来了几个很大的问题,首先是没法在编译时就报出变量未声明的错误,只有运行时才能知道(因为全局变量可能是顶层对象的属性创造的,而属性的创造是动态的);其次,程序员很容易不知不觉地就创建了全局变量(比如打字出错);最后,顶层对象的属性是到处可以读写的,这非常不利于模块化编程。另一方面,`window`对象有实体含义,指的是浏览器的窗口对象,顶层对象是一个有实体含义的对象,也是不合适的。 ES6为了改变这一点,一方面规定,为了保持兼容性,`var`命令和`function`命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,`let`命令、`const`命令、`class`命令声明的全局变量,不属于顶层对象的属性。也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩。 @@ -571,7 +571,7 @@ ES5的顶层对象,本身也是一个问题,因为它在各种实现里面 - 浏览器和Web Worker里面,`self`也指向顶层对象,但是Node没有`self`。 - Node里面,顶层对象是`global`,但其他环境都不支持。 -为了能够在各种环境,都能取到顶层对象,现在一般是使用`this`变量。 +同一段代码为了能够在各种环境,都能取到顶层对象,现在一般是使用`this`变量,但是有局限性。 - 全局环境中,`this`会返回顶层对象。但是,Node模块和ES6模块中,`this`返回的是当前模块。 - 函数里面的`this`,如果函数不是作为对象的方法运行,而是单纯作为函数运行,`this`会指向顶层对象。但是,严格模式下,这时`this`会返回`undefined`。 @@ -610,7 +610,7 @@ require('system.global/shim')(); import shim from 'system.global/shim'; shim(); ``` -上面代码可以保证`global`对象存在。 +上面代码可以保证各种环境里面,`global`对象都是存在的。 ```javascript // CommonJS的写法 @@ -621,5 +621,5 @@ import getGlobal from 'system.global'; const global = getGlobal(); ``` -上面代码将顶层对象放入一个变量。 +上面代码将顶层对象放入变量`global`。 diff --git a/docs/reference.md b/docs/reference.md index 38af7881c..e6b922c27 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -167,6 +167,7 @@ - Nolan Lawson, [Taming the asynchronous beast with ES7](http://pouchdb.com/2015/03/05/taming-the-async-beast-with-es7.html): async函数通俗的实例讲解 - Jafar Husain, [Async Generators](https://docs.google.com/file/d/0B4PVbLpUIdzoMDR5dWstRllXblU/view?sle=true): 对async与Generator混合使用的一些讨论 - Daniel Brain, [Understand promises before you start using async/await](https://medium.com/@bluepnume/learn-about-promises-before-you-start-using-async-await-eb148164a9c8): 讨论async/await与Promise的关系 +- Axel Rauschmayer, [ES proposal: asynchronous iteration](http://www.2ality.com/2016/10/asynchronous-iteration.html): 异步遍历器的详细介绍 ## Class From b2b00c29d01ef8d505e1ab49eecf5e029cf91abf Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 18 Oct 2016 13:12:39 +0800 Subject: [PATCH 114/994] docs(string): add an example of template string --- docs/string.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/string.md b/docs/string.md index c1f22c4b6..8db616a94 100644 --- a/docs/string.md +++ b/docs/string.md @@ -837,6 +837,15 @@ HelloWorldApp.main(); 模板处理函数的第一个参数(模板字符串数组),还有一个`raw`属性。 +```javascript +console.log`123` +// ["123", raw: Array[1]] +``` + +上面代码中,`console.log`接受的参数,实际上是一个数组。该数组有一个`raw`属性,保存的是转义后的原字符串。 + +请看下面的例子。 + ```javascript tag`First line\nSecond line` From 5258e43dd01e62498cbc6c58be7393c00b6c15f5 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 19 Oct 2016 14:00:22 +0800 Subject: [PATCH 115/994] =?UTF-8?q?docs(function):=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E9=BB=98=E8=AE=A4=E5=80=BC=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E5=9C=A8=E5=87=BD=E6=95=B0=E5=86=85=E9=83=A8=E6=98=BE?= =?UTF-8?q?=E5=BC=8F=E5=BC=80=E5=90=AF=E4=B8=A5=E6=A0=BC=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/function.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++- docs/reference.md | 1 + 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/docs/function.md b/docs/function.md index 7df8a5c94..b7f82ec34 100644 --- a/docs/function.md +++ b/docs/function.md @@ -694,6 +694,82 @@ var obj = {a: 1, b: 2}; let arr = [...obj]; // TypeError: Cannot spread non-iterable object ``` +## 严格模式 + +从ES5开始,函数内部可以设定为严格模式。 + +```javascript +function doSomething(a, b) { + 'use strict'; + // code +} +``` + +《ECMAScript 2016标准》做了一点修改,规定只要函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式,否则会报错。 + +```javascript +// 报错 +function doSomething(a, b = a) { + 'use strict'; + // code +} + +// 报错 +const doSomething = function ({a, b}) { + 'use strict'; + // code +}; + +// 报错 +const doSomething = (...a) => { + 'use strict'; + // code +}; + +const obj = { + // 报错 + doSomething({a, b}) { + 'use strict'; + // code + } +}; +``` + +这样规定的原因是,函数内部的严格模式,同时适用于函数体代码和函数参数代码。但是,函数执行的时候,先执行函数参数代码,然后再执行函数体代码。这样就有一个不合理的地方,只有从函数体代码之中,才能知道参数代码是否应该以严格模式执行,但是参数代码却应该先于函数体代码执行。 + +```javascript +// 报错 +function doSomething(value = 070) { + 'use strict'; + return value; +} +``` + +上面代码中,参数`value`的默认值是八进制数`070`,但是严格模式下不能用前缀`0`表示八进制,所以应该报错。但是实际上,JavaScript引擎会先成功执行`value = 070`,然后进入函数体内部,发现需要用严格模式执行,这时才会报错。 + +虽然可以先解析函数体代码,再执行参数代码,但是这样无疑就增加了复杂性。因此,标准索性禁止了这种用法,只要参数使用了默认值、解构赋值、或者扩展运算符,就不能显式指定严格模式。 + +两种方法可以规避这种限制。第一种是设定全局性的严格模式,这是合法的。 + +```javascript +'use strict'; + +function doSomething(a, b = a) { + // code +} +``` + +第二种是把函数包在一个无参数的立即执行函数里面。 + +```javascript +const doSomething = (function () { + 'use strict'; + return function(value = 42) { + return value; + }; +}()); +``` + ## name属性 函数的`name`属性,返回该函数的函数名。 @@ -1061,7 +1137,7 @@ var fix = f => (x => f(v => x(x)(v))) 上面两种写法,几乎是一一对应的。由于λ演算对于计算机科学非常重要,这使得我们可以用ES6作为替代工具,探索计算机科学。 -## 函数绑定 +## 绑定 this 箭头函数可以绑定`this`对象,大大减少了显式绑定`this`对象的写法(`call`、`apply`、`bind`)。但是,箭头函数并不适用于所有场合,所以ES7提出了“函数绑定”(function bind)运算符,用来取代`call`、`apply`、`bind`调用。虽然该语法还是ES7的一个[提案](https://github.com/zenparsing/es-function-bind),但是Babel转码器已经支持。 diff --git a/docs/reference.md b/docs/reference.md index e6b922c27..b0b0e37c9 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -83,6 +83,7 @@ - Kyle Simpson, [Arrow This](http://blog.getify.com/arrow-this/): 箭头函数并没有自己的this - Derick Bailey, [Do ES6 Arrow Functions Really Solve “this” In JavaScript?](http://derickbailey.com/2015/09/28/do-es6-arrow-functions-really-solve-this-in-javascript/):使用箭头函数处理this指向,必须非常小心 - Mark McDonnell, [Understanding recursion in functional JavaScript programming](http://www.integralist.co.uk/posts/js-recursion.html): 如何自己实现尾递归优化 +- Nicholas C. Zakas, [The ECMAScript 2016 change you probably don't know](https://www.nczonline.net/blog/2016/10/the-ecmascript-2016-change-you-probably-dont-know/): 使用参数默认值时,不能在函数内部显式开启严格模式 ## 对象 From e0f36e61fc6a83caa002abdc75ac5e946cbf9a62 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 24 Oct 2016 19:57:17 +0800 Subject: [PATCH 116/994] docs(async): edit async --- docs/async.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++- docs/reference.md | 1 + 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index 257d4bb6f..af377dfe6 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1060,6 +1060,22 @@ const foo = async function () {}; // 对象的方法 let obj = { async foo() {} }; +obj.foo().then(...) + +// Class 的方法 +class Storage { + constructor() { + this.cachePromise = caches.open('avatars'); + } + + async getAvatar(name) { + const cache = await this.cachePromise; + return cache.match(`/avatars/${name}.jpg`); + } +} + +const storage = new Storage(); +storage.getAvatar('jake').then(…); // 箭头函数 const foo = async () => {}; @@ -1067,7 +1083,7 @@ const foo = async () => {}; ### 注意点 -第一点,`await`命令后面的Promise对象,运行结果可能是rejected,所以最好把`await`命令放在`try...catch`代码块中。 +第一点,`await`命令后面的`Promise`对象,运行结果可能是`rejected`,所以最好把`await`命令放在`try...catch`代码块中。 ```javascript async function myFunction() { @@ -1252,6 +1268,59 @@ async function chainAnimationsAsync(elem, animations) { 可以看到Async函数的实现最简洁,最符合语义,几乎没有语义不相关的代码。它将Generator写法中的自动执行器,改在语言层面提供,不暴露给用户,因此代码量最少。如果使用Generator写法,自动执行器需要用户自己提供。 +### 实例:按顺序完成异步操作 + +实际开发中,经常遇到一组异步操作,需要按照顺序完成。比如,依次远程读取一组URL,然后按照读取的顺序输出结果。 + +Promise 的写法如下。 + +```javascript +function logInOrder(urls) { + // 远程读取所有URL + const textPromises = urls.map(url => { + return fetch(url).then(response => response.text()); + }); + + // 按次序输出 + textPromises.reduce((chain, textPromise) => { + return chain.then(() => textPromise) + .then(text => console.log(text)); + }, Promise.resolve()); +} +``` + +上面代码使用`fetch`方法,同时远程读取一组URL。每个`fetch`操作都返回一个`Promise`对象,放入`textPromises`数组。然后,`reduce`方法依次处理每个`Promise`对象,然后使用`then`,将所有`Promise`对象连起来,因此就可以依次输出结果。 + +这种写法不太直观,可读性比较差。下面是`async`函数实现。 + +```javascript +async function logInOrder(urls) { + for (const url of urls) { + const response = await fetch(url); + console.log(await response.text()); + } +} +``` + +上面代码确实大大简化,问题是所有远程操作都是继发。只有前一个URL返回结果,才会去读取下一个URL,这样做效率很差,非常浪费时间。我们需要的是并发发出远程请求。 + +```javascript +async function logInOrder(urls) { + // 并发读取远程URL + const textPromises = urls.map(async url => { + const response = await fetch(url); + return response.text(); + }); + + // 按次序输出 + for (const textPromise of textPromises) { + console.log(await textPromise); + } +} +``` + +上面代码中,虽然`map`方法的参数是`async`函数,但它是并发执行的,因为只有`async`函数内部是继发执行,外部不受影响。后面的`for..of`循环内部使用了`await`,因此实现了按顺序输出。 + ## 异步遍历器 《遍历器》一章说过,Iterator接口是一种数据遍历的协议,只要调用遍历器对象的`next`方法,就会得到一个表示当前成员信息的对象`{value, done}`。其中,`value`表示当前的数据的值,`done`是一个布尔值,表示遍历是否结束。 diff --git a/docs/reference.md b/docs/reference.md index b0b0e37c9..90db61839 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -168,6 +168,7 @@ - Nolan Lawson, [Taming the asynchronous beast with ES7](http://pouchdb.com/2015/03/05/taming-the-async-beast-with-es7.html): async函数通俗的实例讲解 - Jafar Husain, [Async Generators](https://docs.google.com/file/d/0B4PVbLpUIdzoMDR5dWstRllXblU/view?sle=true): 对async与Generator混合使用的一些讨论 - Daniel Brain, [Understand promises before you start using async/await](https://medium.com/@bluepnume/learn-about-promises-before-you-start-using-async-await-eb148164a9c8): 讨论async/await与Promise的关系 +- Jake Archibald, [Async functions - making promises friendly](https://developers.google.com/web/fundamentals/getting-started/primers/async-functions) - Axel Rauschmayer, [ES proposal: asynchronous iteration](http://www.2ality.com/2016/10/asynchronous-iteration.html): 异步遍历器的详细介绍 ## Class From d50aa29a21b37cb951970d653d8e65156a08f28c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 3 Nov 2016 08:14:37 +0800 Subject: [PATCH 117/994] fix(iterator): fix typo --- docs/iterator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/iterator.md b/docs/iterator.md index efb3bfc88..73022e82a 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -497,7 +497,7 @@ function readLinesSync(file) { ```javascript for (let line of readLinesSync(fileName)) { - console.log(x); + console.log(line); break; } ``` From 56687e0dcbd916b59e73d25369a2c3410d8e4183 Mon Sep 17 00:00:00 2001 From: Viky-zhang Date: Sat, 5 Nov 2016 12:18:47 +0800 Subject: [PATCH 118/994] =?UTF-8?q?=E5=8D=B3->=E6=97=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/class.md b/docs/class.md index 3293d96b2..0bdb509b4 100644 --- a/docs/class.md +++ b/docs/class.md @@ -730,7 +730,7 @@ Object.getPrototypeOf(ColorPoint) === Point (1)作为函数调用时(即`super(...args)`),`super`代表父类的构造函数。 -(2)作为对象调用时(即`super.prop`或`super.method()`),`super`代表父类。注意,此时`super`即可以引用父类实例的属性和方法,也可以引用父类的静态方法。 +(2)作为对象调用时(即`super.prop`或`super.method()`),`super`代表父类。注意,此时`super`既可以引用父类实例的属性和方法,也可以引用父类的静态方法。 ```javascript class B extends A { From 70541a5749822dd953209023b0d89f000009e9f1 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 6 Nov 2016 11:03:08 +0800 Subject: [PATCH 119/994] docs(stdlib): edit generator --- docs/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator.md b/docs/generator.md index 056b21b33..ec752207a 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -1058,7 +1058,7 @@ new F() 那么,有没有办法让Generator函数返回一个正常的对象实例,既可以用`next`方法,又可以获得正常的`this`? -下面是一个变通方法。首先,生成一个空对象,使用`bind`方法绑定Generator函数内部的`this`。这样,构造函数调用以后,这个空对象就是Generator函数的实例对象了。 +下面是一个变通方法。首先,生成一个空对象,使用`call`方法绑定Generator函数内部的`this`。这样,构造函数调用以后,这个空对象就是Generator函数的实例对象了。 ```javascript function* F() { From 55f37af4fc8a158fa0d9b87ac1e503743c650408 Mon Sep 17 00:00:00 2001 From: kiyonlin Date: Fri, 11 Nov 2016 16:21:33 +0800 Subject: [PATCH 120/994] Update module.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 拼写错误 --- docs/module.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/module.md b/docs/module.md index 0f59a32d1..2fee0a256 100644 --- a/docs/module.md +++ b/docs/module.md @@ -352,7 +352,7 @@ import {crc32} from 'crc32'; 上面代码的两组写法,第一组是使用`export default`时,对应的`import`语句不需要使用大括号;第二组是不使用`export default`时,对应的`import`语句需要使用大括号。 -`export default`命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此`export deault`命令只能使用一次。所以,`import`命令后面才不用加大括号,因为只可能对应一个方法。 +`export default`命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此`export default`命令只能使用一次。所以,`import`命令后面才不用加大括号,因为只可能对应一个方法。 本质上,`export default`就是输出一个叫做`default`的变量或方法,然后系统允许你为它取任意名字。所以,下面的写法是有效的。 From bd863cd40fc46331be20bc0a4c8181528494a150 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 11 Nov 2016 17:44:24 +0800 Subject: [PATCH 121/994] fix(class): edit class/super --- docs/class.md | 48 +++++++++++++++++++++++++++++++++++++------ docs/destructuring.md | 2 +- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/docs/class.md b/docs/class.md index 0bdb509b4..a2faccbea 100644 --- a/docs/class.md +++ b/docs/class.md @@ -724,26 +724,62 @@ Object.getPrototypeOf(ColorPoint) === Point 因此,可以使用这个方法判断,一个类是否继承了另一个类。 -### super关键字 +### super 关键字 `super`这个关键字,有两种用法,含义不同。 (1)作为函数调用时(即`super(...args)`),`super`代表父类的构造函数。 -(2)作为对象调用时(即`super.prop`或`super.method()`),`super`代表父类。注意,此时`super`既可以引用父类实例的属性和方法,也可以引用父类的静态方法。 +(2)作为对象调用时(即`super.prop`或`super.method()`),`super`代表父类。注意,此时`super`只能引用父类实例的方法(包括静态方法),不能引用父类的属性。 ```javascript +class A { + p() { + return 2; + } +} + class B extends A { + constructor() { + super(); + this.p = 3; + } + get m() { - return this._p * super._p; + return this.p * super.p(); } - set m() { - throw new Error('该属性只读'); + + set m(value) { + throw new Error('read only'); } } + +let b = new B(); +b.m // 6 +``` + +上面代码中,子类通过`super`关键字,调用父类实例的`p`方法。 + +如果`p`是父类实例的属性,那么`super`无法引用到它。 + +```javascript +class A { + constructor() { + this.p = 2; + } +} + +class B extends A { + get m() { + return super.p; + } +} + +let b = new B(); +b.m // undefined ``` -上面代码中,子类通过`super`关键字,调用父类实例的`_p`属性。 +上面代码中,`p`是父类`A`实例的属性,`super.p`就引用不到它。 由于,对象总是继承其他对象的,所以可以在任意一个对象中,使用`super`关键字。 diff --git a/docs/destructuring.md b/docs/destructuring.md index c22338ede..0648f5dee 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -223,7 +223,7 @@ baz // "aaa" foo // error: foo is not defined ``` -上面代码中,真正被赋值的是变量`baz`,而不是模式`foo`。 +上面代码中,`foo`是匹配的模式,`baz`才是变量。真正被赋值的是变量`baz`,而不是模式`foo`。 注意,采用这种写法时,变量的声明和赋值是一体的。对于`let`和`const`来说,变量不能重新声明,所以一旦赋值的变量以前声明过,就会报错。 From f8e8242827292681799ec124c87f76b9c7be2293 Mon Sep 17 00:00:00 2001 From: Michael-Lyu Date: Fri, 11 Nov 2016 20:54:07 +0800 Subject: [PATCH 122/994] =?UTF-8?q?=E4=BF=AE=E6=94=B9"=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E7=9A=84=E7=AE=80=E6=B4=81=E8=A1=A8=E7=A4=BA=E6=B3=95"?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index 9669045fd..242b9c248 100644 --- a/docs/object.md +++ b/docs/object.md @@ -13,7 +13,7 @@ baz // {foo: "bar"} var baz = {foo: foo}; ``` -上面代码表明,ES6允许在对象之中,只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。下面是另一个例子。 +上面代码表明,ES6允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。下面是另一个例子。 ```javascript function f(x, y) { From d805c055e4880c1cf754ca3481ed1c77da9bf2a3 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 14 Nov 2016 20:47:45 +0800 Subject: [PATCH 123/994] docs(class): edit class/super --- docs/class.md | 147 ++++++++++++++++++++++++++++++++++++++++++++------ js/ditto.js | 2 +- 2 files changed, 132 insertions(+), 17 deletions(-) diff --git a/docs/class.md b/docs/class.md index a2faccbea..1fb9ebeeb 100644 --- a/docs/class.md +++ b/docs/class.md @@ -726,11 +726,35 @@ Object.getPrototypeOf(ColorPoint) === Point ### super 关键字 -`super`这个关键字,有两种用法,含义不同。 +`super`这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。 -(1)作为函数调用时(即`super(...args)`),`super`代表父类的构造函数。 +第一种情况,`super`作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次`super`函数。 -(2)作为对象调用时(即`super.prop`或`super.method()`),`super`代表父类。注意,此时`super`只能引用父类实例的方法(包括静态方法),不能引用父类的属性。 +```javascript +class A {} + +class B extends A { + constructor() { + super(); + } +} +``` + +上面代码中,子类`B`的构造函数之中的`super()`,代表调用父类的构造函数。这是必须的,否则 JavaScript 引擎会报错。 + +注意,作为函数时,`super()`只能用在子类的构造函数之中,用在其他地方就会报错。 + +```javascript +class A {} + +class B extends A { + m() { + super(); // 报错 + } +} +``` + +第二种情况,`super`作为对象时,指向父类的原型对象。 ```javascript class A { @@ -742,25 +766,16 @@ class A { class B extends A { constructor() { super(); - this.p = 3; - } - - get m() { - return this.p * super.p(); - } - - set m(value) { - throw new Error('read only'); + console.log(super.p()); // 2 } } let b = new B(); -b.m // 6 ``` -上面代码中,子类通过`super`关键字,调用父类实例的`p`方法。 +上面代码中,子类`B`当中的`super.p()`,就是将`super`当作一个对象使用。这时,`super`指向`A.prototype`,所以`super.p()`就相当于`A.prototype.p()`。 -如果`p`是父类实例的属性,那么`super`无法引用到它。 +这里需要注意,由于`super`指向父类的原型对象,所以定义在父类实例上的方法或属性,是无法通过`super`调用的。 ```javascript class A { @@ -781,7 +796,107 @@ b.m // undefined 上面代码中,`p`是父类`A`实例的属性,`super.p`就引用不到它。 -由于,对象总是继承其他对象的,所以可以在任意一个对象中,使用`super`关键字。 +如果属性定义在父类的原型对象上,`super`就可以取到。 + +```javascript +class A {} +A.prototype.x = 2; + +class B extends A { + constructor() { + super(); + console.log(super.x) // 2 + } +} + +let b = new B(); +``` + +上面代码中,属性`x`是定义在`A.prototype`上面的,所以`super.x`可以取到它的值。 + +ES6 有一个特别规定,就是通过`super`调用父类的方法时,`super`会绑定子类的`this`。 + +```javascript +class A { + constructor() { + this.x = 1; + } + print() { + console.log(this.x); + } +} + +class B extends A { + constructor() { + super(); + this.x = 2; + } + m() { + super.print(); + } +} + +let b = new B(); +b.m() // 2 +``` + +上面代码中,`super.print()`虽然调用的是`A.prototype.print()`,但是`A.prototype.print()`会绑定子类`B`的`this`,导致输出的是`2`,而不是`1`。也就是说,实际上执行的是`super.print.call(this)`。 + +由于绑定子类的`this`,所以如果通过`super`对某个属性赋值,这时`super`就是`this`,赋值的属性会变成子类实例的属性。 + +```javascript +class A { + constructor() { + this.x = 1; + } +} + +class B extends A { + constructor() { + super(); + this.x = 2; + super.x = 3; + console.log(super.x); // undefined + console.log(this.x); // 3 + } +} + +let b = new B(); +``` + +上面代码中,`super.x`赋值为`3`,这时等同于对`this.x`赋值为`3`。而当读取`super.x`的时候,读的是`A.prototype.x`,所以返回`undefined`。 + +注意,使用`super`的时候,必须显式指定是作为函数、还是作为对象使用,否则会报错。 + +```javascript +class A {} + +class B extends A { + constructor() { + super(); + console.log(super); // 报错 + } +} +``` + +上面代码中,`console.log(super)`当中的`super`,无法看出是作为函数使用,还是作为对象使用,所以 JavaScript 引擎解析代码的时候就会报错。这时,如果能清晰地表明`super`的数据类型,就不会报错。 + +```javascript +class A {} + +class B extends A { + constructor() { + super(); + console.log(super.valueOf()); // B{} + } +} + +let b = new B(); +``` + +上面代码中,`super.valueOf()`表明`super`是一个对象,因此就不会报错。同时,由于`super`绑定`B`的`this`,所以`super.valueOf()`返回的是一个`B`的实例。 + +最后,由于对象总是继承其他对象的,所以可以在任意一个对象中,使用`super`关键字。 ```javascript var obj = { diff --git a/js/ditto.js b/js/ditto.js index b22622b71..3e133f7ef 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -256,7 +256,7 @@ function normalize_paths() { // images $(ditto.content_id + " img").map(function() { var src = $(this).attr("src").replace("./", ""); - if ($(this).attr("src").slice(0, 5) !== "http") { + if ($(this).attr("src").slice(0, 4) !== "http") { var pathname = location.pathname.substr(0, location.pathname.length - 1); var url = location.hash.replace("#", ""); From 4a52856283691a67dbf1850c63dd6b0859c955a2 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 14 Nov 2016 20:57:12 +0800 Subject: [PATCH 124/994] docs(class): edit class/super --- docs/class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/class.md b/docs/class.md index 1fb9ebeeb..659b98f70 100644 --- a/docs/class.md +++ b/docs/class.md @@ -887,7 +887,7 @@ class A {} class B extends A { constructor() { super(); - console.log(super.valueOf()); // B{} + console.log(super.valueOf() instanceof B); // true } } From fae89fb221496192668cec98fed83408470c1b7f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 15 Nov 2016 11:32:12 +0800 Subject: [PATCH 125/994] docs(class): edit class/super --- docs/class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/class.md b/docs/class.md index 659b98f70..43e196086 100644 --- a/docs/class.md +++ b/docs/class.md @@ -740,7 +740,7 @@ class B extends A { } ``` -上面代码中,子类`B`的构造函数之中的`super()`,代表调用父类的构造函数。这是必须的,否则 JavaScript 引擎会报错。 +上面代码中,子类`B`的构造函数之中的`super()`,代表调用父类的构造函数。这是必须的,否则 JavaScript 引擎会报错。`super`虽然代表了父类`A`的构造函数,但是返回的是子类`B`的实例,即`super`内部的`this`指的是`B`,因此`super()`在这里相当于`A.prototype.constructor.call(this)`。 注意,作为函数时,`super()`只能用在子类的构造函数之中,用在其他地方就会报错。 From e4d1bb1a6328b9583071425c46681a08b0e42e79 Mon Sep 17 00:00:00 2001 From: "fisher.zhang" Date: Sun, 20 Nov 2016 17:18:36 +0800 Subject: [PATCH 126/994] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E2=80=9C=E7=B1=BB=E7=9A=84=E5=AE=9E=E4=BE=8B=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E2=80=9D=E8=8A=82=20=E7=9A=84=E9=94=99=E8=AF=AF=EF=BC=9A?= =?UTF-8?q?=E2=80=9C=E5=AE=83=E4=BB=AC=E7=9A=84=E5=8E=9F=E5=9E=8B=E9=83=BD?= =?UTF-8?q?=E6=98=AFPoint=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit “类的实例对象 ”中举的例子 var p1 = new Point(2,3); var p2 = new Point(3,2); p1.__proto__ === p2.__proto__ //true 上面代码中,p1和p2都是Point的实例,它们的原型都是Point,所以__proto__属性是相等的。 --- docs/class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/class.md b/docs/class.md index 43e196086..d2720d084 100644 --- a/docs/class.md +++ b/docs/class.md @@ -266,7 +266,7 @@ p1.__proto__ === p2.__proto__ //true ``` -上面代码中,`p1`和`p2`都是Point的实例,它们的原型都是Point,所以`__proto__`属性是相等的。 +上面代码中,`p1`和`p2`都是Point的实例,它们的原型都是Point.prototype,所以`__proto__`属性是相等的。 这也意味着,可以通过实例的`__proto__`属性为Class添加方法。 From 8e09ab14f5673b79a114e74fdd6611dda860f089 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E4=B8=96=E6=88=90?= Date: Sun, 20 Nov 2016 23:15:02 +0800 Subject: [PATCH 127/994] Update symbol.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除多余的Markdown语句 --- docs/symbol.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/symbol.md b/docs/symbol.md index 4b7e61af0..f491c2505 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -442,7 +442,6 @@ global[Symbol.for('foo')] = 123; 如果键名使用`Symbol`方法生成,那么外部将无法引用这个值,当然也就无法改写。 -```javascript ```javascript // mod.js const FOO_KEY = Symbol('foo'); From 26b718b4b554569d17f75c30ed59118f93dee9e0 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 23 Nov 2016 17:15:39 +0800 Subject: [PATCH 128/994] docs(fp): edit fp/currying --- docs/fp.md | 51 +++++++++++++++++++++++++++++++++------------------ docs/proxy.md | 2 +- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/docs/fp.md b/docs/fp.md index cb8770a3b..580ceac38 100644 --- a/docs/fp.md +++ b/docs/fp.md @@ -4,36 +4,51 @@ JavaScript语言从一诞生,就具有函数式编程的烙印。它将函数 ES6的种种新增功能,使得函数式编程变得更方便、更强大。本章介绍ES6如何进行函数式编程。 -## 函数合成 +## 柯里化 -函数合成(function composition)指的是,将多个函数合成一个函数。 +柯里化(currying)指的是将一个多参数的函数拆分成一系列函数,每个拆分后的函数都只接受一个参数(unary)。 ```javascript -let add = x => x + x; -let pow = x => x * x; -let inv = x => 1 / x; +function add (a, b) { + return a + b; +} + +add(1, 1) // 2 +``` -let comp = f.comp(add, pow, inv); +上面代码中,函数`add`接受两个参数`a`和`b`。 + +柯里化就是将上面的函数拆分成两个函数,每个函数都只接受一个参数。 + +```javascript +function add (a) { + return function (b) { + return a + b; + } +} +// 或者采用箭头函数写法 +const add = x => y => x + y; -comp(1) // 0.25 -comp(4) // 0.015625 +const f = add(1); +f(1) // 2 ``` -上面代码中,`f.comp`就是函数合成器,它的参数全部都是函数,然后返回一个新的函数。 +上面代码中,函数`add`只接受一个参数`a`,返回一个函数`f`。函数`f`也只接受一个参数`b`。 -函数合成的代码如下。 +## 函数合成 + +函数合成(function composition)指的是,将多个函数合成一个函数。 ```javascript -let f = {}; -f.comp = (...fs) => { - return (...args) => - fs.map( - f => args = [f.apply(null, args)] - ).pop()[0]; - }; +const compose = f => g => x => f(g(x)); + +const f = compose (x => x * 4) (x => x + 3); +f(2) // 20 ``` -上面代码先依次遍历执行`f.comp`方法的参数(即排队执行的各个函数),每一次都将结果`args`变量存入一个数组。所以,对于`comp(1)`来说,最后结果是`[[1], [0.5], [0.25]]`,然后再用`pop`方法取出最后一个元素。 +上面代码中,`compose`就是一个函数合成器,用于将两个函数合成一个函数。 + +可以发现,柯里化与函数合成有着密切的联系。前者用于将一个函数拆成多个函数,后者用于将多个函数合并成一个函数。 ## 参数倒置 diff --git a/docs/proxy.md b/docs/proxy.md index 08d3ed5a6..4879fc988 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -68,7 +68,7 @@ proxy.a = 'b'; target.a // "b" ``` -上面代码中,`handler`是一个空对象,没有任何拦截效果,访问`handeler`就等同于访问`target`。 +上面代码中,`handler`是一个空对象,没有任何拦截效果,访问`handler`就等同于访问`target`。 一个技巧是将Proxy对象,设置到`object.proxy`属性,从而可以在`object`对象上调用。 From 9e974525c10f9f7114ae200da15f4d8b6d0330da Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 25 Nov 2016 13:12:10 +0800 Subject: [PATCH 129/994] docs(symbol): edit symbol --- docs/class.md | 23 ++++++++++++++++++-- docs/object.md | 24 +++++++++++++++++---- docs/reference.md | 1 + docs/symbol.md | 53 ++++++++++++++++++++++++++++++++++------------- 4 files changed, 81 insertions(+), 20 deletions(-) diff --git a/docs/class.md b/docs/class.md index 43e196086..e49953e51 100644 --- a/docs/class.md +++ b/docs/class.md @@ -740,9 +740,28 @@ class B extends A { } ``` -上面代码中,子类`B`的构造函数之中的`super()`,代表调用父类的构造函数。这是必须的,否则 JavaScript 引擎会报错。`super`虽然代表了父类`A`的构造函数,但是返回的是子类`B`的实例,即`super`内部的`this`指的是`B`,因此`super()`在这里相当于`A.prototype.constructor.call(this)`。 +上面代码中,子类`B`的构造函数之中的`super()`,代表调用父类的构造函数。这是必须的,否则 JavaScript 引擎会报错。 -注意,作为函数时,`super()`只能用在子类的构造函数之中,用在其他地方就会报错。 +注意,`super`虽然代表了父类`A`的构造函数,但是返回的是子类`B`的实例,即`super`内部的`this`指的是`B`,因此`super()`在这里相当于`A.prototype.constructor.call(this)`。 + +```javascript +class A { + constructor() { + console.log(new.target.name); + } +} +class B extends A { + constructor() { + super(); + } +} +new A() // A +new B() // B +``` + +上面代码中,`new.target`指向当前正在执行的函数名。可以看到,在`super()`执行时,它指向的是子类`B`的构造函数,而不是父类`A`的构造函数。也就是说,`super()`内部的`this`指向的是`B`。 + +作为函数时,`super()`只能用在子类的构造函数之中,用在其他地方就会报错。 ```javascript class A {} diff --git a/docs/object.md b/docs/object.md index 242b9c248..e2f7d0b6b 100644 --- a/docs/object.md +++ b/docs/object.md @@ -163,7 +163,7 @@ obj['a' + 'bc'] = 123; 上面代码的方法一是直接用标识符作为属性名,方法二是用表达式作为属性名,这时要将表达式放在方括号之内。 -但是,如果使用字面量方式定义对象(使用大括号),在ES5中只能使用方法一(标识符)定义属性。 +但是,如果使用字面量方式定义对象(使用大括号),在 ES5 中只能使用方法一(标识符)定义属性。 ```javascript var obj = { @@ -172,7 +172,7 @@ var obj = { }; ``` -ES6允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。 +ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。 ```javascript let propKey = 'foo'; @@ -202,7 +202,7 @@ a['last word'] // "world" ```javascript let obj = { - ['h'+'ello']() { + ['h' + 'ello']() { return 'hi'; } }; @@ -223,7 +223,23 @@ var foo = 'bar'; var baz = { [foo]: 'abc'}; ``` -## 方法的name属性 +注意,属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串`[object Object]`,这一点要特别小心。 + +```javascript +const keyA = {a: 1}; +const keyB = {b: 2}; + +const myObject = { + [keyA]: 'valueA', + [keyB]: 'valueB' +}; + +myObject // Object {[object Object]: "valueB"} +``` + +上面代码中,`[keyA]`和`[keyB]`得到的都是`[object Object]`,所以`[keyB]`会把`[keyA]`覆盖掉,而`myObject`最后只有一个`[object Object]`属性。 + +## 方法的 name 属性 函数的`name`属性,返回函数名。对象方法也是函数,因此也有`name`属性。 diff --git a/docs/reference.md b/docs/reference.md index 90db61839..38b843df3 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -115,6 +115,7 @@ - Keith Cirkel, [Metaprogramming in ES6: Symbols and why they're awesome](http://blog.keithcirkel.co.uk/metaprogramming-in-es6-symbols/): Symbol的深入介绍 - Axel Rauschmayer, [Customizing ES6 via well-known symbols](http://www.2ality.com/2015/09/well-known-symbols-es6.html) - Derick Bailey, [Creating A True Singleton In Node.js, With ES6 Symbols](https://derickbailey.com/2016/03/09/creating-a-true-singleton-in-node-js-with-es6-symbols/) +- Das Surma, [How to read web specs Part IIa – Or: ECMAScript Symbols](https://dassur.ma/things/reading-specs-2/): 介绍 Symbol 的规格 ## Set和Map diff --git a/docs/symbol.md b/docs/symbol.md index f491c2505..0b4628dc2 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -34,7 +34,19 @@ s2.toString() // "Symbol(bar)" 上面代码中,`s1`和`s2`是两个Symbol值。如果不加参数,它们在控制台的输出都是`Symbol()`,不利于区分。有了参数以后,就等于为它们加上了描述,输出的时候就能够分清,到底是哪一个值。 -注意,`Symbol`函数的参数只是表示对当前Symbol值的描述,因此相同参数的`Symbol`函数的返回值是不相等的。 +如果 Symbol 的参数是一个对象,就会调用该对象的`toString`方法,将其转为字符串,然后才生成一个 Symbol 值。 + +```javascript +const obj = { + toString() { + return 'abc'; + } +}; +const sym = Symbol(obj); +sym // Symbol(abc) +``` + +注意,`Symbol`函数的参数只是表示对当前 Symbol 值的描述,因此相同参数的`Symbol`函数的返回值是不相等的。 ```javascript // 没有参数的情况 @@ -44,8 +56,8 @@ var s2 = Symbol(); s1 === s2 // false // 有参数的情况 -var s1 = Symbol("foo"); -var s2 = Symbol("foo"); +var s1 = Symbol('foo'); +var s2 = Symbol('foo'); s1 === s2 // false ``` @@ -239,9 +251,9 @@ const shapeType = { ## 属性名的遍历 -Symbol作为属性名,该属性不会出现在`for...in`、`for...of`循环中,也不会被`Object.keys()`、`Object.getOwnPropertyNames()`返回。但是,它也不是私有属性,有一个`Object.getOwnPropertySymbols`方法,可以获取指定对象的所有Symbol属性名。 +Symbol 作为属性名,该属性不会出现在`for...in`、`for...of`循环中,也不会被`Object.keys()`、`Object.getOwnPropertyNames()`、`JSON.stringify()`返回。但是,它也不是私有属性,有一个`Object.getOwnPropertySymbols`方法,可以获取指定对象的所有 Symbol 属性名。 -`Object.getOwnPropertySymbols`方法返回一个数组,成员是当前对象的所有用作属性名的Symbol值。 +`Object.getOwnPropertySymbols`方法返回一个数组,成员是当前对象的所有用作属性名的 Symbol 值。 ```javascript var obj = {}; @@ -281,7 +293,7 @@ Object.getOwnPropertySymbols(obj) 上面代码中,使用`Object.getOwnPropertyNames`方法得不到`Symbol`属性名,需要使用`Object.getOwnPropertySymbols`方法。 -另一个新的API,`Reflect.ownKeys`方法可以返回所有类型的键名,包括常规键名和Symbol键名。 +另一个新的API,`Reflect.ownKeys`方法可以返回所有类型的键名,包括常规键名和 Symbol 键名。 ```javascript let obj = { @@ -294,7 +306,7 @@ Reflect.ownKeys(obj) // [Symbol(my_key), 'enum', 'nonEnum'] ``` -由于以Symbol值作为名称的属性,不会被常规方法遍历得到。我们可以利用这个特性,为对象定义一些非私有的、但又希望只用于内部的方法。 +由于以 Symbol 值作为名称的属性,不会被常规方法遍历得到。我们可以利用这个特性,为对象定义一些非私有的、但又希望只用于内部的方法。 ```javascript var size = Symbol('size'); @@ -325,7 +337,7 @@ Object.getOwnPropertyNames(x) // ['0'] Object.getOwnPropertySymbols(x) // [Symbol(size)] ``` -上面代码中,对象x的size属性是一个Symbol值,所以`Object.keys(x)`、`Object.getOwnPropertyNames(x)`都无法获取它。这就造成了一种非私有的内部方法的效果。 +上面代码中,对象`x`的`size`属性是一个 Symbol 值,所以`Object.keys(x)`、`Object.getOwnPropertyNames(x)`都无法获取它。这就造成了一种非私有的内部方法的效果。 ## Symbol.for(),Symbol.keyFor() @@ -338,9 +350,9 @@ var s2 = Symbol.for('foo'); s1 === s2 // true ``` -上面代码中,s1和s2都是Symbol值,但是它们都是同样参数的`Symbol.for`方法生成的,所以实际上是同一个值。 +上面代码中,`s1`和`s2`都是 Symbol 值,但是它们都是同样参数的`Symbol.for`方法生成的,所以实际上是同一个值。 -`Symbol.for()`与`Symbol()`这两种写法,都会生成新的Symbol。它们的区别是,前者会被登记在全局环境中供搜索,后者不会。`Symbol.for()`不会每次调用就返回一个新的Symbol类型的值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值。比如,如果你调用`Symbol.for("cat")`30次,每次都会返回同一个Symbol值,但是调用`Symbol("cat")`30次,会返回30个不同的Symbol值。 +`Symbol.for()`与`Symbol()`这两种写法,都会生成新的Symbol。它们的区别是,前者会被登记在全局环境中供搜索,后者不会。`Symbol.for()`不会每次调用就返回一个新的 Symbol 类型的值,而是会先检查给定的`key`是否已经存在,如果不存在才会新建一个值。比如,如果你调用`Symbol.for("cat")`30次,每次都会返回同一个 Symbol 值,但是调用`Symbol("cat")`30次,会返回30个不同的Symbol值。 ```javascript Symbol.for("bar") === Symbol.for("bar") @@ -352,7 +364,7 @@ Symbol("bar") === Symbol("bar") 上面代码中,由于`Symbol()`写法没有登记机制,所以每次调用都会返回一个不同的值。 -Symbol.keyFor方法返回一个已登记的Symbol类型值的key。 +`Symbol.keyFor`方法返回一个已登记的 Symbol 类型值的`key`。 ```javascript var s1 = Symbol.for("foo"); @@ -364,7 +376,7 @@ Symbol.keyFor(s2) // undefined 上面代码中,变量`s2`属于未登记的Symbol值,所以返回`undefined`。 -需要注意的是,`Symbol.for`为Symbol值登记的名字,是全局环境的,可以在不同的iframe或service worker中取到同一个值。 +需要注意的是,`Symbol.for`为Symbol值登记的名字,是全局环境的,可以在不同的 iframe 或 service worker 中取到同一个值。 ```javascript iframe = document.createElement('iframe'); @@ -375,7 +387,7 @@ iframe.contentWindow.Symbol.for('foo') === Symbol.for('foo') // true ``` -上面代码中,iframe窗口生成的Symbol值,可以在主页面得到。 +上面代码中,iframe 窗口生成的 Symbol 值,可以在主页面得到。 ## 实例:模块的 Singleton 模式 @@ -578,6 +590,17 @@ String.prototype.replace(searchValue, replaceValue) searchValue[Symbol.replace](this, replaceValue) ``` +下面是一个例子。 + +```javascript +const x = {}; +x[Symbol.replace] = (...s) => console.log(s); + +'Hello'.replace(x, 'World') // ["Hello", "World"] +``` + +`Symbol.replace`方法会收到两个参数,第一个参数是`replace`方法正在作用的对象,上面例子是`Hello`,第二个参数是替换后的值,上面例子是`World`。 + ### Symbol.search 对象的`Symbol.search`属性,指向一个方法,当该对象被`String.prototype.search`方法调用时,会返回该方法的返回值。 @@ -681,12 +704,14 @@ String(obj) // 'str' ### Symbol.toStringTag -对象的`Symbol.toStringTag`属性,指向一个方法。在该对象上面调用`Object.prototype.toString`方法时,如果这个属性存在,它的返回值会出现在`toString`方法返回的字符串之中,表示对象的类型。也就是说,这个属性可以用来定制`[object Object]`或`[object Array]`中object后面的那个字符串。 +对象的`Symbol.toStringTag`属性,指向一个方法。在该对象上面调用`Object.prototype.toString`方法时,如果这个属性存在,它的返回值会出现在`toString`方法返回的字符串之中,表示对象的类型。也就是说,这个属性可以用来定制`[object Object]`或`[object Array]`中`object`后面的那个字符串。 ```javascript +// 例一 ({[Symbol.toStringTag]: 'Foo'}.toString()) // "[object Foo]" +// 例二 class Collection { get [Symbol.toStringTag]() { return 'xxx'; From ff43701be078255582eccc247f02febe7cf9b187 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 25 Nov 2016 13:29:25 +0800 Subject: [PATCH 130/994] docs(proxy): edit proxy --- docs/proxy.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/proxy.md b/docs/proxy.md index 4879fc988..06562d07f 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -361,6 +361,7 @@ var handler = { }, set (target, key, value) { invariant(key, 'set'); + target[key] = value; return true; } }; From 1ec87bd9a545683888186abea6331abcbb11174d Mon Sep 17 00:00:00 2001 From: superxp1412 Date: Sat, 26 Nov 2016 12:22:49 +0800 Subject: [PATCH 131/994] Update async.md --- docs/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index af377dfe6..accdbb4be 100644 --- a/docs/async.md +++ b/docs/async.md @@ -50,7 +50,7 @@ fs.readFile(fileA, function (err, data) { }); ``` -不难想象,如果依次读取多个文件,就会出现多重嵌套。代码不是纵向发展,而是横向发展,很快就会乱成一团,无法管理。这种情况就称为"回调函数噩梦"(callback hell)。 +不难想象,如果依次读取多个文件,就会出现多重嵌套。代码不是纵向发展,而是横向发展,很快就会乱成一团,无法管理。这种情况就称为"回调函数地狱"(callback hell)。 Promise就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的嵌套,改成链式调用。采用Promise,连续读取多个文件,写法如下。 From c1b6c6fc556bc71e328b4268c2f2be1211072979 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 26 Nov 2016 23:08:38 +0800 Subject: [PATCH 132/994] docs(map): edit weakMap --- docs/set-map.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/set-map.md b/docs/set-map.md index 727948754..133f64ea0 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -900,13 +900,12 @@ myWeakmap.set(myElement, {timesClicked: 0}); myElement.addEventListener('click', function() { let logoData = myWeakmap.get(myElement); logoData.timesClicked++; - myWeakmap.set(myElement, logoData); }, false); ``` -上面代码中,`myElement`是一个DOM节点,每当发生click事件,就更新一下状态。我们将这个状态作为键值放在WeakMap里,对应的键名就是`myElement`。一旦这个DOM节点删除,该状态就会自动消失,不存在内存泄漏风险。 +上面代码中,`myElement`是一个 DOM 节点,每当发生`click`事件,就更新一下状态。我们将这个状态作为键值放在 WeakMap 里,对应的键名就是`myElement`。一旦这个 DOM 节点删除,该状态就会自动消失,不存在内存泄漏风险。 -WeakMap的另一个用处是部署私有属性。 +WeakMap 的另一个用处是部署私有属性。 ```javascript let _counter = new WeakMap(); From 95f8979eb726e9a6a5449168299447064ae647bc Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 27 Nov 2016 13:48:57 +0800 Subject: [PATCH 133/994] docs(iterator): edit for...of --- docs/iterator.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/iterator.md b/docs/iterator.md index 73022e82a..70cc0d431 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -508,28 +508,32 @@ for (let line of readLinesSync(fileName)) { ## for...of循环 -ES6借鉴C++、Java、C#和Python语言,引入了`for...of`循环,作为遍历所有数据结构的统一的方法。一个数据结构只要部署了`Symbol.iterator`属性,就被视为具有iterator接口,就可以用`for...of`循环遍历它的成员。也就是说,`for...of`循环内部调用的是数据结构的`Symbol.iterator`方法。 +ES6 借鉴 C++、Java、C# 和 Python 语言,引入了`for...of`循环,作为遍历所有数据结构的统一的方法。 -for...of循环可以使用的范围包括数组、Set和Map结构、某些类似数组的对象(比如arguments对象、DOM NodeList对象)、后文的Generator对象,以及字符串。 +一个数据结构只要部署了`Symbol.iterator`属性,就被视为具有iterator接口,就可以用`for...of`循环遍历它的成员。也就是说,`for...of`循环内部调用的是数据结构的`Symbol.iterator`方法。 + +`for...of`循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如`arguments`对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。 ### 数组 -数组原生具备iterator接口,`for...of`循环本质上就是调用这个接口产生的遍历器,可以用下面的代码证明。 +数组原生具备`iterator`接口(即默认部署了`Symbol.iterator`属性),`for...of`循环本质上就是调用这个接口产生的遍历器,可以用下面的代码证明。 ```javascript const arr = ['red', 'green', 'blue']; -let iterator = arr[Symbol.iterator](); for(let v of arr) { console.log(v); // red green blue } -for(let v of iterator) { +const obj = {}; +obj[Symbol.iterator] = arr[Symbol.iterator].bind(arr); + +for(let v of obj) { console.log(v); // red green blue } ``` -上面代码的`for...of`循环的两种写法是等价的。 +上面代码中,空对象`obj`部署了数组`arr`的`Symbol.iterator`属性,结果`obj`的`for...of`循环,产生了与`arr`完全一样的结果。 `for...of`循环可以代替数组实例的`forEach`方法。 From ba0744a7a464b235623566d548d16334f4fd733f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 27 Nov 2016 23:28:35 +0800 Subject: [PATCH 134/994] docs(proxy): edit proxy --- docs/proxy.md | 105 ++++++++++++++++++++++++++++++++++++++-------- docs/reference.md | 1 + 2 files changed, 89 insertions(+), 17 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 06562d07f..83bbcadea 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -1,10 +1,10 @@ -# Proxy和Reflect +# Proxy 和 Reflect -## Proxy概述 +## Proxy 概述 -Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 +Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 -Proxy可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。 +Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。 ```javascript var obj = new Proxy({}, { @@ -30,15 +30,15 @@ obj.count = 1 // 2 ``` -上面代码说明,Proxy实际上重载(overload)了点运算符,即用自己的定义覆盖了语言的原始定义。 +上面代码说明,Proxy 实际上重载(overload)了点运算符,即用自己的定义覆盖了语言的原始定义。 -ES6原生提供Proxy构造函数,用来生成Proxy实例。 +ES6 原生提供 Proxy 构造函数,用来生成 Proxy 实例。 ```javascript var proxy = new Proxy(target, handler); ``` -Proxy对象的所有用法,都是上面这种形式,不同的只是`handler`参数的写法。其中,`new Proxy()`表示生成一个Proxy实例,target参数表示所要拦截的目标对象,`handler`参数也是一个对象,用来定制拦截行为。 +Proxy 对象的所有用法,都是上面这种形式,不同的只是`handler`参数的写法。其中,`new Proxy()`表示生成一个`Proxy`实例,`target`参数表示所要拦截的目标对象,`handler`参数也是一个对象,用来定制拦截行为。 下面是另一个拦截读取属性行为的例子。 @@ -54,9 +54,9 @@ proxy.name // 35 proxy.title // 35 ``` -上面代码中,作为构造函数,Proxy接受两个参数。第一个参数是所要代理的目标对象(上例是一个空对象),即如果没有Proxy的介入,操作原来要访问的就是这个对象;第二个参数是一个配置对象,对于每一个被代理的操作,需要提供一个对应的处理函数,该函数将拦截对应的操作。比如,上面代码中,配置对象有一个`get`方法,用来拦截对目标对象属性的访问请求。`get`方法的两个参数分别是目标对象和所要访问的属性。可以看到,由于拦截函数总是返回`35`,所以访问任何属性都得到`35`。 +上面代码中,作为构造函数,`Proxy`接受两个参数。第一个参数是所要代理的目标对象(上例是一个空对象),即如果没有`Proxy`的介入,操作原来要访问的就是这个对象;第二个参数是一个配置对象,对于每一个被代理的操作,需要提供一个对应的处理函数,该函数将拦截对应的操作。比如,上面代码中,配置对象有一个`get`方法,用来拦截对目标对象属性的访问请求。`get`方法的两个参数分别是目标对象和所要访问的属性。可以看到,由于拦截函数总是返回`35`,所以访问任何属性都得到`35`。 -注意,要使得Proxy起作用,必须针对Proxy实例(上例是proxy对象)进行操作,而不是针对目标对象(上例是空对象)进行操作。 +注意,要使得`Proxy`起作用,必须针对`Proxy`实例(上例是`proxy`对象)进行操作,而不是针对目标对象(上例是空对象)进行操作。 如果`handler`没有设置任何拦截,那就等同于直接通向原对象。 @@ -76,7 +76,7 @@ target.a // "b" var object = { proxy: new Proxy(target, handler) }; ``` -Proxy实例也可以作为其他对象的原型对象。 +Proxy 实例也可以作为其他对象的原型对象。 ```javascript var proxy = new Proxy({}, { @@ -121,7 +121,7 @@ fproxy.prototype === Object.prototype // true fproxy.foo // "Hello, foo" ``` -下面是Proxy支持的拦截操作一览。 +下面是 Proxy 支持的拦截操作一览。 对于可以设置、但没有设置拦截的操作,则直接落在目标对象上,按照原先的方式产生结果。 @@ -175,11 +175,11 @@ fproxy.foo // "Hello, foo" **(12)apply(target, object, args)** -拦截Proxy实例作为函数调用的操作,比如`proxy(...args)`、`proxy.call(object, ...args)`、`proxy.apply(...)`。 +拦截 Proxy 实例作为函数调用的操作,比如`proxy(...args)`、`proxy.call(object, ...args)`、`proxy.apply(...)`。 **(13)construct(target, args)** -拦截Proxy实例作为构造函数调用的操作,比如`new proxy(...args)`。 +拦截 Proxy 实例作为构造函数调用的操作,比如`new proxy(...args)`。 ## Proxy实例的方法 @@ -224,7 +224,7 @@ let obj = Object.create(proto); obj.xxx // "GET xxx" ``` -上面代码中,拦截操作定义在Prototype对象上面,所以如果读取`obj`对象继承的属性时,拦截会生效。 +上面代码中,拦截操作定义在`Prototype`对象上面,所以如果读取`obj`对象继承的属性时,拦截会生效。 下面的例子使用`get`拦截,实现数组读取负数的索引。 @@ -251,7 +251,7 @@ arr[-1] // c 上面代码中,数组的位置参数是`-1`,就会输出数组的倒数最后一个成员。 -利用Proxy,可以将读取属性的操作(`get`),转变为执行某个函数,从而实现属性的链式操作。 +利用 Proxy,可以将读取属性的操作(`get`),转变为执行某个函数,从而实现属性的链式操作。 ```javascript var pipe = (function () { @@ -280,7 +280,7 @@ var reverseInt = n => n.toString().split("").reverse().join("") | 0; pipe(3).double.pow.reverseInt.get; // 63 ``` -上面代码设置Proxy以后,达到了将函数名链式使用的效果。 +上面代码设置 Proxy 以后,达到了将函数名链式使用的效果。 下面的例子则是利用`get`拦截,实现一个生成各种DOM节点的通用函数`dom`。 @@ -808,6 +808,77 @@ proxy.foo // TypeError: Revoked `Proxy.revocable`方法返回一个对象,该对象的`proxy`属性是`Proxy`实例,`revoke`属性是一个函数,可以取消`Proxy`实例。上面代码中,当执行`revoke`函数之后,再访问`Proxy`实例,就会抛出一个错误。 +## this 问题 + +虽然 Proxy 可以代理针对目标对象的访问,但它不是目标对象的透明代理,即不做任何拦截的情况下,也无法保证与目标对象的行为一致。主要原因就是在 Proxy 代理的情况下,目标对象内部的`this`关键字会指向 Proxy 代理。 + +```javascript +const target = { + m: function () { + console.log(this === proxy); + } +}; +const handler = {}; + +const proxy = new Proxy(target, handler); + +target.m() // false +proxy.m() // true +``` + +上面代码中,一旦`proxy`代理`target.m`,后者内部的`this`就是指向`proxy`,而不是`target`。 + +下面是一个例子,由于`this`指向的变化,导致 Proxy 无法代理目标对象。 + +```javascript +const _name = new WeakMap(); + +class Person { + constructor(name) { + _name.set(this, name); + } + get name() { + return _name.get(this); + } +} + +const jane = new Person('Jane'); +jane.name // 'Jane' + +const proxy = new Proxy(jane, {}); +proxy.name // undefined +``` + +上面代码中,目标对象`jane`的`name`属性,实际保存在外部`WeakMap`对象`_name`上面,通过`this`键区分。由于通过`proxy.name`访问时,`this`指向`proxy`,导致无法取到值,所以返回`undefined`。 + +此外,有些原生对象的内部属性,只有通过正确的`this`才能拿到,所以 Proxy 也无法代理这些原生对象的属性。 + +```javascript +const target = new Date(); +const handler = {}; +const proxy = new Proxy(target, handler); + +proxy.getDate(); +// TypeError: this is not a Date object. +``` + +上面代码中,`getDate`方法只能在`Date`对象实例上面拿到,如果`this`不是`Date`对象实例就会报错。这时,`this`绑定原始对象,就可以解决这个问题。 + +```javascript +const target = new Date('2015-01-01'); +const handler = { + get(target, prop) { + if (prop === 'getDate') { + return target.getDate.bind(target); + } + return Reflect.get(target, prop); + } +}; +const proxy = new Proxy(target, handler); + +proxy.getDate() // 1 +``` + ## Reflect概述 `Reflect`对象与`Proxy`对象一样,也是ES6为了操作对象而提供的新API。`Reflect`对象的设计目的有这样几个。 @@ -914,7 +985,7 @@ Reflect.apply(Math.floor, undefined, [1.75]) // 1 查找并返回`target`对象的`name`属性,如果没有该属性,则返回`undefined`。 -如果`name`属性部署了读取函数,则读取函数的this绑定`receiver`。 +如果`name`属性部署了读取函数,则读取函数的`this`绑定`receiver`。 ```javascript var obj = { diff --git a/docs/reference.md b/docs/reference.md index 38b843df3..2b5c5f4a6 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -106,6 +106,7 @@ - Nicolas Bevacqua, [ES6 Proxies in Depth](http://ponyfoo.com/articles/es6-proxies-in-depth) - Nicolas Bevacqua, [ES6 Proxy Traps in Depth](http://ponyfoo.com/articles/es6-proxy-traps-in-depth) - Nicolas Bevacqua, [More ES6 Proxy Traps in Depth](http://ponyfoo.com/articles/more-es6-proxy-traps-in-depth) +- Axel Rauschmayer, [Pitfall: not all objects can be wrapped transparently by proxies](http://www.2ality.com/2016/11/proxying-builtins.html) ## Symbol From ff35ad8399d319822f44341fc072a8052d03e75f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 28 Nov 2016 14:38:58 +0800 Subject: [PATCH 135/994] =?UTF-8?q?docs(proxy):=20add=20proxy=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E8=A7=82=E5=AF=9F=E8=80=85=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/proxy.md | 40 ++++++++++++++++++++++++++++++++++++++++ docs/reference.md | 29 +++++++++++++++-------------- docs/style.md | 6 ++++-- sidebar.md | 2 +- 4 files changed, 60 insertions(+), 17 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 83bbcadea..8f5b329c1 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -1036,3 +1036,43 @@ Reflect.defineProperty(obj, name, desc); ``` 上面代码中,`Reflect.defineProperty`方法的作用与`Object.defineProperty`是一样的,都是为对象定义一个属性。但是,`Reflect.defineProperty`方法失败时,不会抛出错误,只会返回`false`。 + +## 实例:使用 Proxy 实现观察者模式 + +观察者模式(Observer mode)指的是函数自动观察数据对象,一旦对象有变化,函数就会自动执行。 + +```javascript +const person = observable({ + name: '张三', + age: 20 +}); + +function print() { + console.log(`${person.name}, ${person.age}`) +} + +observe(print); +person.name = '李四'; +// 输出 +// 李四, 20 +``` + +上面代码中,数据对象`person`是观察目标,函数`print`是观察者。一旦数据对象发生变化,`print`就会自动执行。 + +下面,使用 Proxy 写一个观察者模式的最简单实现,即实现`observable`和`observe`这两个函数。思路是`observable`函数返回一个原始对象的 Proxy 代理,拦截赋值操作,触发充当观察者的各个函数。 + +```javascript +const queuedObservers = new Set(); + +const observe = fn => queuedObservers.add(fn); +const observable = obj => new Proxy(obj, {set}); + +function set(target, key, value, receiver) { + const result = Reflect.set(target, key, value, receiver); + queuedObservers.forEach(observer => observer()); + return result; +} +``` + +上面代码中,先定义了一个`Set`集合,所有观察者函数都放进这个集合。然后,`observable`函数返回原始对象的代理,拦截赋值操作。拦截函数`set`之中,会自动执行所有观察者。 + diff --git a/docs/reference.md b/docs/reference.md index 2b5c5f4a6..c8ad598ba 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -94,20 +94,6 @@ - Axel Rauschmayer, [ES proposal: Object.getOwnPropertyDescriptors()](http://www.2ality.com/2016/02/object-getownpropertydescriptors.html) - TC39, [Object.getOwnPropertyDescriptors Proposal](https://github.com/tc39/proposal-object-getownpropertydescriptors) -## Proxy和Reflect - -- Nicholas C. Zakas, [Creating defensive objects with ES6 proxies](http://www.nczonline.net/blog/2014/04/22/creating-defensive-objects-with-es6-proxies/) -- Axel Rauschmayer, [Meta programming with ECMAScript 6 proxies](http://www.2ality.com/2014/12/es6-proxies.html): Proxy详解 -- Daniel Zautner, [Meta-programming JavaScript Using Proxies](http://dzautner.com/meta-programming-javascript-using-proxies/): 使用Proxy实现元编程 -- Tom Van Cutsem, [Harmony-reflect](https://github.com/tvcutsem/harmony-reflect/wiki): Reflect对象的设计目的 -- Tom Van Cutsem, [Proxy Traps](https://github.com/tvcutsem/harmony-reflect/blob/master/doc/traps.md):Proxy拦截操作一览 -- Tom Van Cutsem, [Reflect API](https://github.com/tvcutsem/harmony-reflect/blob/master/doc/api.md) -- Tom Van Cutsem, [Proxy Handler API](https://github.com/tvcutsem/harmony-reflect/blob/master/doc/handler_api.md) -- Nicolas Bevacqua, [ES6 Proxies in Depth](http://ponyfoo.com/articles/es6-proxies-in-depth) -- Nicolas Bevacqua, [ES6 Proxy Traps in Depth](http://ponyfoo.com/articles/es6-proxy-traps-in-depth) -- Nicolas Bevacqua, [More ES6 Proxy Traps in Depth](http://ponyfoo.com/articles/more-es6-proxy-traps-in-depth) -- Axel Rauschmayer, [Pitfall: not all objects can be wrapped transparently by proxies](http://www.2ality.com/2016/11/proxying-builtins.html) - ## Symbol - Axel Rauschmayer, [Symbols in ECMAScript 6](http://www.2ality.com/2014/12/es6-symbols.html): Symbol简介 @@ -126,6 +112,21 @@ - Jason Orendorff, [ES6 In Depth: Collections](https://hacks.mozilla.org/2015/06/es6-in-depth-collections/):Set和Map结构的设计思想 - Axel Rauschmayer, [Converting ES6 Maps to and from JSON](http://www.2ality.com/2015/08/es6-map-json.html): 如何将Map与其他数据结构互相转换 +## Proxy和Reflect + +- Nicholas C. Zakas, [Creating defensive objects with ES6 proxies](http://www.nczonline.net/blog/2014/04/22/creating-defensive-objects-with-es6-proxies/) +- Axel Rauschmayer, [Meta programming with ECMAScript 6 proxies](http://www.2ality.com/2014/12/es6-proxies.html): Proxy详解 +- Daniel Zautner, [Meta-programming JavaScript Using Proxies](http://dzautner.com/meta-programming-javascript-using-proxies/): 使用Proxy实现元编程 +- Tom Van Cutsem, [Harmony-reflect](https://github.com/tvcutsem/harmony-reflect/wiki): Reflect对象的设计目的 +- Tom Van Cutsem, [Proxy Traps](https://github.com/tvcutsem/harmony-reflect/blob/master/doc/traps.md): Proxy拦截操作一览 +- Tom Van Cutsem, [Reflect API](https://github.com/tvcutsem/harmony-reflect/blob/master/doc/api.md) +- Tom Van Cutsem, [Proxy Handler API](https://github.com/tvcutsem/harmony-reflect/blob/master/doc/handler_api.md) +- Nicolas Bevacqua, [ES6 Proxies in Depth](http://ponyfoo.com/articles/es6-proxies-in-depth) +- Nicolas Bevacqua, [ES6 Proxy Traps in Depth](http://ponyfoo.com/articles/es6-proxy-traps-in-depth) +- Nicolas Bevacqua, [More ES6 Proxy Traps in Depth](http://ponyfoo.com/articles/more-es6-proxy-traps-in-depth) +- Axel Rauschmayer, [Pitfall: not all objects can be wrapped transparently by proxies](http://www.2ality.com/2016/11/proxying-builtins.html) +- Bertalan Miklos, [Writing a JavaScript Framework - Data Binding with ES6 Proxies](https://blog.risingstack.com/writing-a-javascript-framework-data-binding-es6-proxy/): 使用 Proxy 实现观察者模式 + ## Iterator - Mozilla Developer Network, [Iterators and generators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators) diff --git a/docs/style.md b/docs/style.md index 5f20ff2be..37f1ae4d7 100644 --- a/docs/style.md +++ b/docs/style.md @@ -6,7 +6,7 @@ ## 块级作用域 -**(1)let取代var** +**(1)let 取代 var** ES6提出了两个新的声明变量的命令:`let`和`const`。其中,`let`完全可以取代`var`,因为两者语义相同,而且`let`没有副作用。 @@ -41,7 +41,9 @@ if(true) { **(2)全局常量和线程安全** -在`let`和`const`之间,建议优先使用`const`,尤其是在全局环境,不应该设置变量,只应设置常量。这符合函数式编程思想,有利于将来的分布式运算。 +在`let`和`const`之间,建议优先使用`const`,尤其是在全局环境,不应该设置变量,只应设置常量。 + +`const`优于`let`有几个原因。一个是`const`可以提醒阅读程序的人,这个变量不应该改变;另一个是`const`比较符合函数式编程思想,运算不改变值,只是新建值,而且这样也有利于将来的分布式运算;最后一个原因是 JavaScript 编译器会对`const`进行优化,所以多使用`const`,有利于提供程序的运行效率,也就是说`let`和`const`的本质区别,其实是编译器内部的处理不同。 ```javascript // bad diff --git a/sidebar.md b/sidebar.md index ce4ede529..cd993b598 100644 --- a/sidebar.md +++ b/sidebar.md @@ -16,8 +16,8 @@ 1. [函数的扩展](#docs/function) 1. [对象的扩展](#docs/object) 1. [Symbol](#docs/symbol) -1. [Proxy和Reflect](#docs/proxy) 1. [Set和Map数据结构](#docs/set-map) +1. [Proxy和Reflect](#docs/proxy) 1. [Iterator和for...of循环](#docs/iterator) 1. [Generator函数](#docs/generator) 1. [Promise对象](#docs/promise) From e5b32087c96ba8272ee3b633f16ee649c0b4ff13 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 30 Nov 2016 11:39:40 +0800 Subject: [PATCH 136/994] docs(promise): add Promise.try() --- docs/promise.md | 118 ++++++++++++++++++++++++++++++++++++++++++++-- docs/reference.md | 22 +++++---- 2 files changed, 127 insertions(+), 13 deletions(-) diff --git a/docs/promise.md b/docs/promise.md index 0594c217e..fceadadfa 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -509,12 +509,12 @@ Promise.all([ `Promise.race`方法同样是将多个Promise实例,包装成一个新的Promise实例。 ```javascript -var p = Promise.race([p1,p2,p3]); +var p = Promise.race([p1, p2, p3]); ``` -上面代码中,只要`p1`、`p2`、`p3`之中有一个实例率先改变状态,`p`的状态就跟着改变。那个率先改变的Promise实例的返回值,就传递给`p`的回调函数。 +上面代码中,只要`p1`、`p2`、`p3`之中有一个实例率先改变状态,`p`的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给`p`的回调函数。 -`Promise.race`方法的参数与`Promise.all`方法一样,如果不是Promise实例,就会先调用下面讲到的`Promise.resolve`方法,将参数转为Promise实例,再进一步处理。 +`Promise.race`方法的参数与`Promise.all`方法一样,如果不是 Promise 实例,就会先调用下面讲到的`Promise.resolve`方法,将参数转为 Promise 实例,再进一步处理。 下面是一个例子,如果指定时间内没有获得结果,就将Promise的状态变为`reject`,否则变为`resolve`。 @@ -768,3 +768,115 @@ run(g); 上面代码的Generator函数`g`之中,有一个异步操作`getFoo`,它返回的就是一个`Promise`对象。函数`run`用来处理这个`Promise`对象,并调用下一个`next`方法。 +## Promise.try() + +实际开发中,经常遇到一种情况:不知道函数`f`是同步函数,还是异步操作,但是想用 Promise 来处理它。因为这样就可以不管`f`是否包含异步操作,都用`then`方法指定下一步流程,用`catch`方法处理`f`抛出的错误。一般就会采用下面的写法。 + +```javascript +Promise.resolve().then(f) +``` + +上面的写法有一个缺点,就是如果`f`是同步函数,那么它会在下一轮事件循环执行。 + +```javascript +const f = () => console.log('now'); +Promise.resolve().then(f); +console.log('next'); +// next +// now +``` + +上面代码中,函数`f`是同步的,但是用 Promise 包装了以后,就变成异步执行了。 + +那么有没有一种方法,让同步函数同步执行,异步函数异步执行,并且让它们具有统一的 API 呢?回答是可以的,并且还有两种写法。第一种写法是用`async`函数来写。 + +```javascript +const f = () => console.log('now'); +(async () => f())(); +console.log('next'); +// now +// next +``` + +上面代码中,第一行是一个立即执行的匿名函数,会立即执行里面的`async`函数,因此如果`f`是同步的,就会得到同步的结果;如果`f`是异步的,就可以用`then`指定下一步,就像下面的写法。 + +```javascript +(async () => f())() +.then(...) +``` + +需要注意的是,`async () => f()`会吃掉`f()`抛出的错误。所以,如果想捕获错误,要使用`promise.catch`方法。 + +```javascript +(async () => f())() +.then(...) +.catch(...) +``` + +第二种写法是使用`new Promise()`。 + +```javascript +const f = () => console.log('now'); +( + () => new Promise( + resolve => resolve(f()) + ) +)(); +console.log('next'); +// now +// next +``` + +上面代码也是使用立即执行的匿名函数,执行`new Promise()`。这种情况下,同步函数也是同步执行的。 + +鉴于这是一个很常见的需求,所以现在有一个[提案](https://github.com/ljharb/proposal-promise-try),提供`Promise.try`方法替代上面的写法。 + +```javascript +const f = () => console.log('now'); +Promise.try(f); +console.log('next'); +// now +// next +``` + +事实上,`Promise.try`存在已久,Promise 库[`Bluebird`](http://bluebirdjs.com/docs/api/promise.try.html)、[`Q`](https://github.com/kriskowal/q/wiki/API-Reference#promisefcallargs)和[`when`](https://github.com/cujojs/when/blob/master/docs/api.md#whentry),早就提供了这个方法。 + +由于`Promise.try`为所有操作提供了统一的处理机制,所以如果想用`then`方法管理流程,最好都用`Promise.try`包装一下。这样有[许多好处](http://cryto.net/~joepie91/blog/2016/05/11/what-is-promise-try-and-why-does-it-matter/),其中一点就是可以更好地管理异常。 + +```javascript +function getUsername(userId) { + return database.users.get({id: userId}) + .then(function(user) { + return uesr.name; + }); +} +``` + +上面代码中,`database.users.get()`返回一个 Promise 对象,如果抛出异步错误,可以用`catch`方法捕获,就像下面这样写。 + +```javascript +database.users.get({id: userId}) +.then(...) +.catch(...) +``` + +但是`database.users.get()`可能还会抛出同步错误(比如数据库连接错误,具体要看实现方法),这时你就不得不用`try...catch`去捕获。 + +```javascript +try { + database.users.get({id: userId}) + .then(...) + .catch(...) +} catch (e) { + // ... +} +``` + +上面这样的写法就很笨拙了,这时就可以统一用`promise.catch()`捕获所有同步和异步的错误。 + +```javascript +Promise.try(database.users.get({id: userId})) + .then(...) + .catch(...) +``` + diff --git a/docs/reference.md b/docs/reference.md index c8ad598ba..9fe1e82d7 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -127,6 +127,18 @@ - Axel Rauschmayer, [Pitfall: not all objects can be wrapped transparently by proxies](http://www.2ality.com/2016/11/proxying-builtins.html) - Bertalan Miklos, [Writing a JavaScript Framework - Data Binding with ES6 Proxies](https://blog.risingstack.com/writing-a-javascript-framework-data-binding-es6-proxy/): 使用 Proxy 实现观察者模式 +## Promise对象 + +- Jake Archibald, [JavaScript Promises: There and back again](http://www.html5rocks.com/en/tutorials/es6/promises/) +- Tilde, [rsvp.js](https://github.com/tildeio/rsvp.js) +- Sandeep Panda, [An Overview of JavaScript Promises](http://www.sitepoint.com/overview-javascript-promises/): ES6 Promise入门介绍 +- Dave Atchley, [ES6 Promises](http://www.datchley.name/es6-promises/): Promise的语法介绍 +- Axel Rauschmayer, [ECMAScript 6 promises (2/2): the API](http://www.2ality.com/2014/10/es6-promises-api.html): 对ES6 Promise规格和用法的详细介绍 +- Jack Franklin, [Embracing Promises in JavaScript](http://javascriptplayground.com/blog/2015/02/promises/): catch 方法的例子 +- Ronald Chen, [How to escape Promise Hell](https://medium.com/@pyrolistical/how-to-get-out-of-promise-hell-8c20e0ab0513#.2an1he6vf): 如何使用`Promise.all`方法的一些很好的例子 +- Jordan Harband, [proposal-promise-try](https://github.com/ljharb/proposal-promise-try): Promise.try() 方法的提案 +- Sven Slootweg, [What is Promise.try, and why does it matter?](http://cryto.net/~joepie91/blog/2016/05/11/what-is-promise-try-and-why-does-it-matter/): Promise.try() 方法的优点 + ## Iterator - Mozilla Developer Network, [Iterators and generators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators) @@ -154,16 +166,6 @@ - Axel Rauschmayer, [ES6 generators in depth](http://www.2ality.com/2015/03/es6-generators.html): Generator规格的详尽讲解 - Derick Bailey, [Using ES6 Generators To Short-Circuit Hierarchical Data Iteration](https://derickbailey.com/2015/10/05/using-es6-generators-to-short-circuit-hierarchical-data-iteration/):使用 for...of 循环完成预定的操作步骤 -## Promise对象 - -- Jake Archibald, [JavaScript Promises: There and back again](http://www.html5rocks.com/en/tutorials/es6/promises/) -- Tilde, [rsvp.js](https://github.com/tildeio/rsvp.js) -- Sandeep Panda, [An Overview of JavaScript Promises](http://www.sitepoint.com/overview-javascript-promises/): ES6 Promise入门介绍 -- Dave Atchley, [ES6 Promises](http://www.datchley.name/es6-promises/): Promise的语法介绍 -- Axel Rauschmayer, [ECMAScript 6 promises (2/2): the API](http://www.2ality.com/2014/10/es6-promises-api.html): 对ES6 Promise规格和用法的详细介绍 -- Jack Franklin, [Embracing Promises in JavaScript](http://javascriptplayground.com/blog/2015/02/promises/): catch方法的例子 -- Ronald Chen, [How to escape Promise Hell](https://medium.com/@pyrolistical/how-to-get-out-of-promise-hell-8c20e0ab0513#.2an1he6vf): 如何使用`Promise.all`方法的一些很好的例子 - ## 异步操作和Async函数 - Luke Hoban, [Async Functions for ECMAScript](https://github.com/lukehoban/ecmascript-asyncawait): Async函数的设计思想,与Promise、Gernerator函数的关系 From 312ec746998f90d024cc7d8f07213d60c15b959a Mon Sep 17 00:00:00 2001 From: Jacty Date: Thu, 1 Dec 2016 10:34:33 +0800 Subject: [PATCH 137/994] typo mistake a typo mistake --- docs/promise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/promise.md b/docs/promise.md index fceadadfa..71c3ea44b 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -847,7 +847,7 @@ console.log('next'); function getUsername(userId) { return database.users.get({id: userId}) .then(function(user) { - return uesr.name; + return user.name; }); } ``` From fd666def3cc56a2c3d271a28ca53fd941d921b76 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 1 Dec 2016 15:59:18 +0800 Subject: [PATCH 138/994] docs(let): add do expression --- docs/let.md | 24 ++++++++++++++++++++++++ docs/promise.md | 4 +++- docs/reference.md | 2 ++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/docs/let.md b/docs/let.md index 4e3cd6574..81537dc49 100644 --- a/docs/let.md +++ b/docs/let.md @@ -426,6 +426,30 @@ if (true) function f() {} ``` +### do 表达式 + +本质上,块级作用域是一个语句,将多个操作封装在一起,没有返回值。 + +```javascript +{ + let t = f(); + t = t * t + 1; +} +``` + +上面代码中,块级作用域将两个语句封装在一起。但是,在块级作用域以外,没有办法得到`t`的值,因为块级作用域不返回值,除非`t`是全局变量。 + +现在有一个[提案](http://wiki.ecmascript.org/doku.php?id=strawman:do_expressions),使得块级作用域可以变为表达式,也就是说可以返回值,办法就是在块级作用域之前加上`do`,使它变为`do`表达式。 + +```javascript +let x = do { + let t = f(); + t * t + 1; +}; +``` + +上面代码中,变量`x`会得到整个块级作用域的返回值。 + ## const命令 `const`声明一个只读的常量。一旦声明,常量的值就不能改变。 diff --git a/docs/promise.md b/docs/promise.md index fceadadfa..f85664139 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -770,7 +770,7 @@ run(g); ## Promise.try() -实际开发中,经常遇到一种情况:不知道函数`f`是同步函数,还是异步操作,但是想用 Promise 来处理它。因为这样就可以不管`f`是否包含异步操作,都用`then`方法指定下一步流程,用`catch`方法处理`f`抛出的错误。一般就会采用下面的写法。 +实际开发中,经常遇到一种情况:不知道或者不想区分,函数`f`是同步函数还是异步操作,但是想用 Promise 来处理它。因为这样就可以不管`f`是否包含异步操作,都用`then`方法指定下一步流程,用`catch`方法处理`f`抛出的错误。一般就会采用下面的写法。 ```javascript Promise.resolve().then(f) @@ -880,3 +880,5 @@ Promise.try(database.users.get({id: userId})) .catch(...) ``` +事实上,`Promise.try`就是模拟`try`代码块,就像`promise.catch`模拟的是`catch`代码块。 + diff --git a/docs/reference.md b/docs/reference.md index 9fe1e82d7..6c9f62f8b 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -138,6 +138,7 @@ - Ronald Chen, [How to escape Promise Hell](https://medium.com/@pyrolistical/how-to-get-out-of-promise-hell-8c20e0ab0513#.2an1he6vf): 如何使用`Promise.all`方法的一些很好的例子 - Jordan Harband, [proposal-promise-try](https://github.com/ljharb/proposal-promise-try): Promise.try() 方法的提案 - Sven Slootweg, [What is Promise.try, and why does it matter?](http://cryto.net/~joepie91/blog/2016/05/11/what-is-promise-try-and-why-does-it-matter/): Promise.try() 方法的优点 +- Yehuda Katz, [TC39: Promises, Promises](https://thefeedbackloop.xyz/tc39-promises-promises/): Promise.try() 的用处 ## Iterator @@ -232,3 +233,4 @@ - SystemJS, [SystemJS](https://github.com/systemjs/systemjs): 在浏览器中加载AMD、CJS、ES6模块的一个垫片库 - Modernizr, [HTML5 Cross Browser Polyfills](https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#ecmascript-6-harmony): ES6垫片库清单 - Facebook, [regenerator](https://github.com/facebook/regenerator): 将Generator函数转为ES5的转码器 + From bd2d951f45085cd1feaeab1d4fcec9241322c22a Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 1 Dec 2016 16:06:35 +0800 Subject: [PATCH 139/994] docs(let): edit block scope --- docs/let.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/let.md b/docs/let.md index 81537dc49..87bf19949 100644 --- a/docs/let.md +++ b/docs/let.md @@ -292,7 +292,7 @@ try { 上面代码的两种函数声明,根据ES5的规定都是非法的。 -但是,浏览器没有遵守这个规定,还是支持在块级作用域之中声明函数,因此上面两种情况实际都能运行,不会报错。不过,“严格模式”下还是会报错。 +但是,浏览器没有遵守这个规定,为了兼容以前的旧代码,还是支持在块级作用域之中声明函数,因此上面两种情况实际都能运行,不会报错。不过,“严格模式”下还是会报错。 ```javascript // ES5严格模式 @@ -303,7 +303,7 @@ if (true) { // 报错 ``` -ES6引入了块级作用域,明确允许在块级作用域之中声明函数。 +ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。 ```javascript // ES6严格模式 @@ -314,7 +314,7 @@ if (true) { // 不报错 ``` -并且ES6规定,块级作用域之中,函数声明语句的行为类似于`let`,在块级作用域之外不可引用。 +ES6 规定,块级作用域之中,函数声明语句的行为类似于`let`,在块级作用域之外不可引用。 ```javascript function f() { console.log('I am outside!'); } @@ -328,7 +328,7 @@ function f() { console.log('I am outside!'); } }()); ``` -上面代码在ES5中运行,会得到“I am inside!”,因为在`if`内声明的函数`f`会被提升到函数头部,实际运行的代码如下。 +上面代码在 ES5 中运行,会得到“I am inside!”,因为在`if`内声明的函数`f`会被提升到函数头部,实际运行的代码如下。 ```javascript // ES5版本 @@ -341,7 +341,7 @@ function f() { console.log('I am outside!'); } }()); ``` -ES6的运行结果就完全不一样了,会得到“I am outside!”。因为块级作用域内声明的函数类似于`let`,对作用域之外没有影响,实际运行的代码如下。 +ES6 的运行结果就完全不一样了,会得到“I am outside!”。因为块级作用域内声明的函数类似于`let`,对作用域之外没有影响,实际运行的代码如下。 ```javascript // ES6版本 From cee05208e95ca477001debb460506156271ba44a Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 2 Dec 2016 13:18:47 +0800 Subject: [PATCH 140/994] docs(regex): add s flag --- docs/arraybuffer.md | 85 +++++++++++++++++++++++++++++++++++++++++++++ docs/let.md | 8 ++--- docs/regex.md | 49 ++++++++++++++++++++++++-- 3 files changed, 136 insertions(+), 6 deletions(-) diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index 8c4e65d98..08e8e8ea8 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -963,3 +963,88 @@ bitmap.pixels = new Uint8Array(buffer, start); ``` 至此,图像文件的数据全部处理完成。下一步,可以根据需要,进行图像变形,或者转换格式,或者展示在`Canvas`网页元素之中。 + +## SharedArrayBuffer + +目前有一种场景,需要多个进程共享数据:浏览器启动多个WebWorker。 + +```javascript +var w = new Worker('myworker.js'); +``` + +上面代码中,主窗口新建了一个 Worker 进程。该进程与主窗口之间会有一个通信渠道,主窗口通过`w.postMessage`向 Worker 进程发消息,同时通过`message`事件监听 Worker 进程的回应。 + +```javascript +w.postMessage('hi'); +w.onmessage = function (ev) { + console.log(ev.data); +} +``` + +上面代码中,主窗口先发一个消息`hi`,然后在监听到 Worker 进程的回应后,就将其打印出来。 + +Worker 进程也是通过监听`message`事件,来获取主窗口发来的消息,并作出反应。 + +```javascript +onmessage = function (ev) { + console.log(ev.data); + postMessage('ho'); +} +``` + +主窗口与 Worker 进程之间,可以传送各种数据,不仅仅是字符串,还可以传送二进制数据。很容易想到,如果有大量数据要传送,留出一块内存区域,主窗口与 Worker 进程共享,两方都可以读写,那么就会大大提高效率。 + +现在,有一个[`SharedArrayBuffer`](https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md)提案,允许多个 Worker 进程与主窗口共享内存。这个对象的 API 与`ArrayBuffer`一模一样,唯一的区别是后者无法共享。 + +```javascript +// 新建 1KB 共享内存 +var sab = new SharedArrayBuffer(1024); + +// 主窗口发送数据 +w.postMessage(sab, [sab]) +``` + +上面代码中,`postMessage`方法的第一个参数是`SharedArrayBuffer`对象,第二个参数是要写入共享内存的数据。 + +Worker 进程从事件的`data`属性上面取到数据。 + +```javascript +var sab; +onmessage = function (ev) { + sab = ev.data; // 1KB 的共享内存,就是主窗口共享出来的那块内存 +}; +``` + +共享内存也可以在 Worker 进程创建,发给主窗口。 + +`SharedArrayBuffer`与`SharedArray`一样,本身是无法读写,必须在上面建立视图,然后通过视图读写。 + +```javascript +// 分配 10 万个 32 位整数占据的内存空间 +var sab = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 100000); + +// 建立 32 位整数视图 +var ia = new Int32Array(sab); // ia.length == 100000 + +// 新建一个质数生成器 +var primes = new PrimeGenerator(); + +// 将 10 万个质数,写入这段内存空间 +for ( let i=0 ; i < ia.length ; i++ ) + ia[i] = primes.next(); + +// 向 Worker 进程发送这段共享内存 +w.postMessage(ia, [ia.buffer]); +``` + +Worker 收到数据后的处理如下。 + +```javascript +var ia; +onmessage = function (ev) { + ia = ev.data; + console.log(ia.length); // 100000 + console.log(ia[37]); // 输出 163,因为这是第138个质数 +}; +``` + diff --git a/docs/let.md b/docs/let.md index 87bf19949..80c86e4fa 100644 --- a/docs/let.md +++ b/docs/let.md @@ -587,13 +587,13 @@ window.b // undefined 上面代码中,全局变量`a`由`var`命令声明,所以它是顶层对象的属性;全局变量`b`由`let`命令声明,所以它不是顶层对象的属性,返回`undefined`。 -## 顶层对象 +## global 对象 ES5的顶层对象,本身也是一个问题,因为它在各种实现里面是不统一的。 -- 浏览器里面,顶层对象是`window`,但Node和Web Worker没有`window`。 -- 浏览器和Web Worker里面,`self`也指向顶层对象,但是Node没有`self`。 -- Node里面,顶层对象是`global`,但其他环境都不支持。 +- 浏览器里面,顶层对象是`window`,但 Node 和 Web Worker 没有`window`。 +- 浏览器和 Web Worker 里面,`self`也指向顶层对象,但是Node没有`self`。 +- Node 里面,顶层对象是`global`,但其他环境都不支持。 同一段代码为了能够在各种环境,都能取到顶层对象,现在一般是使用`this`变量,但是有局限性。 diff --git a/docs/regex.md b/docs/regex.md index cdd7899dd..faf21c701 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -133,7 +133,7 @@ codePointLength(s) // 2 **(5)i修饰符** -有些Unicode字符的编码不同,但是字型很相近,比如,`\u004B`与`\u212A`都是大写的K。 +有些Unicode字符的编码不同,但是字型很相近,比如,`\u004B`与`\u212A`都是大写的`K`。 ```javascript /[a-z]/i.test('\u212A') // false @@ -142,7 +142,7 @@ codePointLength(s) // 2 上面代码中,不加`u`修饰符,就无法识别非规范的K字符。 -## y修饰符 +## y 修饰符 除了`u`修饰符,ES6还为正则表达式添加了`y`修饰符,叫做“粘连”(sticky)修饰符。 @@ -366,6 +366,51 @@ escape('hi. how are you?'); // "hi\\. how are you\\?" ``` +## s 修饰符:dotAll 模式 + +正则表达式中,点(`.`)是一个特殊字符,代表任意的单个字符,但是行终止符(line terminator character)除外。 + +以下四个字符属于”行终止符“。 + +- U+000A 换行符(`\n`) +- U+000D 回车符(`\r`) +- U+2028 行分隔符(line separator) +- U+2029 段分隔符(paragraph separator) + +```javascript +/foo.bar/.test('foo\nbar') +// false +``` + +上面代码中,因为`.`不匹配`\n`,所以正则表达式返回`false`。 + +但是,很多时候我们希望匹配的是任意单个字符,这时有一种变通的写法。 + +```javascript +/foo[^]bar/.test('foo\nbar') +// true +``` + +这种解决方案毕竟不太符合直觉,所以现在有一个[提案](https://github.com/mathiasbynens/es-regexp-dotall-flag),引入`/s`修饰符,使得`.`可以匹配任意单个字符。 + +```javascript +/foo.bar/s.test('foo\nbar') // true +``` + +这被称为`dotAll`模式,即点(dot)代表一切字符。所以,正则表达式还引入了一个`dotAll`属性,返回一个布尔值,表示该正则表达式是否处在`dotAll`模式。 + +```javascript +const re = /foo.bar/s; +// 另一种写法 +// const re = new RegExp('foo.bar', 's'); + +re.test('foo\nbar') // true +re.dotAll // true +re.flags // 's' +``` + +`/s`修饰符和多行修饰符`/m`不冲突,两者一起使用的情况下,`.`匹配所有字符,而`^`和`$`匹配每一行的行首和行尾。 + ## 后行断言 JavaScript语言的正则表达式,只支持先行断言(lookahead)和先行否定断言(negative lookahead),不支持后行断言(lookbehind)和后行否定断言(negative lookbehind)。 From dc445752054f227cbd5436782a6cdb44f6d570cb Mon Sep 17 00:00:00 2001 From: Sandon Date: Sat, 3 Dec 2016 07:50:06 +0800 Subject: [PATCH 141/994] change 'charCodeAt' to 'codePointAt' I think maybe it is a clerical error. Maybe 'codePointAt' is the word you want to write, because it is more reasonable according to the context. --- docs/string.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/string.md b/docs/string.md index 8db616a94..ad5bef367 100644 --- a/docs/string.md +++ b/docs/string.md @@ -75,7 +75,7 @@ var s = '𠮷a'; s.codePointAt(0) // 134071 s.codePointAt(1) // 57271 -s.charCodeAt(2) // 97 +s.codePointAt(2) // 97 ``` `codePointAt`方法的参数,是字符在字符串中的位置(从0开始)。上面代码中,JavaScript将“𠮷a”视为三个字符,codePointAt方法在第一个字符上,正确地识别了“𠮷”,返回了它的十进制码点134071(即十六进制的`20BB7`)。在第二个字符(即“𠮷”的后两个字节)和第三个字符“a”上,`codePointAt`方法的结果与`charCodeAt`方法相同。 @@ -88,10 +88,10 @@ s.charCodeAt(2) // 97 var s = '𠮷a'; s.codePointAt(0).toString(16) // "20bb7" -s.charCodeAt(2).toString(16) // "61" +s.codePointAt(2).toString(16) // "61" ``` -你可能注意到了,`codePointAt`方法的参数,仍然是不正确的。比如,上面代码中,字符`a`在字符串`s`的正确位置序号应该是1,但是必须向`charCodeAt`方法传入2。解决这个问题的一个办法是使用`for...of`循环,因为它会正确识别32位的UTF-16字符。 +你可能注意到了,`codePointAt`方法的参数,仍然是不正确的。比如,上面代码中,字符`a`在字符串`s`的正确位置序号应该是1,但是必须向`codePointAt`方法传入2。解决这个问题的一个办法是使用`for...of`循环,因为它会正确识别32位的UTF-16字符。 ```javascript var s = '𠮷a'; From 366c4ddfb559d3d64db16e4ab67c6a7159c06aff Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 3 Dec 2016 09:43:14 +0800 Subject: [PATCH 142/994] docs(string): edit string --- docs/iterator.md | 4 ++-- docs/string.md | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/iterator.md b/docs/iterator.md index 70cc0d431..5aefebbd9 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -708,14 +708,14 @@ var es6 = { standard: "ECMA-262" }; -for (e in es6) { +for (let e in es6) { console.log(e); } // edition // committee // standard -for (e of es6) { +for (let e of es6) { console.log(e); } // TypeError: es6 is not iterable diff --git a/docs/string.md b/docs/string.md index ad5bef367..a1da37278 100644 --- a/docs/string.md +++ b/docs/string.md @@ -21,9 +21,9 @@ JavaScript允许采用`\uxxxx`形式表示一个字符,其中“xxxx”表示 // " 7" ``` -上面代码表示,如果直接在“\u”后面跟上超过`0xFFFF`的数值(比如`\u20BB7`),JavaScript会理解成“\u20BB+7”。由于`\u20BB`是一个不可打印字符,所以只会显示一个空格,后面跟着一个7。 +上面代码表示,如果直接在`\u`后面跟上超过`0xFFFF`的数值(比如`\u20BB7`),JavaScript会理解成`\u20BB+7`。由于`\u20BB`是一个不可打印字符,所以只会显示一个空格,后面跟着一个`7`。 -ES6对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。 +ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。 ```javascript "\u{20BB7}" @@ -53,7 +53,7 @@ hell\u{6F} // 123 ## codePointAt() -JavaScript内部,字符以UTF-16的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode码点大于0xFFFF的字符),JavaScript会认为它们是两个字符。 +JavaScript内部,字符以UTF-16的格式储存,每个字符固定为`2`个字节。对于那些需要`4`个字节储存的字符(Unicode码点大于`0xFFFF`的字符),JavaScript会认为它们是两个字符。 ```javascript var s = "𠮷"; @@ -65,7 +65,7 @@ s.charCodeAt(0) // 55362 s.charCodeAt(1) // 57271 ``` -上面代码中,汉字“𠮷”的码点是`0x20BB7`,UTF-16编码为`0xD842 0xDFB7`(十进制为55362 57271),需要4个字节储存。对于这种4个字节的字符,JavaScript不能正确处理,字符串长度会误判为2,而且`charAt`方法无法读取整个字符,`charCodeAt`方法只能分别返回前两个字节和后两个字节的值。 +上面代码中,汉字“𠮷”(注意,这个字不是”吉祥“的”吉“)的码点是`0x20BB7`,UTF-16编码为`0xD842 0xDFB7`(十进制为`55362 57271`),需要`4`个字节储存。对于这种`4`个字节的字符,JavaScript不能正确处理,字符串长度会误判为`2`,而且`charAt`方法无法读取整个字符,`charCodeAt`方法只能分别返回前两个字节和后两个字节的值。 ES6提供了`codePointAt`方法,能够正确处理4个字节储存的字符,返回一个字符的码点。 From eba11dd8c79819d8af9aa4ff39e35a901c0449d9 Mon Sep 17 00:00:00 2001 From: xhlwill Date: Sun, 4 Dec 2016 02:49:08 +0800 Subject: [PATCH 143/994] =?UTF-8?q?fix:=20IIFE=20=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E5=AE=9A=E6=98=AF=E5=8C=BF=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (function a() { console.log('aaa'); }()); --- docs/let.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/let.md b/docs/let.md index 80c86e4fa..f5dff27cc 100644 --- a/docs/let.md +++ b/docs/let.md @@ -255,7 +255,7 @@ ES6允许块级作用域的任意嵌套。 }}}}; ``` -块级作用域的出现,实际上使得获得广泛应用的立即执行匿名函数(IIFE)不再必要了。 +块级作用域的出现,实际上使得获得广泛应用的立即执行函数(IIFE)不再必要了。 ```javascript // IIFE写法 From 28050a9db71b68a03b7072c1c879599bd6af1f06 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 4 Dec 2016 10:09:20 +0800 Subject: [PATCH 144/994] docs(modual): add import() --- docs/module.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++- docs/reference.md | 3 +++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/docs/module.md b/docs/module.md index 2fee0a256..be2a4a396 100644 --- a/docs/module.md +++ b/docs/module.md @@ -927,6 +927,54 @@ console.log(A); // 1 console.log(B); // 3 ``` +## import() + +上面说过了,`import`语句会被JavaScript引擎静态分析,先于模块内的其他模块执行(叫做”连接“更合适)。所以,下面的代码会报错。 + +```javascript +// 报错 +if (x === 2) { + import MyModual from './myModual'; +} +``` + +上面代码中,引擎处理`import`语句是在执行之前,所以`import`语句放在`if`代码块之中毫无意义,因此会报句法错误,而不是执行时错误。 + +这样的设计,固然有利于编译器提高效率,但也导致无法在运行时加载模块。从长远来看,`import`语句会取代 Node 的`require`方法,但是`require`是运行时加载模块,`import`语句显然无法取代这种动态加载功能。 + +```javascript +const path = './' + fileName; +const myModual = require(path); +``` + +上面的语句就是动态加载,`require`到底加载哪一个模块,只有运行时才知道。`import`语句做不到这一点。 + +因此,有一个[提案](https://github.com/tc39/proposal-dynamic-import),建议引入`import()`函数,完成动态加载。 + +```javascript +import(specifier) +``` + +上面代码中,`import`函数的参数`specifier`,指定所要加载的模块的位置。`import`语句能够接受什么参数,`import()`函数就能接受什么参数,两者区别主要是后者为动态加载。 + +`import()`返回一个 Promise 对象。下面是一个例子。 + +```javascript +const main = document.querySelector('main'); + +import(`./section-modules/${someVariable}.js`) + .then(module => { + module.loadPageInto(main); + }) + .catch(err => { + main.textContent = err.message; + }); +``` + +`import()`函数可以用在任何地方,不仅仅是模块,非模块的脚本也可以使用。它是运行时执行,也就是说,什么时候运行到这一句,也会加载指定的模块。另外,`import()`函数与所加载的模块没有静态连接关系,这点也是与`import`语句不相同。 + +`import()`类似于 Node 的`require`方法,区别主要是前者是异步加载,后者是同步加载。 + ## ES6模块的转码 浏览器目前还不支持ES6模块,为了现在就能使用,可以将转为ES5的写法。除了Babel可以用来转码之外,还有以下两个方法,也可以用来转码。 @@ -997,4 +1045,5 @@ System.import('app/es6-file').then(function(m) { ``` -上面代码中,`System.import`方法返回的是一个Promise对象,所以可以用then方法指定回调函数。 +上面代码中,`System.import`方法返回的是一个 Promise 对象,所以可以用`then`方法指定回调函数。 + diff --git a/docs/reference.md b/docs/reference.md index 6c9f62f8b..f64498032 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -8,7 +8,10 @@ - [ECMAScript Current Proposals](https://github.com/tc39/ecma262): ECMAScript当前的所有提案 - [ECMAScript Active Proposals](https://github.com/tc39/proposals): 已经进入正式流程的提案 - [ECMAscript proposals](https://github.com/hemanth/es-next):从阶段0到阶段4的所有提案列表 +- [TC39 meeting agendas](https://github.com/tc39/agendas): TC39 委员会历年的会议记录 - [ECMAScript Daily](https://ecmascript-daily.github.io/): TC39委员会的动态 +- [The TC39 Process](https://tc39.github.io/process-document/): 提案进入正式规格的流程 +- [TC39: A Process Sketch, Stages 0 and 1](https://thefeedbackloop.xyz/tc39-a-process-sketch-stages-0-and-1/): Stage 0 和 Stage 1 的含义 ## 综合介绍 From fd079ccda17d9f144ebb50ec9f041ce2926655a7 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 4 Dec 2016 10:26:11 +0800 Subject: [PATCH 145/994] docs(let): edit let --- docs/let.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/let.md b/docs/let.md index f5dff27cc..0cc6c2cb7 100644 --- a/docs/let.md +++ b/docs/let.md @@ -255,10 +255,10 @@ ES6允许块级作用域的任意嵌套。 }}}}; ``` -块级作用域的出现,实际上使得获得广泛应用的立即执行函数(IIFE)不再必要了。 +块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了。 ```javascript -// IIFE写法 +// IIFE 写法 (function () { var tmp = ...; ... @@ -359,7 +359,7 @@ function f() { console.log('I am outside!'); } 注意,上面三条规则只对ES6的浏览器实现有效,其他环境的实现不用遵守,还是将块级作用域的函数声明当作`let`处理。 -前面那段代码,在Chrome环境下运行会报错。 +前面那段代码,在 Chrome 环境下运行会报错。 ```javascript // ES6的浏览器环境 From 50e26484052d7116700587b8c0a03da2a07cc0f4 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 5 Dec 2016 22:43:42 +0800 Subject: [PATCH 146/994] docs(module): edit module --- docs/module.md | 136 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 95 insertions(+), 41 deletions(-) diff --git a/docs/module.md b/docs/module.md index be2a4a396..8eba4bcc2 100644 --- a/docs/module.md +++ b/docs/module.md @@ -1,12 +1,10 @@ # Module -ES6的Class只是面向对象编程的语法糖,升级了ES5的构造函数的原型链继承的写法,并没有解决模块化问题。Module功能就是为了解决这个问题而提出的。 +历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的`require`、Python 的`import`,甚至就连 CSS 都有`@import`,但是 JavaScript 任何这方面的支持都没有,这对开发大型的、复杂的项目形成了巨大障碍。 -历史上,JavaScript一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如Ruby的`require`、Python的`import`,甚至就连CSS都有`@import`,但是JavaScript任何这方面的支持都没有,这对开发大型的、复杂的项目形成了巨大障碍。 +在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代现有的 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。 -在ES6之前,社区制定了一些模块加载方案,最主要的有CommonJS和AMD两种。前者用于服务器,后者用于浏览器。ES6在语言规格的层面上,实现了模块功能,而且实现得相当简单,完全可以取代现有的CommonJS和AMD规范,成为浏览器和服务器通用的模块解决方案。 - -ES6模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS和AMD模块,都只能在运行时确定这些东西。比如,CommonJS模块就是对象,输入时必须查找对象属性。 +ES6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS 和 AMD 模块,都只能在运行时确定这些东西。比如,CommonJS 模块就是对象,输入时必须查找对象属性。 ```javascript // CommonJS模块 @@ -19,36 +17,26 @@ let stat = _fs.stat, exists = _fs.exists, readfile = _fs.readfile; 上面代码的实质是整体加载`fs`模块(即加载`fs`的所有方法),生成一个对象(`_fs`),然后再从这个对象上面读取3个方法。这种加载称为“运行时加载”,因为只有运行时才能得到这个对象,导致完全没办法在编译时做“静态优化”。 -ES6模块不是对象,而是通过`export`命令显式指定输出的代码,输入时也采用静态命令的形式。 +ES6 模块不是对象,而是通过`export`命令显式指定输出的代码,再通过`import`命令输入。 ```javascript // ES6模块 import { stat, exists, readFile } from 'fs'; ``` -上面代码的实质是从`fs`模块加载3个方法,其他方法不加载。这种加载称为“编译时加载”,即ES6可以在编译时就完成模块加载,效率要比CommonJS模块的加载方式高。当然,这也导致了没法引用ES6模块本身,因为它不是对象。 +上面代码的实质是从`fs`模块加载3个方法,其他方法不加载。这种加载称为“编译时加载”或者静态加载,即 ES6 可以在编译时就完成模块加载,效率要比 CommonJS 模块的加载方式高。当然,这也导致了没法引用 ES6 模块本身,因为它不是对象。 -由于ES6模块是编译时加载,使得静态分析成为可能。有了它,就能进一步拓宽JavaScript的语法,比如引入宏(macro)和类型检验(type system)这些只能靠静态分析实现的功能。 +由于 ES6 模块是编译时加载,使得静态分析成为可能。有了它,就能进一步拓宽 JavaScript 的语法,比如引入宏(macro)和类型检验(type system)这些只能靠静态分析实现的功能。 -除了静态加载带来的各种好处,ES6模块还有以下好处。 +除了静态加载带来的各种好处,ES6 模块还有以下好处。 -- 不再需要UMD模块格式了,将来服务器和浏览器都会支持ES6模块格式。目前,通过各种工具库,其实已经做到了这一点。 -- 将来浏览器的新API就能用模块格式提供,不再必要做成全局变量或者`navigator`对象的属性。 +- 不再需要`UMD`模块格式了,将来服务器和浏览器都会支持 ES6 模块格式。目前,通过各种工具库,其实已经做到了这一点。 +- 将来浏览器的新 API 就能用模块格式提供,不再必要做成全局变量或者`navigator`对象的属性。 - 不再需要对象作为命名空间(比如`Math`对象),未来这些功能可以通过模块提供。 -浏览器使用ES6模块的语法如下。 - -```html - -``` - -上面代码在网页中插入一个模块`foo.js`,由于`type`属性设为`module`,所以浏览器知道这是一个ES6模块。 - -Node的默认模块格式是CommonJS,目前还没决定怎么支持ES6模块。所以,只能通过Babel这样的转码器,在Node里面使用ES6模块。 - ## 严格模式 -ES6的模块自动采用严格模式,不管你有没有在模块头部加上`"use strict";`。 +ES6 的模块自动采用严格模式,不管你有没有在模块头部加上`"use strict";`。 严格模式主要有以下限制。 @@ -68,13 +56,13 @@ ES6的模块自动采用严格模式,不管你有没有在模块头部加上`" - 不能使用`fn.caller`和`fn.arguments`获取函数调用的堆栈 - 增加了保留字(比如`protected`、`static`和`interface`) -上面这些限制,模块都必须遵守。由于严格模式是ES5引入的,不属于ES6,所以请参阅相关ES5书籍,本书不再详细介绍了。 +上面这些限制,模块都必须遵守。由于严格模式是 ES5 引入的,不属于 ES6,所以请参阅相关 ES5 书籍,本书不再详细介绍了。 -## export命令 +## export 命令 模块功能主要由两个命令构成:`export`和`import`。`export`命令用于规定模块的对外接口,`import`命令用于输入其他模块提供的功能。 -一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用`export`关键字输出该变量。下面是一个JS文件,里面使用`export`命令输出变量。 +一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用`export`关键字输出该变量。下面是一个 JS 文件,里面使用`export`命令输出变量。 ```javascript // profile.js @@ -188,13 +176,12 @@ foo() 上面代码中,`export`语句放在函数之中,结果报错。 -## import命令 +## import 命令 -使用`export`命令定义了模块的对外接口以后,其他JS文件就可以通过`import`命令加载这个模块(文件)。 +使用`export`命令定义了模块的对外接口以后,其他 JS 文件就可以通过`import`命令加载这个模块。 ```javascript // main.js - import {firstName, lastName, year} from './profile'; function setName(element) { @@ -202,14 +189,22 @@ function setName(element) { } ``` -上面代码的`import`命令,就用于加载`profile.js`文件,并从中输入变量。`import`命令接受一个对象(用大括号表示),里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(`profile.js`)对外接口的名称相同。 +上面代码的`import`命令,用于加载`profile.js`文件,并从中输入变量。`import`命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(`profile.js`)对外接口的名称相同。 -如果想为输入的变量重新取一个名字,import命令要使用`as`关键字,将输入的变量重命名。 +如果想为输入的变量重新取一个名字,`import`命令要使用`as`关键字,将输入的变量重命名。 ```javascript import { lastName as surname } from './profile'; ``` +`import`后面的`from`指定模块文件的位置,可以是相对路径,也可以是绝对路径,`.js`路径可以省略。如果只是模块名,不带有路径,那么必须有配置文件,告诉 JavaScript 引擎该模块的位置。 + +```javascript +import {myMethod} from 'util'; +``` + +上面代码中,`util`是模块文件名,由于不带有路径,必须通过配置,告诉引擎怎么取到这个模块。 + 注意,`import`命令具有提升效果,会提升到整个模块的头部,首先执行。 ```javascript @@ -218,7 +213,56 @@ foo(); import { foo } from 'my_module'; ``` -上面的代码不会报错,因为`import`的执行早于`foo`的调用。 +上面的代码不会报错,因为`import`的执行早于`foo`的调用。这种行为的本质是,`import`命令是编译阶段执行的,在代码运行之前。 + +由于`import`是静态执行,所以不能使用表达式和变量,这些只有在运行时才能得到结果的语法结构。 + +```javascript +// 报错 +import { 'f' + 'oo' } from 'my_module'; + +// 报错 +let module = 'my_module'; +import { foo } from module; + +// 报错 +if (x === 1) { + import { foo } from 'module1'; +} else { + import { foo } from 'module2'; +} +``` + +上面三种写法都会报错,因为它们用到了表达式、变量和`if`结构。在静态分析阶段,这些语法都是没法得到值的。 + +最后,`import`语句会执行所加载的模块,因此可以有下面的写法。 + +```javascript +import 'lodash'; +``` + +上面代码仅仅执行`lodash`模块,但是不输入任何值。 + +如果多次重复执行同一句`import`语句,那么只会执行一次,而不会执行多次。 + +```javascript +import 'lodash'; +import 'lodash'; +``` + +上面代码加载了两次`lodash`,但是只会执行一次。 + +```javascript +import { foo } from 'my_module'; +import { bar } from 'my_module'; + +// 等同于 +import { foo, bar } from 'my_module'; +``` + +上面代码中,虽然`foo`和`bar`在两个语句中加载,但是它们对应的是同一个`my_module`实例。也就是说,`import`语句是 Singleton 模式。 + +## export 与 import 复合的写法 如果在一个模块之中,先输入后输出同一个模块,`import`语句可以与`export`语句写在一起。 @@ -235,21 +279,13 @@ export default es6; 另外,ES7有一个[提案](https://github.com/leebyron/ecmascript-more-export-from),简化先输入后输出的写法,拿掉输出时的大括号。 ```javascript -// 提案的写法 -export v from 'mod'; - // 现行的写法 export {v} from 'mod'; -``` -`import`语句会执行所加载的模块,因此可以有下面的写法。 - -```javascript -import 'lodash'; +// 提案的写法 +export v from 'mod'; ``` -上面代码仅仅执行`lodash`模块,但是不输入任何值。 - ## 模块的整体加载 除了指定加载某个输出值,还可以使用整体加载,即用星号(`*`)指定一个对象,所有输出值都加载在这个对象上面。 @@ -612,6 +648,24 @@ $ babel-node main.js 这就证明了`x.js`和`y.js`加载的都是`C`的同一个实例。 +## 浏览器的模块加载 + +浏览器使用 ES6 模块的语法如下。 + +```html + +``` + +上面代码在网页中插入一个模块`foo.js`,由于`type`属性设为`module`,所以浏览器知道这是一个 ES6 模块。 + +浏览器对于带有`type="module"`的` @@ -1104,7 +1150,7 @@ $ compile-modules convert -o out.js file1.js 上面代码中的`./app`,指的是当前目录下的app.js文件。它可以是ES6模块文件,`System.import`会自动将其转码。 -需要注意的是,`System.import`使用异步加载,返回一个Promise对象,可以针对这个对象编程。下面是一个模块文件。 +需要注意的是,`System.import`使用异步加载,返回一个 Promise 对象,可以针对这个对象编程。下面是一个模块文件。 ```javascript // app/es6-file.js: From 51f3119ef6e46056abe52da93e071b7c1bbfcd31 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 6 Dec 2016 12:56:38 +0800 Subject: [PATCH 150/994] docs(module): edit module --- docs/module.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/module.md b/docs/module.md index 377ee3168..bde9dda97 100644 --- a/docs/module.md +++ b/docs/module.md @@ -456,23 +456,23 @@ export { foo, boo}; 上面代码中,`export`和`import`语句可以结合在一起,写成一行。 -模块的改名输出和整体输出,也可以采用这种写法。 +模块的接口改名和整体输出,也可以采用这种写法。 ```javascript -// 改名输出 +// 接口改名 export { foo as myFoo } from 'my_module'; // 整体输出 export * from 'my_module'; ``` -默认输出的写法如下。 +默认接口的写法如下。 ```javascript export { default } from 'foo'; ``` -将某个接口改为默认输出的写法如下。 +具名接口改为默认接口的写法如下。 ```javascript export { es6 as default } from './someModule'; @@ -482,7 +482,7 @@ import { es6 } from './someModule'; export default es6; ``` -同样地,默认输出也可以改名为具名接口。 +同样地,默认接口也可以改名为具名接口。 ```javascript export { default as es6 } from './someModule'; From e9fbf72aac671c5dc304a88b0684199f3559182f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 7 Dec 2016 20:08:53 +0800 Subject: [PATCH 151/994] docs(class): edit class/super --- docs/class.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/class.md b/docs/class.md index b73a4d1f4..502305c67 100644 --- a/docs/class.md +++ b/docs/class.md @@ -304,7 +304,7 @@ class Foo {} } ``` -上面的代码不会报错,因为`class`继承`Foo`的时候,`Foo`已经有定义了。但是,如果存在`class`的提升,上面代码就会报错,因为`class`会被提升到代码头部,而`let`命令是不提升的,所以导致`class`继承`Foo`的时候,`Foo`还没有定义。 +上面的代码不会报错,因为`Bar`继承`Foo`的时候,`Foo`已经有定义了。但是,如果存在`class`的提升,上面代码就会报错,因为`class`会被提升到代码头部,而`let`命令是不提升的,所以导致`Bar`继承`Foo`的时候,`Foo`还没有定义。 ### Class表达式 @@ -759,7 +759,7 @@ new A() // A new B() // B ``` -上面代码中,`new.target`指向当前正在执行的函数名。可以看到,在`super()`执行时,它指向的是子类`B`的构造函数,而不是父类`A`的构造函数。也就是说,`super()`内部的`this`指向的是`B`。 +上面代码中,`new.target`指向当前正在执行的函数。可以看到,在`super()`执行时,它指向的是子类`B`的构造函数,而不是父类`A`的构造函数。也就是说,`super()`内部的`this`指向的是`B`。 作为函数时,`super()`只能用在子类的构造函数之中,用在其他地方就会报错。 @@ -773,6 +773,8 @@ class B extends A { } ``` +上面代码中,`super()`用在`B`类的`m`方法之中,就会造成句法错误。 + 第二种情况,`super`作为对象时,指向父类的原型对象。 ```javascript @@ -833,7 +835,7 @@ let b = new B(); 上面代码中,属性`x`是定义在`A.prototype`上面的,所以`super.x`可以取到它的值。 -ES6 有一个特别规定,就是通过`super`调用父类的方法时,`super`会绑定子类的`this`。 +ES6 规定,通过`super`调用父类的方法时,`super`会绑定子类的`this`。 ```javascript class A { From 7f0b3fe2f0f1c30fccf9ed8c3d4f986f4bdc79c7 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 13 Dec 2016 19:22:09 +0800 Subject: [PATCH 152/994] docs(object): edit Object.value() --- docs/class.md | 4 +++- docs/object.md | 14 +++++++------- docs/promise.md | 10 +++++----- docs/reference.md | 1 + 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/class.md b/docs/class.md index 502305c67..29a408462 100644 --- a/docs/class.md +++ b/docs/class.md @@ -624,9 +624,11 @@ class B { // B的实例继承A的实例 Object.setPrototypeOf(B.prototype, A.prototype); +const b = new B(); -// B继承A的静态属性 +// B的实例继承A的静态属性 Object.setPrototypeOf(B, A); +const b = new B(); ``` 《对象的扩展》一章给出过`Object.setPrototypeOf`方法的实现。 diff --git a/docs/object.md b/docs/object.md index e2f7d0b6b..6e330831c 100644 --- a/docs/object.md +++ b/docs/object.md @@ -754,19 +754,19 @@ Object.getPrototypeOf(rec) === Rectangle.prototype // false ``` -## Object.values(),Object.entries() +## Object.keys(),Object.values(),Object.entries() ### Object.keys() -ES5引入了`Object.keys`方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。 +ES5 引入了`Object.keys`方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。 ```javascript -var obj = { foo: "bar", baz: 42 }; +var obj = { foo: 'bar', baz: 42 }; Object.keys(obj) // ["foo", "baz"] ``` -目前,ES7有一个[提案](https://github.com/tc39/proposal-object-values-entries),引入了跟`Object.keys`配套的`Object.values`和`Object.entries`。 +ES2017 [引入](https://github.com/tc39/proposal-object-values-entries)了跟`Object.keys`配套的`Object.values`和`Object.entries`,作为遍历一个对象的补充手段。 ```javascript let {keys, values, entries} = Object; @@ -790,7 +790,7 @@ for (let [key, value] of entries(obj)) { `Object.values`方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。 ```javascript -var obj = { foo: "bar", baz: 42 }; +var obj = { foo: 'bar', baz: 42 }; Object.values(obj) // ["bar", 42] ``` @@ -812,9 +812,9 @@ var obj = Object.create({}, {p: {value: 42}}); Object.values(obj) // [] ``` -上面代码中,`Object.create`方法的第二个参数添加的对象属性(属性`p`),如果不显式声明,默认是不可遍历的。`Object.values`不会返回这个属性。 +上面代码中,`Object.create`方法的第二个参数添加的对象属性(属性`p`),如果不显式声明,默认是不可遍历的,因为`p`是继承的属性,而不是对象自身的属性。`Object.values`不会返回这个属性。 -`Object.values`会过滤属性名为Symbol值的属性。 +`Object.values`会过滤属性名为 Symbol 值的属性。 ```javascript Object.values({ [Symbol()]: 123, foo: 'abc' }); diff --git a/docs/promise.md b/docs/promise.md index 9bf31f2be..79b156472 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -355,7 +355,7 @@ someAsyncThing().then(function() { ```javascript var promise = new Promise(function(resolve, reject) { - resolve("ok"); + resolve('ok'); setTimeout(function() { throw new Error('test') }, 0) }); promise.then(function(value) { console.log(value) }); @@ -363,9 +363,9 @@ promise.then(function(value) { console.log(value) }); // Uncaught Error: test ``` -上面代码中,Promise指定在下一轮“事件循环”再抛出错误,结果由于没有指定使用`try...catch`语句,就冒泡到最外层,成了未捕获的错误。因为此时,Promise的函数体已经运行结束了,所以这个错误是在Promise函数体外抛出的。 +上面代码中,Promise 指定在下一轮“事件循环”再抛出错误,结果由于没有指定使用`try...catch`语句,就冒泡到最外层,成了未捕获的错误。因为此时,Promise的函数体已经运行结束了,所以这个错误是在Promise函数体外抛出的。 -Node.js有一个`unhandledRejection`事件,专门监听未捕获的`reject`错误。 +Node 有一个`unhandledRejection`事件,专门监听未捕获的`reject`错误。 ```javascript process.on('unhandledRejection', function (err, p) { @@ -375,7 +375,7 @@ process.on('unhandledRejection', function (err, p) { 上面代码中,`unhandledRejection`事件的监听函数有两个参数,第一个是错误对象,第二个是报错的Promise实例,它可以用来了解发生错误的环境信息。。 -需要注意的是,`catch`方法返回的还是一个Promise对象,因此后面还可以接着调用`then`方法。 +需要注意的是,`catch`方法返回的还是一个 Promise 对象,因此后面还可以接着调用`then`方法。 ```javascript var someAsyncThing = function() { @@ -776,7 +776,7 @@ run(g); Promise.resolve().then(f) ``` -上面的写法有一个缺点,就是如果`f`是同步函数,那么它会在下一轮事件循环执行。 +上面的写法有一个缺点,就是如果`f`是同步函数,那么它会在本轮事件循环的末尾执行。 ```javascript const f = () => console.log('now'); diff --git a/docs/reference.md b/docs/reference.md index f64498032..e9e82e9bc 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -12,6 +12,7 @@ - [ECMAScript Daily](https://ecmascript-daily.github.io/): TC39委员会的动态 - [The TC39 Process](https://tc39.github.io/process-document/): 提案进入正式规格的流程 - [TC39: A Process Sketch, Stages 0 and 1](https://thefeedbackloop.xyz/tc39-a-process-sketch-stages-0-and-1/): Stage 0 和 Stage 1 的含义 +- [TC39 Process Sketch, Stage 2](https://thefeedbackloop.xyz/tc39-process-sketch-stage-2/): Stage 2 的含义 ## 综合介绍 From 14d35a2e1cd921ea068b9a56c547374b1c76400f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 13 Dec 2016 19:27:28 +0800 Subject: [PATCH 153/994] docs(readme): edit README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67879e0ca..b8cf8da1c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![cover](images/cover_thumbnail.jpg)](images/cover-2nd.jpg) -本书覆盖 ES6/ES7 与 ES5 的所有不同之处,对涉及的语法知识给予详细介绍,并给出大量简洁易懂的示例代码。 +本书覆盖 ES6 与上一个版本 ES5 的所有不同之处,对涉及的语法知识给予详细介绍,并给出大量简洁易懂的示例代码。 本书为中级难度,适合已经掌握 ES5 的读者,用来了解这门语言的最新发展;也可当作参考手册,查寻新增的语法点。 From 2479a47dd45329cda39364085c4ab7a13fb44ad9 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 13 Dec 2016 19:48:04 +0800 Subject: [PATCH 154/994] docs(readme): edit README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b8cf8da1c..0dcb559b9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# ECMAScript 6入门 +# ECMAScript 6 入门 -《ECMAScript 6入门》是一本开源的JavaScript语言教程,全面介绍ECMAScript 6新引入的语法特性。 +《ECMAScript 6 入门》是一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新引入的语法特性。 [![cover](images/cover_thumbnail.jpg)](images/cover-2nd.jpg) From ad472cdf6aca8e75506232ffe7ef1420b5a900c3 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 13 Dec 2016 19:50:51 +0800 Subject: [PATCH 155/994] fix: add .nojekyll --- .nojekyll | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .nojekyll diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb From aab07bdbc8c967fbaf7c48b8ee218f3790d31aed Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 15 Dec 2016 15:24:30 +0800 Subject: [PATCH 156/994] docs(set): edit set --- docs/async.md | 31 ++++++++++++++++--------------- docs/set-map.md | 2 +- docs/symbol.md | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/async.md b/docs/async.md index accdbb4be..cf36a3494 100644 --- a/docs/async.md +++ b/docs/async.md @@ -742,9 +742,9 @@ function* somethingAsync(x) { ### 含义 -ES7提供了`async`函数,使得异步操作变得更加方便。`async`函数是什么?一句话,`async`函数就是Generator函数的语法糖。 +ES2017 标准提供了`async`函数,使得异步操作变得更加方便。 -前文有一个Generator函数,依次读取两个文件。 +`async`函数是什么?一句话,`async`函数就是 Generator 函数的语法糖。前文有一个 Generator 函数,依次读取两个文件。 ```javascript var fs = require('fs'); @@ -777,25 +777,25 @@ var asyncReadFile = async function (){ }; ``` -一比较就会发现,`async`函数就是将Generator函数的星号(`*`)替换成`async`,将`yield`替换成`await`,仅此而已。 +一比较就会发现,`async`函数就是将 Generator 函数的星号(`*`)替换成`async`,将`yield`替换成`await`,仅此而已。 `async`函数对 Generator 函数的改进,体现在以下四点。 -(1)内置执行器。Generator函数的执行必须靠执行器,所以才有了`co`模块,而`async`函数自带执行器。也就是说,`async`函数的执行,与普通函数一模一样,只要一行。 +(1)内置执行器。Generator 函数的执行必须靠执行器,所以才有了`co`模块,而`async`函数自带执行器。也就是说,`async`函数的执行,与普通函数一模一样,只要一行。 ```javascript var result = asyncReadFile(); ``` -上面的代码调用了`asyncReadFile`函数,然后它就会自动执行,输出最后结果。这完全不像Generator函数,需要调用`next`方法,或者用`co`模块,才能得到真正执行,得到最后结果。 +上面的代码调用了`asyncReadFile`函数,然后它就会自动执行,输出最后结果。这完全不像 Generator 函数,需要调用`next`方法,或者用`co`模块,才能得到真正执行,得到最后结果。 (2)更好的语义。`async`和`await`,比起星号和`yield`,语义更清楚了。`async`表示函数里有异步操作,`await`表示紧跟在后面的表达式需要等待结果。 -(3)更广的适用性。 `co`模块约定,`yield`命令后面只能是Thunk函数或Promise对象,而`async`函数的`await`命令后面,可以是Promise对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)。 +(3)更广的适用性。 `co`模块约定,`yield`命令后面只能是 Thunk 函数或 Promise 对象,而`async`函数的`await`命令后面,可以是Promise 对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)。 -(4)返回值是Promise。`async`函数的返回值是Promise对象,这比Generator函数的返回值是Iterator对象方便多了。你可以用`then`方法指定下一步的操作。 +(4)返回值是 Promise。`async`函数的返回值是 Promise 对象,这比 Generator 函数的返回值是 Iterator 对象方便多了。你可以用`then`方法指定下一步的操作。 -进一步说,`async`函数完全可以看作多个异步操作,包装成的一个Promise对象,而`await`命令就是内部`then`命令的语法糖。 +进一步说,`async`函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而`await`命令就是内部`then`命令的语法糖。 ### 语法 @@ -816,7 +816,7 @@ f().then(v => console.log(v)) 上面代码中,函数`f`内部`return`命令返回的值,会被`then`方法回调函数接收到。 -`async`函数内部抛出错误,会导致返回的Promise对象变为`reject`状态。抛出的错误对象会被`catch`方法回调函数接收到。 +`async`函数内部抛出错误,会导致返回的 Promise 对象变为`reject`状态。抛出的错误对象会被`catch`方法回调函数接收到。 ```javascript async function f() { @@ -830,7 +830,7 @@ f().then( // Error: 出错了 ``` -(2)`async`函数返回的Promise对象,必须等到内部所有`await`命令的Promise对象执行完,才会发生状态改变。也就是说,只有`async`函数内部的异步操作执行完,才会执行`then`方法指定的回调函数。 +(2)`async`函数返回的 Promise 对象,必须等到内部所有`await`命令的Promise对象执行完,才会发生状态改变,除非遇到`return`语句或者抛出错误。也就是说,只有`async`函数内部的异步操作执行完,才会执行`then`方法指定的回调函数。 下面是一个例子。 @@ -844,7 +844,9 @@ getTitle('https://tc39.github.io/ecma262/').then(console.log) // "ECMAScript 2017 Language Specification" ``` -(3)正常情况下,`await`命令后面是一个Promise对象。如果不是,会被转成一个立即`resolve`的Promise对象。 +上面代码中,函数`getTitle`内部有三个操作:抓取网页、取出文本、匹配页面标题。只有这三个操作全部完成,才会执行`then`方法里面的`console.log`。 + +(3)正常情况下,`await`命令后面是一个 Promise 对象。如果不是,会被转成一个立即`resolve`的 Promise 对象。 ```javascript async function f() { @@ -1008,8 +1010,6 @@ function spawn(genF) { } ``` -`async`函数是非常新的语法功能,新到都不属于 ES6,而是属于 ES7。目前,它仍处于提案阶段,但是转码器`Babel`和`regenerator`都已经支持,转码后就能使用。 - ### async 函数的用法 `async`函数返回一个Promise对象,可以使用`then`方法添加回调函数。当函数执行的时候,一旦遇到`await`就会先返回,等到触发的异步操作完成,再接着执行函数体内后面的语句。 @@ -1047,7 +1047,7 @@ async function asyncPrint(value, ms) { asyncPrint('hello world', 50); ``` -上面代码指定50毫秒以后,输出"hello world"。 +上面代码指定50毫秒以后,输出`hello world`。 Async函数有多种使用形式。 @@ -1323,7 +1323,7 @@ async function logInOrder(urls) { ## 异步遍历器 -《遍历器》一章说过,Iterator接口是一种数据遍历的协议,只要调用遍历器对象的`next`方法,就会得到一个表示当前成员信息的对象`{value, done}`。其中,`value`表示当前的数据的值,`done`是一个布尔值,表示遍历是否结束。 +《遍历器》一章说过,Iterator 接口是一种数据遍历的协议,只要调用遍历器对象的`next`方法,就会得到一个表示当前成员信息的对象`{value, done}`。其中,`value`表示当前的数据的值,`done`是一个布尔值,表示遍历是否结束。 这隐含着规定,`next`方法是同步的,只要调用就必须立刻返回值。也就是说,一旦执行`next`方法,就必须同步地得到`value`和`done`这两方面的信息。这对于同步操作,当然没有问题,但对于异步操作,就不太合适了。目前的解决方法是,Generator函数里面的异步操作,返回一个Thunk函数或者Promise对象,即`value`属性是一个Thunk函数或者Promise对象,等待以后返回真正的值,而`done`属性则还是同步产生的。 @@ -1587,3 +1587,4 @@ async function* gen2() { // a // b ``` + diff --git a/docs/set-map.md b/docs/set-map.md index 133f64ea0..bff19a611 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -166,7 +166,7 @@ Set结构的实例有四个遍历方法,可以用于遍历成员。 **(1)`keys()`,`values()`,`entries()`** -`key`方法、`value`方法、`entries`方法返回的都是遍历器对象(详见《Iterator对象》一章)。由于Set结构没有键名,只有键值(或者说键名和键值是同一个值),所以`key`方法和`value`方法的行为完全一致。 +`keys`方法、`values`方法、`entries`方法返回的都是遍历器对象(详见《Iterator 对象》一章)。由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以`keys`方法和`values`方法的行为完全一致。 ```javascript let set = new Set(['red', 'green', 'blue']); diff --git a/docs/symbol.md b/docs/symbol.md index 0b4628dc2..be860ee5e 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -303,7 +303,7 @@ let obj = { }; Reflect.ownKeys(obj) -// [Symbol(my_key), 'enum', 'nonEnum'] +// ["enum", "nonEnum", Symbol(my_key)] ``` 由于以 Symbol 值作为名称的属性,不会被常规方法遍历得到。我们可以利用这个特性,为对象定义一些非私有的、但又希望只用于内部的方法。 From 329edc07113461282ca8c1e8bfde7c0409825a74 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 19 Dec 2016 23:13:30 +0800 Subject: [PATCH 157/994] docs(reflect): edit Reflect API --- docs/proxy.md | 315 +++++++++++++++++++++++++++++++++++++++++----- docs/reference.md | 1 + 2 files changed, 288 insertions(+), 28 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 8f5b329c1..80a6e17eb 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -881,11 +881,11 @@ proxy.getDate() // 1 ## Reflect概述 -`Reflect`对象与`Proxy`对象一样,也是ES6为了操作对象而提供的新API。`Reflect`对象的设计目的有这样几个。 +`Reflect`对象与`Proxy`对象一样,也是 ES6 为了操作对象而提供的新 API。`Reflect`对象的设计目的有这样几个。 -(1) 将`Object`对象的一些明显属于语言内部的方法(比如`Object.defineProperty`),放到`Reflect`对象上。现阶段,某些方法同时在`Object`和`Reflect`对象上部署,未来的新方法将只部署在`Reflect`对象上。 +(1) 将`Object`对象的一些明显属于语言内部的方法(比如`Object.defineProperty`),放到`Reflect`对象上。现阶段,某些方法同时在`Object`和`Reflect`对象上部署,未来的新方法将只部署在`Reflect`对象上。也就是说,从`Reflect`对象上可以拿到语言内部的方法。 -(2) 修改某些Object方法的返回结果,让其变得更合理。比如,`Object.defineProperty(obj, name, desc)`在无法定义属性时,会抛出一个错误,而`Reflect.defineProperty(obj, name, desc)`则会返回`false`。 +(2) 修改某些`Object`方法的返回结果,让其变得更合理。比如,`Object.defineProperty(obj, name, desc)`在无法定义属性时,会抛出一个错误,而`Reflect.defineProperty(obj, name, desc)`则会返回`false`。 ```javascript // 老写法 @@ -928,7 +928,7 @@ Proxy(target, { }); ``` -上面代码中,`Proxy`方法拦截`target`对象的属性赋值行为。它采用`Reflect.set`方法将值赋值给对象的属性,然后再部署额外的功能。 +上面代码中,`Proxy`方法拦截`target`对象的属性赋值行为。它采用`Reflect.set`方法将值赋值给对象的属性,确保完成原有的行为,然后再部署额外的功能。 下面是另一个例子。 @@ -949,7 +949,7 @@ var loggedObj = new Proxy(obj, { }); ``` -上面代码中,每一个`Proxy`对象的拦截操作(`get`、`delete`、`has`),内部都调用对应的Reflect方法,保证原生行为能够正常执行。添加的工作,就是将每一个操作输出一行日志。 +上面代码中,每一个`Proxy`对象的拦截操作(`get`、`delete`、`has`),内部都调用对应的`Reflect`方法,保证原生行为能够正常执行。添加的工作,就是将每一个操作输出一行日志。 有了`Reflect`对象以后,很多操作会更易读。 @@ -979,63 +979,322 @@ Reflect.apply(Math.floor, undefined, [1.75]) // 1 - Reflect.getPrototypeOf(target) - Reflect.setPrototypeOf(target, prototype) -上面这些方法的作用,大部分与`Object`对象的同名方法的作用都是相同的,而且它与`Proxy`对象的方法是一一对应的。下面是对其中几个方法的解释。 +上面这些方法的作用,大部分与`Object`对象的同名方法的作用都是相同的,而且它与`Proxy`对象的方法是一一对应的。下面是对它们的解释。 **(1)Reflect.get(target, name, receiver)** -查找并返回`target`对象的`name`属性,如果没有该属性,则返回`undefined`。 +`Reflect.get`方法查找并返回`target`对象的`name`属性,如果没有该属性,则返回`undefined`。 -如果`name`属性部署了读取函数,则读取函数的`this`绑定`receiver`。 +```javascript +var myObject = { + foo: 1, + bar: 2, + get baz() { + return this.foo + this.bar; + }, +} + +Reflect.get(myObject, 'foo') // 1 +Reflect.get(myObject, 'bar') // 2 +Reflect.get(myObject, 'baz') // 3 +``` + +如果`name`属性部署了读取函数(getter),则读取函数的`this`绑定`receiver`。 ```javascript -var obj = { - get foo() { return this.bar(); }, - bar: function() { ... } +var myObject = { + foo: 1, + bar: 2, + get baz() { + return this.foo + this.bar; + }, +}; + +var myReceiverObject = { + foo: 4, + bar: 4, }; -// 下面语句会让 this.bar() -// 变成调用 wrapper.bar() -Reflect.get(obj, "foo", wrapper); +Reflect.get(myObject, 'baz', myReceiverObject) // 8 +``` + +如果第一个参数不是对象,`Reflect.get`方法会报错。 + +```javascript +Reflect.get(1, 'foo') // 报错 +Reflect.get(false, 'foo') // 报错 ``` **(2)Reflect.set(target, name, value, receiver)** -设置`target`对象的`name`属性等于`value`。如果`name`属性设置了赋值函数,则赋值函数的`this`绑定`receiver`。 +`Reflect.set`方法设置`target`对象的`name`属性等于`value`。 + +```javascript +var myObject = { + foo: 1, + set bar(value) { + return this.foo = value; + }, +} + +myObject.foo // 1 + +Reflect.set(myObject, 'foo', 2); +myObject.foo // 2 + +Reflect.set(myObject, 'bar', 3) +myObject.foo // 3 +``` + +如果`name`属性设置了赋值函数,则赋值函数的`this`绑定`receiver`。 + +```javascript +var myObject = { + foo: 4, + set bar(value) { + return this.foo = value; + }, +}; + +var myReceiverObject = { + foo: 0, +}; + +Reflect.set(myObject, 'bar', 1, myReceiverObject); +myObject.foo // 4 +myReceiverObject.foo // 1 +``` + +如果第一个参数不是对象,`Reflect.set`会报错。 + +```javascript +Reflect.set(1, 'foo', {}) // 报错 +Reflect.set(false, 'foo', {}) // 报错 +``` **(3)Reflect.has(obj, name)** -等同于`name in obj`。 +`Reflect.has`方法对应`name in obj`里面的`in`运算符。 + +```javascript +var myObject = { + foo: 1, +}; + +// 旧写法 +'foo' in myObject // true + +// 新写法 +Reflect.has(myObject, 'foo') // true +``` + +如果第一个参数不是对象,`Reflect.has`和`in`运算符都会报错。 **(4)Reflect.deleteProperty(obj, name)** -等同于`delete obj[name]`。 +`Reflect.deleteProperty`方法等同于`delete obj[name]`,用于删除对象的属性。 + +```javascript +const myObj = { foo: 'bar' }; + +// 旧写法 +delete myObj.foo; + +// 新写法 +Reflect.deleteProperty(myObj, 'foo'); +``` **(5)Reflect.construct(target, args)** -等同于`new target(...args)`,这提供了一种不使用`new`,来调用构造函数的方法。 +`Reflect.construct`方法等同于`new target(...args)`,这提供了一种不使用`new`,来调用构造函数的方法。 + +```javascript +function Greeting(name) { + this.name = name; +} + +// new 的写法 +const instance = new Greeting('张三'); + +// Reflect.construct 的写法 +const instance = Reflect.construct(Greeting, '张三'); +``` **(6)Reflect.getPrototypeOf(obj)** -读取对象的`__proto__`属性,对应`Object.getPrototypeOf(obj)`。 +`Reflect.getPrototypeOf`方法用于读取对象的`__proto__`属性,对应`Object.getPrototypeOf(obj)`。 + +```javascript +const myObj = new FancyThing(); + +// 旧写法 +Object.getPrototypeOf(myObj) === FancyThing.prototype; + +// 新写法 +Reflect.getPrototypeOf(myObj) === FancyThing.prototype; +``` + +`Reflect.getPrototypeOf`和`Object.getPrototypeOf`的一个区别是,如果第一个参数不是对象(包括`null`和`undefined`),`Object.getPrototypeOf`会将这个参数转为对象,然后再运行,而`Reflect.getPrototypeOf`会报错。 + +```javascript +Object.getPrototypeOf(1) // undefined +Reflect.getPrototypeOf(1) // 报错 +``` **(7)Reflect.setPrototypeOf(obj, newProto)** -设置对象的`__proto__`属性,对应`Object.setPrototypeOf(obj, newProto)`。 +`Reflect.setPrototypeOf`方法用于设置对象的`__proto__`属性,对应`Object.setPrototypeOf(obj, newProto)`。 -**(8)Reflect.apply(fun,thisArg,args)** +```javascript +const myObj = new FancyThing(); + +// 旧写法 +Object.setPrototypeOf(myObj, OtherThing.prototype); -等同于`Function.prototype.apply.call(fun,thisArg,args)`。一般来说,如果要绑定一个函数的this对象,可以这样写`fn.apply(obj, args)`,但是如果函数定义了自己的`apply`方法,就只能写成`Function.prototype.apply.call(fn, obj, args)`,采用Reflect对象可以简化这种操作。 +// 新写法 +Reflect.setPrototypeOf(myObj, OtherThing.prototype); +``` -另外,需要注意的是,`Reflect.set()`、`Reflect.defineProperty()`、`Reflect.freeze()`、`Reflect.seal()`和`Reflect.preventExtensions()`返回一个布尔值,表示操作是否成功。它们对应的Object方法,失败时都会抛出错误。 +如果第一个参数不是对象,`Reflect.setPrototypeOf`和`Object.setPrototypeOf`都会报错。 ```javascript -// 失败时抛出错误 -Object.defineProperty(obj, name, desc); -// 失败时返回false -Reflect.defineProperty(obj, name, desc); +Object.setPrototypeOf(1) // 报错 +Reflect.setPrototypeOf(1) // 报错 ``` -上面代码中,`Reflect.defineProperty`方法的作用与`Object.defineProperty`是一样的,都是为对象定义一个属性。但是,`Reflect.defineProperty`方法失败时,不会抛出错误,只会返回`false`。 +**(8)Reflect.apply(func, thisArg, args)** + +`Reflect.apply`方法等同于`Function.prototype.apply.call(func, thisArg, args)`,用于绑定`this`对象后执行给定函数。 + +一般来说,如果要绑定一个函数的`this`对象,可以这样写`fn.apply(obj, args)`,但是如果函数定义了自己的`apply`方法,就只能写成`Function.prototype.apply.call(fn, obj, args)`,采用`Reflect`对象可以简化这种操作。 + +```javascript +const ages = [11, 33, 12, 54, 18, 96]; + +// 旧写法 +const youngest = Math.min.apply(Math, ages); +const oldest = Math.max.apply(Math, ages); +const type = Object.prototype.toString.call(youngest); + +// 新写法 +const youngest = Reflect.apply(Math.min, Math, ages); +const oldest = Reflect.apply(Math.max, Math, ages); +const type = Reflect.apply(Object.prototype.toString, youngest); +``` + +**(9)Reflect.defineProperty(target, propertyKey, attributes)** + +`Reflect.defineProperty`方法基本等同于`Object.defineProperty`,用来为对象定义属性。未来,后者会被逐渐废除,请从现在开始就使用`Reflect.defineProperty`代替它。 + +```javascript +function MyDate() { + /*…*/ +} + +// 旧写法 +Object.defineProperty(MyDate, 'now', { + value: () => new Date.now() +}); + +// 新写法 +Reflect.defineProperty(MyDate, 'now', { + value: () => new Date.now() +}); +``` + +如果`Reflect.defineProperty`的第一个参数不是对象,就会抛出错误,比如`Reflect.defineProperty(1, 'foo')`。 + +**(10)Reflect.getOwnPropertyDescriptor(target, propertyKey)** + +`Reflect.getOwnPropertyDescriptor`基本等同于`Object.getOwnPropertyDescriptor`,用于得到指定属性的描述对象,将来会替代掉后者。 + +```javascript +var myObject = {}; +Object.defineProperty(myObject, 'hidden', { + value: true, + enumerable: false, +}); + +// 旧写法 +var theDescriptor = Object.getOwnPropertyDescriptor(myObject, 'hidden'); + +// 新写法 +var theDescriptor = Reflect.getOwnPropertyDescriptor(myObject, 'hidden'); +``` + +`Reflect.getOwnPropertyDescriptor`和`Object.getOwnPropertyDescriptor`的一个区别是,如果第一个参数不是对象,`Object.getOwnPropertyDescriptor(1, 'foo')`不报错,返回`undefined`,而`Reflect.getOwnPropertyDescriptor(1, 'foo')`会抛出错误,表示参数非法。 + +**(11)Reflect.isExtensible (target)** + +`Reflect.isExtensible`方法对应`Object.isExtensible`,返回一个布尔值,表示当前对象是否可扩展。 + +```javascript +const myObject = {}; + +// 旧写法 +Object.isExtensible(myObject) // true + +// 新写法 +Reflect.isExtensible(myObject) // true +``` + +如果参数不是对象,`Object.isExtensible`会返回`false`,因为非对象本来就是不可扩展的,而`Reflect.isExtensible`会报错。 + +```javascript +Object.isExtensible(1) // false +Reflect.isExtensible(1) // 报错 +``` + +**(12)Reflect.preventExtensions(target)** + +`Reflect.preventExtensions`对应`Object.preventExtensions`方法,用于让一个对象变为不可扩展。它返回一个布尔值,表示是否操作成功。 + +```javascript +var myObject = {}; + +// 旧写法 +Object.isExtensible(myObject) // true + +// 新写法 +Reflect.preventExtensions(myObject) // true +``` + +如果参数不是对象,`Object.isExtensible`在 ES5 环境报错,在 ES6 环境返回这个参数,而`Reflect.preventExtensions`会报错。 + +```javascript +// ES5 +Object.preventExtensions(1) // 报错 + +// ES6 +Object.preventExtensions(1) // 1 + +// 新写法 +Reflect.preventExtensions(1) // 报错 +``` + +**(13)Reflect.ownKeys (target)** + +`Reflect.ownKeys`方法用于返回对象的所有属性,基本等同于`Object.getOwnPropertyNames`与`Object.getOwnPropertySymbols`之和。 + +```javascript +var myObject = { + foo: 1, + bar: 2, + [Symbol.for('baz')]: 3, + [Symbol.for('bing')]: 4, +}; + +// 旧写法 +Object.getOwnPropertyNames(myObject) +// ['foo', 'bar'] + +Object.getOwnPropertySymbols(myObject) +//[Symbol.for('baz'), Symbol.for('bing')] + +// 新写法 +Reflect.ownKeys(myObject) +// ['foo', 'bar', Symbol.for('baz'), Symbol.for('bing')] +``` ## 实例:使用 Proxy 实现观察者模式 diff --git a/docs/reference.md b/docs/reference.md index e9e82e9bc..7c369d2e2 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -130,6 +130,7 @@ - Nicolas Bevacqua, [More ES6 Proxy Traps in Depth](http://ponyfoo.com/articles/more-es6-proxy-traps-in-depth) - Axel Rauschmayer, [Pitfall: not all objects can be wrapped transparently by proxies](http://www.2ality.com/2016/11/proxying-builtins.html) - Bertalan Miklos, [Writing a JavaScript Framework - Data Binding with ES6 Proxies](https://blog.risingstack.com/writing-a-javascript-framework-data-binding-es6-proxy/): 使用 Proxy 实现观察者模式 +- Keith Cirkel, [Metaprogramming in ES6: Part 2 - Reflect](https://www.keithcirkel.co.uk/metaprogramming-in-es6-part-2-reflect/): Reflect API 的详细介绍 ## Promise对象 From a6ece9cfa3e4de1c8c65ec8c169d594d52423f91 Mon Sep 17 00:00:00 2001 From: hyjiacan Date: Tue, 20 Dec 2016 09:03:01 +0800 Subject: [PATCH 158/994] Update module.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 拼写错误 --- docs/module.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/module.md b/docs/module.md index bde9dda97..cade8f646 100644 --- a/docs/module.md +++ b/docs/module.md @@ -451,7 +451,7 @@ export { foo, bar } from 'my_module'; // 等同于 import { foo, bar } from 'my_module'; -export { foo, boo}; +export { foo, bar }; ``` 上面代码中,`export`和`import`语句可以结合在一起,写成一行。 From 0d21c136c57a0825d23811419bf7719c6fca644f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 20 Dec 2016 17:39:34 +0800 Subject: [PATCH 159/994] docs: edit Symbol --- docs/symbol.md | 59 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/docs/symbol.md b/docs/symbol.md index be860ee5e..6ac2cbff8 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -552,9 +552,18 @@ a2[1] = 6; ### Symbol.species -对象的`Symbol.species`属性,指向一个方法。该对象作为构造函数创造实例时,会调用这个方法。即如果`this.constructor[Symbol.species]`存在,就会使用这个属性作为构造函数,来创造新的实例对象。 +对象的`Symbol.species`属性,指向当前对象的构造函数。创造实例时,默认会调用这个方法,即使用这个属性返回的函数当作构造函数,来创造新的实例对象。 -`Symbol.species`属性默认的读取器如下。 +```javascript +class MyArray extends Array { + // 覆盖父类 Array 的构造函数 + static get [Symbol.species]() { return Array; } +} +``` + +上面代码中,子类`MyArray`继承了父类`Array`。创建`MyArray`的实例对象时,本来会调用它自己的构造函数(本例中被省略了),但是由于定义了`Symbol.species`属性,所以会使用这个属性返回的的函数,创建`MyArray`的实例。 + +这个例子也说明,定义`Symbol.species`属性要采用`get`读取器。默认的`Symbol.species`属性等同于下面的写法。 ```javascript static get [Symbol.species]() { @@ -562,6 +571,21 @@ static get [Symbol.species]() { } ``` +下面是一个例子。 + +```javascript +class MyArray extends Array { + static get [Symbol.species]() { return Array; } +} +var a = new MyArray(1,2,3); +var mapped = a.map(x => x * x); + +mapped instanceof MyArray // false +mapped instanceof Array // true +``` + +上面代码中,由于构造函数被替换成了`Array`。所以,`mapped`对象不是`MyArray`的实例,而是`Array`的实例。 + ### Symbol.match 对象的`Symbol.match`属性,指向一个函数。当执行`str.match(myObject)`时,如果该属性存在,会调用它,返回该方法的返回值。 @@ -631,6 +655,37 @@ String.prototype.split(separator, limit) separator[Symbol.split](this, limit) ``` +下面是一个例子。 + +```javascript +class MySplitter { + constructor(value) { + this.value = value; + } + [Symbol.split](string) { + var index = string.indexOf(this.value); + if (index === -1) { + return string; + } + return [ + string.substr(0, index), + string.substr(index + this.value.length) + ]; + } +} + +'foobar'.split(new MySplitter('foo')) +// ['', 'bar'] + +'foobar'.split(new MySplitter('bar')) +// ['foo', ''] + +'foobar'.split(new MySplitter('baz')) +// 'foobar' +``` + +上面方法使用`Symbol.split`方法,重新定义了字符串对象的`split`方法的行为, + ### Symbol.iterator 对象的`Symbol.iterator`属性,指向该对象的默认遍历器方法。 From 09a72af364de00ea54bab9af108d9b2e59f5bac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=AE=81?= Date: Wed, 21 Dec 2016 14:52:33 +0800 Subject: [PATCH 160/994] Update and rename object.md to object2.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 处理数组 这里写反了 --- docs/{object.md => object2.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename docs/{object.md => object2.md} (99%) diff --git a/docs/object.md b/docs/object2.md similarity index 99% rename from docs/object.md rename to docs/object2.md index 6e330831c..3e849b8c9 100644 --- a/docs/object.md +++ b/docs/object2.md @@ -460,7 +460,7 @@ Object.assign([1, 2, 3], [4, 5]) // [4, 5, 3] ``` -上面代码中,`Object.assign`把数组视为属性名为0、1、2的对象,因此目标数组的0号属性`4`覆盖了原数组的0号属性`1`。 +上面代码中,`Object.assign`把数组视为属性名为0、1、2的对象,因此源数组的0号属性`4`覆盖了目标数组的0号属性`1`。 ### 常见用途 From 192928dc4281f3fa76f1218db1b79416b31659b1 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 21 Dec 2016 14:54:20 +0800 Subject: [PATCH 161/994] docs(let): edit let --- docs/let.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/let.md b/docs/let.md index 0cc6c2cb7..bce62d81f 100644 --- a/docs/let.md +++ b/docs/let.md @@ -29,7 +29,7 @@ console.log(i); 上面代码中,计数器`i`只在`for`循环体内有效,在循环体外引用就会报错。 -下面的代码如果使用`var`,最后输出的是10。 +下面的代码如果使用`var`,最后输出的是`10`。 ```javascript var a = []; @@ -55,17 +55,19 @@ for (let i = 0; i < 10; i++) { a[6](); // 6 ``` -上面代码中,变量`i`是`let`声明的,当前的`i`只在本轮循环有效,所以每一次循环的`i`其实都是一个新的变量,所以最后输出的是6。 +上面代码中,变量`i`是`let`声明的,当前的`i`只在本轮循环有效,所以每一次循环的`i`其实都是一个新的变量,所以最后输出的是`6`。你可能会问,如果每一轮循环的变量`i`都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量`i`时,就在上一轮循环的基础上进行计算。 ### 不存在变量提升 `let`不像`var`那样会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错。 ```javascript +// var 的情况 console.log(foo); // 输出undefined -console.log(bar); // 报错ReferenceError - var foo = 2; + +// let 的情况 +console.log(bar); // 报错ReferenceError let bar = 2; ``` @@ -88,7 +90,7 @@ if (true) { ES6明确规定,如果区块中存在`let`和`const`命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。 -总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)。 +总之,在代码块内,使用`let`命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。 ```javascript if (true) { From 496e286eebb6416530ba02272a7069de3572392f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 23 Dec 2016 10:13:10 +0800 Subject: [PATCH 162/994] fix: restore object.md --- docs/{object2.md => object.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{object2.md => object.md} (100%) diff --git a/docs/object2.md b/docs/object.md similarity index 100% rename from docs/object2.md rename to docs/object.md From c7d9c5d138b8fb76bdaf3b1046399faf02a4a7cf Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 24 Dec 2016 11:53:18 +0800 Subject: [PATCH 163/994] docs: add new chapter of Reflect --- docs/proxy.md | 611 +++++++++++------------------------------------- docs/reflect.md | 458 ++++++++++++++++++++++++++++++++++++ sidebar.md | 3 +- 3 files changed, 597 insertions(+), 475 deletions(-) create mode 100644 docs/reflect.md diff --git a/docs/proxy.md b/docs/proxy.md index 80a6e17eb..7ea05257e 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -1,6 +1,6 @@ -# Proxy 和 Reflect +# Proxy -## Proxy 概述 +## 概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 @@ -70,7 +70,7 @@ target.a // "b" 上面代码中,`handler`是一个空对象,没有任何拦截效果,访问`handler`就等同于访问`target`。 -一个技巧是将Proxy对象,设置到`object.proxy`属性,从而可以在`object`对象上调用。 +一个技巧是将 Proxy 对象,设置到`object.proxy`属性,从而可以在`object`对象上调用。 ```javascript var object = { proxy: new Proxy(target, handler) }; @@ -145,7 +145,7 @@ fproxy.foo // "Hello, foo" **(5)ownKeys(target)** -拦截`Object.getOwnPropertyNames(proxy)`、`Object.getOwnPropertySymbols(proxy)`、`Object.keys(proxy)`,返回一个数组。该方法返回对象所有自身的属性,而`Object.keys()`仅返回对象可遍历的属性。 +拦截`Object.getOwnPropertyNames(proxy)`、`Object.getOwnPropertySymbols(proxy)`、`Object.keys(proxy)`,返回一个数组。该方法返回目标对象所有自身的属性的属性名,而`Object.keys()`的返回结果仅包括目标对象自身的可遍历属性。 **(6)getOwnPropertyDescriptor(target, propKey)** @@ -181,7 +181,7 @@ fproxy.foo // "Hello, foo" 拦截 Proxy 实例作为构造函数调用的操作,比如`new proxy(...args)`。 -## Proxy实例的方法 +## Proxy 实例的方法 下面是上面这些拦截方法的详细介绍。 @@ -349,7 +349,7 @@ person.age = 'young' // 报错 person.age = 300 // 报错 ``` -上面代码中,由于设置了存值函数`set`,任何不符合要求的`age`属性赋值,都会抛出一个错误。利用`set`方法,还可以数据绑定,即每当对象发生变化时,会自动更新DOM。 +上面代码中,由于设置了存值函数`set`,任何不符合要求的`age`属性赋值,都会抛出一个错误,这是数据验证的一种实现方法。利用`set`方法,还可以数据绑定,即每当对象发生变化时,会自动更新 DOM。 有时,我们会在对象上面设置内部属性,属性名的第一个字符使用下划线开头,表示这些属性不应该被外部使用。结合`get`和`set`方法,就可以做到防止这些内部属性被外部读写。 @@ -382,7 +382,9 @@ proxy._prop = 'c' ### apply() -`apply`方法拦截函数的调用、call和apply操作。 +`apply`方法拦截函数的调用、`call`和`apply`操作。 + +`apply`方法可以接受三个参数,分别是目标对象、目标对象的上下文对象(`this`)和目标对象的参数数组。 ```javascript var handler = { @@ -392,8 +394,6 @@ var handler = { }; ``` -`apply`方法可以接受三个参数,分别是目标对象、目标对象的上下文对象(`this`)和目标对象的参数数组。 - 下面是一个例子。 ```javascript @@ -410,7 +410,7 @@ p() // "I am the proxy" ``` -上面代码中,变量`p`是Proxy的实例,当它作为函数调用时(`p()`),就会被`apply`方法拦截,返回一个字符串。 +上面代码中,变量`p`是 Proxy 的实例,当它作为函数调用时(`p()`),就会被`apply`方法拦截,返回一个字符串。 下面是另外一个例子。 @@ -464,6 +464,7 @@ var proxy = new Proxy(target, handler); ```javascript var obj = { a: 10 }; Object.preventExtensions(obj); + var p = new Proxy(obj, { has: function(target, prop) { return false; @@ -538,14 +539,14 @@ var handler = { 下面是一个例子。 ```javascript -var p = new Proxy(function() {}, { +var p = new Proxy(function () {}, { construct: function(target, args) { console.log('called: ' + args.join(', ')); return { value: args[0] * 10 }; } }); -new p(1).value +(new p(1)).value // "called: 1" // 10 ``` @@ -693,24 +694,34 @@ Object.isExtensible(p) // 报错 ### ownKeys() -`ownKeys`方法用来拦截`Object.keys()`操作。 +`ownKeys`方法用来拦截以下操作。 + +- `Object.getOwnPropertyNames()` +- `Object.getOwnPropertySymbols()` +- `Object.keys()` + +下面是拦截`Object.keys()`的例子。 ```javascript -let target = {}; +let target = { + a: 1, + b: 2, + c: 3 +}; let handler = { ownKeys(target) { - return ['hello', 'world']; + return ['a']; } }; let proxy = new Proxy(target, handler); Object.keys(proxy) -// [ 'hello', 'world' ] +// [ 'a' ] ``` -上面代码拦截了对于`target`对象的`Object.keys()`操作,返回预先设定的数组。 +上面代码拦截了对于`target`对象的`Object.keys()`操作,只返回`a`、`b`、`c`三个属性之中的`a`属性。 下面的例子是拦截第一个字符为下划线的属性名。 @@ -734,6 +745,114 @@ for (let key of Object.keys(proxy)) { // "baz" ``` +注意,有三类属性会被`ownKeys`方法自动过滤,不会返回。 + +- 目标对象上不存在的属性 +- 属性名为 Symbol 值 +- 不可遍历(`enumerable`)的属性 + +```javascript +let target = { + a: 1, + b: 2, + c: 3, + [Symbol.for('secret')]: '4', +}; + +Object.defineProperty(target, 'key', { + enumerable: false, + configurable: true, + writable: true, + value: 'static' +}); + +let handler = { + ownKeys(target) { + return ['a', 'd', Symbol.for('secret'), 'key']; + } +}; + +let proxy = new Proxy(target, handler); + +Object.keys(proxy) +// ['a'] +``` + +上面代码中,`ownKeys`方法之中,显式返回不存在的属性(`d`)、Symbol 值(`Symbol.for('secret')`)、不可遍历的属性(`key`),结果都被自动过滤掉。 + +下面是拦截`Object.getOwnPropertyNames()`的例子。 + +```javascript +var p = new Proxy({}, { + ownKeys: function(target) { + return ['a', 'b', 'c']; + } +}); + +Object.getOwnPropertyNames(p) +// [ 'a', 'b', 'c' ] +``` + +注意,`ownKeys`方法返回的数组成员,只能是字符串或 Symbol 值。如果有其他类型的值,或者返回的根本不是数组,就会报错。 + +```javascript +var obj = {}; + +var p = new Proxy(obj, { + ownKeys: function(target) { + return [123, true, undefined, null, {}, []]; + } +}); + +Object.getOwnPropertyNames(p) +// Uncaught TypeError: 123 is not a valid property name +``` + +上面代码中,`ownKeys`方法虽然返回一个数组,但是每一个数组成员都不是字符串或 Symbol 值,因此就报错了。 + +如果目标对象自身包含不可配置的属性,则该属性必须被`ownKeys`方法返回,否则报错。 + +```javascript +var obj = {}; +Object.defineProperty(obj, 'a', { + configurable: false, + enumerable: true, + value: 10 } +); + +var p = new Proxy(obj, { + ownKeys: function(target) { + return ['b']; + } +}); + +Object.getOwnPropertyNames(p) +// Uncaught TypeError: 'ownKeys' on proxy: trap result did not include 'a' +``` + +上面代码中,`obj`对象的`a`属性是不可配置的,这时`ownKeys`方法返回的数组之中,必须包含`a`,否则会报错。 + +另外,如果目标对象是不可扩展的(non-extensition),这时`ownKeys`方法返回的数组之中,必须包含原对象的所有属性,且不能包含多余的属性,否则报错。 + +```javascript +var obj = { + a: 1 +}; + +Object.preventExtensions(obj); + +var p = new Proxy(obj, { + ownKeys: function(target) { + return ['a', 'b']; + } +}); + +Object.getOwnPropertyNames(p) +// Uncaught TypeError: 'ownKeys' on proxy: trap returned extra keys but proxy target is non-extensible +``` + +上面代码中,`Obj`对象是不可扩展的,这时`ownKeys`方法返回的数组之中,包含了`obj`对象的多余属性`b`,所以导致了报错。 + ### preventExtensions() `preventExtensions`方法拦截`Object.preventExtensions()`。该方法必须返回一个布尔值。 @@ -791,7 +910,7 @@ proxy.setPrototypeOf(proxy, proto); ## Proxy.revocable() -Proxy.revocable方法返回一个可取消的Proxy实例。 +`Proxy.revocable`方法返回一个可取消的 Proxy 实例。 ```javascript let target = {}; @@ -879,459 +998,3 @@ const proxy = new Proxy(target, handler); proxy.getDate() // 1 ``` -## Reflect概述 - -`Reflect`对象与`Proxy`对象一样,也是 ES6 为了操作对象而提供的新 API。`Reflect`对象的设计目的有这样几个。 - -(1) 将`Object`对象的一些明显属于语言内部的方法(比如`Object.defineProperty`),放到`Reflect`对象上。现阶段,某些方法同时在`Object`和`Reflect`对象上部署,未来的新方法将只部署在`Reflect`对象上。也就是说,从`Reflect`对象上可以拿到语言内部的方法。 - -(2) 修改某些`Object`方法的返回结果,让其变得更合理。比如,`Object.defineProperty(obj, name, desc)`在无法定义属性时,会抛出一个错误,而`Reflect.defineProperty(obj, name, desc)`则会返回`false`。 - -```javascript -// 老写法 -try { - Object.defineProperty(target, property, attributes); - // success -} catch (e) { - // failure -} - -// 新写法 -if (Reflect.defineProperty(target, property, attributes)) { - // success -} else { - // failure -} -``` - -(3) 让`Object`操作都变成函数行为。某些`Object`操作是命令式,比如`name in obj`和`delete obj[name]`,而`Reflect.has(obj, name)`和`Reflect.deleteProperty(obj, name)`让它们变成了函数行为。 - -```javascript -// 老写法 -'assign' in Object // true - -// 新写法 -Reflect.has(Object, 'assign') // true -``` - -(4)`Reflect`对象的方法与`Proxy`对象的方法一一对应,只要是`Proxy`对象的方法,就能在`Reflect`对象上找到对应的方法。这就让`Proxy`对象可以方便地调用对应的`Reflect`方法,完成默认行为,作为修改行为的基础。也就是说,不管`Proxy`怎么修改默认行为,你总可以在`Reflect`上获取默认行为。 - -```javascript -Proxy(target, { - set: function(target, name, value, receiver) { - var success = Reflect.set(target,name, value, receiver); - if (success) { - log('property ' + name + ' on ' + target + ' set to ' + value); - } - return success; - } -}); -``` - -上面代码中,`Proxy`方法拦截`target`对象的属性赋值行为。它采用`Reflect.set`方法将值赋值给对象的属性,确保完成原有的行为,然后再部署额外的功能。 - -下面是另一个例子。 - -```javascript -var loggedObj = new Proxy(obj, { - get(target, name) { - console.log('get', target, name); - return Reflect.get(target, name); - }, - deleteProperty(target, name) { - console.log('delete' + name); - return Reflect.deleteProperty(target, name); - }, - has(target, name) { - console.log('has' + name); - return Reflect.has(target, name); - } -}); -``` - -上面代码中,每一个`Proxy`对象的拦截操作(`get`、`delete`、`has`),内部都调用对应的`Reflect`方法,保证原生行为能够正常执行。添加的工作,就是将每一个操作输出一行日志。 - -有了`Reflect`对象以后,很多操作会更易读。 - -```javascript -// 老写法 -Function.prototype.apply.call(Math.floor, undefined, [1.75]) // 1 - -// 新写法 -Reflect.apply(Math.floor, undefined, [1.75]) // 1 -``` - -## Reflect对象的方法 - -`Reflect`对象的方法清单如下,共13个。 - -- Reflect.apply(target,thisArg,args) -- Reflect.construct(target,args) -- Reflect.get(target,name,receiver) -- Reflect.set(target,name,value,receiver) -- Reflect.defineProperty(target,name,desc) -- Reflect.deleteProperty(target,name) -- Reflect.has(target,name) -- Reflect.ownKeys(target) -- Reflect.isExtensible(target) -- Reflect.preventExtensions(target) -- Reflect.getOwnPropertyDescriptor(target, name) -- Reflect.getPrototypeOf(target) -- Reflect.setPrototypeOf(target, prototype) - -上面这些方法的作用,大部分与`Object`对象的同名方法的作用都是相同的,而且它与`Proxy`对象的方法是一一对应的。下面是对它们的解释。 - -**(1)Reflect.get(target, name, receiver)** - -`Reflect.get`方法查找并返回`target`对象的`name`属性,如果没有该属性,则返回`undefined`。 - -```javascript -var myObject = { - foo: 1, - bar: 2, - get baz() { - return this.foo + this.bar; - }, -} - -Reflect.get(myObject, 'foo') // 1 -Reflect.get(myObject, 'bar') // 2 -Reflect.get(myObject, 'baz') // 3 -``` - -如果`name`属性部署了读取函数(getter),则读取函数的`this`绑定`receiver`。 - -```javascript -var myObject = { - foo: 1, - bar: 2, - get baz() { - return this.foo + this.bar; - }, -}; - -var myReceiverObject = { - foo: 4, - bar: 4, -}; - -Reflect.get(myObject, 'baz', myReceiverObject) // 8 -``` - -如果第一个参数不是对象,`Reflect.get`方法会报错。 - -```javascript -Reflect.get(1, 'foo') // 报错 -Reflect.get(false, 'foo') // 报错 -``` - -**(2)Reflect.set(target, name, value, receiver)** - -`Reflect.set`方法设置`target`对象的`name`属性等于`value`。 - -```javascript -var myObject = { - foo: 1, - set bar(value) { - return this.foo = value; - }, -} - -myObject.foo // 1 - -Reflect.set(myObject, 'foo', 2); -myObject.foo // 2 - -Reflect.set(myObject, 'bar', 3) -myObject.foo // 3 -``` - -如果`name`属性设置了赋值函数,则赋值函数的`this`绑定`receiver`。 - -```javascript -var myObject = { - foo: 4, - set bar(value) { - return this.foo = value; - }, -}; - -var myReceiverObject = { - foo: 0, -}; - -Reflect.set(myObject, 'bar', 1, myReceiverObject); -myObject.foo // 4 -myReceiverObject.foo // 1 -``` - -如果第一个参数不是对象,`Reflect.set`会报错。 - -```javascript -Reflect.set(1, 'foo', {}) // 报错 -Reflect.set(false, 'foo', {}) // 报错 -``` - -**(3)Reflect.has(obj, name)** - -`Reflect.has`方法对应`name in obj`里面的`in`运算符。 - -```javascript -var myObject = { - foo: 1, -}; - -// 旧写法 -'foo' in myObject // true - -// 新写法 -Reflect.has(myObject, 'foo') // true -``` - -如果第一个参数不是对象,`Reflect.has`和`in`运算符都会报错。 - -**(4)Reflect.deleteProperty(obj, name)** - -`Reflect.deleteProperty`方法等同于`delete obj[name]`,用于删除对象的属性。 - -```javascript -const myObj = { foo: 'bar' }; - -// 旧写法 -delete myObj.foo; - -// 新写法 -Reflect.deleteProperty(myObj, 'foo'); -``` - -**(5)Reflect.construct(target, args)** - -`Reflect.construct`方法等同于`new target(...args)`,这提供了一种不使用`new`,来调用构造函数的方法。 - -```javascript -function Greeting(name) { - this.name = name; -} - -// new 的写法 -const instance = new Greeting('张三'); - -// Reflect.construct 的写法 -const instance = Reflect.construct(Greeting, '张三'); -``` - -**(6)Reflect.getPrototypeOf(obj)** - -`Reflect.getPrototypeOf`方法用于读取对象的`__proto__`属性,对应`Object.getPrototypeOf(obj)`。 - -```javascript -const myObj = new FancyThing(); - -// 旧写法 -Object.getPrototypeOf(myObj) === FancyThing.prototype; - -// 新写法 -Reflect.getPrototypeOf(myObj) === FancyThing.prototype; -``` - -`Reflect.getPrototypeOf`和`Object.getPrototypeOf`的一个区别是,如果第一个参数不是对象(包括`null`和`undefined`),`Object.getPrototypeOf`会将这个参数转为对象,然后再运行,而`Reflect.getPrototypeOf`会报错。 - -```javascript -Object.getPrototypeOf(1) // undefined -Reflect.getPrototypeOf(1) // 报错 -``` - -**(7)Reflect.setPrototypeOf(obj, newProto)** - -`Reflect.setPrototypeOf`方法用于设置对象的`__proto__`属性,对应`Object.setPrototypeOf(obj, newProto)`。 - -```javascript -const myObj = new FancyThing(); - -// 旧写法 -Object.setPrototypeOf(myObj, OtherThing.prototype); - -// 新写法 -Reflect.setPrototypeOf(myObj, OtherThing.prototype); -``` - -如果第一个参数不是对象,`Reflect.setPrototypeOf`和`Object.setPrototypeOf`都会报错。 - -```javascript -Object.setPrototypeOf(1) // 报错 -Reflect.setPrototypeOf(1) // 报错 -``` - -**(8)Reflect.apply(func, thisArg, args)** - -`Reflect.apply`方法等同于`Function.prototype.apply.call(func, thisArg, args)`,用于绑定`this`对象后执行给定函数。 - -一般来说,如果要绑定一个函数的`this`对象,可以这样写`fn.apply(obj, args)`,但是如果函数定义了自己的`apply`方法,就只能写成`Function.prototype.apply.call(fn, obj, args)`,采用`Reflect`对象可以简化这种操作。 - -```javascript -const ages = [11, 33, 12, 54, 18, 96]; - -// 旧写法 -const youngest = Math.min.apply(Math, ages); -const oldest = Math.max.apply(Math, ages); -const type = Object.prototype.toString.call(youngest); - -// 新写法 -const youngest = Reflect.apply(Math.min, Math, ages); -const oldest = Reflect.apply(Math.max, Math, ages); -const type = Reflect.apply(Object.prototype.toString, youngest); -``` - -**(9)Reflect.defineProperty(target, propertyKey, attributes)** - -`Reflect.defineProperty`方法基本等同于`Object.defineProperty`,用来为对象定义属性。未来,后者会被逐渐废除,请从现在开始就使用`Reflect.defineProperty`代替它。 - -```javascript -function MyDate() { - /*…*/ -} - -// 旧写法 -Object.defineProperty(MyDate, 'now', { - value: () => new Date.now() -}); - -// 新写法 -Reflect.defineProperty(MyDate, 'now', { - value: () => new Date.now() -}); -``` - -如果`Reflect.defineProperty`的第一个参数不是对象,就会抛出错误,比如`Reflect.defineProperty(1, 'foo')`。 - -**(10)Reflect.getOwnPropertyDescriptor(target, propertyKey)** - -`Reflect.getOwnPropertyDescriptor`基本等同于`Object.getOwnPropertyDescriptor`,用于得到指定属性的描述对象,将来会替代掉后者。 - -```javascript -var myObject = {}; -Object.defineProperty(myObject, 'hidden', { - value: true, - enumerable: false, -}); - -// 旧写法 -var theDescriptor = Object.getOwnPropertyDescriptor(myObject, 'hidden'); - -// 新写法 -var theDescriptor = Reflect.getOwnPropertyDescriptor(myObject, 'hidden'); -``` - -`Reflect.getOwnPropertyDescriptor`和`Object.getOwnPropertyDescriptor`的一个区别是,如果第一个参数不是对象,`Object.getOwnPropertyDescriptor(1, 'foo')`不报错,返回`undefined`,而`Reflect.getOwnPropertyDescriptor(1, 'foo')`会抛出错误,表示参数非法。 - -**(11)Reflect.isExtensible (target)** - -`Reflect.isExtensible`方法对应`Object.isExtensible`,返回一个布尔值,表示当前对象是否可扩展。 - -```javascript -const myObject = {}; - -// 旧写法 -Object.isExtensible(myObject) // true - -// 新写法 -Reflect.isExtensible(myObject) // true -``` - -如果参数不是对象,`Object.isExtensible`会返回`false`,因为非对象本来就是不可扩展的,而`Reflect.isExtensible`会报错。 - -```javascript -Object.isExtensible(1) // false -Reflect.isExtensible(1) // 报错 -``` - -**(12)Reflect.preventExtensions(target)** - -`Reflect.preventExtensions`对应`Object.preventExtensions`方法,用于让一个对象变为不可扩展。它返回一个布尔值,表示是否操作成功。 - -```javascript -var myObject = {}; - -// 旧写法 -Object.isExtensible(myObject) // true - -// 新写法 -Reflect.preventExtensions(myObject) // true -``` - -如果参数不是对象,`Object.isExtensible`在 ES5 环境报错,在 ES6 环境返回这个参数,而`Reflect.preventExtensions`会报错。 - -```javascript -// ES5 -Object.preventExtensions(1) // 报错 - -// ES6 -Object.preventExtensions(1) // 1 - -// 新写法 -Reflect.preventExtensions(1) // 报错 -``` - -**(13)Reflect.ownKeys (target)** - -`Reflect.ownKeys`方法用于返回对象的所有属性,基本等同于`Object.getOwnPropertyNames`与`Object.getOwnPropertySymbols`之和。 - -```javascript -var myObject = { - foo: 1, - bar: 2, - [Symbol.for('baz')]: 3, - [Symbol.for('bing')]: 4, -}; - -// 旧写法 -Object.getOwnPropertyNames(myObject) -// ['foo', 'bar'] - -Object.getOwnPropertySymbols(myObject) -//[Symbol.for('baz'), Symbol.for('bing')] - -// 新写法 -Reflect.ownKeys(myObject) -// ['foo', 'bar', Symbol.for('baz'), Symbol.for('bing')] -``` - -## 实例:使用 Proxy 实现观察者模式 - -观察者模式(Observer mode)指的是函数自动观察数据对象,一旦对象有变化,函数就会自动执行。 - -```javascript -const person = observable({ - name: '张三', - age: 20 -}); - -function print() { - console.log(`${person.name}, ${person.age}`) -} - -observe(print); -person.name = '李四'; -// 输出 -// 李四, 20 -``` - -上面代码中,数据对象`person`是观察目标,函数`print`是观察者。一旦数据对象发生变化,`print`就会自动执行。 - -下面,使用 Proxy 写一个观察者模式的最简单实现,即实现`observable`和`observe`这两个函数。思路是`observable`函数返回一个原始对象的 Proxy 代理,拦截赋值操作,触发充当观察者的各个函数。 - -```javascript -const queuedObservers = new Set(); - -const observe = fn => queuedObservers.add(fn); -const observable = obj => new Proxy(obj, {set}); - -function set(target, key, value, receiver) { - const result = Reflect.set(target, key, value, receiver); - queuedObservers.forEach(observer => observer()); - return result; -} -``` - -上面代码中,先定义了一个`Set`集合,所有观察者函数都放进这个集合。然后,`observable`函数返回原始对象的代理,拦截赋值操作。拦截函数`set`之中,会自动执行所有观察者。 - diff --git a/docs/reflect.md b/docs/reflect.md new file mode 100644 index 000000000..0bf67e7bf --- /dev/null +++ b/docs/reflect.md @@ -0,0 +1,458 @@ +# Reflect + +## 概述 + +`Reflect`对象与`Proxy`对象一样,也是 ES6 为了操作对象而提供的新 API。`Reflect`对象的设计目的有这样几个。 + +(1) 将`Object`对象的一些明显属于语言内部的方法(比如`Object.defineProperty`),放到`Reflect`对象上。现阶段,某些方法同时在`Object`和`Reflect`对象上部署,未来的新方法将只部署在`Reflect`对象上。也就是说,从`Reflect`对象上可以拿到语言内部的方法。 + +(2) 修改某些`Object`方法的返回结果,让其变得更合理。比如,`Object.defineProperty(obj, name, desc)`在无法定义属性时,会抛出一个错误,而`Reflect.defineProperty(obj, name, desc)`则会返回`false`。 + +```javascript +// 老写法 +try { + Object.defineProperty(target, property, attributes); + // success +} catch (e) { + // failure +} + +// 新写法 +if (Reflect.defineProperty(target, property, attributes)) { + // success +} else { + // failure +} +``` + +(3) 让`Object`操作都变成函数行为。某些`Object`操作是命令式,比如`name in obj`和`delete obj[name]`,而`Reflect.has(obj, name)`和`Reflect.deleteProperty(obj, name)`让它们变成了函数行为。 + +```javascript +// 老写法 +'assign' in Object // true + +// 新写法 +Reflect.has(Object, 'assign') // true +``` + +(4)`Reflect`对象的方法与`Proxy`对象的方法一一对应,只要是`Proxy`对象的方法,就能在`Reflect`对象上找到对应的方法。这就让`Proxy`对象可以方便地调用对应的`Reflect`方法,完成默认行为,作为修改行为的基础。也就是说,不管`Proxy`怎么修改默认行为,你总可以在`Reflect`上获取默认行为。 + +```javascript +Proxy(target, { + set: function(target, name, value, receiver) { + var success = Reflect.set(target,name, value, receiver); + if (success) { + log('property ' + name + ' on ' + target + ' set to ' + value); + } + return success; + } +}); +``` + +上面代码中,`Proxy`方法拦截`target`对象的属性赋值行为。它采用`Reflect.set`方法将值赋值给对象的属性,确保完成原有的行为,然后再部署额外的功能。 + +下面是另一个例子。 + +```javascript +var loggedObj = new Proxy(obj, { + get(target, name) { + console.log('get', target, name); + return Reflect.get(target, name); + }, + deleteProperty(target, name) { + console.log('delete' + name); + return Reflect.deleteProperty(target, name); + }, + has(target, name) { + console.log('has' + name); + return Reflect.has(target, name); + } +}); +``` + +上面代码中,每一个`Proxy`对象的拦截操作(`get`、`delete`、`has`),内部都调用对应的`Reflect`方法,保证原生行为能够正常执行。添加的工作,就是将每一个操作输出一行日志。 + +有了`Reflect`对象以后,很多操作会更易读。 + +```javascript +// 老写法 +Function.prototype.apply.call(Math.floor, undefined, [1.75]) // 1 + +// 新写法 +Reflect.apply(Math.floor, undefined, [1.75]) // 1 +``` + +## 静态方法 + +`Reflect`对象一共有13个静态方法。 + +- Reflect.apply(target,thisArg,args) +- Reflect.construct(target,args) +- Reflect.get(target,name,receiver) +- Reflect.set(target,name,value,receiver) +- Reflect.defineProperty(target,name,desc) +- Reflect.deleteProperty(target,name) +- Reflect.has(target,name) +- Reflect.ownKeys(target) +- Reflect.isExtensible(target) +- Reflect.preventExtensions(target) +- Reflect.getOwnPropertyDescriptor(target, name) +- Reflect.getPrototypeOf(target) +- Reflect.setPrototypeOf(target, prototype) + +上面这些方法的作用,大部分与`Object`对象的同名方法的作用都是相同的,而且它与`Proxy`对象的方法是一一对应的。下面是对它们的解释。 + +### Reflect.get(target, name, receiver) + +`Reflect.get`方法查找并返回`target`对象的`name`属性,如果没有该属性,则返回`undefined`。 + +```javascript +var myObject = { + foo: 1, + bar: 2, + get baz() { + return this.foo + this.bar; + }, +} + +Reflect.get(myObject, 'foo') // 1 +Reflect.get(myObject, 'bar') // 2 +Reflect.get(myObject, 'baz') // 3 +``` + +如果`name`属性部署了读取函数(getter),则读取函数的`this`绑定`receiver`。 + +```javascript +var myObject = { + foo: 1, + bar: 2, + get baz() { + return this.foo + this.bar; + }, +}; + +var myReceiverObject = { + foo: 4, + bar: 4, +}; + +Reflect.get(myObject, 'baz', myReceiverObject) // 8 +``` + +如果第一个参数不是对象,`Reflect.get`方法会报错。 + +```javascript +Reflect.get(1, 'foo') // 报错 +Reflect.get(false, 'foo') // 报错 +``` + +### Reflect.set(target, name, value, receiver) + +`Reflect.set`方法设置`target`对象的`name`属性等于`value`。 + +```javascript +var myObject = { + foo: 1, + set bar(value) { + return this.foo = value; + }, +} + +myObject.foo // 1 + +Reflect.set(myObject, 'foo', 2); +myObject.foo // 2 + +Reflect.set(myObject, 'bar', 3) +myObject.foo // 3 +``` + +如果`name`属性设置了赋值函数,则赋值函数的`this`绑定`receiver`。 + +```javascript +var myObject = { + foo: 4, + set bar(value) { + return this.foo = value; + }, +}; + +var myReceiverObject = { + foo: 0, +}; + +Reflect.set(myObject, 'bar', 1, myReceiverObject); +myObject.foo // 4 +myReceiverObject.foo // 1 +``` + +如果第一个参数不是对象,`Reflect.set`会报错。 + +```javascript +Reflect.set(1, 'foo', {}) // 报错 +Reflect.set(false, 'foo', {}) // 报错 +``` + +### Reflect.has(obj, name) + +`Reflect.has`方法对应`name in obj`里面的`in`运算符。 + +```javascript +var myObject = { + foo: 1, +}; + +// 旧写法 +'foo' in myObject // true + +// 新写法 +Reflect.has(myObject, 'foo') // true +``` + +如果第一个参数不是对象,`Reflect.has`和`in`运算符都会报错。 + +### Reflect.deleteProperty(obj, name) + +`Reflect.deleteProperty`方法等同于`delete obj[name]`,用于删除对象的属性。 + +```javascript +const myObj = { foo: 'bar' }; + +// 旧写法 +delete myObj.foo; + +// 新写法 +Reflect.deleteProperty(myObj, 'foo'); +``` + +### Reflect.construct(target, args) + +`Reflect.construct`方法等同于`new target(...args)`,这提供了一种不使用`new`,来调用构造函数的方法。 + +```javascript +function Greeting(name) { + this.name = name; +} + +// new 的写法 +const instance = new Greeting('张三'); + +// Reflect.construct 的写法 +const instance = Reflect.construct(Greeting, '张三'); +``` + +### Reflect.getPrototypeOf(obj) + +`Reflect.getPrototypeOf`方法用于读取对象的`__proto__`属性,对应`Object.getPrototypeOf(obj)`。 + +```javascript +const myObj = new FancyThing(); + +// 旧写法 +Object.getPrototypeOf(myObj) === FancyThing.prototype; + +// 新写法 +Reflect.getPrototypeOf(myObj) === FancyThing.prototype; +``` + +`Reflect.getPrototypeOf`和`Object.getPrototypeOf`的一个区别是,如果第一个参数不是对象(包括`null`和`undefined`),`Object.getPrototypeOf`会将这个参数转为对象,然后再运行,而`Reflect.getPrototypeOf`会报错。 + +```javascript +Object.getPrototypeOf(1) // undefined +Reflect.getPrototypeOf(1) // 报错 +``` + +### Reflect.setPrototypeOf(obj, newProto) + +`Reflect.setPrototypeOf`方法用于设置对象的`__proto__`属性,对应`Object.setPrototypeOf(obj, newProto)`。 + +```javascript +const myObj = new FancyThing(); + +// 旧写法 +Object.setPrototypeOf(myObj, OtherThing.prototype); + +// 新写法 +Reflect.setPrototypeOf(myObj, OtherThing.prototype); +``` + +如果第一个参数不是对象,`Reflect.setPrototypeOf`和`Object.setPrototypeOf`都会报错。 + +```javascript +Object.setPrototypeOf(1) // 报错 +Reflect.setPrototypeOf(1) // 报错 +``` + +### Reflect.apply(func, thisArg, args) + +`Reflect.apply`方法等同于`Function.prototype.apply.call(func, thisArg, args)`,用于绑定`this`对象后执行给定函数。 + +一般来说,如果要绑定一个函数的`this`对象,可以这样写`fn.apply(obj, args)`,但是如果函数定义了自己的`apply`方法,就只能写成`Function.prototype.apply.call(fn, obj, args)`,采用`Reflect`对象可以简化这种操作。 + +```javascript +const ages = [11, 33, 12, 54, 18, 96]; + +// 旧写法 +const youngest = Math.min.apply(Math, ages); +const oldest = Math.max.apply(Math, ages); +const type = Object.prototype.toString.call(youngest); + +// 新写法 +const youngest = Reflect.apply(Math.min, Math, ages); +const oldest = Reflect.apply(Math.max, Math, ages); +const type = Reflect.apply(Object.prototype.toString, youngest); +``` + +### Reflect.defineProperty(target, propertyKey, attributes) + +`Reflect.defineProperty`方法基本等同于`Object.defineProperty`,用来为对象定义属性。未来,后者会被逐渐废除,请从现在开始就使用`Reflect.defineProperty`代替它。 + +```javascript +function MyDate() { + /*…*/ +} + +// 旧写法 +Object.defineProperty(MyDate, 'now', { + value: () => new Date.now() +}); + +// 新写法 +Reflect.defineProperty(MyDate, 'now', { + value: () => new Date.now() +}); +``` + +如果`Reflect.defineProperty`的第一个参数不是对象,就会抛出错误,比如`Reflect.defineProperty(1, 'foo')`。 + +### Reflect.getOwnPropertyDescriptor(target, propertyKey) + +`Reflect.getOwnPropertyDescriptor`基本等同于`Object.getOwnPropertyDescriptor`,用于得到指定属性的描述对象,将来会替代掉后者。 + +```javascript +var myObject = {}; +Object.defineProperty(myObject, 'hidden', { + value: true, + enumerable: false, +}); + +// 旧写法 +var theDescriptor = Object.getOwnPropertyDescriptor(myObject, 'hidden'); + +// 新写法 +var theDescriptor = Reflect.getOwnPropertyDescriptor(myObject, 'hidden'); +``` + +`Reflect.getOwnPropertyDescriptor`和`Object.getOwnPropertyDescriptor`的一个区别是,如果第一个参数不是对象,`Object.getOwnPropertyDescriptor(1, 'foo')`不报错,返回`undefined`,而`Reflect.getOwnPropertyDescriptor(1, 'foo')`会抛出错误,表示参数非法。 + +### Reflect.isExtensible (target) + +`Reflect.isExtensible`方法对应`Object.isExtensible`,返回一个布尔值,表示当前对象是否可扩展。 + +```javascript +const myObject = {}; + +// 旧写法 +Object.isExtensible(myObject) // true + +// 新写法 +Reflect.isExtensible(myObject) // true +``` + +如果参数不是对象,`Object.isExtensible`会返回`false`,因为非对象本来就是不可扩展的,而`Reflect.isExtensible`会报错。 + +```javascript +Object.isExtensible(1) // false +Reflect.isExtensible(1) // 报错 +``` + +### Reflect.preventExtensions(target) + +`Reflect.preventExtensions`对应`Object.preventExtensions`方法,用于让一个对象变为不可扩展。它返回一个布尔值,表示是否操作成功。 + +```javascript +var myObject = {}; + +// 旧写法 +Object.isExtensible(myObject) // true + +// 新写法 +Reflect.preventExtensions(myObject) // true +``` + +如果参数不是对象,`Object.isExtensible`在 ES5 环境报错,在 ES6 环境返回这个参数,而`Reflect.preventExtensions`会报错。 + +```javascript +// ES5 +Object.preventExtensions(1) // 报错 + +// ES6 +Object.preventExtensions(1) // 1 + +// 新写法 +Reflect.preventExtensions(1) // 报错 +``` + +### Reflect.ownKeys (target) + +`Reflect.ownKeys`方法用于返回对象的所有属性,基本等同于`Object.getOwnPropertyNames`与`Object.getOwnPropertySymbols`之和。 + +```javascript +var myObject = { + foo: 1, + bar: 2, + [Symbol.for('baz')]: 3, + [Symbol.for('bing')]: 4, +}; + +// 旧写法 +Object.getOwnPropertyNames(myObject) +// ['foo', 'bar'] + +Object.getOwnPropertySymbols(myObject) +//[Symbol.for('baz'), Symbol.for('bing')] + +// 新写法 +Reflect.ownKeys(myObject) +// ['foo', 'bar', Symbol.for('baz'), Symbol.for('bing')] +``` + +## 实例:使用 Proxy 实现观察者模式 + +观察者模式(Observer mode)指的是函数自动观察数据对象,一旦对象有变化,函数就会自动执行。 + +```javascript +const person = observable({ + name: '张三', + age: 20 +}); + +function print() { + console.log(`${person.name}, ${person.age}`) +} + +observe(print); +person.name = '李四'; +// 输出 +// 李四, 20 +``` + +上面代码中,数据对象`person`是观察目标,函数`print`是观察者。一旦数据对象发生变化,`print`就会自动执行。 + +下面,使用 Proxy 写一个观察者模式的最简单实现,即实现`observable`和`observe`这两个函数。思路是`observable`函数返回一个原始对象的 Proxy 代理,拦截赋值操作,触发充当观察者的各个函数。 + +```javascript +const queuedObservers = new Set(); + +const observe = fn => queuedObservers.add(fn); +const observable = obj => new Proxy(obj, {set}); + +function set(target, key, value, receiver) { + const result = Reflect.set(target, key, value, receiver); + queuedObservers.forEach(observer => observer()); + return result; +} +``` + +上面代码中,先定义了一个`Set`集合,所有观察者函数都放进这个集合。然后,`observable`函数返回原始对象的代理,拦截赋值操作。拦截函数`set`之中,会自动执行所有观察者。 + diff --git a/sidebar.md b/sidebar.md index cd993b598..48d5dfae3 100644 --- a/sidebar.md +++ b/sidebar.md @@ -17,7 +17,8 @@ 1. [对象的扩展](#docs/object) 1. [Symbol](#docs/symbol) 1. [Set和Map数据结构](#docs/set-map) -1. [Proxy和Reflect](#docs/proxy) +1. [Proxy](#docs/proxy) +1. [Reflect](#docs/reflect) 1. [Iterator和for...of循环](#docs/iterator) 1. [Generator函数](#docs/generator) 1. [Promise对象](#docs/promise) From 04f582da7867e2a23a8e69e00ea7ad9c1f9545cb Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 24 Dec 2016 20:56:36 +0800 Subject: [PATCH 164/994] docs(proxy): edit proxy --- docs/proxy.md | 76 +++++++++++++++++++++++++++++++++++++++++++++---- docs/reflect.md | 2 ++ js/ditto.js | 2 +- 3 files changed, 74 insertions(+), 6 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 7ea05257e..26d7dd607 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -317,6 +317,29 @@ const el = dom.div({}, document.body.appendChild(el); ``` +如果一个属性不可配置(configurable)和不可写(writable),则该属性不能被代理,通过 Proxy 对象访问该属性会报错。 + +```javascript +const target = Object.defineProperties({}, { + foo: { + value: 123, + writable: false, + configurable: false + }, +}); + +const handler = { + get(target, propKey) { + return 'abc'; + } +}; + +const proxy = new Proxy(target, handler); + +proxy.foo +// TypeError: Invariant check failed +``` + ### set() `set`方法用来拦截某个属性的赋值操作。 @@ -380,6 +403,8 @@ proxy._prop = 'c' 上面代码中,只要读写的属性名的第一个字符是下划线,一律抛错,从而达到禁止读写内部属性的目的。 +注意,如果目标对象自身的某个属性,不可写也不可配置,那么`set`不得改变这个属性的值,只能返回同样的值,否则报错。 + ### apply() `apply`方法拦截函数的调用、`call`和`apply`操作。 @@ -474,7 +499,7 @@ var p = new Proxy(obj, { 'a' in p // TypeError is thrown ``` -上面代码中,`obj`对象禁止扩展,结果使用`has`拦截就会报错。 +上面代码中,`obj`对象禁止扩展,结果使用`has`拦截就会报错。也就是说,如果某个属性不可配置(或者目标对象不可扩展),则`has`方法就不得“隐藏”(即返回`false`)目标对象的该属性。 值得注意的是,`has`方法拦截的是`HasProperty`操作,而不是`HasOwnProperty`操作,即`has`方法不判断一个属性是对象自身的属性,还是继承的属性。 @@ -588,6 +613,8 @@ delete proxy._prop 上面代码中,`deleteProperty`方法拦截了`delete`操作符,删除第一个字符为下划线的属性会报错。 +注意,目标对象自身的不可配置(configurable)的属性,不能被`deleteProperty`方法删除,否则报错。 + ### defineProperty() `defineProperty`方法拦截了`Object.defineProperty`操作。 @@ -606,6 +633,8 @@ proxy.foo = 'bar' 上面代码中,`defineProperty`方法返回`false`,导致添加新属性会抛出错误。 +注意,如果目标对象不可扩展(extensible),则`defineProperty`不能增加目标对象上不存在的属性,否则会报错。另外,如果目标对象的某个属性不可写(writable)或不可配置(configurable),则`defineProperty`方法不得改变这两个设置。 + ### getOwnPropertyDescriptor() `getOwnPropertyDescriptor`方法拦截`Object.getOwnPropertyDescriptor`,返回一个属性描述对象或者`undefined`。 @@ -655,6 +684,8 @@ Object.getPrototypeOf(p) === proto // true 上面代码中,`getPrototypeOf`方法拦截`Object.getPrototypeOf()`,返回`proto`对象。 +注意,`getPrototypeOf`方法的返回值必须是对象或者`null`,否则报错。另外,如果目标对象不可扩展(extensible), `getPrototypeOf`方法必须返回目标对象的原型对象。 + ### isExtensible() `isExtensible`方法拦截`Object.isExtensible`操作。 @@ -674,7 +705,9 @@ Object.isExtensible(p) 上面代码设置了`isExtensible`方法,在调用`Object.isExtensible`时会输出`called`。 -这个方法有一个强限制,如果不能满足下面的条件,就会抛出错误。 +注意,该方法只能返回布尔值,否则返回值会被自动转为布尔值。 + +这个方法有一个强限制,它的返回值必须与目标对象的`isExtensible`属性保持一致,否则就会抛出错误。 ```javascript Object.isExtensible(proxy) === Object.isExtensible(target) @@ -855,9 +888,9 @@ Object.getOwnPropertyNames(p) ### preventExtensions() -`preventExtensions`方法拦截`Object.preventExtensions()`。该方法必须返回一个布尔值。 +`preventExtensions`方法拦截`Object.preventExtensions()`。该方法必须返回一个布尔值,否则会被自动转为布尔值。 -这个方法有一个限制,只有当`Object.isExtensible(proxy)`为`false`(即不可扩展)时,`proxy.preventExtensions`才能返回`true`,否则会报错。 +这个方法有一个限制,只有目标对象不可扩展时(即`Object.isExtensible(proxy)`为`false`),`proxy.preventExtensions`才能返回`true`,否则会报错。 ```javascript var p = new Proxy({}, { @@ -876,7 +909,7 @@ Object.preventExtensions(p) // 报错 ```javascript var p = new Proxy({}, { preventExtensions: function(target) { - console.log("called"); + console.log('called'); Object.preventExtensions(target); return true; } @@ -908,6 +941,8 @@ proxy.setPrototypeOf(proxy, proto); 上面代码中,只要修改`target`的原型对象,就会报错。 +注意,该方法只能返回布尔值,否则会被自动转为布尔值。另外,如果目标对象不可扩展(extensible),`setPrototypeOf`方法不得改变目标对象的原型。 + ## Proxy.revocable() `Proxy.revocable`方法返回一个可取消的 Proxy 实例。 @@ -927,6 +962,8 @@ proxy.foo // TypeError: Revoked `Proxy.revocable`方法返回一个对象,该对象的`proxy`属性是`Proxy`实例,`revoke`属性是一个函数,可以取消`Proxy`实例。上面代码中,当执行`revoke`函数之后,再访问`Proxy`实例,就会抛出一个错误。 +`Proxy.revocable`的一个使用场景是,目标对象不允许直接访问,必须通过代理访问,一旦访问结束,就收回代理权,不允许再次访问。 + ## this 问题 虽然 Proxy 可以代理针对目标对象的访问,但它不是目标对象的透明代理,即不做任何拦截的情况下,也无法保证与目标对象的行为一致。主要原因就是在 Proxy 代理的情况下,目标对象内部的`this`关键字会指向 Proxy 代理。 @@ -998,3 +1035,32 @@ const proxy = new Proxy(target, handler); proxy.getDate() // 1 ``` +## 应用实例 + +### Web 服务器的客户端 + +Proxy 对象可以拦截目标对象的任意属性,这使得它很合适用来写 Web 服务的客户端。 + +```javascript +const service = createWebService('http://example.com/data'); + +service.employees().then(json => { + const employees = JSON.parse(json); + // ··· +}); +``` + +上面代码新建了一个 Web 服务的接口,这个接口返回各种数据。Proxy 可以拦截这个对象的任意属性,所以不用为每一种数据写一个适配方法,只要写一个 Proxy 拦截就可以了。 + +```javascript +function createWebService(baseUrl) { + return new Proxy({}, { + get(target, propKey, receiver) { + return () => httpGet(baseUrl+'/' + propKey); + } + }); +} +``` + +同理,Proxy 也可以用来实现数据库的 ORM 层。 + diff --git a/docs/reflect.md b/docs/reflect.md index 0bf67e7bf..c6129ef8c 100644 --- a/docs/reflect.md +++ b/docs/reflect.md @@ -225,6 +225,8 @@ delete myObj.foo; Reflect.deleteProperty(myObj, 'foo'); ``` +该方法返回一个布尔值。如果删除成功,或者被删除的属性不存在,返回`true`;删除失败,被删除的属性依然存在,返回`false`。 + ### Reflect.construct(target, args) `Reflect.construct`方法等同于`new target(...args)`,这提供了一种不使用`new`,来调用构造函数的方法。 diff --git a/js/ditto.js b/js/ditto.js index 3e133f7ef..7247ee301 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -139,7 +139,7 @@ function init_back_to_top_button() { function goTop(e) { if(e) e.preventDefault(); - $('html body').animate({ + $('html, body').animate({ scrollTop: 0 }, 200); history.pushState(null, null, '#' + location.hash.split('#')[1]); From 6f120e12122caeba0f056b4b2b2859b37e5a5027 Mon Sep 17 00:00:00 2001 From: Eamonn Date: Sun, 25 Dec 2016 17:11:39 +0800 Subject: [PATCH 165/994] Update module.md --- docs/module.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/module.md b/docs/module.md index cade8f646..dc882f024 100644 --- a/docs/module.md +++ b/docs/module.md @@ -31,7 +31,7 @@ import { stat, exists, readFile } from 'fs'; 除了静态加载带来的各种好处,ES6 模块还有以下好处。 - 不再需要`UMD`模块格式了,将来服务器和浏览器都会支持 ES6 模块格式。目前,通过各种工具库,其实已经做到了这一点。 -- 将来浏览器的新 API 就能用模块格式提供,不再必要做成全局变量或者`navigator`对象的属性。 +- 将来浏览器的新 API 就能用模块格式提供,不再必须做成全局变量或者`navigator`对象的属性。 - 不再需要对象作为命名空间(比如`Math`对象),未来这些功能可以通过模块提供。 ## 严格模式 From c39d1e580de485fe11d0e013e64dbdc4191754d0 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 26 Dec 2016 06:11:16 +0800 Subject: [PATCH 166/994] docs(proxy): edit proxy --- docs/proxy.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 26d7dd607..089cc378e 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -137,7 +137,7 @@ fproxy.foo // "Hello, foo" **(3)has(target, propKey)** -拦截`propKey in proxy`的操作,以及对象的`hasOwnProperty`方法,返回一个布尔值。 +拦截`propKey in proxy`的操作,返回一个布尔值。 **(4)deleteProperty(target, propKey)** @@ -778,7 +778,7 @@ for (let key of Object.keys(proxy)) { // "baz" ``` -注意,有三类属性会被`ownKeys`方法自动过滤,不会返回。 +注意,使用`Object.keys`方法时,有三类属性会被`ownKeys`方法自动过滤,不会返回。 - 目标对象上不存在的属性 - 属性名为 Symbol 值 @@ -813,7 +813,7 @@ Object.keys(proxy) 上面代码中,`ownKeys`方法之中,显式返回不存在的属性(`d`)、Symbol 值(`Symbol.for('secret')`)、不可遍历的属性(`key`),结果都被自动过滤掉。 -下面是拦截`Object.getOwnPropertyNames()`的例子。 +`ownKeys`方法还可以拦截`Object.getOwnPropertyNames()`。 ```javascript var p = new Proxy({}, { @@ -826,7 +826,7 @@ Object.getOwnPropertyNames(p) // [ 'a', 'b', 'c' ] ``` -注意,`ownKeys`方法返回的数组成员,只能是字符串或 Symbol 值。如果有其他类型的值,或者返回的根本不是数组,就会报错。 +`ownKeys`方法返回的数组成员,只能是字符串或 Symbol 值。如果有其他类型的值,或者返回的根本不是数组,就会报错。 ```javascript var obj = {}; @@ -1035,9 +1035,7 @@ const proxy = new Proxy(target, handler); proxy.getDate() // 1 ``` -## 应用实例 - -### Web 服务器的客户端 +## 实例:Web 服务的客户端 Proxy 对象可以拦截目标对象的任意属性,这使得它很合适用来写 Web 服务的客户端。 From a44b2f0fa8d0ca98308618c61c6dd6c09aa3c871 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 27 Dec 2016 11:35:14 +0800 Subject: [PATCH 167/994] docs(promise): edit Promise.reject --- docs/promise.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/promise.md b/docs/promise.md index 79b156472..57c62ec7f 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -637,14 +637,14 @@ console.log('one'); ## Promise.reject() -`Promise.reject(reason)`方法也会返回一个新的Promise实例,该实例的状态为`rejected`。它的参数用法与`Promise.resolve`方法完全一致。 +`Promise.reject(reason)`方法也会返回一个新的 Promise 实例,该实例的状态为`rejected`。 ```javascript var p = Promise.reject('出错了'); // 等同于 var p = new Promise((resolve, reject) => reject('出错了')) -p.then(null, function (s){ +p.then(null, function (s) { console.log(s) }); // 出错了 @@ -652,6 +652,24 @@ p.then(null, function (s){ 上面代码生成一个Promise对象的实例`p`,状态为`rejected`,回调函数会立即执行。 +注意,`Promise.reject()`方法的参数,会原封不动地作为`reject`的理由,变成后续方法的参数。这一点与`Promise.resolve`方法不一致。 + +```javascript +const thenable = { + then(resolve, reject) { + reject('出错了'); + } +}; + +Promise.reject(thenable) +.catch(e => { + console.log(e === thenable) +}) +// true +``` + +上面代码中,`Promise.reject`方法的参数是一个`thenable`对象,执行以后,后面`catch`方法的参数不是`reject`抛出的“出错了”这个字符串,而是`thenable`对象。 + ## 两个有用的附加方法 ES6的Promise API提供的方法不是很多,有些有用的方法可以自己部署。下面介绍如何部署两个不在ES6之中、但很有用的方法。 From 5ea84ae9a9c533785be4d3bb37ef8cc3d64ef642 Mon Sep 17 00:00:00 2001 From: Kaka Date: Wed, 28 Dec 2016 02:45:38 +0800 Subject: [PATCH 168/994] Update promise.md Fix typo --- docs/promise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/promise.md b/docs/promise.md index 57c62ec7f..a9a6c141d 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -816,7 +816,7 @@ console.log('next'); // next ``` -上面代码中,第一行是一个立即执行的匿名函数,会立即执行里面的`async`函数,因此如果`f`是同步的,就会得到同步的结果;如果`f`是异步的,就可以用`then`指定下一步,就像下面的写法。 +上面代码中,第二行是一个立即执行的匿名函数,会立即执行里面的`async`函数,因此如果`f`是同步的,就会得到同步的结果;如果`f`是异步的,就可以用`then`指定下一步,就像下面的写法。 ```javascript (async () => f())() From f02924cd5a8cc99dbbbe843c053a2acb75f347f8 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 1 Jan 2017 19:21:09 +0800 Subject: [PATCH 169/994] docs(async): edit async/asyncIterable --- docs/async.md | 38 ++++++++++++++++++++++++++------------ docs/generator.md | 8 ++++---- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/docs/async.md b/docs/async.md index cf36a3494..0774d5e56 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1323,15 +1323,15 @@ async function logInOrder(urls) { ## 异步遍历器 -《遍历器》一章说过,Iterator 接口是一种数据遍历的协议,只要调用遍历器对象的`next`方法,就会得到一个表示当前成员信息的对象`{value, done}`。其中,`value`表示当前的数据的值,`done`是一个布尔值,表示遍历是否结束。 +《遍历器》一章说过,Iterator 接口是一种数据遍历的协议,只要调用遍历器对象的`next`方法,就会得到一个对象,表示当前遍历指针所在的那个位置的信息。`next`方法返回的对象的结构是`{value, done}`,其中`value`表示当前的数据的值,`done`是一个布尔值,表示遍历是否结束。 -这隐含着规定,`next`方法是同步的,只要调用就必须立刻返回值。也就是说,一旦执行`next`方法,就必须同步地得到`value`和`done`这两方面的信息。这对于同步操作,当然没有问题,但对于异步操作,就不太合适了。目前的解决方法是,Generator函数里面的异步操作,返回一个Thunk函数或者Promise对象,即`value`属性是一个Thunk函数或者Promise对象,等待以后返回真正的值,而`done`属性则还是同步产生的。 +这里隐含着一个规定,`next`方法必须是同步的,只要调用就必须立刻返回值。也就是说,一旦执行`next`方法,就必须同步地得到`value`和`done`这两个属性。如果遍历指针正好指向同步操作,当然没有问题,但对于异步操作,就不太合适了。目前的解决方法是,Generator 函数里面的异步操作,返回一个 Thunk 函数或者 Promise 对象,即`value`属性是一个 Thunk 函数或者 Promise 对象,等待以后返回真正的值,而`done`属性则还是同步产生的。 目前,有一个[提案](https://github.com/tc39/proposal-async-iteration),为异步操作提供原生的遍历器接口,即`value`和`done`这两个属性都是异步产生,这称为”异步遍历器“(Async Iterator)。 ### 异步遍历的接口 -异步遍历器的最大的语法特点,就是调用遍历器的`next`方法,返回的是一个Promise对象。 +异步遍历器的最大的语法特点,就是调用遍历器的`next`方法,返回的是一个 Promise 对象。 ```javascript asyncIterator @@ -1341,7 +1341,7 @@ asyncIterator ); ``` -上面代码中,`asyncIterator`是一个异步遍历器,调用`next`方法以后,返回一个Promise对象。因此,可以使用`then`方法指定,这个Promise对象的状态变为`resolve`以后的回调函数。回调函数的参数,则是一个具有`value`和`done`两个属性的对象,这个跟同步遍历器是一样的。 +上面代码中,`asyncIterator`是一个异步遍历器,调用`next`方法以后,返回一个 Promise 对象。因此,可以使用`then`方法指定,这个 Promise 对象的状态变为`resolve`以后的回调函数。回调函数的参数,则是一个具有`value`和`done`两个属性的对象,这个跟同步遍历器是一样的。 我们知道,一个对象的同步遍历器的接口,部署在`Symbol.iterator`属性上面。同样地,对象的异步遍历器接口,部署在`Symbol.asyncIterator`属性上面。不管是什么样的对象,只要它的`Symbol.asyncIterator`属性有值,就表示应该对它进行异步遍历。 @@ -1351,21 +1351,24 @@ asyncIterator const asyncIterable = createAsyncIterable(['a', 'b']); const asyncIterator = someCollection[Symbol.asyncIterator](); -asyncIterator.next() +asyncIterator +.next() .then(iterResult1 => { console.log(iterResult1); // { value: 'a', done: false } return asyncIterator.next(); -}).then(iterResult2 => { +}) +.then(iterResult2 => { console.log(iterResult2); // { value: 'b', done: false } return asyncIterator.next(); -}).then(iterResult3 => { +}) +.then(iterResult3 => { console.log(iterResult3); // { value: undefined, done: true } }); ``` -上面代码中,异步遍历器其实返回了两次值。第一次调用的时候,返回一个Promise对象;等到Promise对象`resolve`了,再返回一个表示当前数据成员信息的对象。这就是说,异步遍历器与同步遍历器最终行为是一致的,只是会先返回Promise对象,作为中介。 +上面代码中,异步遍历器其实返回了两次值。第一次调用的时候,返回一个 Promise 对象;等到 Promise 对象`resolve`了,再返回一个表示当前数据成员信息的对象。这就是说,异步遍历器与同步遍历器最终行为是一致的,只是会先返回 Promise 对象,作为中介。 -由于异步遍历器的`next`方法,返回的是一个Promise对象。因此,可以把它放在`await`命令后面。 +由于异步遍历器的`next`方法,返回的是一个 Promise 对象。因此,可以把它放在`await`命令后面。 ```javascript async function f() { @@ -1404,7 +1407,7 @@ await writer.return(); ### for await...of -前面介绍过,`for...of`循环用于遍历同步的Iterator接口。新引入的`for await...of`循环,则是用于遍历异步的Iterator接口。 +前面介绍过,`for...of`循环用于遍历同步的 Iterator 接口。新引入的`for await...of`循环,则是用于遍历异步的 Iterator 接口。 ```javascript async function f() { @@ -1418,6 +1421,17 @@ async function f() { 上面代码中,`createAsyncIterable()`返回一个异步遍历器,`for...of`循环自动调用这个遍历器的`next`方法,会得到一个Promise对象。`await`用来处理这个Promise对象,一旦`resolve`,就把得到的值(`x`)传入`for...of`的循环体。 +`for await...of`循环的一个用途,是部署了 asyncIterable 操作的异步接口,可以直接放入这个循环。 + +```javascript +let body = ''; +for await(const data on req) body += data; +const parsed = JSON.parse(body); +console.log("got", parsed); +``` + +上面代码中,`req`是一个 asyncIterable 对象,用来异步读取数据。可以看到,使用`for await...of`循环以后,代码会非常简洁。 + 如果`next`方法返回的Promise对象被`reject`,那么就要用`try...catch`捕捉。 ```javascript @@ -1446,9 +1460,9 @@ async function () { ### 异步Generator函数 -就像Generator函数返回一个同步遍历器对象一样,异步Generator函数的作用,是返回一个异步遍历器对象。 +就像 Generator 函数返回一个同步遍历器对象一样,异步 Generator 函数的作用,是返回一个异步遍历器对象。 -在语法上,异步Generator函数就是`async`函数与Generator函数的结合。 +在语法上,异步 Generator 函数就是`async`函数与 Generator 函数的结合。 ```javascript async function* readLines(path) { diff --git a/docs/generator.md b/docs/generator.md index ec752207a..208920862 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -705,9 +705,9 @@ g.next() // { done: true, value: 7 } 上面代码中,调用`return`方法后,就开始执行`finally`代码块,然后等到`finally`代码块执行完,再执行`return`方法。 -## yield*语句 +## yield* 语句 -如果在Generater函数内部,调用另一个Generator函数,默认情况下是没有效果的。 +如果在 Generator 函数内部,调用另一个 Generator 函数,默认情况下是没有效果的。 ```javascript function* foo() { @@ -728,9 +728,9 @@ for (let v of bar()){ // "y" ``` -上面代码中,`foo`和`bar`都是Generator函数,在`bar`里面调用`foo`,是不会有效果的。 +上面代码中,`foo`和`bar`都是 Generator 函数,在`bar`里面调用`foo`,是不会有效果的。 -这个就需要用到`yield*`语句,用来在一个Generator函数里面执行另一个Generator函数。 +这个就需要用到`yield*`语句,用来在一个 Generator 函数里面执行另一个 Generator 函数。 ```javascript function* bar() { From 6609f64696a00010a0fc2e042a9e7699c4622269 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 2 Jan 2017 23:19:46 +0800 Subject: [PATCH 170/994] docs(async): edit async --- docs/async.md | 122 ++++++++++++++++++++++++---------------------- docs/reference.md | 3 +- 2 files changed, 67 insertions(+), 58 deletions(-) diff --git a/docs/async.md b/docs/async.md index 0774d5e56..570e97399 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1,6 +1,6 @@ # 异步操作和Async函数 -异步编程对JavaScript语言太重要。Javascript语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。 +异步编程对 JavaScript 语言太重要。Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。本章主要介绍如何 Generator 函数完成异步操作。 ES6诞生以前,异步编程的方法,大概有下面四种。 @@ -9,13 +9,13 @@ ES6诞生以前,异步编程的方法,大概有下面四种。 - 发布/订阅 - Promise 对象 -ES6将JavaScript异步编程带入了一个全新的阶段,ES7的`Async`函数更是提出了异步编程的终极解决方案。 +Generator 函数将 JavaScript 异步编程带入了一个全新的阶段。 ## 基本概念 ### 异步 -所谓"异步",简单说就是一个任务分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段。 +所谓"异步",简单说就是一个任务不是连续完成的,可以理解成该任务被人为分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段。 比如,有一个任务是读取文件进行处理,任务的第一段是向操作系统发出请求,要求读取文件。然后,程序执行其他任务,等到操作系统返回文件,再接着执行任务的第二段(处理文件)。这种不连续的执行,就叫做异步。 @@ -23,60 +23,62 @@ ES6将JavaScript异步编程带入了一个全新的阶段,ES7的`Async`函数 ### 回调函数 -JavaScript语言对异步编程的实现,就是回调函数。所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,就直接调用这个函数。它的英语名字callback,直译过来就是"重新调用"。 +JavaScript 语言对异步编程的实现,就是回调函数。所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,就直接调用这个函数。回调函数的英语名字`callback`,直译过来就是"重新调用"。 读取文件进行处理,是这样写的。 ```javascript -fs.readFile('/etc/passwd', function (err, data) { +fs.readFile('/etc/passwd', 'utf-8', function (err, data) { if (err) throw err; console.log(data); }); ``` -上面代码中,readFile函数的第二个参数,就是回调函数,也就是任务的第二段。等到操作系统返回了`/etc/passwd`这个文件以后,回调函数才会执行。 +上面代码中,`readFile`函数的第三个参数,就是回调函数,也就是任务的第二段。等到操作系统返回了`/etc/passwd`这个文件以后,回调函数才会执行。 -一个有趣的问题是,为什么Node.js约定,回调函数的第一个参数,必须是错误对象err(如果没有错误,该参数就是null)?原因是执行分成两段,在这两段之间抛出的错误,程序无法捕捉,只能当作参数,传入第二段。 +一个有趣的问题是,为什么 Node 约定,回调函数的第一个参数,必须是错误对象`err`(如果没有错误,该参数就是`null`)? + +原因是执行分成两段,第一段执行完以后,任务所在的上下文环境就已经结束了。在这以后抛出的错误,原来的上下文环境已经无法捕捉,只能当作参数,传入第二段。 ### Promise -回调函数本身并没有问题,它的问题出现在多个回调函数嵌套。假定读取A文件之后,再读取B文件,代码如下。 +回调函数本身并没有问题,它的问题出现在多个回调函数嵌套。假定读取`A`文件之后,再读取`B`文件,代码如下。 ```javascript -fs.readFile(fileA, function (err, data) { - fs.readFile(fileB, function (err, data) { +fs.readFile(fileA, 'utf-8', function (err, data) { + fs.readFile(fileB, 'utf-8', function (err, data) { // ... }); }); ``` -不难想象,如果依次读取多个文件,就会出现多重嵌套。代码不是纵向发展,而是横向发展,很快就会乱成一团,无法管理。这种情况就称为"回调函数地狱"(callback hell)。 +不难想象,如果依次读取两个以上的文件,就会出现多重嵌套。代码不是纵向发展,而是横向发展,很快就会乱成一团,无法管理。因为多个异步操作形成了强耦合,只要有一个操作需要修改,它的上层回调函数和下层回调函数,可能都要跟着修改。这种情况就称为"回调函数地狱"(callback hell)。 -Promise就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的嵌套,改成链式调用。采用Promise,连续读取多个文件,写法如下。 +Promise 对象就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的嵌套,改成链式调用。采用 Promise,连续读取多个文件,写法如下。 ```javascript var readFile = require('fs-readfile-promise'); readFile(fileA) -.then(function(data){ +.then(function (data) { console.log(data.toString()); }) -.then(function(){ +.then(function () { return readFile(fileB); }) -.then(function(data){ +.then(function (data) { console.log(data.toString()); }) -.catch(function(err) { +.catch(function (err) { console.log(err); }); ``` -上面代码中,我使用了fs-readfile-promise模块,它的作用就是返回一个Promise版本的readFile函数。Promise提供then方法加载回调函数,catch方法捕捉执行过程中抛出的错误。 +上面代码中,我使用了`fs-readfile-promise`模块,它的作用就是返回一个 Promise 版本的`readFile`函数。Promise 提供`then`方法加载回调函数,`catch`方法捕捉执行过程中抛出的错误。 -可以看到,Promise 的写法只是回调函数的改进,使用then方法以后,异步任务的两段执行看得更清楚了,除此以外,并无新意。 +可以看到,Promise 的写法只是回调函数的改进,使用`then`方法以后,异步任务的两段执行看得更清楚了,除此以外,并无新意。 -Promise 的最大问题是代码冗余,原来的任务被Promise 包装了一下,不管什么操作,一眼看去都是一堆 then,原来的语义变得很不清楚。 +Promise 的最大问题是代码冗余,原来的任务被 Promise 包装了一下,不管什么操作,一眼看去都是一堆`then`,原来的语义变得很不清楚。 那么,有没有更好的写法呢? @@ -88,12 +90,12 @@ Promise 的最大问题是代码冗余,原来的任务被Promise 包装了一 协程有点像函数,又有点像线程。它的运行流程大致如下。 -- 第一步,协程A开始执行。 -- 第二步,协程A执行到一半,进入暂停,执行权转移到协程B。 -- 第三步,(一段时间后)协程B交还执行权。 -- 第四步,协程A恢复执行。 +- 第一步,协程`A`开始执行。 +- 第二步,协程`A`执行到一半,进入暂停,执行权转移到协程`B`。 +- 第三步,(一段时间后)协程`B`交还执行权。 +- 第四步,协程`A`恢复执行。 -上面流程的协程A,就是异步任务,因为它分成两段(或多段)执行。 +上面流程的协程`A`,就是异步任务,因为它分成两段(或多段)执行。 举例来说,读取文件的协程写法如下。 @@ -107,16 +109,16 @@ function *asyncJob() { 上面代码的函数`asyncJob`是一个协程,它的奥妙就在其中的`yield`命令。它表示执行到此处,执行权将交给其他协程。也就是说,`yield`命令是异步两个阶段的分界线。 -协程遇到`yield`命令就暂停,等到执行权返回,再从暂停的地方继续往后执行。它的最大优点,就是代码的写法非常像同步操作,如果去除yield命令,简直一模一样。 +协程遇到`yield`命令就暂停,等到执行权返回,再从暂停的地方继续往后执行。它的最大优点,就是代码的写法非常像同步操作,如果去除`yield`命令,简直一模一样。 -### Generator函数的概念 +### Generator 函数的概念 -Generator函数是协程在ES6的实现,最大特点就是可以交出函数的执行权(即暂停执行)。 +Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行)。 -整个Generator函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用`yield`语句注明。Generator函数的执行方法如下。 +整个 Generator 函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用`yield`语句注明。Generator 函数的执行方法如下。 ```javascript -function* gen(x){ +function* gen(x) { var y = yield x + 2; return y; } @@ -126,11 +128,11 @@ g.next() // { value: 3, done: false } g.next() // { value: undefined, done: true } ``` -上面代码中,调用Generator函数,会返回一个内部指针(即遍历器)g 。这是Generator函数不同于普通函数的另一个地方,即执行它不会返回结果,返回的是指针对象。调用指针g的next方法,会移动内部指针(即执行异步任务的第一段),指向第一个遇到的yield语句,上例是执行到`x + 2`为止。 +上面代码中,调用 Generator 函数,会返回一个内部指针(即遍历器)`g`。这是 Generator 函数不同于普通函数的另一个地方,即执行它不会返回结果,返回的是指针对象。调用指针`g`的`next`方法,会移动内部指针(即执行异步任务的第一段),指向第一个遇到的`yield`语句,上例是执行到`x + 2`为止。 -换言之,next方法的作用是分阶段执行Generator函数。每次调用next方法,会返回一个对象,表示当前阶段的信息(value属性和done属性)。value属性是yield语句后面表达式的值,表示当前阶段的值;done属性是一个布尔值,表示Generator函数是否执行完毕,即是否还有下一个阶段。 +换言之,`next`方法的作用是分阶段执行`Generator`函数。每次调用`next`方法,会返回一个对象,表示当前阶段的信息(`value`属性和`done`属性)。`value`属性是`yield`语句后面表达式的值,表示当前阶段的值;`done`属性是一个布尔值,表示 Generator 函数是否执行完毕,即是否还有下一个阶段。 -### Generator函数的数据交换和错误处理 +### Generator 函数的数据交换和错误处理 Generator函数可以暂停执行和恢复执行,这是它能封装异步任务的根本原因。除此之外,它还有两个特性,使它可以作为异步编程的完整解决方案:函数体内外的数据交换和错误处理机制。 @@ -550,23 +552,23 @@ co(gen).then(function (){ ### co模块的原理 -为什么co可以自动执行Generator函数? +为什么 co 可以自动执行 Generator 函数? -前面说过,Generator就是一个异步操作的容器。它的自动执行需要一种机制,当异步操作有了结果,能够自动交回执行权。 +前面说过,Generator 就是一个异步操作的容器。它的自动执行需要一种机制,当异步操作有了结果,能够自动交回执行权。 两种方法可以做到这一点。 -(1)回调函数。将异步操作包装成Thunk函数,在回调函数里面交回执行权。 +(1)回调函数。将异步操作包装成 Thunk 函数,在回调函数里面交回执行权。 -(2)Promise 对象。将异步操作包装成Promise对象,用then方法交回执行权。 +(2)Promise 对象。将异步操作包装成 Promise 对象,用`then`方法交回执行权。 -co模块其实就是将两种自动执行器(Thunk函数和Promise对象),包装成一个模块。使用co的前提条件是,Generator函数的yield命令后面,只能是Thunk函数或Promise对象。 +co 模块其实就是将两种自动执行器(Thunk 函数和 Promise 对象),包装成一个模块。使用 co 的前提条件是,Generator 函数的`yield`命令后面,只能是 Thunk 函数或 Promise 对象。 -上一节已经介绍了基于Thunk函数的自动执行器。下面来看,基于Promise对象的自动执行器。这是理解co模块必须的。 +上一节已经介绍了基于 Thunk 函数的自动执行器。下面来看,基于 Promise 对象的自动执行器。这是理解 co 模块必须的。 -### 基于Promise对象的自动执行 +### 基于 Promise 对象的自动执行 -还是沿用上面的例子。首先,把fs模块的readFile方法包装成一个Promise对象。 +还是沿用上面的例子。首先,把`fs`模块的`readFile`方法包装成一个 Promise 对象。 ```javascript var fs = require('fs'); @@ -588,7 +590,7 @@ var gen = function* (){ }; ``` -然后,手动执行上面的Generator函数。 +然后,手动执行上面的 Generator 函数。 ```javascript var g = gen(); @@ -600,7 +602,7 @@ g.next().value.then(function(data){ }); ``` -手动执行其实就是用then方法,层层添加回调函数。理解了这一点,就可以写出一个自动执行器。 +手动执行其实就是用`then`方法,层层添加回调函数。理解了这一点,就可以写出一个自动执行器。 ```javascript function run(gen){ @@ -620,13 +622,13 @@ function run(gen){ run(gen); ``` -上面代码中,只要Generator函数还没执行到最后一步,next函数就调用自身,以此实现自动执行。 +上面代码中,只要 Generator 函数还没执行到最后一步,`next`函数就调用自身,以此实现自动执行。 -### co模块的源码 +### co 模块的源码 -co就是上面那个自动执行器的扩展,它的源码只有几十行,非常简单。 +co 就是上面那个自动执行器的扩展,它的源码只有几十行,非常简单。 -首先,co函数接受Generator函数作为参数,返回一个 Promise 对象。 +首先,co 函数接受 Generator 函数作为参数,返回一个 Promise 对象。 ```javascript function co(gen) { @@ -637,7 +639,7 @@ function co(gen) { } ``` -在返回的Promise对象里面,co先检查参数gen是否为Generator函数。如果是,就执行该函数,得到一个内部指针对象;如果不是就返回,并将Promise对象的状态改为resolved。 +在返回的 Promise 对象里面,co 先检查参数`gen`是否为 Generator 函数。如果是,就执行该函数,得到一个内部指针对象;如果不是就返回,并将 Promise 对象的状态改为`resolved`。 ```javascript function co(gen) { @@ -650,7 +652,7 @@ function co(gen) { } ``` -接着,co将Generator函数的内部指针对象的next方法,包装成onFulfilled函数。这主要是为了能够捕捉抛出的错误。 +接着,co 将 Generator 函数的内部指针对象的`next`方法,包装成`onFulfilled`函数。这主要是为了能够捕捉抛出的错误。 ```javascript function co(gen) { @@ -674,33 +676,39 @@ function co(gen) { } ``` -最后,就是关键的next函数,它会反复调用自身。 +最后,就是关键的`next`函数,它会反复调用自身。 ```javascript function next(ret) { if (ret.done) return resolve(ret.value); var value = toPromise.call(ctx, ret.value); if (value && isPromise(value)) return value.then(onFulfilled, onRejected); - return onRejected(new TypeError('You may only yield a function, promise, generator, array, or object, ' - + 'but the following object was passed: "' + String(ret.value) + '"')); + return onRejected( + new TypeError( + 'You may only yield a function, promise, generator, array, or object, ' + + 'but the following object was passed: "' + + String(ret.value) + + '"' + ) + ); } ``` -上面代码中,next 函数的内部代码,一共只有四行命令。 +上面代码中,`next`函数的内部代码,一共只有四行命令。 第一行,检查当前是否为 Generator 函数的最后一步,如果是就返回。 第二行,确保每一步的返回值,是 Promise 对象。 -第三行,使用 then 方法,为返回值加上回调函数,然后通过 onFulfilled 函数再次调用 next 函数。 +第三行,使用`then`方法,为返回值加上回调函数,然后通过`onFulfilled`函数再次调用`next`函数。 -第四行,在参数不符合要求的情况下(参数非 Thunk 函数和 Promise 对象),将 Promise 对象的状态改为 rejected,从而终止执行。 +第四行,在参数不符合要求的情况下(参数非 Thunk 函数和 Promise 对象),将 Promise 对象的状态改为`rejected`,从而终止执行。 ### 处理并发的异步操作 -co支持并发的异步操作,即允许某些操作同时进行,等到它们全部完成,才进行下一步。 +co 支持并发的异步操作,即允许某些操作同时进行,等到它们全部完成,才进行下一步。 -这时,要把并发的操作都放在数组或对象里面,跟在yield语句后面。 +这时,要把并发的操作都放在数组或对象里面,跟在`yield`语句后面。 ```javascript // 数组的写法 @@ -830,7 +838,7 @@ f().then( // Error: 出错了 ``` -(2)`async`函数返回的 Promise 对象,必须等到内部所有`await`命令的Promise对象执行完,才会发生状态改变,除非遇到`return`语句或者抛出错误。也就是说,只有`async`函数内部的异步操作执行完,才会执行`then`方法指定的回调函数。 +(2)`async`函数返回的 Promise 对象,必须等到内部所有`await`命令的 Promise 对象执行完,才会发生状态改变,除非遇到`return`语句或者抛出错误。也就是说,只有`async`函数内部的异步操作执行完,才会执行`then`方法指定的回调函数。 下面是一个例子。 diff --git a/docs/reference.md b/docs/reference.md index 7c369d2e2..23d086c48 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -132,7 +132,7 @@ - Bertalan Miklos, [Writing a JavaScript Framework - Data Binding with ES6 Proxies](https://blog.risingstack.com/writing-a-javascript-framework-data-binding-es6-proxy/): 使用 Proxy 实现观察者模式 - Keith Cirkel, [Metaprogramming in ES6: Part 2 - Reflect](https://www.keithcirkel.co.uk/metaprogramming-in-es6-part-2-reflect/): Reflect API 的详细介绍 -## Promise对象 +## Promise 对象 - Jake Archibald, [JavaScript Promises: There and back again](http://www.html5rocks.com/en/tutorials/es6/promises/) - Tilde, [rsvp.js](https://github.com/tildeio/rsvp.js) @@ -181,6 +181,7 @@ - Daniel Brain, [Understand promises before you start using async/await](https://medium.com/@bluepnume/learn-about-promises-before-you-start-using-async-await-eb148164a9c8): 讨论async/await与Promise的关系 - Jake Archibald, [Async functions - making promises friendly](https://developers.google.com/web/fundamentals/getting-started/primers/async-functions) - Axel Rauschmayer, [ES proposal: asynchronous iteration](http://www.2ality.com/2016/10/asynchronous-iteration.html): 异步遍历器的详细介绍 +- Dima Grossman, [How to write async await without try-catch blocks in Javascript](http://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/): 除了 try/catch 以外的 async 函数内部捕捉错误的方法 ## Class From 884c0083134f2566c5161960e9128c12e0231938 Mon Sep 17 00:00:00 2001 From: MRLuowen <578738358@qq.com> Date: Tue, 3 Jan 2017 18:34:09 +0800 Subject: [PATCH 171/994] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改异步编程接口一个对象名称错误 --- docs/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index 570e97399..0ed3e050a 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1357,7 +1357,7 @@ asyncIterator ```javascript const asyncIterable = createAsyncIterable(['a', 'b']); -const asyncIterator = someCollection[Symbol.asyncIterator](); +const asyncIterator = asyncIterable[Symbol.asyncIterator](); asyncIterator .next() From 2b74904568d6efbfd4c8ad83c6d8bd586638c46c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 5 Jan 2017 11:17:25 +0800 Subject: [PATCH 172/994] docs(arraybuffer): edit arraybuffer --- docs/arraybuffer.md | 11 ++++++++++- docs/async.md | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index 08e8e8ea8..6f0c78a01 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -487,6 +487,15 @@ uint8[0] // 255 - 正向溢出(overflow):当输入值大于当前数据类型的最大值,结果等于当前数据类型的最小值加上余值,再减去1。 - 负向溢出(underflow):当输入值小于当前数据类型的最小值,结果等于当前数据类型的最大值减去余值,再加上1。 +上面的“余值”就是模运算的结果,即 JavaScript 里面的`%`运算符的结果。 + +```javascript +12 % 4 // 0 +12 % 5 // 2 +``` + +上面代码中,12除以4是没有余值的,而除以5会得到余值2。 + 请看下面的例子。 ```javascript @@ -499,7 +508,7 @@ int8[0] = -129; int8[0] // 127 ``` -上面例子中,`int8`是一个带符号的8位整数视图,它的最大值是127,最小值是-128。输入值为`128`时,相当于正向溢出`1`,根据“最小值加上余值,再减去1”的规则,就会返回`-128`;输入值为`-129`时,相当于负向溢出`1`,根据“最大值减去余值,再加上1”的规则,就会返回`127`。 +上面例子中,`int8`是一个带符号的8位整数视图,它的最大值是127,最小值是-128。输入值为`128`时,相当于正向溢出`1`,根据“最小值加上余值(128除以127的余值是1),再减去1”的规则,就会返回`-128`;输入值为`-129`时,相当于负向溢出`1`,根据“最大值减去余值(-129除以-127的余值是2),再加上1”的规则,就会返回`127`。 `Uint8ClampedArray`视图的溢出规则,与上面的规则不同。它规定,凡是发生正向溢出,该值一律等于当前数据类型的最大值,即255;如果发生负向溢出,该值一律等于当前数据类型的最小值,即0。 diff --git a/docs/async.md b/docs/async.md index 570e97399..468b82aec 100644 --- a/docs/async.md +++ b/docs/async.md @@ -909,7 +909,7 @@ f() // hello world ``` -另一种方法是`await`后面的Promise对象再跟一个`catch`方面,处理前面可能出现的错误。 +另一种方法是`await`后面的Promise对象再跟一个`catch`方法,处理前面可能出现的错误。 ```javascript async function f() { From e1abf373a3c83394f15e3276f391280fc6196066 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 7 Jan 2017 13:31:27 +0800 Subject: [PATCH 173/994] docs(object): edit object --- docs/function.md | 20 ++++++++++---------- docs/object.md | 33 +++++++++++++++++++++++---------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/docs/function.md b/docs/function.md index b7f82ec34..b40c10b37 100644 --- a/docs/function.md +++ b/docs/function.md @@ -770,7 +770,7 @@ const doSomething = (function () { }()); ``` -## name属性 +## name 属性 函数的`name`属性,返回该函数的函数名。 @@ -779,23 +779,23 @@ function foo() {} foo.name // "foo" ``` -这个属性早就被浏览器广泛支持,但是直到ES6,才将其写入了标准。 +这个属性早就被浏览器广泛支持,但是直到 ES6,才将其写入了标准。 -需要注意的是,ES6对这个属性的行为做出了一些修改。如果将一个匿名函数赋值给一个变量,ES5的`name`属性,会返回空字符串,而ES6的`name`属性会返回实际的函数名。 +需要注意的是,ES6 对这个属性的行为做出了一些修改。如果将一个匿名函数赋值给一个变量,ES5 的`name`属性,会返回空字符串,而 ES6 的`name`属性会返回实际的函数名。 ```javascript -var func1 = function () {}; +var f = function () {}; // ES5 -func1.name // "" +f.name // "" // ES6 -func1.name // "func1" +f.name // "f" ``` -上面代码中,变量`func1`等于一个匿名函数,ES5和ES6的`name`属性返回的值不一样。 +上面代码中,变量`f`等于一个匿名函数,ES5 和 ES6 的`name`属性返回的值不一样。 -如果将一个具名函数赋值给一个变量,则ES5和ES6的`name`属性都返回这个具名函数原本的名字。 +如果将一个具名函数赋值给一个变量,则 ES5 和 ES6 的`name`属性都返回这个具名函数原本的名字。 ```javascript const bar = function baz() {}; @@ -807,13 +807,13 @@ bar.name // "baz" bar.name // "baz" ``` -`Function`构造函数返回的函数实例,`name`属性的值为“anonymous”。 +`Function`构造函数返回的函数实例,`name`属性的值为`anonymous`。 ```javascript (new Function).name // "anonymous" ``` -`bind`返回的函数,`name`属性值会加上“bound ”前缀。 +`bind`返回的函数,`name`属性值会加上`bound `前缀。 ```javascript function foo() {}; diff --git a/docs/object.md b/docs/object.md index 3e849b8c9..2cd2b4cc6 100644 --- a/docs/object.md +++ b/docs/object.md @@ -13,7 +13,7 @@ baz // {foo: "bar"} var baz = {foo: foo}; ``` -上面代码表明,ES6允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。下面是另一个例子。 +上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。下面是另一个例子。 ```javascript function f(x, y) { @@ -244,22 +244,35 @@ myObject // Object {[object Object]: "valueB"} 函数的`name`属性,返回函数名。对象方法也是函数,因此也有`name`属性。 ```javascript -var person = { +const person = { sayName() { console.log(this.name); }, - get firstName() { - return "Nicholas"; - } }; person.sayName.name // "sayName" -person.firstName.name // "get firstName" ``` -上面代码中,方法的`name`属性返回函数名(即方法名)。如果使用了取值函数,则会在方法名前加上`get`。如果是存值函数,方法名的前面会加上`set`。 +上面代码中,方法的`name`属性返回函数名(即方法名)。 + +如果对象的方法使用了取值函数(`getter`)和存值函数(`setter`),则`name`属性不是在该方法上面,而是该方法的属性的描述对象的`get`和`set`属性上面,返回值是方法名前加上`get`和`set`。 + +```javascript +const obj = { + get foo() {}, + set foo(x) {} +}; + +obj.foo.name +// TypeError: Cannot read property 'name' of undefined + +const descriptor = Object.getOwnPropertyDescriptor(o, 'foo'); + +descriptor.get.name // "get foo" +descriptor.set.name // "set foo" +``` -有两种特殊情况:`bind`方法创造的函数,`name`属性返回“bound”加上原函数的名字;`Function`构造函数创造的函数,`name`属性返回“anonymous”。 +有两种特殊情况:`bind`方法创造的函数,`name`属性返回`bound`加上原函数的名字;`Function`构造函数创造的函数,`name`属性返回`anonymous`。 ```javascript (new Function()).name // "anonymous" @@ -270,7 +283,7 @@ var doSomething = function() { doSomething.bind().name // "bound doSomething" ``` -如果对象的方法是一个Symbol值,那么`name`属性返回的是这个Symbol值的描述。 +如果对象的方法是一个 Symbol 值,那么`name`属性返回的是这个 Symbol 值的描述。 ```javascript const key1 = Symbol('description'); @@ -283,7 +296,7 @@ obj[key1].name // "[description]" obj[key2].name // "" ``` -上面代码中,`key1`对应的Symbol值有描述,`key2`没有。 +上面代码中,`key1`对应的 Symbol 值有描述,`key2`没有。 ## Object.is() From da273bb792f1fb3c744ee95dcf1175f0df8924fa Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 8 Jan 2017 00:15:31 +0800 Subject: [PATCH 174/994] docs: edit async typo --- docs/async.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/async.md b/docs/async.md index 53e89231f..3d934d502 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1433,9 +1433,9 @@ async function f() { ```javascript let body = ''; -for await(const data on req) body += data; +for await(const data of req) body += data; const parsed = JSON.parse(body); -console.log("got", parsed); +console.log('got', parsed); ``` 上面代码中,`req`是一个 asyncIterable 对象,用来异步读取数据。可以看到,使用`for await...of`循环以后,代码会非常简洁。 From 0b247a9ea2c59aa594193b3d359b328f5bc4d0fc Mon Sep 17 00:00:00 2001 From: Yang KeAn Date: Sun, 8 Jan 2017 10:52:44 +0800 Subject: [PATCH 175/994] =?UTF-8?q?9.=E5=AF=B9=E8=B1=A1=E7=9A=84=E6=89=A9?= =?UTF-8?q?=E5=B1=95=20=E6=96=B9=E6=B3=95=E7=9A=84name=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E9=83=A8=E5=88=86=E9=9C=80=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 http://es6.ruanyifeng.com/#docs/object#方法的-name-属性 中,“console.log(this.name)” 不应该出现,这里的“this”指代的是方法所处的对象,即 person,该对象并不存在 name 属性,与本节所讲方法的属性毫无关系,易引起误导,应修改。 --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index 2cd2b4cc6..bbf578eed 100644 --- a/docs/object.md +++ b/docs/object.md @@ -246,7 +246,7 @@ myObject // Object {[object Object]: "valueB"} ```javascript const person = { sayName() { - console.log(this.name); +    console.log('hello!'); }, }; From b9a4aa449d4b1fb3a5bfb82ad6e2c3e19ad04637 Mon Sep 17 00:00:00 2001 From: Sam Yang Date: Mon, 9 Jan 2017 11:26:56 +0800 Subject: [PATCH 176/994] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=89=87=E6=AE=B5?= =?UTF-8?q?=E6=9C=89=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://es6.ruanyifeng.com/#docs/decorator#为什么修饰器不能用于函数?这一节的第二个代码片段,函数声明和变量声明都会提升,但是函数声明先于变量声明。 --- docs/decorator.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/decorator.md b/docs/decorator.md index c55f383bc..690370f38 100644 --- a/docs/decorator.md +++ b/docs/decorator.md @@ -251,13 +251,13 @@ function foo() { 上面的代码,意图是执行后`counter`等于1,但是实际上结果是`counter`等于0。因为函数提升,使得实际执行的代码是下面这样。 ```javascript -var counter; -var add; - @add function foo() { } +var counter; +var add; + counter = 0; add = function () { From 20a5e6b1821640e09d89879b2b62c3aab7fc1973 Mon Sep 17 00:00:00 2001 From: goodyboy6 Date: Mon, 9 Jan 2017 15:41:07 +0800 Subject: [PATCH 177/994] Update object.md const descriptor = Object.getOwnPropertyDescriptor(o, 'foo'); ==> const descriptor = Object.getOwnPropertyDescriptor(obj, 'foo'); --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index bbf578eed..10c4d93a6 100644 --- a/docs/object.md +++ b/docs/object.md @@ -266,7 +266,7 @@ const obj = { obj.foo.name // TypeError: Cannot read property 'name' of undefined -const descriptor = Object.getOwnPropertyDescriptor(o, 'foo'); +const descriptor = Object.getOwnPropertyDescriptor(obj, 'foo'); descriptor.get.name // "get foo" descriptor.set.name // "set foo" From fa18d4a68bc661fd15e5a504c46fa86defa4b73e Mon Sep 17 00:00:00 2001 From: Zhao Date: Mon, 9 Jan 2017 16:39:55 +0800 Subject: [PATCH 178/994] using Thunk function before defined MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这里的 Thunk 函数是使用函数表达式定义的,意味着 Thunk 函数不能在定义前使用。 --- docs/async.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/async.md b/docs/async.md index 3d934d502..b6f7e5602 100644 --- a/docs/async.md +++ b/docs/async.md @@ -287,14 +287,14 @@ JavaScript语言是传值调用,它的Thunk函数含义有所不同。在JavaS fs.readFile(fileName, callback); // Thunk版本的readFile(单参数版本) -var readFileThunk = Thunk(fileName); -readFileThunk(callback); - var Thunk = function (fileName){ return function (callback){ return fs.readFile(fileName, callback); }; }; + +var readFileThunk = Thunk(fileName); +readFileThunk(callback); ``` 上面代码中,fs模块的readFile方法是一个多参数函数,两个参数分别为文件名和回调函数。经过转换器处理,它变成了一个单参数函数,只接受回调函数作为参数。这个单参数版本,就叫做Thunk函数。 From bfa6c119c115e29f883804e67ff90f6efcecedda Mon Sep 17 00:00:00 2001 From: Geng Shuang <937493108@qq.com> Date: Wed, 11 Jan 2017 15:26:17 +0800 Subject: [PATCH 179/994] =?UTF-8?q?=E7=94=9F=E6=88=90=E5=99=A8=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E8=B0=83=E7=94=A8=20next=20=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E4=BC=A0=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `next`方法可以带一个参数,该参数就会被当作上一个`yield`语句的返回值 --- docs/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator.md b/docs/generator.md index 208920862..dc9a57e84 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -234,7 +234,7 @@ g.next() // { value: 1, done: false } g.next(true) // { value: 0, done: false } ``` -上面代码先定义了一个可以无限运行的Generator函数`f`,如果`next`方法没有参数,每次运行到`yield`语句,变量`reset`的值总是`undefined`。当`next`方法带一个参数`true`时,当前的变量`reset`就被重置为这个参数(即`true`),因此`i`会等于-1,下一轮循环就会从-1开始递增。 +上面代码先定义了一个可以无限运行的Generator函数`f`,如果`next`方法没有参数,每次运行到`yield`语句,变量`reset`的值总是`undefined`。当`next`方法带一个参数`true`时,上一次的变量`reset`就被重置为这个参数(即`true`),因此上一次的`i`会等于-1,下一轮循环就会从-1开始递增。 这个功能有很重要的语法意义。Generator函数从暂停状态到恢复运行,它的上下文状态(context)是不变的。通过`next`方法的参数,就有办法在Generator函数开始运行之后,继续向函数体内部注入值。也就是说,可以在Generator函数运行的不同阶段,从外部向内部注入不同的值,从而调整函数行为。 From 2be52481a24bc2a015a72699254383633e1b89e0 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 12 Jan 2017 11:11:22 +0800 Subject: [PATCH 180/994] docs(generator): edit Generator --- docs/generator.md | 6 +++--- docs/regex.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/generator.md b/docs/generator.md index dc9a57e84..b74fc35be 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -221,7 +221,7 @@ g[Symbol.iterator]() === g ```javascript function* f() { - for(var i=0; true; i++) { + for(var i = 0; true; i++) { var reset = yield i; if(reset) { i = -1; } } @@ -234,9 +234,9 @@ g.next() // { value: 1, done: false } g.next(true) // { value: 0, done: false } ``` -上面代码先定义了一个可以无限运行的Generator函数`f`,如果`next`方法没有参数,每次运行到`yield`语句,变量`reset`的值总是`undefined`。当`next`方法带一个参数`true`时,上一次的变量`reset`就被重置为这个参数(即`true`),因此上一次的`i`会等于-1,下一轮循环就会从-1开始递增。 +上面代码先定义了一个可以无限运行的 Generator 函数`f`,如果`next`方法没有参数,每次运行到`yield`语句,变量`reset`的值总是`undefined`。当`next`方法带一个参数`true`时,变量`reset`就被重置为这个参数(即`true`),因此`i`会等于`-1`,下一轮循环就会从`-1`开始递增。 -这个功能有很重要的语法意义。Generator函数从暂停状态到恢复运行,它的上下文状态(context)是不变的。通过`next`方法的参数,就有办法在Generator函数开始运行之后,继续向函数体内部注入值。也就是说,可以在Generator函数运行的不同阶段,从外部向内部注入不同的值,从而调整函数行为。 +这个功能有很重要的语法意义。Generator 函数从暂停状态到恢复运行,它的上下文状态(context)是不变的。通过`next`方法的参数,就有办法在 Generator 函数开始运行之后,继续向函数体内部注入值。也就是说,可以在 Generator 函数运行的不同阶段,从外部向内部注入不同的值,从而调整函数行为。 再看一个例子。 diff --git a/docs/regex.md b/docs/regex.md index faf21c701..daa29fdbf 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -508,7 +508,7 @@ regex.test('ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ') // true [\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}] // 匹配各种文字的所有非字母的字符,等同于Unicode版的\W -[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}] +[^\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}] // 匹配所有的箭头字符 const regexArrows = /^\p{Block=Arrows}+$/u; From ef89f58f61cd96dd90865f5973080cfd64cc40d4 Mon Sep 17 00:00:00 2001 From: Ataotao Date: Fri, 13 Jan 2017 15:53:07 +0800 Subject: [PATCH 181/994] =?UTF-8?q?=E6=AD=A4=E5=A4=84=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=9C=89=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit // Reflect.construct 的写法 const instance = Reflect.construct(Greeting, '张三'); Reflect.construct(target, argumentsList[, newTarget]) An array-like object specifying the arguments with which target should be called. --- docs/reflect.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reflect.md b/docs/reflect.md index c6129ef8c..9113c7f57 100644 --- a/docs/reflect.md +++ b/docs/reflect.md @@ -240,7 +240,7 @@ function Greeting(name) { const instance = new Greeting('张三'); // Reflect.construct 的写法 -const instance = Reflect.construct(Greeting, '张三'); +const instance = Reflect.construct(Greeting, ['张三']); ``` ### Reflect.getPrototypeOf(obj) From 8d0274cd13d16677648185ff9f21acceaf6b40fe Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 14 Jan 2017 15:04:55 +0800 Subject: [PATCH 182/994] =?UTF-8?q?docs(class):=20=E7=A7=81=E6=9C=89?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/class.md | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/docs/class.md b/docs/class.md index 29a408462..fe70f3423 100644 --- a/docs/class.md +++ b/docs/class.md @@ -354,7 +354,7 @@ person.sayName(); // "张三" ### 私有方法 -私有方法是常见需求,但ES6不提供,只能通过变通方法模拟实现。 +私有方法是常见需求,但 ES6 不提供,只能通过变通方法模拟实现。 一种做法是在命名上加以区别。 @@ -419,6 +419,50 @@ export default class myClass{ 上面代码中,`bar`和`snaf`都是`Symbol`值,导致第三方无法获取到它们,因此达到了私有方法和私有属性的效果。 +### 私有属性 + +目前,有一个[提案](https://github.com/tc39/proposal-private-fields),为`class`加了私有属性。方法是在属性名之前,使用`#`表示。 + +```javascript +class Point { + #x; + + constructor(x = 0) { + #x = +x; + } + + get x() { return #x } + set x(value) { #x = +value } +} +``` + +上面代码中,`#x`就表示私有属性`x`,在`Point`类之外是读取不到这个属性的。还可以看到,私有属性与实例的属性是可以同名的(比如,`#x`与`get x()`)。 + +私有属性可以指定初始值,在构造函数执行时进行初始化。 + +```javascript +class Point { + #x = 0; + constructor() { + #x; // 0 + } +} +``` + +之所以要引入一个新的前缀`#`表示私有属性,而没有采用`private`关键字,是因为 JavaScript 是一门动态语言,使用独立的符号似乎是唯一的可靠方法,能够准确地区分一种属性是私有属性。另外,Ruby 语言使用`@`表示私有属性,ES6 没有用这个符号而使用`#`,是因为`@`已经被留给了 Decorator。 + +该提案只规定了私有属性的写法。但是,很自然地,它也可以用来写私有方法。 + +```javascript +class Foo { + #a; + #b; + #sum() { return #a + #b; } + printSum() { console.log(#sum()); } + constructor(a, b) { #a = a; #b = b; } +} +``` + ### this的指向 类的方法内部如果含有`this`,它默认指向类的实例。但是,必须非常小心,一旦单独使用该方法,很可能报错。 From b08cb1329f077e80b884aaae5334caca39d9ec18 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 15 Jan 2017 19:57:14 +0800 Subject: [PATCH 183/994] docs(module): edit module --- docs/module.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/module.md b/docs/module.md index dc882f024..431e3ef7b 100644 --- a/docs/module.md +++ b/docs/module.md @@ -591,7 +591,7 @@ $ node main.js 4 ``` -ES6模块的运行机制与CommonJS不一样,它遇到模块加载命令`import`时,不会去执行模块,而是只生成一个动态的只读引用。等到真的需要用到时,再到模块里面去取值,换句话说,ES6的输入有点像Unix系统的“符号连接”,原始值变了,`import`输入的值也会跟着变。因此,ES6模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 +ES6 模块的运行机制与 CommonJS 不一样。JS引擎对脚本静态分析的时候,遇到模块加载命令`import`,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。换句话说,ES6 的`import`有点像 Unix 系统的“符号连接”,原始值变了,`import`加载的值也会跟着变。因此,ES6 模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 还是举上面的例子。 @@ -609,7 +609,7 @@ incCounter(); console.log(counter); // 4 ``` -上面代码说明,ES6模块输入的变量`counter`是活的,完全反应其所在模块`lib.js`内部的变化。 +上面代码说明,ES6 模块输入的变量`counter`是活的,完全反应其所在模块`lib.js`内部的变化。 再举一个出现在`export`一节中的例子。 From 1fa35d5c7b1b5e81efc1368e08f3817559d31b1e Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 17 Jan 2017 16:09:32 +0800 Subject: [PATCH 184/994] =?UTF-8?q?docs(class):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E2=80=9D=E7=B1=BB=E7=9A=84=E7=A7=81=E6=9C=89=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E2=80=9C=E4=B8=80=E8=8A=82=E7=9A=84=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/class.md | 96 +++++++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/docs/class.md b/docs/class.md index fe70f3423..3e0f249bf 100644 --- a/docs/class.md +++ b/docs/class.md @@ -419,50 +419,6 @@ export default class myClass{ 上面代码中,`bar`和`snaf`都是`Symbol`值,导致第三方无法获取到它们,因此达到了私有方法和私有属性的效果。 -### 私有属性 - -目前,有一个[提案](https://github.com/tc39/proposal-private-fields),为`class`加了私有属性。方法是在属性名之前,使用`#`表示。 - -```javascript -class Point { - #x; - - constructor(x = 0) { - #x = +x; - } - - get x() { return #x } - set x(value) { #x = +value } -} -``` - -上面代码中,`#x`就表示私有属性`x`,在`Point`类之外是读取不到这个属性的。还可以看到,私有属性与实例的属性是可以同名的(比如,`#x`与`get x()`)。 - -私有属性可以指定初始值,在构造函数执行时进行初始化。 - -```javascript -class Point { - #x = 0; - constructor() { - #x; // 0 - } -} -``` - -之所以要引入一个新的前缀`#`表示私有属性,而没有采用`private`关键字,是因为 JavaScript 是一门动态语言,使用独立的符号似乎是唯一的可靠方法,能够准确地区分一种属性是私有属性。另外,Ruby 语言使用`@`表示私有属性,ES6 没有用这个符号而使用`#`,是因为`@`已经被留给了 Decorator。 - -该提案只规定了私有属性的写法。但是,很自然地,它也可以用来写私有方法。 - -```javascript -class Foo { - #a; - #b; - #sum() { return #a + #b; } - printSum() { console.log(#sum()); } - constructor(a, b) { #a = a; #b = b; } -} -``` - ### this的指向 类的方法内部如果含有`this`,它默认指向类的实例。但是,必须非常小心,一旦单独使用该方法,很可能报错。 @@ -1209,9 +1165,9 @@ var descriptor = Object.getOwnPropertyDescriptor( 上面代码中,存值函数和取值函数是定义在`html`属性的描述对象上面,这与ES5完全一致。 -## Class的Generator方法 +## Class 的 Generator 方法 -如果某个方法之前加上星号(`*`),就表示该方法是一个Generator函数。 +如果某个方法之前加上星号(`*`),就表示该方法是一个 Generator 函数。 ```javascript class Foo { @@ -1232,9 +1188,9 @@ for (let x of new Foo('hello', 'world')) { // world ``` -上面代码中,Foo类的Symbol.iterator方法前有一个星号,表示该方法是一个Generator函数。Symbol.iterator方法返回一个Foo类的默认遍历器,for...of循环会自动调用这个遍历器。 +上面代码中,`Foo`类的`Symbol.iterator`方法前有一个星号,表示该方法是一个 Generator 函数。`Symbol.iterator`方法返回一个`Foo`类的默认遍历器,`for...of`循环会自动调用这个遍历器。 -## Class的静态方法 +## Class 的静态方法 类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上`static`关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。 @@ -1409,6 +1365,50 @@ class Foo { 上面代码中,老写法的静态属性定义在类的外部。整个类生成以后,再生成静态属性。这样让人很容易忽略这个静态属性,也不符合相关代码应该放在一起的代码组织原则。另外,新写法是显式声明(declarative),而不是赋值处理,语义更好。 +## 类的私有属性 + +目前,有一个[提案](https://github.com/tc39/proposal-private-fields),为`class`加了私有属性。方法是在属性名之前,使用`#`表示。 + +```javascript +class Point { + #x; + + constructor(x = 0) { + #x = +x; + } + + get x() { return #x } + set x(value) { #x = +value } +} +``` + +上面代码中,`#x`就表示私有属性`x`,在`Point`类之外是读取不到这个属性的。还可以看到,私有属性与实例的属性是可以同名的(比如,`#x`与`get x()`)。 + +私有属性可以指定初始值,在构造函数执行时进行初始化。 + +```javascript +class Point { + #x = 0; + constructor() { + #x; // 0 + } +} +``` + +之所以要引入一个新的前缀`#`表示私有属性,而没有采用`private`关键字,是因为 JavaScript 是一门动态语言,使用独立的符号似乎是唯一的可靠方法,能够准确地区分一种属性是私有属性。另外,Ruby 语言使用`@`表示私有属性,ES6 没有用这个符号而使用`#`,是因为`@`已经被留给了 Decorator。 + +该提案只规定了私有属性的写法。但是,很自然地,它也可以用来写私有方法。 + +```javascript +class Foo { + #a; + #b; + #sum() { return #a + #b; } + printSum() { console.log(#sum()); } + constructor(a, b) { #a = a; #b = b; } +} +``` + ## new.target属性 `new`是从构造函数生成实例的命令。ES6为`new`命令引入了一个`new.target`属性,(在构造函数中)返回`new`命令作用于的那个构造函数。如果构造函数不是通过`new`命令调用的,`new.target`会返回`undefined`,因此这个属性可以用来确定构造函数是怎么调用的。 From eb2a62215a7bc4f73ac08ac29a90a248a48193ea Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 20 Jan 2017 20:39:18 +0800 Subject: [PATCH 185/994] =?UTF-8?q?docs:=20fix=20function/=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E9=BB=98=E8=AE=A4=E5=80=BC=E6=9C=89=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E4=BD=9C=E7=94=A8=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/function.md | 73 +++++++++++++++++++++++++++++++++--------------- docs/let.md | 29 ++++++++++++++++++- 2 files changed, 78 insertions(+), 24 deletions(-) diff --git a/docs/function.md b/docs/function.md index b40c10b37..f0bb8e90e 100644 --- a/docs/function.md +++ b/docs/function.md @@ -27,7 +27,7 @@ if (typeof y === 'undefined') { } ``` -ES6允许为函数的参数设置默认值,即直接写在参数定义的后面。 +ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。 ```javascript function log(x, y = 'World') { @@ -39,7 +39,7 @@ log('Hello', 'China') // Hello China log('Hello', '') // Hello ``` -可以看到,ES6的写法比ES5简洁许多,而且非常自然。下面是另一个例子。 +可以看到,ES6 的写法比 ES5 简洁许多,而且非常自然。下面是另一个例子。 ```javascript function Point(x = 0, y = 0) { @@ -51,7 +51,7 @@ var p = new Point(); p // { x: 0, y: 0 } ``` -除了简洁,ES6的写法还有两个好处:首先,阅读代码的人,可以立刻意识到哪些参数是可以省略的,不用查看函数体或文档;其次,有利于将来的代码优化,即使未来的版本在对外接口中,彻底拿掉这个参数,也不会导致以前的代码无法运行。 +除了简洁,ES6 的写法还有两个好处:首先,阅读代码的人,可以立刻意识到哪些参数是可以省略的,不用查看函数体或文档;其次,有利于将来的代码优化,即使未来的版本在对外接口中,彻底拿掉这个参数,也不会导致以前的代码无法运行。 参数变量是默认声明的,所以不能用`let`或`const`再次声明。 @@ -64,6 +64,31 @@ function foo(x = 5) { 上面代码中,参数变量`x`是默认声明的,在函数体中,不能用`let`或`const`再次声明,否则会报错。 +使用参数默认值时,函数不能有同名参数。 + +```javascript +function foo(x, x, y = 1) { + // ... +} +// SyntaxError: Duplicate parameter name not allowed in this context +``` + +另外,一个容易忽略的地方是,如果参数默认值是变量,那么参数就不是传值的,而是每次都重新计算默认值表达式的值。 + +```javascript +let x = 99; +function foo(p = x + 1) { + console.log(p); +} + +foo() // 100 + +x = 100; +foo() // 101 +``` + +上面代码中,参数`p`的默认值是`x + 1`。这时,每次调用函数`foo`,都会重新计算`x + 1`,而不是默认`p`等于 100。 + ### 与解构赋值默认值结合使用 参数默认值可以与解构赋值的默认值,结合起来使用。 @@ -188,7 +213,7 @@ foo(undefined, null) 上面代码中,`x`参数对应`undefined`,结果触发了默认值,`y`参数等于`null`,就没有触发默认值。 -### 函数的length属性 +### 函数的 length 属性 指定了默认值以后,函数的`length`属性,将返回没有指定默认值的参数个数。也就是说,指定了默认值后,`length`属性将失真。 @@ -215,7 +240,7 @@ foo(undefined, null) ### 作用域 -一个需要注意的地方是,如果参数默认值是一个变量,则该变量所处的作用域,与其他变量的作用域规则是一样的,即先是当前函数的作用域,然后才是全局作用域。 +一旦设置了参数的默认值,函数进行声明初始化时,参数会形成一个单独的作用域(context)。等到初始化结束,这个作用域就会消失。这种语法行为,在不设置参数默认值时,是不会出现的。 ```javascript var x = 1; @@ -227,9 +252,9 @@ function f(x, y = x) { f(2) // 2 ``` -上面代码中,参数`y`的默认值等于`x`。调用时,由于函数作用域内部的变量`x`已经生成,所以`y`等于参数`x`,而不是全局变量`x`。 +上面代码中,参数`y`的默认值等于变量`x`。调用函数`f`时,参数形成一个单独的作用域。在这个作用域里面,默认值变量`x`指向第一个参数`x`,而不是全局变量`x`,所以输出是`2`。 -如果调用时,函数作用域内部的变量`x`没有生成,结果就会不一样。 +再看下面的例子。 ```javascript let x = 1; @@ -242,7 +267,7 @@ function f(y = x) { f() // 1 ``` -上面代码中,函数调用时,`y`的默认值变量`x`尚未在函数内部生成,所以`x`指向全局变量。 +上面代码中,函数`f`调用时,参数`y = x`形成一个单独的作用域。这个作用域里面,变量`x`本身没有定义,所以指向外层的全局变量`x`。函数调用时,函数体内部的局部变量`x`影响不到默认值变量`x`。 如果此时,全局变量`x`不存在,就会报错。 @@ -267,9 +292,9 @@ function foo(x = x) { foo() // ReferenceError: x is not defined ``` -上面代码中,函数`foo`的参数`x`的默认值也是`x`。这时,默认值`x`的作用域是函数作用域,而不是全局作用域。由于在函数作用域中,存在变量`x`,但是默认值在`x`赋值之前先执行了,所以这时属于暂时性死区(参见《let和const命令》一章),任何对`x`的操作都会报错。 +上面代码中,参数`x = x`形成一个单独作用域。实际执行的是`let x = x`,由于暂时性死区的原因,这行代码会报错”x 未定义“。 -如果参数的默认值是一个函数,该函数的作用域是其声明时所在的作用域。请看下面的例子。 +如果参数的默认值是一个函数,该函数的作用域也遵守这个规则。请看下面的例子。 ```javascript let foo = 'outer'; @@ -282,7 +307,7 @@ function bar(func = x => foo) { bar(); ``` -上面代码中,函数`bar`的参数`func`的默认值是一个匿名函数,返回值为变量`foo`。这个匿名函数声明时,`bar`函数的作用域还没有形成,所以匿名函数里面的`foo`指向外层作用域的`foo`,输出`outer`。 +上面代码中,函数`bar`的参数`func`的默认值是一个匿名函数,返回值为变量`foo`。函数参数形成的单独作用域里面,并没有定义变量`foo`,所以`foo`指向外层的全局变量`foo`,因此输出`outer`。 如果写成下面这样,就会报错。 @@ -295,7 +320,7 @@ function bar(func = () => foo) { bar() // ReferenceError: foo is not defined ``` -上面代码中,匿名函数里面的`foo`指向函数外层,但是函数外层并没有声明`foo`,所以就报错了。 +上面代码中,匿名函数里面的`foo`指向函数外层,但是函数外层并没有声明变量`foo`,所以就报错了。 下面是一个更复杂的例子。 @@ -308,11 +333,12 @@ function foo(x, y = function() { x = 2; }) { } foo() // 3 +x // 1 ``` -上面代码中,函数`foo`的参数`y`的默认值是一个匿名函数。函数`foo`调用时,它的参数`x`的值为`undefined`,所以`y`函数内部的`x`一开始是`undefined`,后来被重新赋值`2`。但是,函数`foo`内部重新声明了一个`x`,值为`3`,这两个`x`是不一样的,互相不产生影响,因此最后输出`3`。 +上面代码中,函数`foo`的参数形成一个单独作用域。这个作用域里面,首先声明了变量`x`,然后声明了变量`y`,`y`的默认值是一个匿名函数。这个匿名函数内部的变量`x`,指向同一个作用域的第一个参数`x`。函数`foo`内部又声明了一个内部变量`x`,该变量与第一个参数`x`由于不是同一个作用域,所以不是同一个变量,因此执行`y`后,内部变量`x`和外部全局变量`x`的值都没变。 -如果将`var x = 3`的`var`去除,两个`x`就是一样的,最后输出的就是`2`。 +如果将`var x = 3`的`var`去除,函数`foo`的内部变量`x`就指向第一个参数`x`,与匿名函数内部的`x`是一致的,所以最后输出的就是`2`,而外层的全局变量`x`依然不受影响。 ```javascript var x = 1; @@ -323,6 +349,7 @@ function foo(x, y = function() { x = 2; }) { } foo() // 2 +x // 1 ``` ### 应用 @@ -344,7 +371,7 @@ foo() 上面代码的`foo`函数,如果调用的时候没有参数,就会调用默认值`throwIfMissing`函数,从而抛出一个错误。 -从上面代码还可以看到,参数`mustBeProvided`的默认值等于`throwIfMissing`函数的运行结果(即函数名之后有一对圆括号),这表明参数的默认值不是在定义时执行,而是在运行时执行(即如果参数已经赋值,默认值中的函数就不会运行),这与python语言不一样。 +从上面代码还可以看到,参数`mustBeProvided`的默认值等于`throwIfMissing`函数的运行结果(即函数名之后有一对圆括号),这表明参数的默认值不是在定义时执行,而是在运行时执行(即如果参数已经赋值,默认值中的函数就不会运行),这与 Python 语言不一样。 另外,可以将参数默认值设为`undefined`,表明这个参数是可以省略的。 @@ -354,7 +381,7 @@ function foo(optional = undefined) { ··· } ## rest参数 -ES6引入rest参数(形式为“...变量名”),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 +ES6 引入 rest 参数(形式为“...变量名”),用于获取函数的多余参数,这样就不需要使用`arguments`对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 ```javascript function add(...values) { @@ -370,9 +397,9 @@ function add(...values) { add(2, 5, 3) // 10 ``` -上面代码的add函数是一个求和函数,利用rest参数,可以向该函数传入任意数目的参数。 +上面代码的`add`函数是一个求和函数,利用 rest 参数,可以向该函数传入任意数目的参数。 -下面是一个rest参数代替arguments变量的例子。 +下面是一个 rest 参数代替`arguments`变量的例子。 ```javascript // arguments变量的写法 @@ -384,9 +411,9 @@ function sortNumbers() { const sortNumbers = (...numbers) => numbers.sort(); ``` -上面代码的两种写法,比较后可以发现,rest参数的写法更自然也更简洁。 +上面代码的两种写法,比较后可以发现,rest 参数的写法更自然也更简洁。 -rest参数中的变量代表一个数组,所以数组特有的方法都可以用于这个变量。下面是一个利用rest参数改写数组push方法的例子。 +rest 参数中的变量代表一个数组,所以数组特有的方法都可以用于这个变量。下面是一个利用 rest 参数改写数组`push`方法的例子。 ```javascript function push(array, ...items) { @@ -400,7 +427,7 @@ var a = []; push(a, 1, 2, 3) ``` -注意,rest参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。 +注意,rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。 ```javascript // 报错 @@ -409,7 +436,7 @@ function f(a, ...b, c) { } ``` -函数的length属性,不包括rest参数。 +函数的`length`属性,不包括 rest 参数。 ```javascript (function(a) {}).length // 1 @@ -421,7 +448,7 @@ function f(a, ...b, c) { ### 含义 -扩展运算符(spread)是三个点(`...`)。它好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列。 +扩展运算符(spread)是三个点(`...`)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。 ```javascript console.log(...[1, 2, 3]) diff --git a/docs/let.md b/docs/let.md index bce62d81f..3a58bf222 100644 --- a/docs/let.md +++ b/docs/let.md @@ -57,6 +57,20 @@ a[6](); // 6 上面代码中,变量`i`是`let`声明的,当前的`i`只在本轮循环有效,所以每一次循环的`i`其实都是一个新的变量,所以最后输出的是`6`。你可能会问,如果每一轮循环的变量`i`都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量`i`时,就在上一轮循环的基础上进行计算。 +另外,`for`循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。 + +```javascript +for (let i = 0; i < 3; i++) { + let i = 'abc'; + console.log(i); +} +// abc +// abc +// abc +``` + +上面代码输出了3次`abc`,这表明函数内部的变量`i`和外部的变量`i`是分离的。 + ### 不存在变量提升 `let`不像`var`那样会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错。 @@ -144,7 +158,20 @@ function bar(x = 2, y = x) { bar(); // [2, 2] ``` -ES6规定暂时性死区和`let`、`const`语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在ES5是很常见的,现在有了这种规定,避免此类错误就很容易了。 +另外,下面的代码也会报错,与`var`的行为不同。 + +```javascript +// 不报错 +var x = x; + +// 报错 +let x = x; +// ReferenceError: x is not defined +``` + +上面代码报错,也是因为暂时性死区。使用`let`声明变量时,只要变量在还没有声明完成前使用,就会报错。上面这行就属于这个情况,在变量`x`的声明语句还没有执行完成前,就去取`x`的值,导致报错”x 未定义“。 + +ES6规定暂时性死区和`let`、`const`语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在 ES5 是很常见的,现在有了这种规定,避免此类错误就很容易了。 总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。 From 876a7b4bb17344bfdccf971d36ec37be39a6ef63 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 20 Jan 2017 20:43:27 +0800 Subject: [PATCH 186/994] =?UTF-8?q?docs:=20fix=20function/=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/function.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/function.md b/docs/function.md index f0bb8e90e..49651db59 100644 --- a/docs/function.md +++ b/docs/function.md @@ -73,7 +73,7 @@ function foo(x, x, y = 1) { // SyntaxError: Duplicate parameter name not allowed in this context ``` -另外,一个容易忽略的地方是,如果参数默认值是变量,那么参数就不是传值的,而是每次都重新计算默认值表达式的值。 +另外,一个容易忽略的地方是,如果参数默认值是变量,那么参数就不是传值的,而是每次都重新计算默认值表达式的值。也就是说,参数默认值是惰性求值的。 ```javascript let x = 99; From 1c6add3cb96c62d2826cf5dda33c0523de5e82d5 Mon Sep 17 00:00:00 2001 From: sunyuhui Date: Sat, 21 Jan 2017 15:20:48 +0800 Subject: [PATCH 187/994] =?UTF-8?q?=E6=8B=BC=E5=86=99=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/promise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/promise.md b/docs/promise.md index a9a6c141d..07488e646 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -489,7 +489,7 @@ Promise.all(promises).then(function (posts) { ```javascript const databasePromise = connectDatabase(); -const booksPromise = databaseProimse +const booksPromise = databasePromise .then(findAllBooks); const userPromise = databasePromise From 08f1ed744e3863811b918407fef361009005e074 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 22 Jan 2017 11:10:42 +0800 Subject: [PATCH 188/994] docs: edit destructuring --- docs/destructuring.md | 99 ++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 52 deletions(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index 0648f5dee..bf35f9ed2 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -4,20 +4,20 @@ ### 基本用法 -ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 +ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前,为变量赋值,只能直接指定值。 ```javascript -var a = 1; -var b = 2; -var c = 3; +let a = 1; +let b = 2; +let c = 3; ``` ES6允许写成下面这样。 ```javascript -var [a, b, c] = [1, 2, 3]; +let [a, b, c] = [1, 2, 3]; ``` 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。 @@ -50,8 +50,8 @@ z // [] 如果解构不成功,变量的值就等于`undefined`。 ```javascript -var [foo] = []; -var [bar, foo] = [1]; +let [foo] = []; +let [bar, foo] = [1]; ``` 以上两种情况都属于解构不成功,`foo`的值都会等于`undefined`。 @@ -83,60 +83,52 @@ let [foo] = null; let [foo] = {}; ``` -上面的表达式都会报错,因为等号右边的值,要么转为对象以后不具备Iterator接口(前五个表达式),要么本身就不具备Iterator接口(最后一个表达式)。 +上面的语句都会报错,因为等号右边的值,要么转为对象以后不具备 Iterator 接口(前五个表达式),要么本身就不具备 Iterator 接口(最后一个表达式)。 -解构赋值不仅适用于var命令,也适用于let和const命令。 +对于 Set 结构,也可以使用数组的解构赋值。 ```javascript -var [v1, v2, ..., vN ] = array; -let [v1, v2, ..., vN ] = array; -const [v1, v2, ..., vN ] = array; -``` - -对于Set结构,也可以使用数组的解构赋值。 - -```javascript -let [x, y, z] = new Set(["a", "b", "c"]); +let [x, y, z] = new Set(['a', 'b', 'c']); x // "a" ``` -事实上,只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值。 +事实上,只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值。 ```javascript function* fibs() { - var a = 0; - var b = 1; + let a = 0; + let b = 1; while (true) { yield a; [a, b] = [b, a + b]; } } -var [first, second, third, fourth, fifth, sixth] = fibs(); +let [first, second, third, fourth, fifth, sixth] = fibs(); sixth // 5 ``` -上面代码中,`fibs`是一个Generator函数,原生具有Iterator接口。解构赋值会依次从这个接口获取值。 +上面代码中,`fibs`是一个 Generator 函数(参见《Generator 函数》一章),原生具有 Iterator 接口。解构赋值会依次从这个接口获取值。 ### 默认值 解构赋值允许指定默认值。 ```javascript -var [foo = true] = []; +let [foo = true] = []; foo // true -[x, y = 'b'] = ['a']; // x='a', y='b' -[x, y = 'b'] = ['a', undefined]; // x='a', y='b' +let [x, y = 'b'] = ['a']; // x='a', y='b' +let [x, y = 'b'] = ['a', undefined]; // x='a', y='b' ``` -注意,ES6内部使用严格相等运算符(`===`),判断一个位置是否有值。所以,如果一个数组成员不严格等于`undefined`,默认值是不会生效的。 +注意,ES6 内部使用严格相等运算符(`===`),判断一个位置是否有值。所以,如果一个数组成员不严格等于`undefined`,默认值是不会生效的。 ```javascript -var [x = 1] = [undefined]; +let [x = 1] = [undefined]; x // 1 -var [x = 1] = [null]; +let [x = 1] = [null]; x // null ``` @@ -179,7 +171,7 @@ let [x = y, y = 1] = []; // ReferenceError 解构不仅可以用于数组,还可以用于对象。 ```javascript -var { foo, bar } = { foo: "aaa", bar: "bbb" }; +let { foo, bar } = { foo: "aaa", bar: "bbb" }; foo // "aaa" bar // "bbb" ``` @@ -187,11 +179,11 @@ bar // "bbb" 对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。 ```javascript -var { bar, foo } = { foo: "aaa", bar: "bbb" }; +let { bar, foo } = { foo: "aaa", bar: "bbb" }; foo // "aaa" bar // "bbb" -var { baz } = { foo: "aaa", bar: "bbb" }; +let { baz } = { foo: "aaa", bar: "bbb" }; baz // undefined ``` @@ -212,13 +204,13 @@ l // 'world' 这实际上说明,对象的解构赋值是下面形式的简写(参见《对象的扩展》一章)。 ```javascript -var { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" }; +let { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" }; ``` 也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。 ```javascript -var { foo: baz } = { foo: "aaa", bar: "bbb" }; +let { foo: baz } = { foo: "aaa", bar: "bbb" }; baz // "aaa" foo // error: foo is not defined ``` @@ -250,14 +242,14 @@ let baz; 和数组一样,解构也可以用于嵌套结构的对象。 ```javascript -var obj = { +let obj = { p: [ 'Hello', { y: 'World' } ] }; -var { p: [x, { y }] } = obj; +let { p: [x, { y }] } = obj; x // "Hello" y // "World" ``` @@ -329,7 +321,7 @@ x // null 如果解构失败,变量的值等于`undefined`。 ```javascript -var {foo} = {bar: 'baz'}; +let {foo} = {bar: 'baz'}; foo // undefined ``` @@ -337,13 +329,13 @@ foo // undefined ```javascript // 报错 -var {foo: {bar}} = {baz: 'baz'}; +let {foo: {bar}} = {baz: 'baz'}; ``` 上面代码中,等号左边对象的`foo`属性,对应一个子对象。该子对象的`bar`属性,解构时会报错。原因很简单,因为`foo`这时等于`undefined`,再取子属性就会报错,请看下面的代码。 ```javascript -var _tmp = {baz: 'baz'}; +let _tmp = {baz: 'baz'}; _tmp.foo.bar // 报错 ``` @@ -351,7 +343,7 @@ _tmp.foo.bar // 报错 ```javascript // 错误的写法 -var x; +let x; {x} = {x: 1}; // SyntaxError: syntax error ``` @@ -386,8 +378,8 @@ let { log, sin, cos } = Math; 由于数组本质是特殊的对象,因此可以对数组进行对象属性的解构。 ```javascript -var arr = [1, 2, 3]; -var {0 : first, [arr.length - 1] : last} = arr; +let arr = [1, 2, 3]; +let {0 : first, [arr.length - 1] : last} = arr; first // 1 last // 3 ``` @@ -509,14 +501,14 @@ move(); // [0, 0] ```javascript // 全部报错 -var [(a)] = [1]; +let [(a)] = [1]; -var {x: (c)} = {}; -var ({x: c}) = {}; -var {(x: c)} = {}; -var {(x): c} = {}; +let {x: (c)} = {}; +let ({x: c}) = {}; +let {(x: c)} = {}; +let {(x): c} = {}; -var { o: ({ p: p }) } = { o: { p: 2 } }; +let { o: ({ p: p }) } = { o: { p: 2 } }; ``` 上面三个语句都会报错,因为它们都是变量声明语句,模式不能使用圆括号。 @@ -566,6 +558,9 @@ function f([(z)]) { return z; } **(1)交换变量的值** ```javascript +let x = 1; +let y = 2; + [x, y] = [y, x]; ``` @@ -581,7 +576,7 @@ function f([(z)]) { return z; } function example() { return [1, 2, 3]; } -var [a, b, c] = example(); +let [a, b, c] = example(); // 返回一个对象 @@ -591,7 +586,7 @@ function example() { bar: 2 }; } -var { foo, bar } = example(); +let { foo, bar } = example(); ``` **(3)函数参数的定义** @@ -613,7 +608,7 @@ f({z: 3, y: 2, x: 1}); 解构赋值对提取JSON对象中的数据,尤其有用。 ```javascript -var jsonData = { +let jsonData = { id: 42, status: "OK", data: [867, 5309] @@ -625,7 +620,7 @@ console.log(id, status, number); // 42, "OK", [867, 5309] ``` -上面代码可以快速提取JSON数据的值。 +上面代码可以快速提取 JSON 数据的值。 **(5)函数参数的默认值** From c7f64377f85897a25af8c25b7ce0c2e3e79bde88 Mon Sep 17 00:00:00 2001 From: Zhao Date: Mon, 23 Jan 2017 17:47:55 +0800 Subject: [PATCH 189/994] rename function name to `readFileThunk` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这里使用 `readFileThunk` 更容易理解 --- docs/async.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/async.md b/docs/async.md index b6f7e5602..633e151a4 100644 --- a/docs/async.md +++ b/docs/async.md @@ -439,12 +439,12 @@ while(!res.done){ ```javascript var fs = require('fs'); var thunkify = require('thunkify'); -var readFile = thunkify(fs.readFile); +var readFileThunk = thunkify(fs.readFile); var gen = function* (){ - var r1 = yield readFile('/etc/fstab'); + var r1 = yield readFileThunk('/etc/fstab'); console.log(r1.toString()); - var r2 = yield readFile('/etc/shells'); + var r2 = yield readFileThunk('/etc/shells'); console.log(r2.toString()); }; ``` From b2c2f8fd0c8b1a07c8902e4e34e414aade28ae27 Mon Sep 17 00:00:00 2001 From: Dandan Jiang <609262982@qq.com> Date: Tue, 24 Jan 2017 11:16:09 +0800 Subject: [PATCH 190/994] =?UTF-8?q?=E8=AF=AD=E6=B3=95=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/proxy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/proxy.md b/docs/proxy.md index 089cc378e..a15f41ade 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -935,7 +935,7 @@ var handler = { var proto = {}; var target = function () {}; var proxy = new Proxy(target, handler); -proxy.setPrototypeOf(proxy, proto); +Object.setPrototypeOf(proxy, proto); // Error: Changing the prototype is forbidden ``` From dcb12a1be99a189fe3f7cc2a5bd0ebc06bad3da9 Mon Sep 17 00:00:00 2001 From: Ruan YiFeng Date: Wed, 25 Jan 2017 09:24:20 +0800 Subject: [PATCH 191/994] docs(Symbol): edit Symbol.unscopables --- docs/symbol.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/symbol.md b/docs/symbol.md index 6ac2cbff8..8681b4f5b 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -807,18 +807,19 @@ Array.prototype[Symbol.unscopables] // entries: true, // fill: true, // find: true, -// findIndex: true, +//   findIndex: true, +// includes: true, // keys: true // } Object.keys(Array.prototype[Symbol.unscopables]) -// ['copyWithin', 'entries', 'fill', 'find', 'findIndex', 'keys'] +// ['copyWithin', 'entries', 'fill', 'find', 'findIndex', 'includes', 'keys'] ``` -上面代码说明,数组有6个属性,会被with命令排除。 +上面代码说明,数组有7个属性,会被`with`命令排除。 ```javascript -// 没有unscopables时 +// 没有 unscopables 时 class MyClass { foo() { return 1; } } @@ -829,7 +830,7 @@ with (MyClass.prototype) { foo(); // 1 } -// 有unscopables时 +// 有 unscopables 时 class MyClass { foo() { return 1; } get [Symbol.unscopables]() { @@ -844,3 +845,4 @@ with (MyClass.prototype) { } ``` +上面代码通过指定`Symbol.unscopables`属性,使得`with`语法块不会在当前作用域寻找`foo`属性,即`foo`将指向外层作用域的变量。 From 186a84dce767cd0f8da77623d0ab4181b760f864 Mon Sep 17 00:00:00 2001 From: Ruan YiFeng Date: Thu, 26 Jan 2017 07:57:35 +0800 Subject: [PATCH 192/994] =?UTF-8?q?docs(number):=20edit=20=E6=8C=87?= =?UTF-8?q?=E6=95=B0=E8=BF=90=E7=AE=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/number.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/number.md b/docs/number.md index 1721cfda8..32ee4641a 100644 --- a/docs/number.md +++ b/docs/number.md @@ -615,7 +615,7 @@ ES6新增了6个三角函数方法。 ## 指数运算符 -ES7新增了一个指数运算符(`**`),目前Babel转码器已经支持。 +ES2016 新增了一个指数运算符(`**`)。 ```javascript 2 ** 2 // 4 @@ -633,3 +633,15 @@ let b = 3; b **= 3; // 等同于 b = b * b * b; ``` + +注意,在 V8 引擎中,指数运算符与`Math.pow`的实现不相同,对于特别大的运算结果,两者会有细微的差异。 + +```javascript +Math.pow(99, 99) +// 3.697296376497263e+197 + +99 ** 99 +// 3.697296376497268e+197 +``` + +上面代码中,两个运算结果的最后一位有效数字是有差异的。 From 4d599e8785e2cd67c43bfdfe83e9ecff0a75d6af Mon Sep 17 00:00:00 2001 From: Ruan YiFeng Date: Fri, 27 Jan 2017 09:51:02 +0800 Subject: [PATCH 193/994] docs(Object): edit Object.values() --- docs/object.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/object.md b/docs/object.md index 10c4d93a6..ad2fdab04 100644 --- a/docs/object.md +++ b/docs/object.md @@ -653,7 +653,7 @@ Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 }) **(1)`__proto__`属性** -`__proto__`属性(前后各两个下划线),用来读取或设置当前对象的`prototype`对象。目前,所有浏览器(包括IE11)都部署了这个属性。 +`__proto__`属性(前后各两个下划线),用来读取或设置当前对象的`prototype`对象。目前,所有浏览器(包括 IE11)都部署了这个属性。 ```javascript // es6的写法 @@ -667,7 +667,7 @@ var obj = Object.create(someOtherObj); obj.method = function() { ... }; ``` -该属性没有写入ES6的正文,而是写入了附录,原因是`__proto__`前后的双下划线,说明它本质上是一个内部属性,而不是一个正式的对外的API,只是由于浏览器广泛支持,才被加入了ES6。标准明确规定,只有浏览器必须部署这个属性,其他运行环境不一定需要部署,而且新的代码最好认为这个属性是不存在的。因此,无论从语义的角度,还是从兼容性的角度,都不要使用这个属性,而是使用下面的`Object.setPrototypeOf()`(写操作)、`Object.getPrototypeOf()`(读操作)、`Object.create()`(生成操作)代替。 +该属性没有写入 ES6 的正文,而是写入了附录,原因是`__proto__`前后的双下划线,说明它本质上是一个内部属性,而不是一个正式的对外的 API,只是由于浏览器广泛支持,才被加入了 ES6。标准明确规定,只有浏览器必须部署这个属性,其他运行环境不一定需要部署,而且新的代码最好认为这个属性是不存在的。因此,无论从语义的角度,还是从兼容性的角度,都不要使用这个属性,而是使用下面的`Object.setPrototypeOf()`(写操作)、`Object.getPrototypeOf()`(读操作)、`Object.create()`(生成操作)代替。 在实现上,`__proto__`调用的是`Object.prototype.__proto__`,具体实现如下。 @@ -825,7 +825,17 @@ var obj = Object.create({}, {p: {value: 42}}); Object.values(obj) // [] ``` -上面代码中,`Object.create`方法的第二个参数添加的对象属性(属性`p`),如果不显式声明,默认是不可遍历的,因为`p`是继承的属性,而不是对象自身的属性。`Object.values`不会返回这个属性。 +上面代码中,`Object.create`方法的第二个参数添加的对象属性(属性`p`),如果不显式声明,默认是不可遍历的,因为`p`的属性描述对象的`enumerable`默认是`false`,`Object.values`不会返回这个属性。只要把`enumerable`改成`true`,`Object.values`就会返回属性`p`的值。 + +```javascript +var obj = Object.create({}, {p: + { +    value: 42, +    enumerable: true +  } +}); +Object.values(obj) // [42] +``` `Object.values`会过滤属性名为 Symbol 值的属性。 From 4bf719ef8f444a3b79f91c70769370b09cc6623b Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 2 Feb 2017 08:54:35 +0800 Subject: [PATCH 194/994] =?UTF-8?q?docs(module):=20add=20Node=20=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=20ES6=20=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/module.md | 240 +++++++++++++++++++++++++++++++++++++++++----- docs/object.md | 10 +- docs/reference.md | 1 + docs/simd.md | 20 ++-- sidebar.md | 12 +-- 5 files changed, 241 insertions(+), 42 deletions(-) diff --git a/docs/module.md b/docs/module.md index 431e3ef7b..8ec97ef64 100644 --- a/docs/module.md +++ b/docs/module.md @@ -12,7 +12,9 @@ let { stat, exists, readFile } = require('fs'); // 等同于 let _fs = require('fs'); -let stat = _fs.stat, exists = _fs.exists, readfile = _fs.readfile; +let stat = _fs.stat; +let exists = _fs.exists; +let readfile = _fs.readfile; ``` 上面代码的实质是整体加载`fs`模块(即加载`fs`的所有方法),生成一个对象(`_fs`),然后再从这个对象上面读取3个方法。这种加载称为“运行时加载”,因为只有运行时才能得到这个对象,导致完全没办法在编译时做“静态优化”。 @@ -58,6 +60,8 @@ ES6 的模块自动采用严格模式,不管你有没有在模块头部加上` 上面这些限制,模块都必须遵守。由于严格模式是 ES5 引入的,不属于 ES6,所以请参阅相关 ES5 书籍,本书不再详细介绍了。 +其中,尤其需要注意`this`的限制。ES6 模块之中,顶层的`this`指向`undefined`,即不应该在顶层代码使用`this`。 + ## export 命令 模块功能主要由两个命令构成:`export`和`import`。`export`命令用于规定模块的对外接口,`import`命令用于输入其他模块提供的功能。 @@ -71,7 +75,7 @@ export var lastName = 'Jackson'; export var year = 1958; ``` -上面代码是`profile.js`文件,保存了用户信息。ES6将其视为一个模块,里面用`export`命令对外部输出了三个变量。 +上面代码是`profile.js`文件,保存了用户信息。ES6 将其视为一个模块,里面用`export`命令对外部输出了三个变量。 `export`的写法,除了像上面这样,还有另外一种。 @@ -86,7 +90,7 @@ export {firstName, lastName, year}; 上面代码在`export`命令后面,使用大括号指定所要输出的一组变量。它与前一种写法(直接放置在`var`语句前)是等价的,但是应该优先考虑使用这种写法。因为这样就可以在脚本尾部,一眼看清楚输出了哪些变量。 -export命令除了输出变量,还可以输出函数或类(class)。 +`export`命令除了输出变量,还可以输出函数或类(class)。 ```javascript export function multiply(x, y) { @@ -163,7 +167,7 @@ setTimeout(() => foo = 'baz', 500); 上面代码输出变量`foo`,值为`bar`,500毫秒之后变成`baz`。 -这一点与CommonJS规范完全不同。CommonJS模块输出的是值的缓存,不存在动态更新,详见下文《ES6模块加载的实质》一节。 +这一点与 CommonJS 规范完全不同。CommonJS 模块输出的是值的缓存,不存在动态更新,详见下文《ES6模块加载的实质》一节。 最后,`export`命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内,就会报错,下一节的`import`命令也是如此。这是因为处于条件代码块之中,就没法做静态优化了,违背了ES6模块的设计初衷。 @@ -399,6 +403,18 @@ export default var a = 1; 上面代码中,`export default a`的含义是将变量`a`的值赋给变量`default`。所以,最后一种写法会报错。 +同样地,因为`export default`本质是将该命令后面的值,赋给`default`变量以后再默认,所以直接将一个值写在`export default`之后。 + +```javascript +// 正确 +export default 42; + +// 报错 +export 42; +``` + +上面代码中,后一句报错是因为没有指定对外的接口,而前一句指定外对接口为`default`。 + 有了`export default`命令,输入模块时就非常直观了,以输入 lodash 模块为例。 ```javascript @@ -417,20 +433,16 @@ import _, { each } from 'lodash'; export default function (obj) { // ··· } + export function each(obj, iterator, context) { // ··· } + export { each as forEach }; ``` 上面代码的最后一行的意思是,暴露出`forEach`接口,默认指向`each`接口,即`forEach`和`each`指向同一个方法。 -如果要输出默认的值,只需将值跟在`export default`之后即可。 - -```javascript -export default 42; -``` - `export default`也可以用来输出类。 ```javascript @@ -488,14 +500,20 @@ export default es6; export { default as es6 } from './someModule'; ``` -另外,ES7有一个[提案](https://github.com/leebyron/ecmascript-more-export-from),简化先输入后输出的写法,拿掉输出时的大括号。 +下面三种`import`语句,没有对应的复合写法。 ```javascript -// 现行的写法 -export {v} from 'mod'; +import * as someIdentifier from "someModule"; +import someIdentifier from "someModule"; +import someIdentifier, { namedIdentifier } from "someModule"; +``` + +为了做到形式的对称,现在有[提案](https://github.com/leebyron/ecmascript-export-default-from),提出补上这三种复合写法。 -// 提案的写法 -export v from 'mod'; +```javascript +export * as someIdentifier from "someModule"; +export someIdentifier from "someModule"; +export someIdentifier, { namedIdentifier } from "someModule"; ``` ## 模块的继承 @@ -540,9 +558,9 @@ console.log(exp(math.e)); ## ES6模块加载的实质 -ES6模块加载的机制,与CommonJS模块完全不同。CommonJS模块输出的是一个值的拷贝,而ES6模块输出的是值的引用。 +ES6 模块加载的机制,与 CommonJS 模块完全不同。CommonJS模块输出的是一个值的拷贝,而 ES6 模块输出的是值的引用。 -CommonJS模块输出的是被输出值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。请看下面这个模块文件`lib.js`的例子。 +CommonJS 模块输出的是被输出值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。请看下面这个模块文件`lib.js`的例子。 ```javascript // lib.js @@ -591,7 +609,7 @@ $ node main.js 4 ``` -ES6 模块的运行机制与 CommonJS 不一样。JS引擎对脚本静态分析的时候,遇到模块加载命令`import`,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。换句话说,ES6 的`import`有点像 Unix 系统的“符号连接”,原始值变了,`import`加载的值也会跟着变。因此,ES6 模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 +ES6 模块的运行机制与 CommonJS 不一样。JS 引擎对脚本静态分析的时候,遇到模块加载命令`import`,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。换句话说,ES6 的`import`有点像 Unix 系统的“符号连接”,原始值变了,`import`加载的值也会跟着变。因此,ES6 模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 还是举上面的例子。 @@ -635,9 +653,9 @@ bar baz ``` -上面代码表明,ES6模块不会缓存运行结果,而是动态地去被加载的模块取值,并且变量总是绑定其所在的模块。 +上面代码表明,ES6 模块不会缓存运行结果,而是动态地去被加载的模块取值,并且变量总是绑定其所在的模块。 -由于ES6输入的模块变量,只是一个“符号连接”,所以这个变量是只读的,对它进行重新赋值会报错。 +由于 ES6 输入的模块变量,只是一个“符号连接”,所以这个变量是只读的,对它进行重新赋值会报错。 ```javascript // lib.js @@ -650,7 +668,7 @@ obj.prop = 123; // OK obj = {}; // TypeError ``` -上面代码中,`main.js`从`lib.js`输入变量`obj`,可以对`obj`添加属性,但是重新赋值就会报错。因为变量`obj`指向的地址是只读的,不能重新赋值,这就好比`main.js`创造了一个名为`obj`的const变量。 +上面代码中,`main.js`从`lib.js`输入变量`obj`,可以对`obj`添加属性,但是重新赋值就会报错。因为变量`obj`指向的地址是只读的,不能重新赋值,这就好比`main.js`创造了一个名为`obj`的`const`变量。 最后,`export`通过接口,输出的是同一个值。不同的脚本加载这个接口,得到的都是同样的实例。 @@ -685,7 +703,7 @@ import './x'; import './y'; ``` -现在执行`main.js`,输出的是1。 +现在执行`main.js`,输出的是`1`。 ```bash $ babel-node main.js @@ -712,6 +730,184 @@ $ babel-node main.js - 该脚本内部的顶层变量,都只在该脚本内部有效,外部不可见。 - 该脚本内部的顶层的`this`关键字,返回`undefined`,而不是指向`window`。 +## Node 的加载处理 + +### 概述 + +Node 对 ES6 模块的处理比较麻烦,因为它有自己的 CommonJS 模块格式,与 ES6 模块格式是不兼容的。目前的解决方案是,将两者分开,ES6 模块和 CommonJS 采用各自的加载方案。 + +在静态分析阶段,一个模块脚本只要有一行`import`或`export`语句,Node 就会认为该脚本为 ES6 模块,否则就为 CommonJS 模块。如果不输出任何接口,但是希望被 Node 认为是 ES6 模块,可以在脚本中加一行语句。 + +```javascript +export {}; +``` + +上面的命令并不是输出一个空对象,而是不输出任何接口的 ES6 标准写法。 + +如何不指定绝对路径,Node 加载 ES6 模块会依次寻找以下脚本,与`require()`的规则一致。 + +```javascript +import './foo'; +// 依次寻找 +// ./foo.js +// ./foo/package.json +// ./foo/index.js + +import 'baz'; +// 依次寻找 +// ./node_modules/baz.js +// ./node_modules/baz/package.json +// ./node_modules/baz/index.js +// 寻找上一级目录 +// ../node_modules/baz.js +// ../node_modules/baz/package.json +// ../node_modules/baz/index.js +// 再上一级目录 +``` + +ES6 模块之中,顶层的`this`指向`undefined`;CommonJS 模块的顶层`this`指向当前模块,这是两者的一个重大差异。 + +### import 命令加载 CommonJS 模块 + +Node 采用 CommonJS 模块格式,模块的输出都定义在`module.exports`这个属性上面。在 Node 环境中,使用`import`命令加载 CommonJS 模块,Node 会自动将`module.exports`属性,当作模块的默认输出,即等同于`export default`。 + +下面是一个 CommonJS 模块。 + +```javascript +// a.js +module.exports = { + foo: 'hello', + bar: 'world' +}; + +// 等同于 +export default { + foo: 'hello', + bar: 'world' +}; +``` + +`import`命令加载上面的模块,`module.exports`会被视为默认输出。 + +```javascript +// 写法一 +import baz from './a'; +// baz = {foo: 'hello', bar: 'world'}; + +// 写法二 +import {default as baz} from './a'; +// baz = {foo: 'hello', bar: 'world'}; +``` + +如果采用整体输入的写法(`import * as xxx from someModule`),`default`会取代`module.exports`,作为输入的接口。 + +```javascript +import * as baz from './a'; +// baz = { +// get default() {return module.exports;}, +// get foo() {return this.default.foo}.bind(baz), +// get bar() {return this.default.bar}.bind(baz) +// } +``` + +上面代码中,`this.default`取代了`module.exports`。需要注意的是,Node 会自动为`baz`添加`default`属性,通过`baz.default`拿到`module.exports`。 + +```javascript +// b.js +module.exports = null; + +// es.js +import foo from './b'; +// foo = null; + +import * as bar from './b'; +// bar = {default:null}; +``` + +上面代码中,`es.js`采用第二种写法时,要通过`bar.default`这样的写法,才能拿到`module.exports`。 + +下面是另一个例子。 + +```javascript +// c.js +module.exports = function two() { + return 2; +}; + +// es.js +import foo from './c'; +foo(); // 2 + +import * as bar from './c'; +bar.default(); // 2 +bar(); // throws, bar is not a function +``` + +上面代码中,`bar`本身是一个对象,不能当作函数调用,只能通过`bar.default`调用。 + +CommonJS 模块的输出缓存机制,在 ES6 加载方式下依然有效。 + +```javascript +// foo.js +module.exports = 123; +setTimeout(_ => module.exports = null); +``` + +上面代码中,对于加载`foo.js`的脚本,`module.exports`将一直是`123`,而不会变成`null`。 + +由于 ES6 模块是编译时确定输出接口,CommonJS 模块是运行时确定输出接口,所以采用`import`命令加载 CommonJS 模块时,不允许采用下面的写法。 + +```javascript +import {readfile} from 'fs'; +``` + +上面的写法不正确,因为`fs`是 CommonJS 格式,只有在运行时才能确定`readfile`接口,而`import`命令要求编译时就确定这个接口。解决方法就是改为整体输入。 + +```javascript +import * as express from 'express'; +const app = express.default(); + +import express from 'express'; +const app = express(); +``` + +### require 命令加载 ES6 模块 + +采用`require`命令加载 ES6 模块时,ES6 模块的所有输出接口,会成为输入对象的属性。 + +```javascript +// es.js +let foo = {bar:'my-default'}; +export default foo; +foo = null; + +// cjs.js +const es_namespace = require('./es'); +console.log(es_namespace.default); +// {bar:'my-default'} +``` + +上面代码中,`default`接口变成了`es_namespace.default`属性。另外,由于存在缓存机制,`es.js`对`foo`的重新赋值没有在模块外部反映出来。 + +下面是另一个例子。 + +```javascript +// es.js +export let foo = {bar:'my-default'}; +export {foo as bar}; +export function f() {}; +export class c {}; + +// cjs.js +const es_namespace = require('./es'); +// es_namespace = { +// get foo() {return foo;} +// get bar() {return foo;} +// get f() {return f;} +// get c() {return c;} +// } +``` + ## 循环加载 “循环加载”(circular dependency)指的是,`a`脚本的执行依赖`b`脚本,而`b`脚本的执行又依赖`a`脚本。 diff --git a/docs/object.md b/docs/object.md index ad2fdab04..23dcd8b24 100644 --- a/docs/object.md +++ b/docs/object.md @@ -872,27 +872,29 @@ Object.entries(obj) 除了返回值不一样,该方法的行为与`Object.values`基本一致。 -如果原对象的属性名是一个Symbol值,该属性会被省略。 +如果原对象的属性名是一个 Symbol 值,该属性会被忽略。 ```javascript Object.entries({ [Symbol()]: 123, foo: 'abc' }); // [ [ 'foo', 'abc' ] ] ``` -上面代码中,原对象有两个属性,`Object.entries`只输出属性名非Symbol值的属性。将来可能会有`Reflect.ownEntries()`方法,返回对象自身的所有属性。 +上面代码中,原对象有两个属性,`Object.entries`只输出属性名非 Symbol 值的属性。将来可能会有`Reflect.ownEntries()`方法,返回对象自身的所有属性。 `Object.entries`的基本用途是遍历对象的属性。 ```javascript let obj = { one: 1, two: 2 }; for (let [k, v] of Object.entries(obj)) { - console.log(`${JSON.stringify(k)}: ${JSON.stringify(v)}`); + console.log( + `${JSON.stringify(k)}: ${JSON.stringify(v)}` + ); } // "one": 1 // "two": 2 ``` -`Object.entries`方法的一个用处是,将对象转为真正的`Map`结构。 +`Object.entries`方法的另一个用处是,将对象转为真正的`Map`结构。 ```javascript var obj = { foo: 'bar', baz: 42 }; diff --git a/docs/reference.md b/docs/reference.md index 23d086c48..20d64ae0e 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -209,6 +209,7 @@ - Jason Orendorff, [ES6 In Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/): ES6模块设计思想的介绍 - Ben Newman, [The Importance of import and export](http://benjamn.github.io/empirenode-2015/#/): ES6模块的设计思想 - ESDiscuss, [Why is "export default var a = 1;" invalid syntax?](https://esdiscuss.org/topic/why-is-export-default-var-a-1-invalid-syntax) +- Bradley Meck, [ES6 Module Interoperability](https://github.com/nodejs/node-eps/blob/master/002-es6-modules.md): 介绍 Node 如何处理 ES6 语法加载 CommonJS 模块 ## 二进制数组 diff --git a/docs/simd.md b/docs/simd.md index a151fff45..65e0f64c3 100644 --- a/docs/simd.md +++ b/docs/simd.md @@ -2,9 +2,9 @@ ## 概述 -SIMD(发音`/sim-dee/`)是“Single Instruction/Multiple Data”的缩写,意为“单指令,多数据”。它是JavaScript操作CPU对应指令的接口,你可以看做这是一种不同的运算执行模式。与它相对的是SISD(“Single Instruction/Single Data”),即“单指令,单数据”。 +SIMD(发音`/sim-dee/`)是“Single Instruction/Multiple Data”的缩写,意为“单指令,多数据”。它是 JavaScript 操作 CPU 对应指令的接口,你可以看做这是一种不同的运算执行模式。与它相对的是 SISD(“Single Instruction/Single Data”),即“单指令,单数据”。 -SIMD的含义是使用一个指令,完成多个数据的运算;SISD的含义是使用一个指令,完成单个数据的运算,这是JavaScript的默认运算模式。显而易见,SIMD的执行效率要高于SISD,所以被广泛用于3D图形运算、物理模拟等运算量超大的项目之中。 +SIMD 的含义是使用一个指令,完成多个数据的运算;SISD 的含义是使用一个指令,完成单个数据的运算,这是 JavaScript 的默认运算模式。显而易见,SIMD 的执行效率要高于 SISD,所以被广泛用于3D图形运算、物理模拟等运算量超大的项目之中。 为了理解SIMD,请看下面的例子。 @@ -22,7 +22,7 @@ c // Array[6, 8, 10, 12] 上面代码中,数组`a`和`b`的对应成员相加,结果放入数组`c`。它的运算模式是依次处理每个数组成员,一共有四个数组成员,所以需要运算4次。 -如果采用SIMD模式,只要运算一次就够了。 +如果采用 SIMD 模式,只要运算一次就够了。 ```javascript var a = SIMD.Float32x4(1, 2, 3, 4); @@ -32,22 +32,22 @@ var c = SIMD.Float32x4.add(a, b); // Float32x4[6, 8, 10, 12] 上面代码之中,数组`a`和`b`的四个成员的各自相加,只用一条指令就完成了。因此,速度比上一种写法提高了4倍。 -一次SIMD运算,可以处理多个数据,这些数据被称为“通道”(lane)。上面代码中,一次运算了四个数据,因此就是四个通道。 +一次 SIMD 运算,可以处理多个数据,这些数据被称为“通道”(lane)。上面代码中,一次运算了四个数据,因此就是四个通道。 -SIMD通常用于矢量运算。 +SIMD 通常用于矢量运算。 ```javascript v + w = 〈v1, …, vn〉+ 〈w1, …, wn〉 = 〈v1+w1, …, vn+wn〉 ``` -上面代码中,`v`和`w`是两个多元矢量。它们的加运算,在SIMD下是一个指令、而不是n个指令完成的,这就大大提高了效率。这对于3D动画、图像处理、信号处理、数值处理、加密等运算是非常重要的。比如,Canvas的`getImageData()`会将图像文件读成一个二进制数组,SIMD就很适合对于这种数组的处理。 +上面代码中,`v`和`w`是两个多元矢量。它们的加运算,在 SIMD 下是一个指令、而不是 n 个指令完成的,这就大大提高了效率。这对于3D动画、图像处理、信号处理、数值处理、加密等运算是非常重要的。比如,Canvas的`getImageData()`会将图像文件读成一个二进制数组,SIMD 就很适合对于这种数组的处理。 -总得来说,SIMD是数据并行处理(parallelism)的一种手段,可以加速一些运算密集型操作的速度。 +总的来说,SIMD 是数据并行处理(parallelism)的一种手段,可以加速一些运算密集型操作的速度。将来与 WebAssembly 结合以后,可以让 JavaScript 达到二进制代码的运行速度。 ## 数据类型 -SIMD提供12种数据类型,总长度都是128个二进制位。 +SIMD 提供12种数据类型,总长度都是128个二进制位。 - Float32x4:四个32位浮点数 - Float64x2:两个64位浮点数 @@ -71,7 +71,7 @@ SIMD提供12种数据类型,总长度都是128个二进制位。 - 无符号的整数(Uint,比如1) - 布尔值(Bool,包含`true`和`false`两种值) -每种SIMD的数据类型都是一个函数方法,可以传入参数,生成对应的值。 +每种 SIMD 的数据类型都是一个函数方法,可以传入参数,生成对应的值。 ```javascript var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); @@ -712,5 +712,5 @@ function average(list) { } ``` -上面代码先是每隔四位,将所有的值读入一个SIMD,然后立刻累加。然后,得到累加值四个通道的总和,再除以`n`就可以了。 +上面代码先是每隔四位,将所有的值读入一个 SIMD,然后立刻累加。然后,得到累加值四个通道的总和,再除以`n`就可以了。 diff --git a/sidebar.md b/sidebar.md index 48d5dfae3..42bf83eea 100644 --- a/sidebar.md +++ b/sidebar.md @@ -7,7 +7,7 @@ ## 目录 1. [前言](#README) 1. [ECMAScript 6简介](#docs/intro) -1. [let和const命令](#docs/let) +1. [let 和 const 命令](#docs/let) 1. [变量的解构赋值](#docs/destructuring) 1. [字符串的扩展](#docs/string) 1. [正则的扩展](#docs/regex) @@ -16,13 +16,13 @@ 1. [函数的扩展](#docs/function) 1. [对象的扩展](#docs/object) 1. [Symbol](#docs/symbol) -1. [Set和Map数据结构](#docs/set-map) +1. [Set 和 Map 数据结构](#docs/set-map) 1. [Proxy](#docs/proxy) 1. [Reflect](#docs/reflect) -1. [Iterator和for...of循环](#docs/iterator) -1. [Generator函数](#docs/generator) -1. [Promise对象](#docs/promise) -1. [异步操作和Async函数](#docs/async) +1. [Promise 对象](#docs/promise) +1. [Iterator 和 for...of 循环](#docs/iterator) +1. [Generator 函数](#docs/generator) +1. [异步操作和 Async 函数](#docs/async) 1. [Class](#docs/class) 1. [Decorator](#docs/decorator) 1. [Module](#docs/module) From 6e944000df14fed0731ccd094a2226bbe861cff5 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 3 Feb 2017 01:44:26 +0800 Subject: [PATCH 195/994] =?UTF-8?q?docs(async):=20=E6=8B=86=E5=88=86=20gen?= =?UTF-8?q?erator=20=E5=87=BD=E6=95=B0=E7=9A=84=E5=BC=82=E6=AD=A5=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E4=B8=8E=20async=20=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/async.md | 1080 ++++++--------------------------------- docs/function.md | 5 +- docs/generator-async.md | 754 +++++++++++++++++++++++++++ docs/generator.md | 10 +- docs/object.md | 15 +- docs/promise.md | 12 +- docs/string.md | 4 +- sidebar.md | 5 +- 8 files changed, 951 insertions(+), 934 deletions(-) create mode 100644 docs/generator-async.md diff --git a/docs/async.md b/docs/async.md index 633e151a4..2a088e398 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1,758 +1,12 @@ -# 异步操作和Async函数 +# async 函数 -异步编程对 JavaScript 语言太重要。Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。本章主要介绍如何 Generator 函数完成异步操作。 +## 含义 -ES6诞生以前,异步编程的方法,大概有下面四种。 +ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 -- 回调函数 -- 事件监听 -- 发布/订阅 -- Promise 对象 +async 函数是什么?一句话,它就是 Generator 函数的语法糖。 -Generator 函数将 JavaScript 异步编程带入了一个全新的阶段。 - -## 基本概念 - -### 异步 - -所谓"异步",简单说就是一个任务不是连续完成的,可以理解成该任务被人为分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段。 - -比如,有一个任务是读取文件进行处理,任务的第一段是向操作系统发出请求,要求读取文件。然后,程序执行其他任务,等到操作系统返回文件,再接着执行任务的第二段(处理文件)。这种不连续的执行,就叫做异步。 - -相应地,连续的执行就叫做同步。由于是连续执行,不能插入其他任务,所以操作系统从硬盘读取文件的这段时间,程序只能干等着。 - -### 回调函数 - -JavaScript 语言对异步编程的实现,就是回调函数。所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,就直接调用这个函数。回调函数的英语名字`callback`,直译过来就是"重新调用"。 - -读取文件进行处理,是这样写的。 - -```javascript -fs.readFile('/etc/passwd', 'utf-8', function (err, data) { - if (err) throw err; - console.log(data); -}); -``` - -上面代码中,`readFile`函数的第三个参数,就是回调函数,也就是任务的第二段。等到操作系统返回了`/etc/passwd`这个文件以后,回调函数才会执行。 - -一个有趣的问题是,为什么 Node 约定,回调函数的第一个参数,必须是错误对象`err`(如果没有错误,该参数就是`null`)? - -原因是执行分成两段,第一段执行完以后,任务所在的上下文环境就已经结束了。在这以后抛出的错误,原来的上下文环境已经无法捕捉,只能当作参数,传入第二段。 - -### Promise - -回调函数本身并没有问题,它的问题出现在多个回调函数嵌套。假定读取`A`文件之后,再读取`B`文件,代码如下。 - -```javascript -fs.readFile(fileA, 'utf-8', function (err, data) { - fs.readFile(fileB, 'utf-8', function (err, data) { - // ... - }); -}); -``` - -不难想象,如果依次读取两个以上的文件,就会出现多重嵌套。代码不是纵向发展,而是横向发展,很快就会乱成一团,无法管理。因为多个异步操作形成了强耦合,只要有一个操作需要修改,它的上层回调函数和下层回调函数,可能都要跟着修改。这种情况就称为"回调函数地狱"(callback hell)。 - -Promise 对象就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的嵌套,改成链式调用。采用 Promise,连续读取多个文件,写法如下。 - -```javascript -var readFile = require('fs-readfile-promise'); - -readFile(fileA) -.then(function (data) { - console.log(data.toString()); -}) -.then(function () { - return readFile(fileB); -}) -.then(function (data) { - console.log(data.toString()); -}) -.catch(function (err) { - console.log(err); -}); -``` - -上面代码中,我使用了`fs-readfile-promise`模块,它的作用就是返回一个 Promise 版本的`readFile`函数。Promise 提供`then`方法加载回调函数,`catch`方法捕捉执行过程中抛出的错误。 - -可以看到,Promise 的写法只是回调函数的改进,使用`then`方法以后,异步任务的两段执行看得更清楚了,除此以外,并无新意。 - -Promise 的最大问题是代码冗余,原来的任务被 Promise 包装了一下,不管什么操作,一眼看去都是一堆`then`,原来的语义变得很不清楚。 - -那么,有没有更好的写法呢? - -## Generator函数 - -### 协程 - -传统的编程语言,早有异步编程的解决方案(其实是多任务的解决方案)。其中有一种叫做"协程"(coroutine),意思是多个线程互相协作,完成异步任务。 - -协程有点像函数,又有点像线程。它的运行流程大致如下。 - -- 第一步,协程`A`开始执行。 -- 第二步,协程`A`执行到一半,进入暂停,执行权转移到协程`B`。 -- 第三步,(一段时间后)协程`B`交还执行权。 -- 第四步,协程`A`恢复执行。 - -上面流程的协程`A`,就是异步任务,因为它分成两段(或多段)执行。 - -举例来说,读取文件的协程写法如下。 - -```javascript -function *asyncJob() { - // ...其他代码 - var f = yield readFile(fileA); - // ...其他代码 -} -``` - -上面代码的函数`asyncJob`是一个协程,它的奥妙就在其中的`yield`命令。它表示执行到此处,执行权将交给其他协程。也就是说,`yield`命令是异步两个阶段的分界线。 - -协程遇到`yield`命令就暂停,等到执行权返回,再从暂停的地方继续往后执行。它的最大优点,就是代码的写法非常像同步操作,如果去除`yield`命令,简直一模一样。 - -### Generator 函数的概念 - -Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行)。 - -整个 Generator 函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用`yield`语句注明。Generator 函数的执行方法如下。 - -```javascript -function* gen(x) { - var y = yield x + 2; - return y; -} - -var g = gen(1); -g.next() // { value: 3, done: false } -g.next() // { value: undefined, done: true } -``` - -上面代码中,调用 Generator 函数,会返回一个内部指针(即遍历器)`g`。这是 Generator 函数不同于普通函数的另一个地方,即执行它不会返回结果,返回的是指针对象。调用指针`g`的`next`方法,会移动内部指针(即执行异步任务的第一段),指向第一个遇到的`yield`语句,上例是执行到`x + 2`为止。 - -换言之,`next`方法的作用是分阶段执行`Generator`函数。每次调用`next`方法,会返回一个对象,表示当前阶段的信息(`value`属性和`done`属性)。`value`属性是`yield`语句后面表达式的值,表示当前阶段的值;`done`属性是一个布尔值,表示 Generator 函数是否执行完毕,即是否还有下一个阶段。 - -### Generator 函数的数据交换和错误处理 - -Generator函数可以暂停执行和恢复执行,这是它能封装异步任务的根本原因。除此之外,它还有两个特性,使它可以作为异步编程的完整解决方案:函数体内外的数据交换和错误处理机制。 - -next方法返回值的value属性,是Generator函数向外输出数据;next方法还可以接受参数,这是向Generator函数体内输入数据。 - -```javascript -function* gen(x){ - var y = yield x + 2; - return y; -} - -var g = gen(1); -g.next() // { value: 3, done: false } -g.next(2) // { value: 2, done: true } -``` - -上面代码中,第一个next方法的value属性,返回表达式`x + 2`的值(3)。第二个next方法带有参数2,这个参数可以传入 Generator 函数,作为上个阶段异步任务的返回结果,被函数体内的变量y接收。因此,这一步的 value 属性,返回的就是2(变量y的值)。 - -Generator 函数内部还可以部署错误处理代码,捕获函数体外抛出的错误。 - -```javascript -function* gen(x){ - try { - var y = yield x + 2; - } catch (e){ - console.log(e); - } - return y; -} - -var g = gen(1); -g.next(); -g.throw('出错了'); -// 出错了 -``` - -上面代码的最后一行,Generator函数体外,使用指针对象的throw方法抛出的错误,可以被函数体内的try ...catch代码块捕获。这意味着,出错的代码与处理错误的代码,实现了时间和空间上的分离,这对于异步编程无疑是很重要的。 - -### 异步任务的封装 - -下面看看如何使用 Generator 函数,执行一个真实的异步任务。 - -```javascript -var fetch = require('node-fetch'); - -function* gen(){ - var url = 'https://api.github.com/users/github'; - var result = yield fetch(url); - console.log(result.bio); -} -``` - -上面代码中,Generator函数封装了一个异步操作,该操作先读取一个远程接口,然后从JSON格式的数据解析信息。就像前面说过的,这段代码非常像同步操作,除了加上了yield命令。 - -执行这段代码的方法如下。 - -```javascript -var g = gen(); -var result = g.next(); - -result.value.then(function(data){ - return data.json(); -}).then(function(data){ - g.next(data); -}); -``` - -上面代码中,首先执行Generator函数,获取遍历器对象,然后使用next 方法(第二行),执行异步任务的第一阶段。由于Fetch模块返回的是一个Promise对象,因此要用then方法调用下一个next 方法。 - -可以看到,虽然 Generator 函数将异步操作表示得很简洁,但是流程管理却不方便(即何时执行第一阶段、何时执行第二阶段)。 - -## Thunk函数 - -### 参数的求值策略 - -Thunk函数早在上个世纪60年代就诞生了。 - -那时,编程语言刚刚起步,计算机学家还在研究,编译器怎么写比较好。一个争论的焦点是"求值策略",即函数的参数到底应该何时求值。 - -```javascript -var x = 1; - -function f(m){ - return m * 2; -} - -f(x + 5) -``` - -上面代码先定义函数f,然后向它传入表达式`x + 5`。请问,这个表达式应该何时求值? - -一种意见是"传值调用"(call by value),即在进入函数体之前,就计算`x + 5`的值(等于6),再将这个值传入函数f 。C语言就采用这种策略。 - -```javascript -f(x + 5) -// 传值调用时,等同于 -f(6) -``` - -另一种意见是"传名调用"(call by name),即直接将表达式`x + 5`传入函数体,只在用到它的时候求值。Haskell语言采用这种策略。 - -```javascript -f(x + 5) -// 传名调用时,等同于 -(x + 5) * 2 -``` - -传值调用和传名调用,哪一种比较好?回答是各有利弊。传值调用比较简单,但是对参数求值的时候,实际上还没用到这个参数,有可能造成性能损失。 - -```javascript -function f(a, b){ - return b; -} - -f(3 * x * x - 2 * x - 1, x); -``` - -上面代码中,函数f的第一个参数是一个复杂的表达式,但是函数体内根本没用到。对这个参数求值,实际上是不必要的。因此,有一些计算机学家倾向于"传名调用",即只在执行时求值。 - -### Thunk函数的含义 - -编译器的"传名调用"实现,往往是将参数放到一个临时函数之中,再将这个临时函数传入函数体。这个临时函数就叫做Thunk函数。 - -```javascript -function f(m){ - return m * 2; -} - -f(x + 5); - -// 等同于 - -var thunk = function () { - return x + 5; -}; - -function f(thunk){ - return thunk() * 2; -} -``` - -上面代码中,函数f的参数`x + 5`被一个函数替换了。凡是用到原参数的地方,对`Thunk`函数求值即可。 - -这就是Thunk函数的定义,它是"传名调用"的一种实现策略,用来替换某个表达式。 - -### JavaScript语言的Thunk函数 - -JavaScript语言是传值调用,它的Thunk函数含义有所不同。在JavaScript语言中,Thunk函数替换的不是表达式,而是多参数函数,将其替换成单参数的版本,且只接受回调函数作为参数。 - -```javascript -// 正常版本的readFile(多参数版本) -fs.readFile(fileName, callback); - -// Thunk版本的readFile(单参数版本) -var Thunk = function (fileName){ - return function (callback){ - return fs.readFile(fileName, callback); - }; -}; - -var readFileThunk = Thunk(fileName); -readFileThunk(callback); -``` - -上面代码中,fs模块的readFile方法是一个多参数函数,两个参数分别为文件名和回调函数。经过转换器处理,它变成了一个单参数函数,只接受回调函数作为参数。这个单参数版本,就叫做Thunk函数。 - -任何函数,只要参数有回调函数,就能写成Thunk函数的形式。下面是一个简单的Thunk函数转换器。 - -```javascript -// ES5版本 -var Thunk = function(fn){ - return function (){ - var args = Array.prototype.slice.call(arguments); - return function (callback){ - args.push(callback); - return fn.apply(this, args); - } - }; -}; - -// ES6版本 -var Thunk = function(fn) { - return function (...args) { - return function (callback) { - return fn.call(this, ...args, callback); - } - }; -}; -``` - -使用上面的转换器,生成`fs.readFile`的Thunk函数。 - -```javascript -var readFileThunk = Thunk(fs.readFile); -readFileThunk(fileA)(callback); -``` - -下面是另一个完整的例子。 - -```javascript -function f(a, cb) { - cb(a); -} -let ft = Thunk(f); - -let log = console.log.bind(console); -ft(1)(log) // 1 -``` - -### Thunkify模块 - -生产环境的转换器,建议使用Thunkify模块。 - -首先是安装。 - -```bash -$ npm install thunkify -``` - -使用方式如下。 - -```javascript -var thunkify = require('thunkify'); -var fs = require('fs'); - -var read = thunkify(fs.readFile); -read('package.json')(function(err, str){ - // ... -}); -``` - -Thunkify的源码与上一节那个简单的转换器非常像。 - -```javascript -function thunkify(fn){ - return function(){ - var args = new Array(arguments.length); - var ctx = this; - - for(var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - return function(done){ - var called; - - args.push(function(){ - if (called) return; - called = true; - done.apply(null, arguments); - }); - - try { - fn.apply(ctx, args); - } catch (err) { - done(err); - } - } - } -}; -``` - -它的源码主要多了一个检查机制,变量`called`确保回调函数只运行一次。这样的设计与下文的Generator函数相关。请看下面的例子。 - -```javascript -function f(a, b, callback){ - var sum = a + b; - callback(sum); - callback(sum); -} - -var ft = thunkify(f); -var print = console.log.bind(console); -ft(1, 2)(print); -// 3 -``` - -上面代码中,由于`thunkify`只允许回调函数执行一次,所以只输出一行结果。 - -### Generator 函数的流程管理 - -你可能会问, Thunk函数有什么用?回答是以前确实没什么用,但是ES6有了Generator函数,Thunk函数现在可以用于Generator函数的自动流程管理。 - -Generator函数可以自动执行。 - -```javascript -function* gen() { - // ... -} - -var g = gen(); -var res = g.next(); - -while(!res.done){ - console.log(res.value); - res = g.next(); -} -``` - -上面代码中,Generator函数`gen`会自动执行完所有步骤。 - -但是,这不适合异步操作。如果必须保证前一步执行完,才能执行后一步,上面的自动执行就不可行。这时,Thunk函数就能派上用处。以读取文件为例。下面的Generator函数封装了两个异步操作。 - -```javascript -var fs = require('fs'); -var thunkify = require('thunkify'); -var readFileThunk = thunkify(fs.readFile); - -var gen = function* (){ - var r1 = yield readFileThunk('/etc/fstab'); - console.log(r1.toString()); - var r2 = yield readFileThunk('/etc/shells'); - console.log(r2.toString()); -}; -``` - -上面代码中,yield命令用于将程序的执行权移出Generator函数,那么就需要一种方法,将执行权再交还给Generator函数。 - -这种方法就是Thunk函数,因为它可以在回调函数里,将执行权交还给Generator函数。为了便于理解,我们先看如何手动执行上面这个Generator函数。 - -```javascript -var g = gen(); - -var r1 = g.next(); -r1.value(function(err, data){ - if (err) throw err; - var r2 = g.next(data); - r2.value(function(err, data){ - if (err) throw err; - g.next(data); - }); -}); -``` - -上面代码中,变量g是Generator函数的内部指针,表示目前执行到哪一步。next方法负责将指针移动到下一步,并返回该步的信息(value属性和done属性)。 - -仔细查看上面的代码,可以发现Generator函数的执行过程,其实是将同一个回调函数,反复传入next方法的value属性。这使得我们可以用递归来自动完成这个过程。 - -### Thunk函数的自动流程管理 - -Thunk函数真正的威力,在于可以自动执行Generator函数。下面就是一个基于Thunk函数的Generator执行器。 - -```javascript -function run(fn) { - var gen = fn(); - - function next(err, data) { - var result = gen.next(data); - if (result.done) return; - result.value(next); - } - - next(); -} - -function* g() { - // ... -} - -run(g); -``` - -上面代码的`run`函数,就是一个Generator函数的自动执行器。内部的`next`函数就是Thunk的回调函数。`next`函数先将指针移到Generator函数的下一步(`gen.next`方法),然后判断Generator函数是否结束(`result.done`属性),如果没结束,就将`next`函数再传入Thunk函数(`result.value`属性),否则就直接退出。 - -有了这个执行器,执行Generator函数方便多了。不管内部有多少个异步操作,直接把Generator函数传入`run`函数即可。当然,前提是每一个异步操作,都要是Thunk函数,也就是说,跟在`yield`命令后面的必须是Thunk函数。 - -```javascript -var g = function* (){ - var f1 = yield readFile('fileA'); - var f2 = yield readFile('fileB'); - // ... - var fn = yield readFile('fileN'); -}; - -run(g); -``` - -上面代码中,函数`g`封装了`n`个异步的读取文件操作,只要执行`run`函数,这些操作就会自动完成。这样一来,异步操作不仅可以写得像同步操作,而且一行代码就可以执行。 - -Thunk函数并不是Generator函数自动执行的唯一方案。因为自动执行的关键是,必须有一种机制,自动控制Generator函数的流程,接收和交还程序的执行权。回调函数可以做到这一点,Promise 对象也可以做到这一点。 - -## co模块 - -### 基本用法 - -[co模块](https://github.com/tj/co)是著名程序员TJ Holowaychuk于2013年6月发布的一个小工具,用于Generator函数的自动执行。 - -比如,有一个Generator函数,用于依次读取两个文件。 - -```javascript -var gen = function* (){ - var f1 = yield readFile('/etc/fstab'); - var f2 = yield readFile('/etc/shells'); - console.log(f1.toString()); - console.log(f2.toString()); -}; -``` - -co模块可以让你不用编写Generator函数的执行器。 - -```javascript -var co = require('co'); -co(gen); -``` - -上面代码中,Generator函数只要传入co函数,就会自动执行。 - -co函数返回一个Promise对象,因此可以用then方法添加回调函数。 - -```javascript -co(gen).then(function (){ - console.log('Generator 函数执行完成'); -}); -``` - -上面代码中,等到Generator函数执行结束,就会输出一行提示。 - -### co模块的原理 - -为什么 co 可以自动执行 Generator 函数? - -前面说过,Generator 就是一个异步操作的容器。它的自动执行需要一种机制,当异步操作有了结果,能够自动交回执行权。 - -两种方法可以做到这一点。 - -(1)回调函数。将异步操作包装成 Thunk 函数,在回调函数里面交回执行权。 - -(2)Promise 对象。将异步操作包装成 Promise 对象,用`then`方法交回执行权。 - -co 模块其实就是将两种自动执行器(Thunk 函数和 Promise 对象),包装成一个模块。使用 co 的前提条件是,Generator 函数的`yield`命令后面,只能是 Thunk 函数或 Promise 对象。 - -上一节已经介绍了基于 Thunk 函数的自动执行器。下面来看,基于 Promise 对象的自动执行器。这是理解 co 模块必须的。 - -### 基于 Promise 对象的自动执行 - -还是沿用上面的例子。首先,把`fs`模块的`readFile`方法包装成一个 Promise 对象。 - -```javascript -var fs = require('fs'); - -var readFile = function (fileName){ - return new Promise(function (resolve, reject){ - fs.readFile(fileName, function(error, data){ - if (error) return reject(error); - resolve(data); - }); - }); -}; - -var gen = function* (){ - var f1 = yield readFile('/etc/fstab'); - var f2 = yield readFile('/etc/shells'); - console.log(f1.toString()); - console.log(f2.toString()); -}; -``` - -然后,手动执行上面的 Generator 函数。 - -```javascript -var g = gen(); - -g.next().value.then(function(data){ - g.next(data).value.then(function(data){ - g.next(data); - }); -}); -``` - -手动执行其实就是用`then`方法,层层添加回调函数。理解了这一点,就可以写出一个自动执行器。 - -```javascript -function run(gen){ - var g = gen(); - - function next(data){ - var result = g.next(data); - if (result.done) return result.value; - result.value.then(function(data){ - next(data); - }); - } - - next(); -} - -run(gen); -``` - -上面代码中,只要 Generator 函数还没执行到最后一步,`next`函数就调用自身,以此实现自动执行。 - -### co 模块的源码 - -co 就是上面那个自动执行器的扩展,它的源码只有几十行,非常简单。 - -首先,co 函数接受 Generator 函数作为参数,返回一个 Promise 对象。 - -```javascript -function co(gen) { - var ctx = this; - - return new Promise(function(resolve, reject) { - }); -} -``` - -在返回的 Promise 对象里面,co 先检查参数`gen`是否为 Generator 函数。如果是,就执行该函数,得到一个内部指针对象;如果不是就返回,并将 Promise 对象的状态改为`resolved`。 - -```javascript -function co(gen) { - var ctx = this; - - return new Promise(function(resolve, reject) { - if (typeof gen === 'function') gen = gen.call(ctx); - if (!gen || typeof gen.next !== 'function') return resolve(gen); - }); -} -``` - -接着,co 将 Generator 函数的内部指针对象的`next`方法,包装成`onFulfilled`函数。这主要是为了能够捕捉抛出的错误。 - -```javascript -function co(gen) { - var ctx = this; - - return new Promise(function(resolve, reject) { - if (typeof gen === 'function') gen = gen.call(ctx); - if (!gen || typeof gen.next !== 'function') return resolve(gen); - - onFulfilled(); - function onFulfilled(res) { - var ret; - try { - ret = gen.next(res); - } catch (e) { - return reject(e); - } - next(ret); - } - }); -} -``` - -最后,就是关键的`next`函数,它会反复调用自身。 - -```javascript -function next(ret) { - if (ret.done) return resolve(ret.value); - var value = toPromise.call(ctx, ret.value); - if (value && isPromise(value)) return value.then(onFulfilled, onRejected); - return onRejected( - new TypeError( - 'You may only yield a function, promise, generator, array, or object, ' - + 'but the following object was passed: "' - + String(ret.value) - + '"' - ) - ); -} -``` - -上面代码中,`next`函数的内部代码,一共只有四行命令。 - -第一行,检查当前是否为 Generator 函数的最后一步,如果是就返回。 - -第二行,确保每一步的返回值,是 Promise 对象。 - -第三行,使用`then`方法,为返回值加上回调函数,然后通过`onFulfilled`函数再次调用`next`函数。 - -第四行,在参数不符合要求的情况下(参数非 Thunk 函数和 Promise 对象),将 Promise 对象的状态改为`rejected`,从而终止执行。 - -### 处理并发的异步操作 - -co 支持并发的异步操作,即允许某些操作同时进行,等到它们全部完成,才进行下一步。 - -这时,要把并发的操作都放在数组或对象里面,跟在`yield`语句后面。 - -```javascript -// 数组的写法 -co(function* () { - var res = yield [ - Promise.resolve(1), - Promise.resolve(2) - ]; - console.log(res); -}).catch(onerror); - -// 对象的写法 -co(function* () { - var res = yield { - 1: Promise.resolve(1), - 2: Promise.resolve(2), - }; - console.log(res); -}).catch(onerror); -``` - -下面是另一个例子。 - -```javascript -co(function* () { - var values = [n1, n2, n3]; - yield values.map(somethingAsync); -}); - -function* somethingAsync(x) { - // do something async - return y -} -``` - -上面的代码允许并发三个`somethingAsync`异步操作,等到它们全部完成,才会进行下一步。 - -## async函数 - -### 含义 - -ES2017 标准提供了`async`函数,使得异步操作变得更加方便。 - -`async`函数是什么?一句话,`async`函数就是 Generator 函数的语法糖。前文有一个 Generator 函数,依次读取两个文件。 +前文有一个 Generator 函数,依次读取两个文件。 ```javascript var fs = require('fs'); @@ -766,7 +20,7 @@ var readFile = function (fileName) { }); }; -var gen = function* (){ +var gen = function* () { var f1 = yield readFile('/etc/fstab'); var f2 = yield readFile('/etc/shells'); console.log(f1.toString()); @@ -805,11 +59,84 @@ var result = asyncReadFile(); 进一步说,`async`函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而`await`命令就是内部`then`命令的语法糖。 -### 语法 +## 用法 + +`async`函数返回一个 Promise 对象,可以使用`then`方法添加回调函数。当函数执行的时候,一旦遇到`await`就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。 + +下面是一个例子。 + +```javascript +async function getStockPriceByName(name) { + var symbol = await getStockSymbol(name); + var stockPrice = await getStockPrice(symbol); + return stockPrice; +} + +getStockPriceByName('goog').then(function (result) { + console.log(result); +}); +``` + +上面代码是一个获取股票报价的函数,函数前面的`async`关键字,表明该函数内部有异步操作。调用该函数时,会立即返回一个`Promise`对象。 + +下面的例子,指定多少毫秒后输出一个值。 + +```javascript +function timeout(ms) { + return new Promise((resolve) => { + setTimeout(resolve, ms); + }); +} + +async function asyncPrint(value, ms) { + await timeout(ms); + console.log(value) +} + +asyncPrint('hello world', 50); +``` + +上面代码指定50毫秒以后,输出`hello world`。 + +Async 函数有多种使用形式。 + +```javascript +// 函数声明 +async function foo() {} + +// 函数表达式 +const foo = async function () {}; + +// 对象的方法 +let obj = { async foo() {} }; +obj.foo().then(...) + +// Class 的方法 +class Storage { + constructor() { + this.cachePromise = caches.open('avatars'); + } + + async getAvatar(name) { + const cache = await this.cachePromise; + return cache.match(`/avatars/${name}.jpg`); + } +} + +const storage = new Storage(); +storage.getAvatar('jake').then(…); + +// 箭头函数 +const foo = async () => {}; +``` + +## 语法 `async`函数的语法规则总体上比较简单,难点是错误处理机制。 -(1)`async`函数返回一个Promise对象。 +### 返回 Promise 对象 + +`async`函数返回一个 Promise 对象。 `async`函数内部`return`语句返回的值,会成为`then`方法回调函数的参数。 @@ -838,7 +165,9 @@ f().then( // Error: 出错了 ``` -(2)`async`函数返回的 Promise 对象,必须等到内部所有`await`命令的 Promise 对象执行完,才会发生状态改变,除非遇到`return`语句或者抛出错误。也就是说,只有`async`函数内部的异步操作执行完,才会执行`then`方法指定的回调函数。 +### Promise 对象的状态变化 + +`async`函数返回的 Promise 对象,必须等到内部所有`await`命令后面的 Promise 对象执行完,才会发生状态改变,除非遇到`return`语句或者抛出错误。也就是说,只有`async`函数内部的异步操作执行完,才会执行`then`方法指定的回调函数。 下面是一个例子。 @@ -854,7 +183,9 @@ getTitle('https://tc39.github.io/ecma262/').then(console.log) 上面代码中,函数`getTitle`内部有三个操作:抓取网页、取出文本、匹配页面标题。只有这三个操作全部完成,才会执行`then`方法里面的`console.log`。 -(3)正常情况下,`await`命令后面是一个 Promise 对象。如果不是,会被转成一个立即`resolve`的 Promise 对象。 +### await 命令 + +正常情况下,`await`命令后面是一个 Promise 对象。如果不是,会被转成一个立即`resolve`的 Promise 对象。 ```javascript async function f() { @@ -865,9 +196,9 @@ f().then(v => console.log(v)) // 123 ``` -上面代码中,`await`命令的参数是数值`123`,它被转成Promise对象,并立即`resolve`。 +上面代码中,`await`命令的参数是数值`123`,它被转成 Promise 对象,并立即`resolve`。 -`await`命令后面的Promise对象如果变为`reject`状态,则`reject`的参数会被`catch`方法的回调函数接收到。 +`await`命令后面的 Promise 对象如果变为`reject`状态,则`reject`的参数会被`catch`方法的回调函数接收到。 ```javascript async function f() { @@ -882,7 +213,7 @@ f() 注意,上面代码中,`await`语句前面没有`return`,但是`reject`方法的参数依然传入了`catch`方法的回调函数。这里如果在`await`前面加上`return`,效果是一样的。 -只要一个`await`语句后面的Promise变为`reject`,那么整个`async`函数都会中断执行。 +只要一个`await`语句后面的 Promise 变为`reject`,那么整个`async`函数都会中断执行。 ```javascript async function f() { @@ -893,7 +224,7 @@ async function f() { 上面代码中,第二个`await`语句是不会执行的,因为第一个`await`语句状态变成了`reject`。 -为了避免这个问题,可以将第一个`await`放在`try...catch`结构里面,这样第二个`await`就会执行。 +有时,我们希望即使前一个异步操作失败,也不要中断后面的异步操作。这时可以将第一个`await`放在`try...catch`结构里面,这样不管这个异步操作是否成功,第二个`await`都会执行。 ```javascript async function f() { @@ -909,7 +240,7 @@ f() // hello world ``` -另一种方法是`await`后面的Promise对象再跟一个`catch`方法,处理前面可能出现的错误。 +另一种方法是`await`后面的 Promise 对象再跟一个`catch`方法,处理前面可能出现的错误。 ```javascript async function f() { @@ -924,24 +255,9 @@ f() // hello world ``` -如果有多个`await`命令,可以统一放在`try...catch`结构中。 - -```javascript -async function main() { - try { - var val1 = await firstStep(); - var val2 = await secondStep(val1); - var val3 = await thirdStep(val1, val2); - - console.log('Final: ', val3); - } - catch (err) { - console.error(err); - } -} -``` +### 错误处理 -(4)如果`await`后面的异步操作出错,那么等同于`async`函数返回的Promise对象被`reject`。 +如果`await`后面的异步操作出错,那么等同于`async`函数返回的 Promise 对象被`reject`。 ```javascript async function f() { @@ -956,7 +272,7 @@ f() // Error:出错了 ``` -上面代码中,`async`函数`f`执行后,`await`后面的Promise对象会抛出一个错误对象,导致`catch`方法的回调函数被调用,它的参数就是抛出的错误对象。具体的执行机制,可以参考后文的“async函数的实现”。 +上面代码中,`async`函数`f`执行后,`await`后面的 Promise 对象会抛出一个错误对象,导致`catch`方法的回调函数被调用,它的参数就是抛出的错误对象。具体的执行机制,可以参考后文的“async 函数的实现原理”。 防止出错的方法,也是将其放在`try...catch`代码块之中。 @@ -972,126 +288,26 @@ async function f() { } ``` -### async函数的实现 - -async 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里。 - -```javascript -async function fn(args){ - // ... -} - -// 等同于 - -function fn(args){ - return spawn(function*() { - // ... - }); -} -``` - -所有的`async`函数都可以写成上面的第二种形式,其中的 spawn 函数就是自动执行器。 - -下面给出`spawn`函数的实现,基本就是前文自动执行器的翻版。 - -```javascript -function spawn(genF) { - return new Promise(function(resolve, reject) { - var gen = genF(); - function step(nextF) { - try { - var next = nextF(); - } catch(e) { - return reject(e); - } - if(next.done) { - return resolve(next.value); - } - Promise.resolve(next.value).then(function(v) { - step(function() { return gen.next(v); }); - }, function(e) { - step(function() { return gen.throw(e); }); - }); - } - step(function() { return gen.next(undefined); }); - }); -} -``` - -### async 函数的用法 - -`async`函数返回一个Promise对象,可以使用`then`方法添加回调函数。当函数执行的时候,一旦遇到`await`就会先返回,等到触发的异步操作完成,再接着执行函数体内后面的语句。 - -下面是一个例子。 - -```javascript -async function getStockPriceByName(name) { - var symbol = await getStockSymbol(name); - var stockPrice = await getStockPrice(symbol); - return stockPrice; -} - -getStockPriceByName('goog').then(function (result) { - console.log(result); -}); -``` - -上面代码是一个获取股票报价的函数,函数前面的`async`关键字,表明该函数内部有异步操作。调用该函数时,会立即返回一个`Promise`对象。 - -下面的例子,指定多少毫秒后输出一个值。 - -```javascript -function timeout(ms) { - return new Promise((resolve) => { - setTimeout(resolve, ms); - }); -} - -async function asyncPrint(value, ms) { - await timeout(ms); - console.log(value) -} - -asyncPrint('hello world', 50); -``` - -上面代码指定50毫秒以后,输出`hello world`。 - -Async函数有多种使用形式。 +如果有多个`await`命令,可以统一放在`try...catch`结构中。 ```javascript -// 函数声明 -async function foo() {} - -// 函数表达式 -const foo = async function () {}; - -// 对象的方法 -let obj = { async foo() {} }; -obj.foo().then(...) +async function main() { + try { + var val1 = await firstStep(); + var val2 = await secondStep(val1); + var val3 = await thirdStep(val1, val2); -// Class 的方法 -class Storage { - constructor() { - this.cachePromise = caches.open('avatars'); + console.log('Final: ', val3); } - - async getAvatar(name) { - const cache = await this.cachePromise; - return cache.match(`/avatars/${name}.jpg`); + catch (err) { + console.error(err); } } - -const storage = new Storage(); -storage.getAvatar('jake').then(…); - -// 箭头函数 -const foo = async () => {}; ``` -### 注意点 +### 使用注意点 -第一点,`await`命令后面的`Promise`对象,运行结果可能是`rejected`,所以最好把`await`命令放在`try...catch`代码块中。 +第一点,前面已经说过,`await`命令后面的`Promise`对象,运行结果可能是`rejected`,所以最好把`await`命令放在`try...catch`代码块中。 ```javascript async function myFunction() { @@ -1147,7 +363,7 @@ async function dbFuc(db) { } ``` -上面代码会报错,因为await用在普通函数之中了。但是,如果将`forEach`方法的参数改成`async`函数,也有问题。 +上面代码会报错,因为`await`用在普通函数之中了。但是,如果将`forEach`方法的参数改成`async`函数,也有问题。 ```javascript async function dbFuc(db) { @@ -1197,15 +413,59 @@ async function dbFuc(db) { } ``` -ES6将`await`增加为保留字。使用这个词作为标识符,在ES5是合法的,在ES6将抛出SyntaxError。 +## async 函数的实现原理 + +async 函数的实现原理,就是将 Generator 函数和自动执行器,包装在一个函数里。 + +```javascript +async function fn(args) { + // ... +} + +// 等同于 + +function fn(args) { + return spawn(function* () { + // ... + }); +} +``` + +所有的`async`函数都可以写成上面的第二种形式,其中的`spawn`函数就是自动执行器。 + +下面给出`spawn`函数的实现,基本就是前文自动执行器的翻版。 + +```javascript +function spawn(genF) { + return new Promise(function(resolve, reject) { + var gen = genF(); + function step(nextF) { + try { + var next = nextF(); + } catch(e) { + return reject(e); + } + if(next.done) { + return resolve(next.value); + } + Promise.resolve(next.value).then(function(v) { + step(function() { return gen.next(v); }); + }, function(e) { + step(function() { return gen.throw(e); }); + }); + } + step(function() { return gen.next(undefined); }); + }); +} +``` -### 与Promise、Generator的比较 +## 与其他异步处理方法的比较 -我们通过一个例子,来看Async函数与Promise、Generator函数的区别。 +我们通过一个例子,来看 async 函数与 Promise、Generator 函数的比较。 -假定某个DOM元素上面,部署了一系列的动画,前一个动画结束,才能开始后一个。如果当中有一个动画出错,就不再往下执行,返回上一个成功执行的动画的返回值。 +假定某个 DOM 元素上面,部署了一系列的动画,前一个动画结束,才能开始后一个。如果当中有一个动画出错,就不再往下执行,返回上一个成功执行的动画的返回值。 -首先是Promise的写法。 +首先是 Promise 的写法。 ```javascript function chainAnimationsPromise(elem, animations) { @@ -1234,9 +494,9 @@ function chainAnimationsPromise(elem, animations) { } ``` -虽然Promise的写法比回调函数的写法大大改进,但是一眼看上去,代码完全都是Promise的API(then、catch等等),操作本身的语义反而不容易看出来。 +虽然 Promise 的写法比回调函数的写法大大改进,但是一眼看上去,代码完全都是 Promise 的 API(`then`、`catch`等等),操作本身的语义反而不容易看出来。 -接着是Generator函数的写法。 +接着是 Generator 函数的写法。 ```javascript function chainAnimationsGenerator(elem, animations) { @@ -1256,9 +516,9 @@ function chainAnimationsGenerator(elem, animations) { } ``` -上面代码使用Generator函数遍历了每个动画,语义比Promise写法更清晰,用户定义的操作全部都出现在spawn函数的内部。这个写法的问题在于,必须有一个任务运行器,自动执行Generator函数,上面代码的spawn函数就是自动执行器,它返回一个Promise对象,而且必须保证yield语句后面的表达式,必须返回一个Promise。 +上面代码使用 Generator 函数遍历了每个动画,语义比 Promise 写法更清晰,用户定义的操作全部都出现在`spawn`函数的内部。这个写法的问题在于,必须有一个任务运行器,自动执行 Generator 函数,上面代码的`spawn`函数就是自动执行器,它返回一个 Promise 对象,而且必须保证`yield`语句后面的表达式,必须返回一个 Promise。 -最后是Async函数的写法。 +最后是 async 函数的写法。 ```javascript async function chainAnimationsAsync(elem, animations) { @@ -1276,9 +536,9 @@ async function chainAnimationsAsync(elem, animations) { 可以看到Async函数的实现最简洁,最符合语义,几乎没有语义不相关的代码。它将Generator写法中的自动执行器,改在语言层面提供,不暴露给用户,因此代码量最少。如果使用Generator写法,自动执行器需要用户自己提供。 -### 实例:按顺序完成异步操作 +## 实例:按顺序完成异步操作 -实际开发中,经常遇到一组异步操作,需要按照顺序完成。比如,依次远程读取一组URL,然后按照读取的顺序输出结果。 +实际开发中,经常遇到一组异步操作,需要按照顺序完成。比如,依次远程读取一组 URL,然后按照读取的顺序输出结果。 Promise 的写法如下。 @@ -1297,9 +557,9 @@ function logInOrder(urls) { } ``` -上面代码使用`fetch`方法,同时远程读取一组URL。每个`fetch`操作都返回一个`Promise`对象,放入`textPromises`数组。然后,`reduce`方法依次处理每个`Promise`对象,然后使用`then`,将所有`Promise`对象连起来,因此就可以依次输出结果。 +上面代码使用`fetch`方法,同时远程读取一组 URL。每个`fetch`操作都返回一个 Promise 对象,放入`textPromises`数组。然后,`reduce`方法依次处理每个 Promise 对象,然后使用`then`,将所有 Promise 对象连起来,因此就可以依次输出结果。 -这种写法不太直观,可读性比较差。下面是`async`函数实现。 +这种写法不太直观,可读性比较差。下面是 async 函数实现。 ```javascript async function logInOrder(urls) { @@ -1496,7 +756,7 @@ for await (const line of readLines(filePath)) { } ``` -异步Generator函数可以与`for await...of`循环结合起来使用。 +异步 Generator 函数可以与`for await...of`循环结合起来使用。 ```javascript async function* prefixLines(asyncIterable) { @@ -1517,9 +777,9 @@ async function* asyncGenerator() { } ``` -上面代码中,调用`next`方法以后,会在`B`处暂停执行,`yield`命令立刻返回一个Promise对象。这个Promise对象不同于`A`处`await`命令后面的那个Promise对象。主要有两点不同,一是`A`处的Promise对象`resolve`以后产生的值,会放入`result`变量;二是`B`处的Promise对象`resolve`以后产生的值,是表达式`'Result: ' + result`的值;二是`A`处的Promise对象一定先于`B`处的Promise对象`resolve`。 +上面代码中,调用`next`方法以后,会在`B`处暂停执行,`yield`命令立刻返回一个Promise对象。这个Promise对象不同于`A`处`await`命令后面的那个 Promise 对象。主要有两点不同,一是`A`处的Promise对象`resolve`以后产生的值,会放入`result`变量;二是`B`处的Promise对象`resolve`以后产生的值,是表达式`'Result: ' + result`的值;二是`A`处的 Promise 对象一定先于`B`处的 Promise 对象`resolve`。 -如果异步Generator函数抛出错误,会被Promise对象`reject`,然后抛出的错误被`catch`方法捕获。 +如果异步 Generator 函数抛出错误,会被 Promise 对象`reject`,然后抛出的错误被`catch`方法捕获。 ```javascript async function* asyncGenerator() { @@ -1531,7 +791,7 @@ asyncGenerator() .catch(err => console.log(err)); // Error: Problem! ``` -注意,普通的`async`函数返回的是一个Promise对象,而异步Generator函数返回的是一个异步Iterator对象。基本上,可以这样理解,`async`函数和异步Generator函数,是封装异步操作的两种方法,都用来达到同一种目的。区别在于,前者自带执行器,后者通过`for await...of`执行,或者自己编写执行器。下面就是一个异步Generator函数的执行器。 +注意,普通的 async 函数返回的是一个 Promise 对象,而异步 Generator 函数返回的是一个异步Iterator对象。基本上,可以这样理解,`async`函数和异步 Generator 函数,是封装异步操作的两种方法,都用来达到同一种目的。区别在于,前者自带执行器,后者通过`for await...of`执行,或者自己编写执行器。下面就是一个异步 Generator 函数的执行器。 ```javascript async function takeAsync(asyncIterable, count=Infinity) { @@ -1566,9 +826,9 @@ f().then(function (result) { }) ``` -异步Generator函数出现以后,JavaScript就有了四种函数形式:普通函数、`async`函数、Generator函数和异步Generator函数。请注意区分每种函数的不同之处。 +异步 Generator 函数出现以后,JavaScript就有了四种函数形式:普通函数、async 函数、Generator 函数和异步 Generator 函数。请注意区分每种函数的不同之处。 -最后,同步的数据结构,也可以使用异步Generator函数。 +最后,同步的数据结构,也可以使用异步 Generator 函数。 ```javascript async function* createAsyncIterable(syncIterable) { diff --git a/docs/function.md b/docs/function.md index 49651db59..b82ce61a7 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1549,7 +1549,7 @@ sum(1, 100000) ## 函数参数的尾逗号 -ECMAScript 2017将[允许](https://github.com/jeffmo/es-trailing-function-commas)函数的最后一个参数有尾逗号(trailing comma)。 +ES2017 [允许](https://github.com/jeffmo/es-trailing-function-commas)函数的最后一个参数有尾逗号(trailing comma)。 此前,函数定义和调用时,都不允许最后一个参数后面出现逗号。 @@ -1567,7 +1567,7 @@ clownsEverywhere( 上面代码中,如果在`param2`或`bar`后面加一个逗号,就会报错。 -这样的话,如果以后修改代码,想为函数`clownsEverywhere`添加第三个参数,就势必要在第二个参数后面添加一个逗号。这对版本管理系统来说,就会显示,添加逗号的那一行也发生了变动。这看上去有点冗余,因此新的语法允许定义和调用时,尾部直接有一个逗号。 +这样的话,如果以后修改代码,想为函数`clownsEverywhere`添加第三个参数,就势必要在第二个参数后面添加一个逗号。这对版本管理系统来说,就会显示添加逗号的那一行也发生了变动。这看上去有点冗余,因此新的语法允许定义和调用时,尾部直接有一个逗号。这与数组和对象的尾逗号规则,保持一致了。 ```javascript function clownsEverywhere( @@ -1580,3 +1580,4 @@ clownsEverywhere( 'bar', ); ``` + diff --git a/docs/generator-async.md b/docs/generator-async.md new file mode 100644 index 000000000..f605e996c --- /dev/null +++ b/docs/generator-async.md @@ -0,0 +1,754 @@ +# Generator 函数:异步操作 + +异步编程对 JavaScript 语言太重要。Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。本章主要介绍 Generator 函数如何完成异步操作。 + +## 传统方法 + +ES6 诞生以前,异步编程的方法,大概有下面四种。 + +- 回调函数 +- 事件监听 +- 发布/订阅 +- Promise 对象 + +Generator 函数将 JavaScript 异步编程带入了一个全新的阶段。 + +## 基本概念 + +### 异步 + +所谓"异步",简单说就是一个任务不是连续完成的,可以理解成该任务被人为分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段。 + +比如,有一个任务是读取文件进行处理,任务的第一段是向操作系统发出请求,要求读取文件。然后,程序执行其他任务,等到操作系统返回文件,再接着执行任务的第二段(处理文件)。这种不连续的执行,就叫做异步。 + +相应地,连续的执行就叫做同步。由于是连续执行,不能插入其他任务,所以操作系统从硬盘读取文件的这段时间,程序只能干等着。 + +### 回调函数 + +JavaScript 语言对异步编程的实现,就是回调函数。所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,就直接调用这个函数。回调函数的英语名字`callback`,直译过来就是"重新调用"。 + +读取文件进行处理,是这样写的。 + +```javascript +fs.readFile('/etc/passwd', 'utf-8', function (err, data) { + if (err) throw err; + console.log(data); +}); +``` + +上面代码中,`readFile`函数的第三个参数,就是回调函数,也就是任务的第二段。等到操作系统返回了`/etc/passwd`这个文件以后,回调函数才会执行。 + +一个有趣的问题是,为什么 Node 约定,回调函数的第一个参数,必须是错误对象`err`(如果没有错误,该参数就是`null`)? + +原因是执行分成两段,第一段执行完以后,任务所在的上下文环境就已经结束了。在这以后抛出的错误,原来的上下文环境已经无法捕捉,只能当作参数,传入第二段。 + +### Promise + +回调函数本身并没有问题,它的问题出现在多个回调函数嵌套。假定读取`A`文件之后,再读取`B`文件,代码如下。 + +```javascript +fs.readFile(fileA, 'utf-8', function (err, data) { + fs.readFile(fileB, 'utf-8', function (err, data) { + // ... + }); +}); +``` + +不难想象,如果依次读取两个以上的文件,就会出现多重嵌套。代码不是纵向发展,而是横向发展,很快就会乱成一团,无法管理。因为多个异步操作形成了强耦合,只要有一个操作需要修改,它的上层回调函数和下层回调函数,可能都要跟着修改。这种情况就称为"回调函数地狱"(callback hell)。 + +Promise 对象就是为了解决这个问题而提出的。它不是新的语法功能,而是一种新的写法,允许将回调函数的嵌套,改成链式调用。采用 Promise,连续读取多个文件,写法如下。 + +```javascript +var readFile = require('fs-readfile-promise'); + +readFile(fileA) +.then(function (data) { + console.log(data.toString()); +}) +.then(function () { + return readFile(fileB); +}) +.then(function (data) { + console.log(data.toString()); +}) +.catch(function (err) { + console.log(err); +}); +``` + +上面代码中,我使用了`fs-readfile-promise`模块,它的作用就是返回一个 Promise 版本的`readFile`函数。Promise 提供`then`方法加载回调函数,`catch`方法捕捉执行过程中抛出的错误。 + +可以看到,Promise 的写法只是回调函数的改进,使用`then`方法以后,异步任务的两段执行看得更清楚了,除此以外,并无新意。 + +Promise 的最大问题是代码冗余,原来的任务被 Promise 包装了一下,不管什么操作,一眼看去都是一堆`then`,原来的语义变得很不清楚。 + +那么,有没有更好的写法呢? + +## Generator 函数 + +### 协程 + +传统的编程语言,早有异步编程的解决方案(其实是多任务的解决方案)。其中有一种叫做"协程"(coroutine),意思是多个线程互相协作,完成异步任务。 + +协程有点像函数,又有点像线程。它的运行流程大致如下。 + +- 第一步,协程`A`开始执行。 +- 第二步,协程`A`执行到一半,进入暂停,执行权转移到协程`B`。 +- 第三步,(一段时间后)协程`B`交还执行权。 +- 第四步,协程`A`恢复执行。 + +上面流程的协程`A`,就是异步任务,因为它分成两段(或多段)执行。 + +举例来说,读取文件的协程写法如下。 + +```javascript +function *asyncJob() { + // ...其他代码 + var f = yield readFile(fileA); + // ...其他代码 +} +``` + +上面代码的函数`asyncJob`是一个协程,它的奥妙就在其中的`yield`命令。它表示执行到此处,执行权将交给其他协程。也就是说,`yield`命令是异步两个阶段的分界线。 + +协程遇到`yield`命令就暂停,等到执行权返回,再从暂停的地方继续往后执行。它的最大优点,就是代码的写法非常像同步操作,如果去除`yield`命令,简直一模一样。 + +### 协程的 Generator 函数实现 + +Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行)。 + +整个 Generator 函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用`yield`语句注明。Generator 函数的执行方法如下。 + +```javascript +function* gen(x) { + var y = yield x + 2; + return y; +} + +var g = gen(1); +g.next() // { value: 3, done: false } +g.next() // { value: undefined, done: true } +``` + +上面代码中,调用 Generator 函数,会返回一个内部指针(即遍历器)`g`。这是 Generator 函数不同于普通函数的另一个地方,即执行它不会返回结果,返回的是指针对象。调用指针`g`的`next`方法,会移动内部指针(即执行异步任务的第一段),指向第一个遇到的`yield`语句,上例是执行到`x + 2`为止。 + +换言之,`next`方法的作用是分阶段执行`Generator`函数。每次调用`next`方法,会返回一个对象,表示当前阶段的信息(`value`属性和`done`属性)。`value`属性是`yield`语句后面表达式的值,表示当前阶段的值;`done`属性是一个布尔值,表示 Generator 函数是否执行完毕,即是否还有下一个阶段。 + +### Generator 函数的数据交换和错误处理 + +Generator 函数可以暂停执行和恢复执行,这是它能封装异步任务的根本原因。除此之外,它还有两个特性,使它可以作为异步编程的完整解决方案:函数体内外的数据交换和错误处理机制。 + +`next`法返回值的value属性,是 Generator 函数向外输出数据;`next`方法还可以接受参数,向 Generator 函数体内输入数据。 + +```javascript +function* gen(x){ + var y = yield x + 2; + return y; +} + +var g = gen(1); +g.next() // { value: 3, done: false } +g.next(2) // { value: 2, done: true } +``` + +上面代码中,第一`next`方法的`value`属性,返回表达式`x + 2`的值`3`。第二个`next`方法带有参数`2`,这个参数可以传入 Generator 函数,作为上个阶段异步任务的返回结果,被函数体内的变量`y`接收。因此,这一步的`value`属性,返回的就是`2`(变量`y`的值)。 + +Generator 函数内部还可以部署错误处理代码,捕获函数体外抛出的错误。 + +```javascript +function* gen(x){ + try { + var y = yield x + 2; + } catch (e){ + console.log(e); + } + return y; +} + +var g = gen(1); +g.next(); +g.throw('出错了'); +// 出错了 +``` + +上面代码的最后一行,Generator 函数体外,使用指针对象的`throw`方法抛出的错误,可以被函数体内的`try...catch`代码块捕获。这意味着,出错的代码与处理错误的代码,实现了时间和空间上的分离,这对于异步编程无疑是很重要的。 + +### 异步任务的封装 + +下面看看如何使用 Generator 函数,执行一个真实的异步任务。 + +```javascript +var fetch = require('node-fetch'); + +function* gen(){ + var url = 'https://api.github.com/users/github'; + var result = yield fetch(url); + console.log(result.bio); +} +``` + +上面代码中,Generator 函数封装了一个异步操作,该操作先读取一个远程接口,然后从 JSON 格式的数据解析信息。就像前面说过的,这段代码非常像同步操作,除了加上了`yield`命令。 + +执行这段代码的方法如下。 + +```javascript +var g = gen(); +var result = g.next(); + +result.value.then(function(data){ + return data.json(); +}).then(function(data){ + g.next(data); +}); +``` + +上面代码中,首先执行 Generator 函数,获取遍历器对象,然后使用`next`方法(第二行),执行异步任务的第一阶段。由于`Fetch`模块返回的是一个 Promise 对象,因此要用`then`方法调用下一个`next`方法。 + +可以看到,虽然 Generator 函数将异步操作表示得很简洁,但是流程管理却不方便(即何时执行第一阶段、何时执行第二阶段)。 + +## Thunk 函数 + +Thunk 函数是自动执行 Generator 函数的一种方法。 + +### 参数的求值策略 + +Thunk 函数早在上个世纪60年代就诞生了。 + +那时,编程语言刚刚起步,计算机学家还在研究,编译器怎么写比较好。一个争论的焦点是"求值策略",即函数的参数到底应该何时求值。 + +```javascript +var x = 1; + +function f(m){ + return m * 2; +} + +f(x + 5) +``` + +上面代码先定义函数`f`,然后向它传入表达式`x + 5`。请问,这个表达式应该何时求值? + +一种意见是"传值调用"(call by value),即在进入函数体之前,就计算`x + 5`的值(等于6),再将这个值传入函数`f`。C语言就采用这种策略。 + +```javascript +f(x + 5) +// 传值调用时,等同于 +f(6) +``` + +另一种意见是“传名调用”(call by name),即直接将表达式`x + 5`传入函数体,只在用到它的时候求值。Haskell 语言采用这种策略。 + +```javascript +f(x + 5) +// 传名调用时,等同于 +(x + 5) * 2 +``` + +传值调用和传名调用,哪一种比较好? + +回答是各有利弊。传值调用比较简单,但是对参数求值的时候,实际上还没用到这个参数,有可能造成性能损失。 + +```javascript +function f(a, b){ + return b; +} + +f(3 * x * x - 2 * x - 1, x); +``` + +上面代码中,函数`f`的第一个参数是一个复杂的表达式,但是函数体内根本没用到。对这个参数求值,实际上是不必要的。因此,有一些计算机学家倾向于"传名调用",即只在执行时求值。 + +### Thunk 函数的含义 + +编译器的“传名调用”实现,往往是将参数放到一个临时函数之中,再将这个临时函数传入函数体。这个临时函数就叫做 Thunk 函数。 + +```javascript +function f(m) { + return m * 2; +} + +f(x + 5); + +// 等同于 + +var thunk = function () { + return x + 5; +}; + +function f(thunk) { + return thunk() * 2; +} +``` + +上面代码中,函数f的参数`x + 5`被一个函数替换了。凡是用到原参数的地方,对`Thunk`函数求值即可。 + +这就是 Thunk 函数的定义,它是“传名调用”的一种实现策略,用来替换某个表达式。 + +### JavaScript 语言的 Thunk 函数 + +JavaScript 语言是传值调用,它的 Thunk 函数含义有所不同。在 JavaScript 语言中,Thunk 函数替换的不是表达式,而是多参数函数,将其替换成一个只接受回调函数作为参数的单参数函数。 + +```javascript +// 正常版本的readFile(多参数版本) +fs.readFile(fileName, callback); + +// Thunk版本的readFile(单参数版本) +var Thunk = function (fileName) { + return function (callback) { + return fs.readFile(fileName, callback); + }; +}; + +var readFileThunk = Thunk(fileName); +readFileThunk(callback); +``` + +上面代码中,`fs`模块的`readFile`方法是一个多参数函数,两个参数分别为文件名和回调函数。经过转换器处理,它变成了一个单参数函数,只接受回调函数作为参数。这个单参数版本,就叫做 Thunk 函数。 + +任何函数,只要参数有回调函数,就能写成 Thunk 函数的形式。下面是一个简单的 Thunk 函数转换器。 + +```javascript +// ES5版本 +var Thunk = function(fn){ + return function (){ + var args = Array.prototype.slice.call(arguments); + return function (callback){ + args.push(callback); + return fn.apply(this, args); + } + }; +}; + +// ES6版本 +var Thunk = function(fn) { + return function (...args) { + return function (callback) { + return fn.call(this, ...args, callback); + } + }; +}; +``` + +使用上面的转换器,生成`fs.readFile`的 Thunk 函数。 + +```javascript +var readFileThunk = Thunk(fs.readFile); +readFileThunk(fileA)(callback); +``` + +下面是另一个完整的例子。 + +```javascript +function f(a, cb) { + cb(a); +} +let ft = Thunk(f); + +let log = console.log.bind(console); +ft(1)(log) // 1 +``` + +### Thunkify 模块 + +生产环境的转换器,建议使用 Thunkify 模块。 + +首先是安装。 + +```bash +$ npm install thunkify +``` + +使用方式如下。 + +```javascript +var thunkify = require('thunkify'); +var fs = require('fs'); + +var read = thunkify(fs.readFile); +read('package.json')(function(err, str){ + // ... +}); +``` + +Thunkify 的源码与上一节那个简单的转换器非常像。 + +```javascript +function thunkify(fn) { + return function() { + var args = new Array(arguments.length); + var ctx = this; + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + return function (done) { + var called; + + args.push(function () { + if (called) return; + called = true; + done.apply(null, arguments); + }); + + try { + fn.apply(ctx, args); + } catch (err) { + done(err); + } + } + } +}; +``` + +它的源码主要多了一个检查机制,变量`called`确保回调函数只运行一次。这样的设计与下文的 Generator 函数相关。请看下面的例子。 + +```javascript +function f(a, b, callback){ + var sum = a + b; + callback(sum); + callback(sum); +} + +var ft = thunkify(f); +var print = console.log.bind(console); +ft(1, 2)(print); +// 3 +``` + +上面代码中,由于`thunkify`只允许回调函数执行一次,所以只输出一行结果。 + +### Generator 函数的流程管理 + +你可能会问, Thunk函数有什么用?回答是以前确实没什么用,但是 ES6 有了 Generator 函数,Thunk 函数现在可以用于 Generator 函数的自动流程管理。 + +Generator 函数可以自动执行。 + +```javascript +function* gen() { + // ... +} + +var g = gen(); +var res = g.next(); + +while(!res.done){ + console.log(res.value); + res = g.next(); +} +``` + +上面代码中,Generator 函数`gen`会自动执行完所有步骤。 + +但是,这不适合异步操作。如果必须保证前一步执行完,才能执行后一步,上面的自动执行就不可行。这时,Thunk 函数就能派上用处。以读取文件为例。下面的 Generator 函数封装了两个异步操作。 + +```javascript +var fs = require('fs'); +var thunkify = require('thunkify'); +var readFileThunk = thunkify(fs.readFile); + +var gen = function* (){ + var r1 = yield readFileThunk('/etc/fstab'); + console.log(r1.toString()); + var r2 = yield readFileThunk('/etc/shells'); + console.log(r2.toString()); +}; +``` + +上面代码中,`yield`命令用于将程序的执行权移出 Generator 函数,那么就需要一种方法,将执行权再交还给 Generator 函数。 + +这种方法就是 Thunk 函数,因为它可以在回调函数里,将执行权交还给 Generator 函数。为了便于理解,我们先看如何手动执行上面这个 Generator 函数。 + +```javascript +var g = gen(); + +var r1 = g.next(); +r1.value(function (err, data) { + if (err) throw err; + var r2 = g.next(data); + r2.value(function (err, data) { + if (err) throw err; + g.next(data); + }); +}); +``` + +上面代码中,变量`g`是 Generator 函数的内部指针,表示目前执行到哪一步。`next`方法负责将指针移动到下一步,并返回该步的信息(`value`属性和`done`属性)。 + +仔细查看上面的代码,可以发现 Generator 函数的执行过程,其实是将同一个回调函数,反复传入`next`方法的`value`属性。这使得我们可以用递归来自动完成这个过程。 + +### Thunk 函数的自动流程管理 + +Thunk 函数真正的威力,在于可以自动执行 Generator 函数。下面就是一个基于 Thunk 函数的 Generator 执行器。 + +```javascript +function run(fn) { + var gen = fn(); + + function next(err, data) { + var result = gen.next(data); + if (result.done) return; + result.value(next); + } + + next(); +} + +function* g() { + // ... +} + +run(g); +``` + +上面代码的`run`函数,就是一个 Generator 函数的自动执行器。内部的`next`函数就是 Thunk 的回调函数。`next`函数先将指针移到 Generator 函数的下一步(`gen.next`方法),然后判断 Generator 函数是否结束(`result.done`属性),如果没结束,就将`next`函数再传入 Thunk 函数(`result.value`属性),否则就直接退出。 + +有了这个执行器,执行 Generator 函数方便多了。不管内部有多少个异步操作,直接把 Generator 函数传入`run`函数即可。当然,前提是每一个异步操作,都要是 Thunk 函数,也就是说,跟在`yield`命令后面的必须是 Thunk 函数。 + +```javascript +var g = function* (){ + var f1 = yield readFile('fileA'); + var f2 = yield readFile('fileB'); + // ... + var fn = yield readFile('fileN'); +}; + +run(g); +``` + +上面代码中,函数`g`封装了`n`个异步的读取文件操作,只要执行`run`函数,这些操作就会自动完成。这样一来,异步操作不仅可以写得像同步操作,而且一行代码就可以执行。 + +Thunk 函数并不是 Generator 函数自动执行的唯一方案。因为自动执行的关键是,必须有一种机制,自动控制 Generator 函数的流程,接收和交还程序的执行权。回调函数可以做到这一点,Promise 对象也可以做到这一点。 + +## co 模块 + +### 基本用法 + +[co 模块](https://github.com/tj/co)是著名程序员 TJ Holowaychuk 于2013年6月发布的一个小工具,用于 Generator 函数的自动执行。 + +下面是一个 Generator 函数,用于依次读取两个文件。 + +```javascript +var gen = function* () { + var f1 = yield readFile('/etc/fstab'); + var f2 = yield readFile('/etc/shells'); + console.log(f1.toString()); + console.log(f2.toString()); +}; +``` + +co 模块可以让你不用编写 Generator 函数的执行器。 + +```javascript +var co = require('co'); +co(gen); +``` + +上面代码中,Generator函数只要传入co函数,就会自动执行。 + +co函数返回一个Promise对象,因此可以用then方法添加回调函数。 + +```javascript +co(gen).then(function (){ + console.log('Generator 函数执行完成'); +}); +``` + +上面代码中,等到Generator函数执行结束,就会输出一行提示。 + +### co模块的原理 + +为什么 co 可以自动执行 Generator 函数? + +前面说过,Generator 就是一个异步操作的容器。它的自动执行需要一种机制,当异步操作有了结果,能够自动交回执行权。 + +两种方法可以做到这一点。 + +(1)回调函数。将异步操作包装成 Thunk 函数,在回调函数里面交回执行权。 + +(2)Promise 对象。将异步操作包装成 Promise 对象,用`then`方法交回执行权。 + +co 模块其实就是将两种自动执行器(Thunk 函数和 Promise 对象),包装成一个模块。使用 co 的前提条件是,Generator 函数的`yield`命令后面,只能是 Thunk 函数或 Promise 对象。 + +上一节已经介绍了基于 Thunk 函数的自动执行器。下面来看,基于 Promise 对象的自动执行器。这是理解 co 模块必须的。 + +### 基于 Promise 对象的自动执行 + +还是沿用上面的例子。首先,把`fs`模块的`readFile`方法包装成一个 Promise 对象。 + +```javascript +var fs = require('fs'); + +var readFile = function (fileName){ + return new Promise(function (resolve, reject){ + fs.readFile(fileName, function(error, data){ + if (error) return reject(error); + resolve(data); + }); + }); +}; + +var gen = function* (){ + var f1 = yield readFile('/etc/fstab'); + var f2 = yield readFile('/etc/shells'); + console.log(f1.toString()); + console.log(f2.toString()); +}; +``` + +然后,手动执行上面的 Generator 函数。 + +```javascript +var g = gen(); + +g.next().value.then(function(data){ + g.next(data).value.then(function(data){ + g.next(data); + }); +}); +``` + +手动执行其实就是用`then`方法,层层添加回调函数。理解了这一点,就可以写出一个自动执行器。 + +```javascript +function run(gen){ + var g = gen(); + + function next(data){ + var result = g.next(data); + if (result.done) return result.value; + result.value.then(function(data){ + next(data); + }); + } + + next(); +} + +run(gen); +``` + +上面代码中,只要 Generator 函数还没执行到最后一步,`next`函数就调用自身,以此实现自动执行。 + +### co 模块的源码 + +co 就是上面那个自动执行器的扩展,它的源码只有几十行,非常简单。 + +首先,co 函数接受 Generator 函数作为参数,返回一个 Promise 对象。 + +```javascript +function co(gen) { + var ctx = this; + + return new Promise(function(resolve, reject) { + }); +} +``` + +在返回的 Promise 对象里面,co 先检查参数`gen`是否为 Generator 函数。如果是,就执行该函数,得到一个内部指针对象;如果不是就返回,并将 Promise 对象的状态改为`resolved`。 + +```javascript +function co(gen) { + var ctx = this; + + return new Promise(function(resolve, reject) { + if (typeof gen === 'function') gen = gen.call(ctx); + if (!gen || typeof gen.next !== 'function') return resolve(gen); + }); +} +``` + +接着,co 将 Generator 函数的内部指针对象的`next`方法,包装成`onFulfilled`函数。这主要是为了能够捕捉抛出的错误。 + +```javascript +function co(gen) { + var ctx = this; + + return new Promise(function(resolve, reject) { + if (typeof gen === 'function') gen = gen.call(ctx); + if (!gen || typeof gen.next !== 'function') return resolve(gen); + + onFulfilled(); + function onFulfilled(res) { + var ret; + try { + ret = gen.next(res); + } catch (e) { + return reject(e); + } + next(ret); + } + }); +} +``` + +最后,就是关键的`next`函数,它会反复调用自身。 + +```javascript +function next(ret) { + if (ret.done) return resolve(ret.value); + var value = toPromise.call(ctx, ret.value); + if (value && isPromise(value)) return value.then(onFulfilled, onRejected); + return onRejected( + new TypeError( + 'You may only yield a function, promise, generator, array, or object, ' + + 'but the following object was passed: "' + + String(ret.value) + + '"' + ) + ); +} +``` + +上面代码中,`next`函数的内部代码,一共只有四行命令。 + +第一行,检查当前是否为 Generator 函数的最后一步,如果是就返回。 + +第二行,确保每一步的返回值,是 Promise 对象。 + +第三行,使用`then`方法,为返回值加上回调函数,然后通过`onFulfilled`函数再次调用`next`函数。 + +第四行,在参数不符合要求的情况下(参数非 Thunk 函数和 Promise 对象),将 Promise 对象的状态改为`rejected`,从而终止执行。 + +### 处理并发的异步操作 + +co 支持并发的异步操作,即允许某些操作同时进行,等到它们全部完成,才进行下一步。 + +这时,要把并发的操作都放在数组或对象里面,跟在`yield`语句后面。 + +```javascript +// 数组的写法 +co(function* () { + var res = yield [ + Promise.resolve(1), + Promise.resolve(2) + ]; + console.log(res); +}).catch(onerror); + +// 对象的写法 +co(function* () { + var res = yield { + 1: Promise.resolve(1), + 2: Promise.resolve(2), + }; + console.log(res); +}).catch(onerror); +``` + +下面是另一个例子。 + +```javascript +co(function* () { + var values = [n1, n2, n3]; + yield values.map(somethingAsync); +}); + +function* somethingAsync(x) { + // do something async + return y +} +``` + +上面的代码允许并发三个`somethingAsync`异步操作,等到它们全部完成,才会进行下一步。 + diff --git a/docs/generator.md b/docs/generator.md index b74fc35be..690ce082b 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -1,16 +1,16 @@ -# Generator 函数 +# Generator 函数:语法 ## 简介 ### 基本概念 -Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍Generator函数的语法和API,它的异步编程应用请看《异步操作》一章。 +Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数:异步操作》一章。 -Generator函数有多种理解角度。从语法上,首先可以把它理解成,Generator函数是一个状态机,封装了多个内部状态。 +Generator 函数有多种理解角度。从语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。 -执行Generator函数会返回一个遍历器对象,也就是说,Generator函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历Generator函数内部的每一个状态。 +执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。 -形式上,Generator函数是一个普通函数,但是有两个特征。一是,`function`关键字与函数名之间有一个星号;二是,函数体内部使用`yield`语句,定义不同的内部状态(yield语句在英语里的意思就是“产出”)。 +形式上,Generator 函数是一个普通函数,但是有两个特征。一是,`function`关键字与函数名之间有一个星号;二是,函数体内部使用`yield`语句,定义不同的内部状态(`yield`在英语里的意思就是“产出”)。 ```javascript function* helloWorldGenerator() { diff --git a/docs/object.md b/docs/object.md index 23dcd8b24..d97c231b1 100644 --- a/docs/object.md +++ b/docs/object.md @@ -779,7 +779,7 @@ Object.keys(obj) // ["foo", "baz"] ``` -ES2017 [引入](https://github.com/tc39/proposal-object-values-entries)了跟`Object.keys`配套的`Object.values`和`Object.entries`,作为遍历一个对象的补充手段。 +ES2017 [引入](https://github.com/tc39/proposal-object-values-entries)了跟`Object.keys`配套的`Object.values`和`Object.entries`,作为遍历一个对象的补充手段,供`for...of`循环使用。 ```javascript let {keys, values, entries} = Object; @@ -1111,7 +1111,7 @@ Object.getOwnPropertyDescriptor(obj, 'p') // } ``` -ES7有一个提案,提出了`Object.getOwnPropertyDescriptors`方法,返回指定对象所有自身属性(非继承属性)的描述对象。 +ES2017 引入了`Object.getOwnPropertyDescriptors`方法,返回指定对象所有自身属性(非继承属性)的描述对象。 ```javascript const obj = { @@ -1132,7 +1132,7 @@ Object.getOwnPropertyDescriptors(obj) // configurable: true } } ``` -`Object.getOwnPropertyDescriptors`方法返回一个对象,所有原对象的属性名都是该对象的属性名,对应的属性值就是该属性的描述对象。 +上面代码中,`Object.getOwnPropertyDescriptors`方法返回一个对象,所有原对象的属性名都是该对象的属性名,对应的属性值就是该属性的描述对象。 该方法的实现非常容易。 @@ -1146,7 +1146,7 @@ function getOwnPropertyDescriptors(obj) { } ``` -该方法的提出目的,主要是为了解决`Object.assign()`无法正确拷贝`get`属性和`set`属性的问题。 +该方法的引入目的,主要是为了解决`Object.assign()`无法正确拷贝`get`属性和`set`属性的问题。 ```javascript const source = { @@ -1210,7 +1210,7 @@ const shallowClone = (obj) => Object.create( 上面代码会克隆对象`obj`。 -另外,`Object.getOwnPropertyDescriptors`方法可以实现,一个对象继承另一个对象。以前,继承另一个对象,常常写成下面这样。 +另外,`Object.getOwnPropertyDescriptors`方法可以实现一个对象继承另一个对象。以前,继承另一个对象,常常写成下面这样。 ```javascript const obj = { @@ -1219,7 +1219,7 @@ const obj = { }; ``` -ES6规定`__proto__`只有浏览器要部署,其他环境不用部署。如果去除`__proto__`,上面代码就要改成下面这样。 +ES6 规定`__proto__`只有浏览器要部署,其他环境不用部署。如果去除`__proto__`,上面代码就要改成下面这样。 ```javascript const obj = Object.create(prot); @@ -1246,7 +1246,7 @@ const obj = Object.create( ); ``` -`Object.getOwnPropertyDescriptors`也可以用来实现Mixin(混入)模式。 +`Object.getOwnPropertyDescriptors`也可以用来实现 Mixin(混入)模式。 ```javascript let mix = (object) => ({ @@ -1266,3 +1266,4 @@ let d = mix(c).with(a, b); 上面代码中,对象`a`和`b`被混入了对象`c`。 出于完整性的考虑,`Object.getOwnPropertyDescriptors`进入标准以后,还会有`Reflect.getOwnPropertyDescriptors`方法。 + diff --git a/docs/promise.md b/docs/promise.md index 07488e646..3415f6624 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -1,14 +1,14 @@ -# Promise对象 +# Promise 对象 -## Promise的含义 +## Promise 的含义 -Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了`Promise`对象。 +Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了`Promise`对象。 -所谓`Promise`,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise是一个对象,从它可以获取异步操作的消息。Promise提供统一的API,各种异步操作都可以用同样的方法进行处理。 +所谓`Promise`,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。 `Promise`对象有以下两个特点。 -(1)对象的状态不受外界影响。`Promise`对象代表一个异步操作,有三种状态:`Pending`(进行中)、`Resolved`(已完成,又称Fulfilled)和`Rejected`(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是`Promise`这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。 +(1)对象的状态不受外界影响。`Promise`对象代表一个异步操作,有三种状态:`Pending`(进行中)、`Resolved`(已完成,又称 Fulfilled)和`Rejected`(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是`Promise`这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。 (2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。`Promise`对象的状态改变,只有两种可能:从`Pending`变为`Resolved`和从`Pending`变为`Rejected`。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。就算改变已经发生了,你再对`Promise`对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。 @@ -16,7 +16,7 @@ Promise是异步编程的一种解决方案,比传统的解决方案——回 `Promise`也有一些缺点。首先,无法取消`Promise`,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,`Promise`内部抛出的错误,不会反应到外部。第三,当处于`Pending`状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。 -如果某些事件不断地反复发生,一般来说,使用stream模式是比部署`Promise`更好的选择。 +如果某些事件不断地反复发生,一般来说,使用 stream 模式是比部署`Promise`更好的选择。 ## 基本用法 diff --git a/docs/string.md b/docs/string.md index a1da37278..11e5c3b1f 100644 --- a/docs/string.md +++ b/docs/string.md @@ -301,7 +301,7 @@ s.includes('Hello', 6) // false ## padStart(),padEnd() -ES7推出了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。`padStart`用于头部补全,`padEnd`用于尾部补全。 +ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。`padStart()`用于头部补全,`padEnd()`用于尾部补全。 ```javascript 'x'.padStart(5, 'ab') // 'ababx' @@ -327,7 +327,7 @@ ES7推出了字符串补全长度的功能。如果某个字符串不够指定 // '0123456abc' ``` -如果省略第二个参数,则会用空格补全长度。 +如果省略第二个参数,默认使用空格补全长度。 ```javascript 'x'.padStart(4) // ' x' diff --git a/sidebar.md b/sidebar.md index 42bf83eea..4024cb7ea 100644 --- a/sidebar.md +++ b/sidebar.md @@ -21,8 +21,9 @@ 1. [Reflect](#docs/reflect) 1. [Promise 对象](#docs/promise) 1. [Iterator 和 for...of 循环](#docs/iterator) -1. [Generator 函数](#docs/generator) -1. [异步操作和 Async 函数](#docs/async) +1. [Generator 函数:语法](#docs/generator) +1. [Generator 函数:异步操作](#docs/generator-async) +1. [async 函数](#docs/async) 1. [Class](#docs/class) 1. [Decorator](#docs/decorator) 1. [Module](#docs/module) From 3c401eaa3c4c01920c5ad37f7822cffbc8e48e74 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 3 Feb 2017 01:47:34 +0800 Subject: [PATCH 196/994] docs(generator): edit title --- docs/generator-async.md | 2 +- docs/generator.md | 4 ++-- sidebar.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/generator-async.md b/docs/generator-async.md index f605e996c..e4f890055 100644 --- a/docs/generator-async.md +++ b/docs/generator-async.md @@ -1,4 +1,4 @@ -# Generator 函数:异步操作 +# Generator 函数的异步应用 异步编程对 JavaScript 语言太重要。Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。本章主要介绍 Generator 函数如何完成异步操作。 diff --git a/docs/generator.md b/docs/generator.md index 690ce082b..cfe9652b0 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -1,10 +1,10 @@ -# Generator 函数:语法 +# Generator 函数的语法 ## 简介 ### 基本概念 -Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数:异步操作》一章。 +Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数的异步应用》一章。 Generator 函数有多种理解角度。从语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。 diff --git a/sidebar.md b/sidebar.md index 4024cb7ea..1b19ae5e5 100644 --- a/sidebar.md +++ b/sidebar.md @@ -21,8 +21,8 @@ 1. [Reflect](#docs/reflect) 1. [Promise 对象](#docs/promise) 1. [Iterator 和 for...of 循环](#docs/iterator) -1. [Generator 函数:语法](#docs/generator) -1. [Generator 函数:异步操作](#docs/generator-async) +1. [Generator 函数的语法](#docs/generator) +1. [Generator 函数的异步应用](#docs/generator-async) 1. [async 函数](#docs/async) 1. [Class](#docs/class) 1. [Decorator](#docs/decorator) From efc5f2f8b692488ab6a64aedd25dc8a6aa1f91e4 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 3 Feb 2017 19:51:40 +0800 Subject: [PATCH 197/994] docs(set): fix text --- docs/set-map.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/set-map.md b/docs/set-map.md index bff19a611..ebba6ded6 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -4,14 +4,14 @@ ### 基本用法 -ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 +ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 -Set本身是一个构造函数,用来生成Set数据结构。 +Set 本身是一个构造函数,用来生成 Set 数据结构。 ```javascript -var s = new Set(); +const s = new Set(); -[2, 3, 5, 4, 5, 2, 2].map(x => s.add(x)); +[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { console.log(i); @@ -19,9 +19,9 @@ for (let i of s) { // 2 3 5 4 ``` -上面代码通过`add`方法向Set结构加入成员,结果表明Set结构不会添加重复的值。 +上面代码通过`add`方法向 Set 结构加入成员,结果表明 Set 结构不会添加重复的值。 -Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化。 +Set 函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化。 ```javascript // 例一 From 4635e4598c8f21086981c289a7b3d3a7c660480c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 5 Feb 2017 18:56:13 +0800 Subject: [PATCH 198/994] docs(arrayBuffer): edit sharedArrayBuffer --- docs/arraybuffer.md | 83 ++++++++++++++++++++++++++++++++++++--------- docs/module.md | 10 ++++++ docs/reference.md | 1 + 3 files changed, 78 insertions(+), 16 deletions(-) diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index 6f0c78a01..04a3ce693 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -1,8 +1,8 @@ # 二进制数组 -二进制数组(`ArrayBuffer`对象、TypedArray视图和`DataView`视图)是JavaScript操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011年2月发布),ES6将它们纳入了ECMAScript规格,并且增加了新的方法。 +二进制数组(`ArrayBuffer`对象、`TypedArray`视图和`DataView`视图)是 JavaScript 操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011年2月发布),ES6 将它们纳入了 ECMAScript 规格,并且增加了新的方法。 -这个接口的原始设计目的,与WebGL项目有关。所谓WebGL,就是指浏览器与显卡之间的通信接口,为了满足JavaScript与显卡之间大量的、实时的数据交换,它们之间的数据通信必须是二进制的,而不能是传统的文本格式。文本格式传递一个32位整数,两端的JavaScript脚本与显卡都要进行格式转化,将非常耗时。这时要是存在一种机制,可以像C语言那样,直接操作字节,将4个字节的32位整数,以二进制形式原封不动地送入显卡,脚本的性能就会大幅提升。 +这个接口的原始设计目的,与 WebGL 项目有关。所谓WebGL,就是指浏览器与显卡之间的通信接口,为了满足 JavaScript 与显卡之间大量的、实时的数据交换,它们之间的数据通信必须是二进制的,而不能是传统的文本格式。文本格式传递一个32位整数,两端的 JavaScript 脚本与显卡都要进行格式转化,将非常耗时。这时要是存在一种机制,可以像 C 语言那样,直接操作字节,将4个字节的32位整数,以二进制形式原封不动地送入显卡,脚本的性能就会大幅提升。 二进制数组就是在这种背景下诞生的。它很像C语言的数组,允许开发者以数组下标的形式,直接操作内存,大大增强了JavaScript处理二进制数据的能力,使得开发者有可能通过JavaScript与操作系统的原生接口进行二进制通信。 @@ -975,13 +975,13 @@ bitmap.pixels = new Uint8Array(buffer, start); ## SharedArrayBuffer -目前有一种场景,需要多个进程共享数据:浏览器启动多个WebWorker。 +JavaScript 是单线程的,web worker 引入了多进程,每个进程的数据都是隔离的,通过`postMessage()`通信,即通信的数据是复制的。如果数据量比较大,这种通信的效率显然比较低。 ```javascript var w = new Worker('myworker.js'); ``` -上面代码中,主窗口新建了一个 Worker 进程。该进程与主窗口之间会有一个通信渠道,主窗口通过`w.postMessage`向 Worker 进程发消息,同时通过`message`事件监听 Worker 进程的回应。 +上面代码中,主进程新建了一个 Worker 进程。该进程与主进程之间会有一个通信渠道,主进程通过`w.postMessage`向 Worker 进程发消息,同时通过`message`事件监听 Worker 进程的回应。 ```javascript w.postMessage('hi'); @@ -990,9 +990,9 @@ w.onmessage = function (ev) { } ``` -上面代码中,主窗口先发一个消息`hi`,然后在监听到 Worker 进程的回应后,就将其打印出来。 +上面代码中,主进程先发一个消息`hi`,然后在监听到 Worker 进程的回应后,就将其打印出来。 -Worker 进程也是通过监听`message`事件,来获取主窗口发来的消息,并作出反应。 +Worker 进程也是通过监听`message`事件,来获取主进程发来的消息,并作出反应。 ```javascript onmessage = function (ev) { @@ -1001,30 +1001,33 @@ onmessage = function (ev) { } ``` -主窗口与 Worker 进程之间,可以传送各种数据,不仅仅是字符串,还可以传送二进制数据。很容易想到,如果有大量数据要传送,留出一块内存区域,主窗口与 Worker 进程共享,两方都可以读写,那么就会大大提高效率。 +主进程与 Worker 进程之间,可以传送各种数据,不仅仅是字符串,还可以传送二进制数据。很容易想到,如果有大量数据要传送,留出一块内存区域,主进程与 Worker 进程共享,两方都可以读写,那么就会大大提高效率。 -现在,有一个[`SharedArrayBuffer`](https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md)提案,允许多个 Worker 进程与主窗口共享内存。这个对象的 API 与`ArrayBuffer`一模一样,唯一的区别是后者无法共享。 +ES2017 引入[`SharedArrayBuffer`](https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md),允许多个 Worker 进程与主进程共享内存数据。`SharedArrayBuffer`的 API 与`ArrayBuffer`一模一样,唯一的区别是后者无法共享。 ```javascript // 新建 1KB 共享内存 -var sab = new SharedArrayBuffer(1024); +var sharedBuffer = new SharedArrayBuffer(1024); // 主窗口发送数据 -w.postMessage(sab, [sab]) +w.postMessage(sharedBuffer); + +// 本地写入数据 +const sharedArray = new Int32Array(sharedBuffer); ``` -上面代码中,`postMessage`方法的第一个参数是`SharedArrayBuffer`对象,第二个参数是要写入共享内存的数据。 +上面代码中,`postMessage`方法的参数是`SharedArrayBuffer`对象。 Worker 进程从事件的`data`属性上面取到数据。 ```javascript -var sab; +var sharedBuffer; onmessage = function (ev) { - sab = ev.data; // 1KB 的共享内存,就是主窗口共享出来的那块内存 + sharedBuffer = ev.data; // 1KB 的共享内存,就是主窗口共享出来的那块内存 }; ``` -共享内存也可以在 Worker 进程创建,发给主窗口。 +共享内存也可以在 Worker 进程创建,发给主进程。 `SharedArrayBuffer`与`SharedArray`一样,本身是无法读写,必须在上面建立视图,然后通过视图读写。 @@ -1043,10 +1046,10 @@ for ( let i=0 ; i < ia.length ; i++ ) ia[i] = primes.next(); // 向 Worker 进程发送这段共享内存 -w.postMessage(ia, [ia.buffer]); +w.postMessage(ia); ``` -Worker 收到数据后的处理如下。 +Worker 进程收到数据后的处理如下。 ```javascript var ia; @@ -1057,3 +1060,51 @@ onmessage = function (ev) { }; ``` +多个进程共享内存,最大的问题就是如何防止两个进程同时修改某个地址,或者说,当一个进程修改共享内存以后,必须有一个机制让其他进程同步。SharedArrayBuffer API 提供`Atomics`对象,保证所有共享内存的操作都是“原子性”的,并且可以在所有进程内同步。 + +```javascript +// 主进程 +var sab = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 100000); +var ia = new Int32Array(sab); + +for (let i = 0; i < ia.length; i++) { + ia[i] = primes.next(); // 将质数放入 ia +} + +// worker 进程 +ia[112]++; // 错误 +Atomics.add(ia, 112, 1); // 正确 +``` + +上面代码中,Worker 进程直接改写共享内存是不正确的。有两个原因,一是可能发生两个进程同时改写该地址,二是改写以后无法同步到其他 Worker 进程。所以,必须使用`Atomics.add()`方法进行改写。 + +下面是另一个例子。 + +```javascript +// 进程一 +console.log(ia[37]); // 163 +Atomics.store(ia, 37, 123456); +Atomics.wake(ia, 37, 1); + +// 进程二 +Atomics.wait(ia, 37, 163); +console.log(ia[37]); // 123456 +``` + +上面代码中,共享内存`ia`的第37号位置,原来的值是`163`。进程二使用`Atomics.wait()`方法,指定只要`ia[37]`等于`163`,就处于“等待”状态。进程一使用`Atomics.store()`方法,将`123456`放入`ia[37]`,然后使用`Atomics.wake()`方法将监视`ia[37]`的一个进程唤醒。 + +`Atomics`对象有以下方法。 + +- `Atomics.load(array, index)`:返回`array[index]`的值。 +- `Atomics.store(array, index, value)`:设置`array[index]`的值,返回这个值。 +- `Atomics.compareExchange(array, index, oldval, newval)`:如果`array[index]`等于`oldval`,就写入`newval`,返回`oldval`。 +- `Atomics.exchange(array, index, value)`:设置`array[index]`的值,返回旧的值。 +- `Atomics.add(array, index, value)`:将`value`加到`array[index]`,返回`array[index]`旧的值。 +- `Atomics.sub(array, index, value)`:将`value`从`array[index]`减去,返回`array[index]`旧的值。 +- `Atomics.and(array, index, value)`:将`value`与`array[index]`进行位运算`and`,放入`array[index]`,并返回旧的值。 +- `Atomics.or(array, index, value)`:将`value`与`array[index]`进行位运算`or`,放入`array[index]`,并返回旧的值。 +- `Atomics.xor(array, index, value)`:将`vaule`与`array[index]`进行位运算`xor`,放入`array[index]`,并返回旧的值。 +- `Atomics.wait(array, index, value, timeout)`:如果`array[index]`等于`value`,进程就进入休眠状态,必须通过`Atomics.wake()`唤醒。`timeout`指定多少毫秒之后,进入休眠。返回值是三个字符串(ok、not-equal、timed-out)中的一个。 +- `Atomics.wake(array, index, count)`:唤醒指定数目在某个位置休眠的进程。 +- `Atomics.isLockFree(size)`:返回一个布尔值,表示`Atomics`对象是否可以处理某个`size`的内存锁定。如果返回`false`,应用程序就需要自己来实现锁定。 + diff --git a/docs/module.md b/docs/module.md index 8ec97ef64..998bbda67 100644 --- a/docs/module.md +++ b/docs/module.md @@ -304,6 +304,16 @@ console.log('圆面积:' + circle.area(4)); console.log('圆周长:' + circle.circumference(14)); ``` +注意,模块整体加载所在的那个对象(上例是`circle`),应该是可以静态分析的,所以不允许运行时改变。下面的写法都是不允许的。 + +```javascript +import * as circle from './circle'; + +// 下面两行都是不允许的 +circle.foo = 'hello'; +circle.area = function () {}; +``` + ## export default 命令 从前面的例子可以看出,使用`import`命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。但是,用户肯定希望快速上手,未必愿意阅读文档,去了解模块有哪些属性和方法。 diff --git a/docs/reference.md b/docs/reference.md index 20d64ae0e..a99aff54b 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -210,6 +210,7 @@ - Ben Newman, [The Importance of import and export](http://benjamn.github.io/empirenode-2015/#/): ES6模块的设计思想 - ESDiscuss, [Why is "export default var a = 1;" invalid syntax?](https://esdiscuss.org/topic/why-is-export-default-var-a-1-invalid-syntax) - Bradley Meck, [ES6 Module Interoperability](https://github.com/nodejs/node-eps/blob/master/002-es6-modules.md): 介绍 Node 如何处理 ES6 语法加载 CommonJS 模块 +- Axel Rauschmayer, [Making transpiled ES modules more spec-compliant](http://www.2ality.com/2017/01/babel-esm-spec-mode.html): ES6 模块编译成 CommonJS 模块的详细介绍 ## 二进制数组 From f66e7cb3912997b3ef4652c6e951639796d75e84 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 7 Feb 2017 11:38:45 +0800 Subject: [PATCH 199/994] docs(let): edit let --- docs/let.md | 4 +++- docs/number.md | 37 +++++++++++++++++++++++++++++++++++-- docs/object.md | 43 +++++++++++++++++++++++++++++++++++++++++++ docs/regex.md | 10 +++++----- 4 files changed, 86 insertions(+), 8 deletions(-) diff --git a/docs/let.md b/docs/let.md index 3a58bf222..73a609ad5 100644 --- a/docs/let.md +++ b/docs/let.md @@ -73,7 +73,9 @@ for (let i = 0; i < 3; i++) { ### 不存在变量提升 -`let`不像`var`那样会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错。 +`var`命令会发生”变量提升“现象,即变量可以在声明之前使用,值为`undefined`。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。 + +为了纠正这种现象,`let`命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。 ```javascript // var 的情况 diff --git a/docs/number.md b/docs/number.md index 32ee4641a..ea152a1b6 100644 --- a/docs/number.md +++ b/docs/number.md @@ -2,14 +2,14 @@ ## 二进制和八进制表示法 -ES6提供了二进制和八进制数值的新的写法,分别用前缀`0b`(或`0B`)和`0o`(或`0O`)表示。 +ES6 提供了二进制和八进制数值的新的写法,分别用前缀`0b`(或`0B`)和`0o`(或`0O`)表示。 ```javascript 0b111110111 === 503 // true 0o767 === 503 // true ``` -从ES5开始,在严格模式之中,八进制就不再允许使用前缀`0`表示,ES6进一步明确,要使用前缀`0o`表示。 +从 ES5 开始,在严格模式之中,八进制就不再允许使用前缀`0`表示,ES6 进一步明确,要使用前缀`0o`表示。 ```javascript // 非严格模式 @@ -613,6 +613,38 @@ ES6新增了6个三角函数方法。 - `Math.acosh(x)` 返回`x`的反双曲余弦(inverse hyperbolic cosine) - `Math.atanh(x)` 返回`x`的反双曲正切(inverse hyperbolic tangent) +## Math.signbit() + +`Math.sign()`用来判断一个值的正负,但是如果参数是`-0`,它会返回`-0`。 + +```javascript +Math.sign(-0) // -0 +``` + +这导致对于判断符号位的正负,`Math.sign()`不是很有用。JavaScript 内部使用64位浮点数(国际标准IEEE 754)表示数值,IEEE 754规定第一位是符号位,`0`表示正数,`1`表示负数。所以会有两种零,`+0`是符号位为`0`时的零值,`-0`是符号位为`1`时的零值。实际编程中,判断一个值是`+0`还是`-0`非常麻烦,因为它们是相等的。 + +```javascript ++0 === -0 // true +``` + +目前,有一个[提案](http://jfbastien.github.io/papers/Math.signbit.html),引入了`Math.signbit()`方法判断一个数的符号位是否设置了。 + +```javascript +Math.signbit(2) //false +Math.signbit(-2) //true +Math.signbit(0) //false +Math.signbit(-0) //true +``` + +可以看到,该方法正确返回了`-0`的符号位是设置了的。 + +该方法的算法如下。 + +- 如果参数是`NaN`,返回`false` +- 如果参数是`-0`,返回`true` +- 如果参数是负值,返回`true` +- 其他情况返回`false` + ## 指数运算符 ES2016 新增了一个指数运算符(`**`)。 @@ -645,3 +677,4 @@ Math.pow(99, 99) ``` 上面代码中,两个运算结果的最后一位有效数字是有差异的。 + diff --git a/docs/object.md b/docs/object.md index d97c231b1..1958b1cf8 100644 --- a/docs/object.md +++ b/docs/object.md @@ -1267,3 +1267,46 @@ let d = mix(c).with(a, b); 出于完整性的考虑,`Object.getOwnPropertyDescriptors`进入标准以后,还会有`Reflect.getOwnPropertyDescriptors`方法。 +## Null 传导运算符 + +编程实务中,如果读取对象内部的某个属性,往往需要判断一下该对象是否存在。比如,要读取`message.body.user.firstName`,安全的写法是写成下面这样。 + +```javascript +const firstName = (message + && message.body + && message.body.user + && message.body.user.firstName) || 'default'; +``` + +这样的层层判断非常麻烦,因此现在有一个[提案](https://github.com/claudepache/es-optional-chaining),引入了“Null 传导运算符”(null propagation operator)`?.`,简化上面的写法。 + +```javascript +const firstName = message?.body?.user?.firstName || 'default'; +``` + +上面代码有三个`?.`运算符,只要其中一个返回`null`或`undefined`,就不再往下运算,而是返回`undefined`。 + +“Null 传导运算符”有四种用法。 + +- `obj?.prop` // 读取对象属性 +- `obj?.[expr]` // 同上 +- `func?.(...args)` // 函数或对象方法的调用 +- `new C?.(...args)` // 构造函数的调用 + +传导运算符之所以写成`obj?.prop`,而不是`obj?prop`,是为了方便编译器能够区分三元运算符`?:`(比如`obj?prop:123`)。 + +下面是更多的例子。 + +```javascript +// 如果 a 是 null 或 undefined, 返回 undefined +// 否则返回 a?.b.c().d +a?.b.c().d + +// 如果 a 是 null 或 undefined,下面的语句不产生任何效果 +// 否则执行 a.b = 42 +a?.b = 42 + +// 如果 a 是 null 或 undefined,下面的语句不产生任何效果 +delete a?.b +``` + diff --git a/docs/regex.md b/docs/regex.md index daa29fdbf..389c35759 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -413,9 +413,9 @@ re.flags // 's' ## 后行断言 -JavaScript语言的正则表达式,只支持先行断言(lookahead)和先行否定断言(negative lookahead),不支持后行断言(lookbehind)和后行否定断言(negative lookbehind)。 +JavaScript 语言的正则表达式,只支持先行断言(lookahead)和先行否定断言(negative lookahead),不支持后行断言(lookbehind)和后行否定断言(negative lookbehind)。 -目前,有一个[提案](https://github.com/goyakin/es-regexp-lookbehind),在ES7加入后行断言。V8引擎4.9版已经支持,Chrome浏览器49版打开”experimental JavaScript features“开关(地址栏键入`about:flags`),就可以使用这项功能。 +目前,有一个[提案](https://github.com/goyakin/es-regexp-lookbehind),引入后行断言。V8 引擎4.9版已经支持,Chrome 浏览器49版打开”experimental JavaScript features“开关(地址栏键入`about:flags`),就可以使用这项功能。 ”先行断言“指的是,`x`只有在`y`前面才匹配,必须写成`/x(?=y)/`。比如,只匹配百分号之前的数字,要写成`/\d+(?=%)/`。”先行否定断言“指的是,`x`只有不在`y`前面才匹配,必须写成`/x(?!y)/`。比如,只匹配不在百分号之前的数字,要写成`/\d+(?!%)/`。 @@ -426,16 +426,16 @@ JavaScript语言的正则表达式,只支持先行断言(lookahead)和先 上面两个字符串,如果互换正则表达式,就会匹配失败。另外,还可以看到,”先行断言“括号之中的部分(`(?=%)`),是不计入返回结果的。 -"后行断言"正好与"先行断言"相反,`x`只有在`y`后面才匹配,必须写成`/(?<=y)x/`。比如,只匹配美元符号之后的数字,要写成`/(?<=\$)\d+/`。”后行否定断言“则与”先行否定断言“相反,`x`只有不在`y`后面才匹配,必须写成`/(? Date: Wed, 8 Feb 2017 19:19:56 +0800 Subject: [PATCH 200/994] =?UTF-8?q?docs(let):=20edit=20=E5=9D=97=E7=BA=A7?= =?UTF-8?q?=E4=BD=9C=E7=94=A8=E5=9F=9F=E5=86=85=E7=9A=84=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=A3=B0=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/let.md | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/docs/let.md b/docs/let.md index 73a609ad5..77f6757b4 100644 --- a/docs/let.md +++ b/docs/let.md @@ -306,7 +306,7 @@ ES6允许块级作用域的任意嵌套。 函数能不能在块级作用域之中声明,是一个相当令人混淆的问题。 -ES5规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明。 +ES5 规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明。 ```javascript // 情况一 @@ -318,10 +318,11 @@ if (true) { try { function f() {} } catch(e) { + // ... } ``` -上面代码的两种函数声明,根据ES5的规定都是非法的。 +上面两种函数声明,根据 ES5 的规定都是非法的。 但是,浏览器没有遵守这个规定,为了兼容以前的旧代码,还是支持在块级作用域之中声明函数,因此上面两种情况实际都能运行,不会报错。不过,“严格模式”下还是会报错。 @@ -337,12 +338,10 @@ if (true) { ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。 ```javascript -// ES6严格模式 -'use strict'; +// ES6 if (true) { - function f() {} + function f() {} // 不报错 } -// 不报错 ``` ES6 规定,块级作用域之中,函数声明语句的行为类似于`let`,在块级作用域之外不可引用。 @@ -362,7 +361,7 @@ function f() { console.log('I am outside!'); } 上面代码在 ES5 中运行,会得到“I am inside!”,因为在`if`内声明的函数`f`会被提升到函数头部,实际运行的代码如下。 ```javascript -// ES5版本 +// ES5 版本 function f() { console.log('I am outside!'); } (function () { function f() { console.log('I am inside!'); } @@ -375,7 +374,7 @@ function f() { console.log('I am outside!'); } ES6 的运行结果就完全不一样了,会得到“I am outside!”。因为块级作用域内声明的函数类似于`let`,对作用域之外没有影响,实际运行的代码如下。 ```javascript -// ES6版本 +// ES6 版本 function f() { console.log('I am outside!'); } (function () { f(); @@ -388,12 +387,12 @@ function f() { console.log('I am outside!'); } - 函数声明类似于`var`,即会提升到全局作用域或函数作用域的头部。 - 同时,函数声明还会提升到所在的块级作用域的头部。 -注意,上面三条规则只对ES6的浏览器实现有效,其他环境的实现不用遵守,还是将块级作用域的函数声明当作`let`处理。 +注意,上面三条规则只对 ES6 的浏览器实现有效,其他环境的实现不用遵守,还是将块级作用域的函数声明当作`let`处理。 -前面那段代码,在 Chrome 环境下运行会报错。 +根据这三条规则,在浏览器的 ES6 环境中,块级作用域内声明的函数,行为类似于`var`声明的变量。 ```javascript -// ES6的浏览器环境 +// 浏览器的 ES6 环境 function f() { console.log('I am outside!'); } (function () { if (false) { @@ -406,10 +405,10 @@ function f() { console.log('I am outside!'); } // Uncaught TypeError: f is not a function ``` -上面的代码报错,是因为实际运行的是下面的代码。 +上面的代码在符合 ES6 的浏览器中,都会报错,因为实际运行的是下面的代码。 ```javascript -// ES6的浏览器环境 +// 浏览器的 ES6 环境 function f() { console.log('I am outside!'); } (function () { var f = undefined; @@ -442,7 +441,7 @@ function f() { console.log('I am outside!'); } } ``` -另外,还有一个需要注意的地方。ES6的块级作用域允许声明函数的规则,只在使用大括号的情况下成立,如果没有使用大括号,就会报错。 +另外,还有一个需要注意的地方。ES6 的块级作用域允许声明函数的规则,只在使用大括号的情况下成立,如果没有使用大括号,就会报错。 ```javascript // 不报错 From d042de53e651346510b6489243954b5931f8da19 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 8 Feb 2017 19:22:44 +0800 Subject: [PATCH 201/994] =?UTF-8?q?docs(let):=20edit=20=E5=9D=97=E7=BA=A7?= =?UTF-8?q?=E4=BD=9C=E7=94=A8=E5=9F=9F=E5=86=85=E7=9A=84=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=A3=B0=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/let.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/let.md b/docs/let.md index 77f6757b4..73a57cb7f 100644 --- a/docs/let.md +++ b/docs/let.md @@ -381,7 +381,9 @@ function f() { console.log('I am outside!'); } }()); ``` -很显然,这种行为差异会对老代码产生很大影响。为了减轻因此产生的不兼容问题,ES6在[附录B](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-block-level-function-declarations-web-legacy-compatibility-semantics)里面规定,浏览器的实现可以不遵守上面的规定,有自己的[行为方式](http://stackoverflow.com/questions/31419897/what-are-the-precise-semantics-of-block-level-functions-in-es6)。 +但是,如果你真的在 ES6 浏览器中运行一下上面的代码,是会报错的,这是为什么呢? + +原来,ES6 改变了块级作用域内声明的函数的处理规则,显然会对老代码产生很大影响。为了减轻因此产生的不兼容问题,ES6在[附录B](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-block-level-function-declarations-web-legacy-compatibility-semantics)里面规定,浏览器的实现可以不遵守上面的规定,有自己的[行为方式](http://stackoverflow.com/questions/31419897/what-are-the-precise-semantics-of-block-level-functions-in-es6)。 - 允许在块级作用域内声明函数。 - 函数声明类似于`var`,即会提升到全局作用域或函数作用域的头部。 From 2b9fe071df09f98f7254609728f887efb8e80d69 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 9 Feb 2017 13:55:23 +0800 Subject: [PATCH 202/994] docs(object): edit spread operator --- docs/object.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index 1958b1cf8..4c9462371 100644 --- a/docs/object.md +++ b/docs/object.md @@ -924,7 +924,15 @@ function entries(obj) { ## 对象的扩展运算符 -目前,ES7有一个[提案](https://github.com/sebmarkbage/ecmascript-rest-spread),将Rest运算符(解构赋值)/扩展运算符(`...`)引入对象。Babel转码器已经支持这项功能。 +《数组的扩展》一章中,已经介绍过扩展预算符(`...`)。 + +```javascript +const [a, ...b] = [1, 2, 3]; +a // 1 +b // [2, 3] +``` + +ES2017 将这个运算符[引入](https://github.com/sebmarkbage/ecmascript-rest-spread)了对象。 **(1)解构赋值** From 002dddabf96e54979803863c1903711938a7c0ba Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 12 Feb 2017 14:39:14 +0800 Subject: [PATCH 203/994] docs(async): edit async --- docs/async.md | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/docs/async.md b/docs/async.md index 2a088e398..a5c8c5e8f 100644 --- a/docs/async.md +++ b/docs/async.md @@ -31,7 +31,7 @@ var gen = function* () { 写成`async`函数,就是下面这样。 ```javascript -var asyncReadFile = async function (){ +var asyncReadFile = async function () { var f1 = await readFile('/etc/fstab'); var f2 = await readFile('/etc/shells'); console.log(f1.toString()); @@ -43,24 +43,34 @@ var asyncReadFile = async function (){ `async`函数对 Generator 函数的改进,体现在以下四点。 -(1)内置执行器。Generator 函数的执行必须靠执行器,所以才有了`co`模块,而`async`函数自带执行器。也就是说,`async`函数的执行,与普通函数一模一样,只要一行。 +(1)内置执行器。 + +Generator 函数的执行必须靠执行器,所以才有了`co`模块,而`async`函数自带执行器。也就是说,`async`函数的执行,与普通函数一模一样,只要一行。 ```javascript var result = asyncReadFile(); ``` -上面的代码调用了`asyncReadFile`函数,然后它就会自动执行,输出最后结果。这完全不像 Generator 函数,需要调用`next`方法,或者用`co`模块,才能得到真正执行,得到最后结果。 +上面的代码调用了`asyncReadFile`函数,然后它就会自动执行,输出最后结果。这完全不像 Generator 函数,需要调用`next`方法,或者用`co`模块,才能真正执行,得到最后结果。 + +(2)更好的语义。 + +`async`和`await`,比起星号和`yield`,语义更清楚了。`async`表示函数里有异步操作,`await`表示紧跟在后面的表达式需要等待结果。 -(2)更好的语义。`async`和`await`,比起星号和`yield`,语义更清楚了。`async`表示函数里有异步操作,`await`表示紧跟在后面的表达式需要等待结果。 +(3)更广的适用性。 -(3)更广的适用性。 `co`模块约定,`yield`命令后面只能是 Thunk 函数或 Promise 对象,而`async`函数的`await`命令后面,可以是Promise 对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)。 +`co`模块约定,`yield`命令后面只能是 Thunk 函数或 Promise 对象,而`async`函数的`await`命令后面,可以是Promise 对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)。 -(4)返回值是 Promise。`async`函数的返回值是 Promise 对象,这比 Generator 函数的返回值是 Iterator 对象方便多了。你可以用`then`方法指定下一步的操作。 +(4)返回值是 Promise。 + +`async`函数的返回值是 Promise 对象,这比 Generator 函数的返回值是 Iterator 对象方便多了。你可以用`then`方法指定下一步的操作。 进一步说,`async`函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而`await`命令就是内部`then`命令的语法糖。 ## 用法 +### 基本用法 + `async`函数返回一个 Promise 对象,可以使用`then`方法添加回调函数。当函数执行的时候,一旦遇到`await`就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。 下面是一个例子。 @@ -79,7 +89,7 @@ getStockPriceByName('goog').then(function (result) { 上面代码是一个获取股票报价的函数,函数前面的`async`关键字,表明该函数内部有异步操作。调用该函数时,会立即返回一个`Promise`对象。 -下面的例子,指定多少毫秒后输出一个值。 +下面是另一个例子,指定多少毫秒后输出一个值。 ```javascript function timeout(ms) { @@ -98,7 +108,7 @@ asyncPrint('hello world', 50); 上面代码指定50毫秒以后,输出`hello world`。 -Async 函数有多种使用形式。 +async 函数有多种使用形式。 ```javascript // 函数声明 From 9ed5c759e9cff478eb646bcfface23396c1f06be Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 13 Feb 2017 00:25:47 +0800 Subject: [PATCH 204/994] =?UTF-8?q?docs(module):=20=E6=8B=86=E5=88=86?= =?UTF-8?q?=E3=80=8AModule=E3=80=8B=E4=B8=80=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/module-loader.md | 852 ++++++++++++++++++++++++++++++++++++++++++ docs/module.md | 776 +------------------------------------- sidebar.md | 3 +- 3 files changed, 860 insertions(+), 771 deletions(-) create mode 100644 docs/module-loader.md diff --git a/docs/module-loader.md b/docs/module-loader.md new file mode 100644 index 000000000..c2b499e45 --- /dev/null +++ b/docs/module-loader.md @@ -0,0 +1,852 @@ +# Module 的加载实现 + +上一章介绍了模块的语法,本章介绍如何在浏览器和 Node 之中加载 ES6 模块,以及实际开发中经常遇到的一些问题(比如循环加载)。 + +## 浏览器加载 + +### 传统方法 + +在 HTML 网页中,浏览器通过` + + + +``` + +上面代码中,由于浏览器脚本的默认语言是 JavaScript,因此`type="application/javascript"`可以省略。 + +默认情况下,浏览器是同步加载 JavaScript 脚本,即渲染引擎遇到` + +``` + +上面代码中,` +``` + +上面代码在网页中插入一个模块`foo.js`,由于`type`属性设为`module`,所以浏览器知道这是一个 ES6 模块。 + +浏览器对于带有`type="module"`的` + + +``` + +` +``` + +ES6 模块也允许内嵌在网页中,语法行为与加载外部脚本完全一致。 + +```html + +``` + +对于外部的模块脚本(上例是`foo.js`),有几点需要注意。 + +- 代码是在模块作用域之中运行,而不是在全局作用域运行。模块内部的顶层变量,外部不可见。 +- 模块脚本自动采用严格模式,不管有没有声明`use strict`。 +- 模块之中,可以使用`import`命令加载其他模块(`.js`后缀不可省略,需要提供绝对 URL 或相对 URL),也可以使用`export`命令输出对外接口。 +- 模块之中,顶层的`this`关键字返回`undefined`,而不是指向`window`。也就是说,在模块顶层使用`this`关键字,是无意义的。 +- 同一个模块如果加载多次,将只执行一次。 + +下面是一个示例模块。 + +```javascript +import utils from 'https://example.com/js/utils.js'; + +const x = 1; + +console.log(x === window.x); //false +console.log(this === undefined); // true + +delete x; // 句法错误,严格模式禁止删除变量 +``` + +利用顶层的`this`等于`undefined`这个语法点,可以侦测当前代码是否在 ES6 模块之中。 + +```javascript +const isNotModuleScript = this !== undefined; +``` + +## ES6 模块与 CommonJS 模块的差异 + +讨论 Node 加载 ES6 模块之前,必须了解 ES6 模块与 CommonJS 模块完全不同。 + +它们有两个重大差异。 + +- CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。 +- CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。 + +CommonJS 模块输出的是值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。请看下面这个模块文件`lib.js`的例子。 + +```javascript +// lib.js +var counter = 3; +function incCounter() { + counter++; +} +module.exports = { + counter: counter, + incCounter: incCounter, +}; +``` + +上面代码输出内部变量`counter`和改写这个变量的内部方法`incCounter`。然后,在`main.js`里面加载这个模块。 + +```javascript +// main.js +var mod = require('./lib'); + +console.log(mod.counter); // 3 +mod.incCounter(); +console.log(mod.counter); // 3 +``` + +上面代码说明,`lib.js`模块加载以后,它的内部变化就影响不到输出的`mod.counter`了。这是因为`mod.counter`是一个原始类型的值,会被缓存。除非写成一个函数,才能得到内部变动后的值。 + +```javascript +// lib.js +var counter = 3; +function incCounter() { + counter++; +} +module.exports = { + get counter() { + return counter + }, + incCounter: incCounter, +}; +``` + +上面代码中,输出的`counter`属性实际上是一个取值器函数。现在再执行`main.js`,就可以正确读取内部变量`counter`的变动了。 + +```bash +$ node main.js +3 +4 +``` + +ES6 模块的运行机制与 CommonJS 不一样。JS 引擎对脚本静态分析的时候,遇到模块加载命令`import`,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。换句话说,ES6 的`import`有点像 Unix 系统的“符号连接”,原始值变了,`import`加载的值也会跟着变。因此,ES6 模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 + +还是举上面的例子。 + +```javascript +// lib.js +export let counter = 3; +export function incCounter() { + counter++; +} + +// main.js +import { counter, incCounter } from './lib'; +console.log(counter); // 3 +incCounter(); +console.log(counter); // 4 +``` + +上面代码说明,ES6 模块输入的变量`counter`是活的,完全反应其所在模块`lib.js`内部的变化。 + +再举一个出现在`export`一节中的例子。 + +```javascript +// m1.js +export var foo = 'bar'; +setTimeout(() => foo = 'baz', 500); + +// m2.js +import {foo} from './m1.js'; +console.log(foo); +setTimeout(() => console.log(foo), 500); +``` + +上面代码中,`m1.js`的变量`foo`,在刚加载时等于`bar`,过了500毫秒,又变为等于`baz`。 + +让我们看看,`m2.js`能否正确读取这个变化。 + +```bash +$ babel-node m2.js + +bar +baz +``` + +上面代码表明,ES6 模块不会缓存运行结果,而是动态地去被加载的模块取值,并且变量总是绑定其所在的模块。 + +由于 ES6 输入的模块变量,只是一个“符号连接”,所以这个变量是只读的,对它进行重新赋值会报错。 + +```javascript +// lib.js +export let obj = {}; + +// main.js +import { obj } from './lib'; + +obj.prop = 123; // OK +obj = {}; // TypeError +``` + +上面代码中,`main.js`从`lib.js`输入变量`obj`,可以对`obj`添加属性,但是重新赋值就会报错。因为变量`obj`指向的地址是只读的,不能重新赋值,这就好比`main.js`创造了一个名为`obj`的`const`变量。 + +最后,`export`通过接口,输出的是同一个值。不同的脚本加载这个接口,得到的都是同样的实例。 + +```javascript +// mod.js +function C() { + this.sum = 0; + this.add = function () { + this.sum += 1; + }; + this.show = function () { + console.log(this.sum); + }; +} + +export let c = new C(); +``` + +上面的脚本`mod.js`,输出的是一个`C`的实例。不同的脚本加载这个模块,得到的都是同一个实例。 + +```javascript +// x.js +import {c} from './mod'; +c.add(); + +// y.js +import {c} from './mod'; +c.show(); + +// main.js +import './x'; +import './y'; +``` + +现在执行`main.js`,输出的是`1`。 + +```bash +$ babel-node main.js +1 +``` + +这就证明了`x.js`和`y.js`加载的都是`C`的同一个实例。 + +## Node 的加载处理 + +### 概述 + +Node 对 ES6 模块的处理比较麻烦,因为它有自己的 CommonJS 模块格式,与 ES6 模块格式是不兼容的。目前的解决方案是,将两者分开,ES6 模块和 CommonJS 采用各自的加载方案。 + +在静态分析阶段,一个模块脚本只要有一行`import`或`export`语句,Node 就会认为该脚本为 ES6 模块,否则就为 CommonJS 模块。如果不输出任何接口,但是希望被 Node 认为是 ES6 模块,可以在脚本中加一行语句。 + +```javascript +export {}; +``` + +上面的命令并不是输出一个空对象,而是不输出任何接口的 ES6 标准写法。 + +如何不指定绝对路径,Node 加载 ES6 模块会依次寻找以下脚本,与`require()`的规则一致。 + +```javascript +import './foo'; +// 依次寻找 +// ./foo.js +// ./foo/package.json +// ./foo/index.js + +import 'baz'; +// 依次寻找 +// ./node_modules/baz.js +// ./node_modules/baz/package.json +// ./node_modules/baz/index.js +// 寻找上一级目录 +// ../node_modules/baz.js +// ../node_modules/baz/package.json +// ../node_modules/baz/index.js +// 再上一级目录 +``` + +ES6 模块之中,顶层的`this`指向`undefined`;CommonJS 模块的顶层`this`指向当前模块,这是两者的一个重大差异。 + +### import 命令加载 CommonJS 模块 + +Node 采用 CommonJS 模块格式,模块的输出都定义在`module.exports`这个属性上面。在 Node 环境中,使用`import`命令加载 CommonJS 模块,Node 会自动将`module.exports`属性,当作模块的默认输出,即等同于`export default`。 + +下面是一个 CommonJS 模块。 + +```javascript +// a.js +module.exports = { + foo: 'hello', + bar: 'world' +}; + +// 等同于 +export default { + foo: 'hello', + bar: 'world' +}; +``` + +`import`命令加载上面的模块,`module.exports`会被视为默认输出。 + +```javascript +// 写法一 +import baz from './a'; +// baz = {foo: 'hello', bar: 'world'}; + +// 写法二 +import {default as baz} from './a'; +// baz = {foo: 'hello', bar: 'world'}; +``` + +如果采用整体输入的写法(`import * as xxx from someModule`),`default`会取代`module.exports`,作为输入的接口。 + +```javascript +import * as baz from './a'; +// baz = { +// get default() {return module.exports;}, +// get foo() {return this.default.foo}.bind(baz), +// get bar() {return this.default.bar}.bind(baz) +// } +``` + +上面代码中,`this.default`取代了`module.exports`。需要注意的是,Node 会自动为`baz`添加`default`属性,通过`baz.default`拿到`module.exports`。 + +```javascript +// b.js +module.exports = null; + +// es.js +import foo from './b'; +// foo = null; + +import * as bar from './b'; +// bar = {default:null}; +``` + +上面代码中,`es.js`采用第二种写法时,要通过`bar.default`这样的写法,才能拿到`module.exports`。 + +下面是另一个例子。 + +```javascript +// c.js +module.exports = function two() { + return 2; +}; + +// es.js +import foo from './c'; +foo(); // 2 + +import * as bar from './c'; +bar.default(); // 2 +bar(); // throws, bar is not a function +``` + +上面代码中,`bar`本身是一个对象,不能当作函数调用,只能通过`bar.default`调用。 + +CommonJS 模块的输出缓存机制,在 ES6 加载方式下依然有效。 + +```javascript +// foo.js +module.exports = 123; +setTimeout(_ => module.exports = null); +``` + +上面代码中,对于加载`foo.js`的脚本,`module.exports`将一直是`123`,而不会变成`null`。 + +由于 ES6 模块是编译时确定输出接口,CommonJS 模块是运行时确定输出接口,所以采用`import`命令加载 CommonJS 模块时,不允许采用下面的写法。 + +```javascript +import {readfile} from 'fs'; +``` + +上面的写法不正确,因为`fs`是 CommonJS 格式,只有在运行时才能确定`readfile`接口,而`import`命令要求编译时就确定这个接口。解决方法就是改为整体输入。 + +```javascript +import * as express from 'express'; +const app = express.default(); + +import express from 'express'; +const app = express(); +``` + +### require 命令加载 ES6 模块 + +采用`require`命令加载 ES6 模块时,ES6 模块的所有输出接口,会成为输入对象的属性。 + +```javascript +// es.js +let foo = {bar:'my-default'}; +export default foo; +foo = null; + +// cjs.js +const es_namespace = require('./es'); +console.log(es_namespace.default); +// {bar:'my-default'} +``` + +上面代码中,`default`接口变成了`es_namespace.default`属性。另外,由于存在缓存机制,`es.js`对`foo`的重新赋值没有在模块外部反映出来。 + +下面是另一个例子。 + +```javascript +// es.js +export let foo = {bar:'my-default'}; +export {foo as bar}; +export function f() {}; +export class c {}; + +// cjs.js +const es_namespace = require('./es'); +// es_namespace = { +// get foo() {return foo;} +// get bar() {return foo;} +// get f() {return f;} +// get c() {return c;} +// } +``` + +## 循环加载 + +“循环加载”(circular dependency)指的是,`a`脚本的执行依赖`b`脚本,而`b`脚本的执行又依赖`a`脚本。 + +```javascript +// a.js +var b = require('b'); + +// b.js +var a = require('a'); +``` + +通常,“循环加载”表示存在强耦合,如果处理不好,还可能导致递归加载,使得程序无法执行,因此应该避免出现。 + +但是实际上,这是很难避免的,尤其是依赖关系复杂的大项目,很容易出现`a`依赖`b`,`b`依赖`c`,`c`又依赖`a`这样的情况。这意味着,模块加载机制必须考虑“循环加载”的情况。 + +对于JavaScript语言来说,目前最常见的两种模块格式CommonJS和ES6,处理“循环加载”的方法是不一样的,返回的结果也不一样。 + +### CommonJS模块的加载原理 + +介绍ES6如何处理"循环加载"之前,先介绍目前最流行的CommonJS模块格式的加载原理。 + +CommonJS的一个模块,就是一个脚本文件。`require`命令第一次加载该脚本,就会执行整个脚本,然后在内存生成一个对象。 + +```javascript +{ + id: '...', + exports: { ... }, + loaded: true, + ... +} +``` + +上面代码就是Node内部加载模块后生成的一个对象。该对象的`id`属性是模块名,`exports`属性是模块输出的各个接口,`loaded`属性是一个布尔值,表示该模块的脚本是否执行完毕。其他还有很多属性,这里都省略了。 + +以后需要用到这个模块的时候,就会到`exports`属性上面取值。即使再次执行`require`命令,也不会再次执行该模块,而是到缓存之中取值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。 + +### CommonJS模块的循环加载 + +CommonJS模块的重要特性是加载时执行,即脚本代码在`require`的时候,就会全部执行。一旦出现某个模块被"循环加载",就只输出已经执行的部分,还未执行的部分不会输出。 + +让我们来看,Node[官方文档](https://nodejs.org/api/modules.html#modules_cycles)里面的例子。脚本文件`a.js`代码如下。 + +```javascript +exports.done = false; +var b = require('./b.js'); +console.log('在 a.js 之中,b.done = %j', b.done); +exports.done = true; +console.log('a.js 执行完毕'); +``` + +上面代码之中,`a.js`脚本先输出一个`done`变量,然后加载另一个脚本文件`b.js`。注意,此时`a.js`代码就停在这里,等待`b.js`执行完毕,再往下执行。 + +再看`b.js`的代码。 + +```javascript +exports.done = false; +var a = require('./a.js'); +console.log('在 b.js 之中,a.done = %j', a.done); +exports.done = true; +console.log('b.js 执行完毕'); +``` + +上面代码之中,`b.js`执行到第二行,就会去加载`a.js`,这时,就发生了“循环加载”。系统会去`a.js`模块对应对象的`exports`属性取值,可是因为`a.js`还没有执行完,从`exports`属性只能取回已经执行的部分,而不是最后的值。 + +`a.js`已经执行的部分,只有一行。 + +```javascript +exports.done = false; +``` + +因此,对于`b.js`来说,它从`a.js`只输入一个变量`done`,值为`false`。 + +然后,`b.js`接着往下执行,等到全部执行完毕,再把执行权交还给`a.js`。于是,`a.js`接着往下执行,直到执行完毕。我们写一个脚本`main.js`,验证这个过程。 + +```javascript +var a = require('./a.js'); +var b = require('./b.js'); +console.log('在 main.js 之中, a.done=%j, b.done=%j', a.done, b.done); +``` + +执行`main.js`,运行结果如下。 + +```bash +$ node main.js + +在 b.js 之中,a.done = false +b.js 执行完毕 +在 a.js 之中,b.done = true +a.js 执行完毕 +在 main.js 之中, a.done=true, b.done=true +``` + +上面的代码证明了两件事。一是,在`b.js`之中,`a.js`没有执行完毕,只执行了第一行。二是,`main.js`执行到第二行时,不会再次执行`b.js`,而是输出缓存的`b.js`的执行结果,即它的第四行。 + +```javascript +exports.done = true; +``` + +总之,CommonJS输入的是被输出值的拷贝,不是引用。 + +另外,由于CommonJS模块遇到循环加载时,返回的是当前已经执行的部分的值,而不是代码全部执行后的值,两者可能会有差异。所以,输入变量的时候,必须非常小心。 + +```javascript +var a = require('a'); // 安全的写法 +var foo = require('a').foo; // 危险的写法 + +exports.good = function (arg) { + return a.foo('good', arg); // 使用的是 a.foo 的最新值 +}; + +exports.bad = function (arg) { + return foo('bad', arg); // 使用的是一个部分加载时的值 +}; +``` + +上面代码中,如果发生循环加载,`require('a').foo`的值很可能后面会被改写,改用`require('a')`会更保险一点。 + +### ES6模块的循环加载 + +ES6处理“循环加载”与CommonJS有本质的不同。ES6模块是动态引用,如果使用`import`从一个模块加载变量(即`import foo from 'foo'`),那些变量不会被缓存,而是成为一个指向被加载模块的引用,需要开发者自己保证,真正取值的时候能够取到值。 + +请看下面这个例子。 + +```javascript +// a.js如下 +import {bar} from './b.js'; +console.log('a.js'); +console.log(bar); +export let foo = 'foo'; + +// b.js +import {foo} from './a.js'; +console.log('b.js'); +console.log(foo); +export let bar = 'bar'; +``` + +上面代码中,`a.js`加载`b.js`,`b.js`又加载`a.js`,构成循环加载。执行`a.js`,结果如下。 + +```bash +$ babel-node a.js +b.js +undefined +a.js +bar +``` + +上面代码中,由于`a.js`的第一行是加载`b.js`,所以先执行的是`b.js`。而`b.js`的第一行又是加载`a.js`,这时由于`a.js`已经开始执行了,所以不会重复执行,而是继续往下执行`b.js`,所以第一行输出的是`b.js`。 + +接着,`b.js`要打印变量`foo`,这时`a.js`还没执行完,取不到`foo`的值,导致打印出来是`undefined`。`b.js`执行完,开始执行`a.js`,这时就一切正常了。 + +再看一个稍微复杂的例子(摘自 Dr. Axel Rauschmayer 的[《Exploring ES6》](http://exploringjs.com/es6/ch_modules.html))。 + +```javascript +// a.js +import {bar} from './b.js'; +export function foo() { + console.log('foo'); + bar(); + console.log('执行完毕'); +} +foo(); + +// b.js +import {foo} from './a.js'; +export function bar() { + console.log('bar'); + if (Math.random() > 0.5) { + foo(); + } +} +``` + +按照CommonJS规范,上面的代码是没法执行的。`a`先加载`b`,然后`b`又加载`a`,这时`a`还没有任何执行结果,所以输出结果为`null`,即对于`b.js`来说,变量`foo`的值等于`null`,后面的`foo()`就会报错。 + +但是,ES6可以执行上面的代码。 + +```bash +$ babel-node a.js +foo +bar +执行完毕 + +// 执行结果也有可能是 +foo +bar +foo +bar +执行完毕 +执行完毕 +``` + +上面代码中,`a.js`之所以能够执行,原因就在于ES6加载的变量,都是动态引用其所在的模块。只要引用存在,代码就能执行。 + +下面,我们详细分析这段代码的运行过程。 + +```javascript +// a.js + +// 这一行建立一个引用, +// 从`b.js`引用`bar` +import {bar} from './b.js'; + +export function foo() { + // 执行时第一行输出 foo + console.log('foo'); + // 到 b.js 执行 bar + bar(); + console.log('执行完毕'); +} +foo(); + +// b.js + +// 建立`a.js`的`foo`引用 +import {foo} from './a.js'; + +export function bar() { + // 执行时,第二行输出 bar + console.log('bar'); + // 递归执行 foo,一旦随机数 + // 小于等于0.5,就停止执行 + if (Math.random() > 0.5) { + foo(); + } +} +``` + +我们再来看ES6模块加载器[SystemJS](https://github.com/ModuleLoader/es6-module-loader/blob/master/docs/circular-references-bindings.md)给出的一个例子。 + +```javascript +// even.js +import { odd } from './odd' +export var counter = 0; +export function even(n) { + counter++; + return n == 0 || odd(n - 1); +} + +// odd.js +import { even } from './even'; +export function odd(n) { + return n != 0 && even(n - 1); +} +``` + +上面代码中,`even.js`里面的函数`even`有一个参数`n`,只要不等于0,就会减去1,传入加载的`odd()`。`odd.js`也会做类似操作。 + +运行上面这段代码,结果如下。 + +```javascript +$ babel-node +> import * as m from './even.js'; +> m.even(10); +true +> m.counter +6 +> m.even(20) +true +> m.counter +17 +``` + +上面代码中,参数`n`从10变为0的过程中,`even()`一共会执行6次,所以变量`counter`等于6。第二次调用`even()`时,参数`n`从20变为0,`even()`一共会执行11次,加上前面的6次,所以变量`counter`等于17。 + +这个例子要是改写成CommonJS,就根本无法执行,会报错。 + +```javascript +// even.js +var odd = require('./odd'); +var counter = 0; +exports.counter = counter; +exports.even = function(n) { + counter++; + return n == 0 || odd(n - 1); +} + +// odd.js +var even = require('./even').even; +module.exports = function(n) { + return n != 0 && even(n - 1); +} +``` + +上面代码中,`even.js`加载`odd.js`,而`odd.js`又去加载`even.js`,形成“循环加载”。这时,执行引擎就会输出`even.js`已经执行的部分(不存在任何结果),所以在`odd.js`之中,变量`even`等于`null`,等到后面调用`even(n-1)`就会报错。 + +```bash +$ node +> var m = require('./even'); +> m.even(10) +TypeError: even is not a function +``` + +## 跨模块常量 + +本书介绍`const`命令的时候说过,`const`声明的常量只在当前代码块有效。如果想设置跨模块的常量(即跨多个文件),可以采用下面的写法。 + +```javascript +// constants.js 模块 +export const A = 1; +export const B = 3; +export const C = 4; + +// test1.js 模块 +import * as constants from './constants'; +console.log(constants.A); // 1 +console.log(constants.B); // 3 + +// test2.js 模块 +import {A, B} from './constants'; +console.log(A); // 1 +console.log(B); // 3 +``` + +如果要使用的常量非常多,可以建一个专门的`constants`目录,将各种常量写在不同的文件里面,保存在该目录下。 + +```javascript +// constants/db.js +export const db = { + url: 'http://my.couchdbserver.local:5984', + admin_username: 'admin', + admin_password: 'admin password' +}; + +// constants/user.js +export const users = ['root', 'admin', 'staff', 'ceo', 'chief', 'moderator']; +``` + +然后,将这些文件输出的常量,合并在`index.js`里面。 + +```javascript +// constants/index.js +export {db} from './db'; +export {users} from './users'; +``` + +使用的时候,直接加载`index.js`就可以了。 + +```javascript +// script.js +import {db, users} from './constants'; +``` + +## ES6模块的转码 + +浏览器目前还不支持ES6模块,为了现在就能使用,可以将转为ES5的写法。除了Babel可以用来转码之外,还有以下两个方法,也可以用来转码。 + +### ES6 module transpiler + +[ES6 module transpiler](https://github.com/esnext/es6-module-transpiler)是 square 公司开源的一个转码器,可以将 ES6 模块转为 CommonJS 模块或 AMD 模块的写法,从而在浏览器中使用。 + +首先,安装这个转玛器。 + +```bash +$ npm install -g es6-module-transpiler +``` + +然后,使用`compile-modules convert`命令,将 ES6 模块文件转码。 + +```bash +$ compile-modules convert file1.js file2.js +``` + +`-o`参数可以指定转码后的文件名。 + +```bash +$ compile-modules convert -o out.js file1.js +``` + +### SystemJS + +另一种解决方法是使用 [SystemJS](https://github.com/systemjs/systemjs)。它是一个垫片库(polyfill),可以在浏览器内加载 ES6 模块、AMD 模块和 CommonJS 模块,将其转为 ES5 格式。它在后台调用的是 Google 的 Traceur 转码器。 + +使用时,先在网页内载入`system.js`文件。 + +```html + +``` + +然后,使用`System.import`方法加载模块文件。 + +```html + +``` + +上面代码中的`./app`,指的是当前目录下的app.js文件。它可以是ES6模块文件,`System.import`会自动将其转码。 + +需要注意的是,`System.import`使用异步加载,返回一个 Promise 对象,可以针对这个对象编程。下面是一个模块文件。 + +```javascript +// app/es6-file.js: + +export class q { + constructor() { + this.es6 = 'hello'; + } +} +``` + +然后,在网页内加载这个模块文件。 + +```html + +``` + +上面代码中,`System.import`方法返回的是一个 Promise 对象,所以可以用`then`方法指定回调函数。 + diff --git a/docs/module.md b/docs/module.md index 998bbda67..93b47031f 100644 --- a/docs/module.md +++ b/docs/module.md @@ -1,8 +1,10 @@ -# Module +# Module 的语法 + +## 概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的`require`、Python 的`import`,甚至就连 CSS 都有`@import`,但是 JavaScript 任何这方面的支持都没有,这对开发大型的、复杂的项目形成了巨大障碍。 -在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代现有的 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。 +在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。 ES6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS 和 AMD 模块,都只能在运行时确定这些东西。比如,CommonJS 模块就是对象,输入时必须查找对象属性。 @@ -36,6 +38,8 @@ import { stat, exists, readFile } from 'fs'; - 将来浏览器的新 API 就能用模块格式提供,不再必须做成全局变量或者`navigator`对象的属性。 - 不再需要对象作为命名空间(比如`Math`对象),未来这些功能可以通过模块提供。 +本章介绍 ES6 模块的语法,下一章介绍如何在浏览器和 Node 之中,加载 ES6 模块。 + ## 严格模式 ES6 的模块自动采用严格模式,不管你有没有在模块头部加上`"use strict";`。 @@ -566,702 +570,6 @@ console.log(exp(math.e)); 上面代码中的`import exp`表示,将`circleplus`模块的默认方法加载为`exp`方法。 -## ES6模块加载的实质 - -ES6 模块加载的机制,与 CommonJS 模块完全不同。CommonJS模块输出的是一个值的拷贝,而 ES6 模块输出的是值的引用。 - -CommonJS 模块输出的是被输出值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。请看下面这个模块文件`lib.js`的例子。 - -```javascript -// lib.js -var counter = 3; -function incCounter() { - counter++; -} -module.exports = { - counter: counter, - incCounter: incCounter, -}; -``` - -上面代码输出内部变量`counter`和改写这个变量的内部方法`incCounter`。然后,在`main.js`里面加载这个模块。 - -```javascript -// main.js -var mod = require('./lib'); - -console.log(mod.counter); // 3 -mod.incCounter(); -console.log(mod.counter); // 3 -``` - -上面代码说明,`lib.js`模块加载以后,它的内部变化就影响不到输出的`mod.counter`了。这是因为`mod.counter`是一个原始类型的值,会被缓存。除非写成一个函数,才能得到内部变动后的值。 - -```javascript -// lib.js -var counter = 3; -function incCounter() { - counter++; -} -module.exports = { - get counter() { - return counter - }, - incCounter: incCounter, -}; -``` - -上面代码中,输出的`counter`属性实际上是一个取值器函数。现在再执行`main.js`,就可以正确读取内部变量`counter`的变动了。 - -```bash -$ node main.js -3 -4 -``` - -ES6 模块的运行机制与 CommonJS 不一样。JS 引擎对脚本静态分析的时候,遇到模块加载命令`import`,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。换句话说,ES6 的`import`有点像 Unix 系统的“符号连接”,原始值变了,`import`加载的值也会跟着变。因此,ES6 模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 - -还是举上面的例子。 - -```javascript -// lib.js -export let counter = 3; -export function incCounter() { - counter++; -} - -// main.js -import { counter, incCounter } from './lib'; -console.log(counter); // 3 -incCounter(); -console.log(counter); // 4 -``` - -上面代码说明,ES6 模块输入的变量`counter`是活的,完全反应其所在模块`lib.js`内部的变化。 - -再举一个出现在`export`一节中的例子。 - -```javascript -// m1.js -export var foo = 'bar'; -setTimeout(() => foo = 'baz', 500); - -// m2.js -import {foo} from './m1.js'; -console.log(foo); -setTimeout(() => console.log(foo), 500); -``` - -上面代码中,`m1.js`的变量`foo`,在刚加载时等于`bar`,过了500毫秒,又变为等于`baz`。 - -让我们看看,`m2.js`能否正确读取这个变化。 - -```bash -$ babel-node m2.js - -bar -baz -``` - -上面代码表明,ES6 模块不会缓存运行结果,而是动态地去被加载的模块取值,并且变量总是绑定其所在的模块。 - -由于 ES6 输入的模块变量,只是一个“符号连接”,所以这个变量是只读的,对它进行重新赋值会报错。 - -```javascript -// lib.js -export let obj = {}; - -// main.js -import { obj } from './lib'; - -obj.prop = 123; // OK -obj = {}; // TypeError -``` - -上面代码中,`main.js`从`lib.js`输入变量`obj`,可以对`obj`添加属性,但是重新赋值就会报错。因为变量`obj`指向的地址是只读的,不能重新赋值,这就好比`main.js`创造了一个名为`obj`的`const`变量。 - -最后,`export`通过接口,输出的是同一个值。不同的脚本加载这个接口,得到的都是同样的实例。 - -```javascript -// mod.js -function C() { - this.sum = 0; - this.add = function () { - this.sum += 1; - }; - this.show = function () { - console.log(this.sum); - }; -} - -export let c = new C(); -``` - -上面的脚本`mod.js`,输出的是一个`C`的实例。不同的脚本加载这个模块,得到的都是同一个实例。 - -```javascript -// x.js -import {c} from './mod'; -c.add(); - -// y.js -import {c} from './mod'; -c.show(); - -// main.js -import './x'; -import './y'; -``` - -现在执行`main.js`,输出的是`1`。 - -```bash -$ babel-node main.js -1 -``` - -这就证明了`x.js`和`y.js`加载的都是`C`的同一个实例。 - -## 浏览器的模块加载 - -浏览器使用 ES6 模块的语法如下。 - -```html - -``` - -上面代码在网页中插入一个模块`foo.js`,由于`type`属性设为`module`,所以浏览器知道这是一个 ES6 模块。 - -浏览器对于带有`type="module"`的` -``` - -然后,使用`System.import`方法加载模块文件。 - -```html - -``` - -上面代码中的`./app`,指的是当前目录下的app.js文件。它可以是ES6模块文件,`System.import`会自动将其转码。 - -需要注意的是,`System.import`使用异步加载,返回一个 Promise 对象,可以针对这个对象编程。下面是一个模块文件。 - -```javascript -// app/es6-file.js: - -export class q { - constructor() { - this.es6 = 'hello'; - } -} -``` - -然后,在网页内加载这个模块文件。 - -```html - -``` - -上面代码中,`System.import`方法返回的是一个 Promise 对象,所以可以用`then`方法指定回调函数。 - diff --git a/sidebar.md b/sidebar.md index 1b19ae5e5..4017f308d 100644 --- a/sidebar.md +++ b/sidebar.md @@ -26,7 +26,8 @@ 1. [async 函数](#docs/async) 1. [Class](#docs/class) 1. [Decorator](#docs/decorator) -1. [Module](#docs/module) +1. [Module 的语法](#docs/module) +1. [Module 的加载实现](#docs/module-loader) 1. [编程风格](#docs/style) 1. [读懂规格](#docs/spec) 1. [二进制数组](#docs/arraybuffer) From c4ee209c88f7cdb3a0b554e9d29bf9482089733c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 13 Feb 2017 00:30:49 +0800 Subject: [PATCH 205/994] docs(module): edit Module --- docs/module-loader.md | 54 ++----------------------------------------- docs/module.md | 50 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/docs/module-loader.md b/docs/module-loader.md index c2b499e45..606dd5614 100644 --- a/docs/module-loader.md +++ b/docs/module-loader.md @@ -34,7 +34,7 @@ `defer`与`async`的区别是:前者要等到整个页面正常渲染结束,才会执行;后者一旦下载完,渲染引擎就会中断渲染,执行这个脚本以后,再继续渲染。一句话,`defer`是“渲染完再执行”,`async`是“下载完就执行”。另外,如果有多个`defer`脚本,会按照它们在页面出现的顺序加载,而多个`async`脚本是不能保证加载顺序的。 -## 加载规则 +### 加载规则 浏览器加载 ES6 模块,也使用` - -``` - -上面代码中,`browser.js`是Babel提供的转换器脚本,可以在浏览器运行。用户的ES6脚本放在`script`标签之中,但是要注明`type="text/babel"`。 - -另一种方法是使用[babel-standalone](https://github.com/Daniel15/babel-standalone)模块提供的浏览器版本,将其插入网页。 +Babel 也可以用于浏览器环境。但是,从 Babel 6.0 开始,不再直接提供浏览器版本,而是要用构建工具构建出来。如果你没有或不想使用构建工具,可以使用[babel-standalone](https://github.com/Daniel15/babel-standalone)模块提供的浏览器版本,将其插入网页。 ```html @@ -413,19 +351,19 @@ $ npm install babel-core@5 ``` -注意,网页中实时将ES6代码转为ES5,对性能会有影响。生产环境需要加载已经转码完成的脚本。 +注意,网页实时将 ES6 代码转为 ES5,对性能会有影响。生产环境需要加载已经转码完成的脚本。 下面是如何将代码打包成浏览器可以使用的脚本,以`Babel`配合`Browserify`为例。首先,安装`babelify`模块。 ```bash -$ npm install --save-dev babelify babel-preset-es2015 +$ npm install --save-dev babelify babel-preset-latest ``` -然后,再用命令行转换ES6脚本。 +然后,再用命令行转换 ES6 脚本。 ```bash $ browserify script.js -o bundle.js \ - -t [ babelify --presets [ es2015 ] ] + -t [ babelify --presets [ latest ] ] ``` 上面代码将ES6脚本`script.js`,转为`bundle.js`,浏览器直接加载后者就可以了。 @@ -435,20 +373,20 @@ $ browserify script.js -o bundle.js \ ```javascript { "browserify": { - "transform": [["babelify", { "presets": ["es2015"] }]] + "transform": [["babelify", { "presets": ["latest"] }]] } } ``` ### 在线转换 -Babel提供一个[REPL在线编译器](https://babeljs.io/repl/),可以在线将ES6代码转为ES5代码。转换后的代码,可以直接作为ES5代码插入网页运行。 +Babel 提供一个[REPL在线编译器](https://babeljs.io/repl/),可以在线将 ES6 代码转为 ES5 代码。转换后的代码,可以直接作为 ES5 代码插入网页运行。 ### 与其他工具的配合 -许多工具需要Babel进行前置转码,这里举两个例子:ESLint和Mocha。 +许多工具需要 Babel 进行前置转码,这里举两个例子:ESLint 和 Mocha。 -ESLint用于静态检查代码的语法和风格,安装命令如下。 +ESLint 用于静态检查代码的语法和风格,安装命令如下。 ```bash $ npm install --save-dev eslint babel-eslint @@ -480,7 +418,7 @@ $ npm install --save-dev eslint babel-eslint } ``` -Mocha则是一个测试框架,如果需要执行使用ES6语法的测试脚本,可以修改`package.json`的`scripts.test`。 +Mocha 则是一个测试框架,如果需要执行使用 ES6 语法的测试脚本,可以修改`package.json`的`scripts.test`。 ```javascript "scripts": { @@ -490,13 +428,13 @@ Mocha则是一个测试框架,如果需要执行使用ES6语法的测试脚本 上面命令中,`--compilers`参数指定脚本的转码器,规定后缀名为`js`的文件,都需要使用`babel-core/register`先转码。 -## Traceur转码器 +## Traceur 转码器 -Google公司的[Traceur](https://github.com/google/traceur-compiler)转码器,也可以将ES6代码转为ES5代码。 +Google公司的[Traceur](https://github.com/google/traceur-compiler)转码器,也可以将 ES6 代码转为 ES5 代码。 ### 直接插入网页 -Traceur允许将ES6代码直接插入网页。首先,必须在网页头部加载Traceur库文件。 +Traceur 允许将 ES6 代码直接插入网页。首先,必须在网页头部加载 Traceur 库文件。 ```html @@ -507,19 +445,19 @@ Traceur允许将ES6代码直接插入网页。首先,必须在网页头部加 ``` -上面代码中,一共有4个`script`标签。第一个是加载Traceur的库文件,第二个和第三个是将这个库文件用于浏览器环境,第四个则是加载用户脚本,这个脚本里面可以使用ES6代码。 +上面代码中,一共有4个`script`标签。第一个是加载 Traceur 的库文件,第二个和第三个是将这个库文件用于浏览器环境,第四个则是加载用户脚本,这个脚本里面可以使用ES6代码。 -注意,第四个`script`标签的`type`属性的值是`module`,而不是`text/javascript`。这是Traceur编译器识别ES6代码的标志,编译器会自动将所有`type=module`的代码编译为ES5,然后再交给浏览器执行。 +注意,第四个`script`标签的`type`属性的值是`module`,而不是`text/javascript`。这是 Traceur 编译器识别 ES6 代码的标志,编译器会自动将所有`type=module`的代码编译为 ES5,然后再交给浏览器执行。 -除了引用外部ES6脚本,也可以直接在网页中放置ES6代码。 +除了引用外部 ES6 脚本,也可以直接在网页中放置 ES6 代码。 ```javascript ``` -正常情况下,上面代码会在控制台打印出9。 +正常情况下,上面代码会在控制台打印出`9`。 -如果想对Traceur的行为有精确控制,可以采用下面参数配置的写法。 +如果想对 Traceur 的行为有精确控制,可以采用下面参数配置的写法。 ```javascript ``` -上面代码中,首先生成Traceur的全局对象`window.System`,然后`System.import`方法可以用来加载ES6模块。加载的时候,需要传入一个配置对象`metadata`,该对象的`traceurOptions`属性可以配置支持ES6功能。如果设为`experimental: true`,就表示除了ES6以外,还支持一些实验性的新功能。 +上面代码中,首先生成Traceur的全局对象`window.System`,然后`System.import`方法可以用来加载 ES6。加载的时候,需要传入一个配置对象`metadata`,该对象的`traceurOptions`属性可以配置支持 ES6 功能。如果设为`experimental: true`,就表示除了 ES6 以外,还支持一些实验性的新功能。 ### 在线转换 -Traceur也提供一个[在线编译器](http://google.github.io/traceur-compiler/demo/repl.html),可以在线将ES6代码转为ES5代码。转换后的代码,可以直接作为ES5代码插入网页运行。 +Traceur也提供一个[在线编译器](http://google.github.io/traceur-compiler/demo/repl.html),可以在线将 ES6 代码转为 ES5 代码。转换后的代码,可以直接作为 ES5 代码插入网页运行。 -上面的例子转为ES5代码运行,就是下面这个样子。 +上面的例子转为 ES5 代码运行,就是下面这个样子。 ```javascript @@ -590,15 +528,15 @@ $traceurRuntime.ModuleStore.getAnonymousModule(function() { ### 命令行转换 -作为命令行工具使用时,Traceur是一个Node的模块,首先需要用Npm安装。 +作为命令行工具使用时,Traceur 是一个 Node 的模块,首先需要用 Npm 安装。 ```bash $ npm install -g traceur ``` -安装成功后,就可以在命令行下使用Traceur了。 +安装成功后,就可以在命令行下使用 Traceur 了。 -Traceur直接运行es6脚本文件,会在标准输出显示运行结果,以前面的`calc.js`为例。 +Traceur 直接运行 ES6 脚本文件,会在标准输出显示运行结果,以前面的`calc.js`为例。 ```bash $ traceur calc.js @@ -606,7 +544,7 @@ Calc constructor 9 ``` -如果要将ES6脚本转为ES5保存,要采用下面的写法。 +如果要将 ES6 脚本转为 ES5 保存,要采用下面的写法。 ```bash $ traceur --script calc.es6.js --out calc.es5.js @@ -622,9 +560,9 @@ $ traceur --script calc.es6.js --out calc.es5.js --experimental 命令行下转换生成的文件,就可以直接放到浏览器中运行。 -### Node.js环境的用法 +### Node 环境的用法 -Traceur的Node.js用法如下(假定已安装traceur模块)。 +Traceur 的 Node用法如下(假定已安装`traceur`模块)。 ```javascript var traceur = require('traceur'); diff --git a/docs/promise.md b/docs/promise.md index 55dbfdf5e..256524198 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -10,7 +10,7 @@ Promise 是异步编程的一种解决方案,比传统的解决方案——回 (1)对象的状态不受外界影响。`Promise`对象代表一个异步操作,有三种状态:`Pending`(进行中)、`Resolved`(已完成,又称 Fulfilled)和`Rejected`(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是`Promise`这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。 -(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。`Promise`对象的状态改变,只有两种可能:从`Pending`变为`Resolved`和从`Pending`变为`Rejected`。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。如果改变已经发生了,就算你再对`Promise`对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。 +(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。`Promise`对象的状态改变,只有两种可能:从`Pending`变为`Resolved`和从`Pending`变为`Rejected`。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。如果改变已经发生了,你再对`Promise`对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。 有了`Promise`对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,`Promise`对象提供统一的接口,使得控制异步操作更加容易。 From 3619d2121ca0ba7506f1f0f909f0f5dc76d60dcf Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 27 Mar 2017 12:45:33 +0800 Subject: [PATCH 231/994] docs(proxy): edit proxy --- docs/proxy.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 790bd6adc..57014cba1 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -637,7 +637,7 @@ proxy.foo = 'bar' ### getOwnPropertyDescriptor() -`getOwnPropertyDescriptor`方法拦截`Object.getOwnPropertyDescriptor`,返回一个属性描述对象或者`undefined`。 +`getOwnPropertyDescriptor`方法拦截`Object.getOwnPropertyDescriptor()`,返回一个属性描述对象或者`undefined`。 ```javascript var handler = { @@ -662,13 +662,13 @@ Object.getOwnPropertyDescriptor(proxy, 'baz') ### getPrototypeOf() -`getPrototypeOf`方法主要用来拦截`Object.getPrototypeOf()`运算符,以及其他一些操作。 +`getPrototypeOf`方法主要用来拦截获取对象原型。具体来说,拦截下面这些操作。 - `Object.prototype.__proto__` - `Object.prototype.isPrototypeOf()` - `Object.getPrototypeOf()` - `Reflect.getPrototypeOf()` -- `instanceof`运算符 +- `instanceof` 下面是一个例子。 @@ -727,7 +727,7 @@ Object.isExtensible(p) // 报错 ### ownKeys() -`ownKeys`方法用来拦截以下操作。 +`ownKeys`方法用来拦截对象自身属性的读取操作。具体来说,拦截以下操作。 - `Object.getOwnPropertyNames()` - `Object.getOwnPropertySymbols()` From 0fb4fcd9416f8c1bc81a342e73b07e232b25be3c Mon Sep 17 00:00:00 2001 From: "Arvin.He" <510205617@qq.com> Date: Tue, 28 Mar 2017 11:38:31 +0800 Subject: [PATCH 232/994] Update number.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "而这两个新方法只对数值有效,非数值一律返回false。" ,这句话对我来说有误导倾向.并非抠字眼,遇到了就顺便提出了. --- docs/number.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/number.md b/docs/number.md index ea152a1b6..e4e72eabf 100644 --- a/docs/number.md +++ b/docs/number.md @@ -94,7 +94,7 @@ ES5通过下面的代码,部署`Number.isNaN()`。 })(this); ``` -它们与传统的全局方法`isFinite()`和`isNaN()`的区别在于,传统方法先调用`Number()`将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,非数值一律返回`false`。 +它们与传统的全局方法`isFinite()`和`isNaN()`的区别在于,传统方法先调用`Number()`将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,isFinite对于非数值一律返回`false`, isNaN只有对于NaN才返回`true`,非NaN一律返回`false`。 ```javascript isFinite(25) // true @@ -106,6 +106,7 @@ isNaN(NaN) // true isNaN("NaN") // true Number.isNaN(NaN) // true Number.isNaN("NaN") // false +Number.isNaN(1) // false ``` ## Number.parseInt(), Number.parseFloat() From b8959b2e6d63acc7671cfc8beefae8df7208e91f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=81=A5=E8=B6=85?= <574805242@qq.com> Date: Tue, 28 Mar 2017 19:34:01 +0800 Subject: [PATCH 233/994] Update object.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 错别字:“预算”->“运算” --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index 8ac6d75d3..62b53996c 100644 --- a/docs/object.md +++ b/docs/object.md @@ -991,7 +991,7 @@ function entries(obj) { ## 对象的扩展运算符 -《数组的扩展》一章中,已经介绍过扩展预算符(`...`)。 +《数组的扩展》一章中,已经介绍过扩展运算符(`...`)。 ```javascript const [a, ...b] = [1, 2, 3]; From d51beedbd61a99ee310676b62d2fa1bba820afb8 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 28 Mar 2017 19:46:30 +0800 Subject: [PATCH 234/994] docs: edit number.isFinite --- docs/async.md | 41 +++++++++++++++++++++++++++++++++++++- docs/generator-async.md | 44 ++++++++++++++++++++++++++++++++++++++--- docs/intro.md | 6 +++--- docs/number.md | 2 +- docs/reflect.md | 26 ++++++++++++++++++++++++ 5 files changed, 111 insertions(+), 8 deletions(-) diff --git a/docs/async.md b/docs/async.md index de1bc598d..ce5885ef9 100644 --- a/docs/async.md +++ b/docs/async.md @@ -100,7 +100,7 @@ function timeout(ms) { async function asyncPrint(value, ms) { await timeout(ms); - console.log(value) + console.log(value); } asyncPrint('hello world', 50); @@ -108,6 +108,23 @@ asyncPrint('hello world', 50); 上面代码指定50毫秒以后,输出`hello world`。 +由于`async`函数返回的是 Promise 对象,可以作为`await`命令的参数。所以,上面的例子也可以写成下面的形式。 + +```javascript +async function timeout(ms) { + await new Promise((resolve) => { + setTimeout(resolve, ms); + }); +} + +async function asyncPrint(value, ms) { + await timeout(ms); + console.log(value); +} + +asyncPrint('hello world', 50); +``` + async 函数有多种使用形式。 ```javascript @@ -315,6 +332,28 @@ async function main() { } ``` +下面的例子使用`try...catch`结构,实现多次重复尝试。 + +```javascript +const superagent = require('superagent'); +const NUM_RETRIES = 3; + +async function test() { + let i; + for (i = 0; i < NUM_RETRIES; ++i) { + try { + await superagent.get('http://google.com/this-throws-an-error'); + break; + } catch(err) {} + } + console.log(i); // 3 +} + +test(); +``` + +上面代码中,如果`await`操作成功,就会使用`break`语句退出循环;如果失败,会被`catch`语句捕捉,然后进入下一轮循环。 + ### 使用注意点 第一点,前面已经说过,`await`命令后面的`Promise`对象,运行结果可能是`rejected`,所以最好把`await`命令放在`try...catch`代码块中。 diff --git a/docs/generator-async.md b/docs/generator-async.md index 79939971c..4018cd141 100644 --- a/docs/generator-async.md +++ b/docs/generator-async.md @@ -544,9 +544,9 @@ var co = require('co'); co(gen); ``` -上面代码中,Generator函数只要传入`co`函数,就会自动执行。 +上面代码中,Generator 函数只要传入`co`函数,就会自动执行。 -`co`函数返回一个Promise对象,因此可以用`then`方法添加回调函数。 +`co`函数返回一个`Promise`对象,因此可以用`then`方法添加回调函数。 ```javascript co(gen).then(function (){ @@ -568,7 +568,7 @@ co(gen).then(function (){ (2)Promise 对象。将异步操作包装成 Promise 对象,用`then`方法交回执行权。 -co 模块其实就是将两种自动执行器(Thunk 函数和 Promise 对象),包装成一个模块。使用 co 的前提条件是,Generator 函数的`yield`命令后面,只能是 Thunk 函数或 Promise 对象。如果数组或对象的成员,全部都是 Promise 对象,也是可以的,详见后文的例子。(4.0 版以后,`yield`命令后面只能是 Promise 对象。) +co 模块其实就是将两种自动执行器(Thunk 函数和 Promise 对象),包装成一个模块。使用 co 的前提条件是,Generator 函数的`yield`命令后面,只能是 Thunk 函数或 Promise 对象。如果数组或对象的成员,全部都是 Promise 对象,也可以使用 co,详见后文的例子。(co v4.0版以后,`yield`命令后面只能是 Promise 对象,不再支持 Thunk 函数。) 上一节已经介绍了基于 Thunk 函数的自动执行器。下面来看,基于 Promise 对象的自动执行器。这是理解 co 模块必须的。 @@ -752,3 +752,41 @@ function* somethingAsync(x) { 上面的代码允许并发三个`somethingAsync`异步操作,等到它们全部完成,才会进行下一步。 +### 实例:处理 Stream + +Node 提供 Stream 模式读写数据,特点是一次只处理数据的一部分,数据分成一块块依次处理,就好像“数据流”一样。这对于处理大规模数据非常有利。Stream 模式使用 EventEmitter API,会释放三个事件。 + +- `data`事件:下一块数据块已经准备好了。 +- `end`事件:整个“数据流”处理“完了。 +- `error`事件:发生错误。 + +使用`Promise.race()`函数,可以判断这三个事件之中哪一个最先发生,只有当`data`时间最先发生时,才进入下一个数据块的处理。从而,通过一个`while`循环,完成所有数据的读取。 + +```javascript +const co = require('co'); +const fs = require('fs'); + +const stream = fs.createReadStream('./les_miserables.txt'); +let valjeanCount = 0; + +co(function*() { + while(true) { + const res = yield Promise.race([ + new Promise(resolve => stream.once('data', resolve)), + new Promise(resolve => stream.once('end', resolve)), + new Promise((resolve, reject) => stream.once('error', reject)) + ]); + if (!res) { + break; + } + stream.removeAllListeners('data'); + stream.removeAllListeners('end'); + stream.removeAllListeners('error'); + valjeanCount += (res.toString().match(/valjean/ig) || []).length; + } + console.log('count:', valjeanCount); // count: 1120 +}); +``` + +上面代码采用 Stream 模式读取《悲惨世界》的文本文件,对于每个数据块都使用`stream.once`方法,在`data`、`end`、`error`三个事件上添加一次性回调函数。变量`res`只有在`data`事件发生时,才有值。然后,累加每个数据块之中`valjean`这个词出现的次数。 + diff --git a/docs/intro.md b/docs/intro.md index e6c9c1403..77412e788 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -48,9 +48,9 @@ ES6 的第一个版本,就这样在2015年6月发布了,正式名称就是 ES6 从开始制定到最后发布,整整用了15年。 -前面提到,ECMAScript 1.0是1997年发布的,接下来的两年,连续发布了 ECMAScript 2.0(1998年6月)和 ECMAScript 3.0(1999年12月)。3.0版是一个巨大的成功,在业界得到广泛支持,成为通行标准,奠定了 JavaScript 语言的基本语法,以后的版本完全继承。直到今天,初学者一开始学习 JavaScript,其实就是在学3.0版的语法。 +前面提到,ECMAScript 1.0 是1997年发布的,接下来的两年,连续发布了 ECMAScript 2.0(1998年6月)和 ECMAScript 3.0(1999年12月)。3.0版是一个巨大的成功,在业界得到广泛支持,成为通行标准,奠定了 JavaScript 语言的基本语法,以后的版本完全继承。直到今天,初学者一开始学习 JavaScript,其实就是在学3.0版的语法。 -2000年,ECMAScript 4.0开始酝酿。这个版本最后没有通过,但是它的大部分内容被 ES6 继承了。因此,ES6 制定的起点其实是2000年。 +2000年,ECMAScript 4.0 开始酝酿。这个版本最后没有通过,但是它的大部分内容被 ES6 继承了。因此,ES6 制定的起点其实是2000年。 为什么 ES4 没有通过呢?因为这个版本太激进了,对 ES3 做了彻底升级,导致标准委员会的一些成员不愿意接受。ECMA 的第39号技术专家委员会(Technical Committee 39,简称TC39)负责制订 ECMAScript 标准,成员包括 Microsoft、Mozilla、Google 等大公司。 @@ -72,7 +72,7 @@ ES6 从开始制定到最后发布,整整用了15年。 各大浏览器的最新版本,对 ES6 的支持可以查看[kangax.github.io/es5-compat-table/es6/](http://kangax.github.io/es5-compat-table/es6/)。随着时间的推移,支持度已经越来越高了,超过90%的 ES6 语法特性都实现了。 -Node 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持更高。除了那些默认打开的功能,还有一些语法功能已经实现了,但是默认没有打开。使用下面的命令,可以查看 Node 那些没有打开的 ES6 特性。 +Node 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持度更高。除了那些默认打开的功能,还有一些语法功能已经实现了,但是默认没有打开。使用下面的命令,可以查看 Node 已经实现的 ES6 特性。 ```bash $ node --v8-options | grep harmony diff --git a/docs/number.md b/docs/number.md index e4e72eabf..e10c0bda6 100644 --- a/docs/number.md +++ b/docs/number.md @@ -94,7 +94,7 @@ ES5通过下面的代码,部署`Number.isNaN()`。 })(this); ``` -它们与传统的全局方法`isFinite()`和`isNaN()`的区别在于,传统方法先调用`Number()`将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,isFinite对于非数值一律返回`false`, isNaN只有对于NaN才返回`true`,非NaN一律返回`false`。 +它们与传统的全局方法`isFinite()`和`isNaN()`的区别在于,传统方法先调用`Number()`将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,`Number.isFinite()`对于非数值一律返回`false`, `Number.isNaN()`只有对于`NaN`才返回`true`,非`NaN`一律返回`false`。 ```javascript isFinite(25) // true diff --git a/docs/reflect.md b/docs/reflect.md index ed9b028bd..349020144 100644 --- a/docs/reflect.md +++ b/docs/reflect.md @@ -193,6 +193,32 @@ Reflect.set(1, 'foo', {}) // 报错 Reflect.set(false, 'foo', {}) // 报错 ``` +注意,`Reflect.set`会触发`Proxy.defineProperty`拦截。 + +```javascript +let p = { + a: 'a' +}; + +let handler = { + set(target,key,value,receiver) { + console.log('set'); + Reflect.set(target,key,value,receiver) + }, + defineProperty(target, key, attribute) { + console.log('defineProperty'); + Reflect.defineProperty(target,key,attribute); + } +}; + +let obj = new Proxy(p, handler); +obj.a = 'A'; +// set +// defineProperty +``` + +上面代码中,`Proxy.set`拦截中使用了`Reflect.set`,导致触发`Proxy.defineProperty`拦截。 + ### Reflect.has(obj, name) `Reflect.has`方法对应`name in obj`里面的`in`运算符。 From e3cf5bd2251bda741201ae843868f69f09f4e243 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 28 Mar 2017 20:22:04 +0800 Subject: [PATCH 235/994] docs(class): edit class/super --- docs/class.md | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/docs/class.md b/docs/class.md index 92811f8a6..3904e0779 100644 --- a/docs/class.md +++ b/docs/class.md @@ -777,7 +777,7 @@ class B extends A { 上面代码中,`super()`用在`B`类的`m`方法之中,就会造成句法错误。 -第二种情况,`super`作为对象时,指向父类的原型对象。 +第二种情况,`super`作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。 ```javascript class A { @@ -796,7 +796,7 @@ class B extends A { let b = new B(); ``` -上面代码中,子类`B`当中的`super.p()`,就是将`super`当作一个对象使用。这时,`super`指向`A.prototype`,所以`super.p()`就相当于`A.prototype.p()`。 +上面代码中,子类`B`当中的`super.p()`,就是将`super`当作一个对象使用。这时,`super`在普通方法之中,指向`A.prototype`,所以`super.p()`就相当于`A.prototype.p()`。 这里需要注意,由于`super`指向父类的原型对象,所以定义在父类实例上的方法或属性,是无法通过`super`调用的。 @@ -889,6 +889,37 @@ let b = new B(); 上面代码中,`super.x`赋值为`3`,这时等同于对`this.x`赋值为`3`。而当读取`super.x`的时候,读的是`A.prototype.x`,所以返回`undefined`。 +如果`super`作为对象,用在静态方法之中,这时`super`将指向父类,而不是父类的原型对象。 + +```javascript +class Parent { + static myMethod(msg) { + console.log('static', msg); + } + + myMethod(msg) { + console.log('instance', msg); + } +} + +class Child extends Parent { + static myMethod(msg) { + super.myMethod(msg); + } + + myMethod(msg) { + super.myMethod(msg); + } +} + +Child.myMethod(1); // static 1 + +var child = new Child(); +child.myMethod(2); // instance 2 +``` + +上面代码中,`super`在静态方法之中指向父类,在普通方法之中指向父类的原型对象。 + 注意,使用`super`的时候,必须显式指定是作为函数、还是作为对象使用,否则会报错。 ```javascript From ccefd899e5e5d36443b97614b3993e38ad2a7dcc Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 29 Mar 2017 13:41:41 +0800 Subject: [PATCH 236/994] docs(reflect): edit Reflect.apply --- docs/reflect.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reflect.md b/docs/reflect.md index 349020144..7d1d211b8 100644 --- a/docs/reflect.md +++ b/docs/reflect.md @@ -341,7 +341,7 @@ const type = Object.prototype.toString.call(youngest); // 新写法 const youngest = Reflect.apply(Math.min, Math, ages); const oldest = Reflect.apply(Math.max, Math, ages); -const type = Reflect.apply(Object.prototype.toString, youngest); +const type = Reflect.apply(Object.prototype.toString, youngest, []); ``` ### Reflect.defineProperty(target, propertyKey, attributes) From cd360410cfa3343484fe669e973ea13f8af8b7bf Mon Sep 17 00:00:00 2001 From: Toxichl <472590061@qq.com> Date: Wed, 29 Mar 2017 14:46:42 +0800 Subject: [PATCH 237/994] The position of the asterisk is incorrect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Combined with the previous content: ``` 由于Generator函数仍然是普通函数,所以一般的写法是上面的第三种,即星号紧跟在`function`关键字后面。**本书也采用这种写法**。 ``` so, the position of the asterisk is incorrect ... --- docs/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator.md b/docs/generator.md index b2b388aaf..aa44375f5 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -585,7 +585,7 @@ try { Generator函数体外抛出的错误,可以在函数体内捕获;反过来,Generator函数体内抛出的错误,也可以被函数体外的`catch`捕获。 ```javascript -function *foo() { +function* foo() { var x = yield 3; var y = x.toUpperCase(); yield y; From 7e2b0c709f4bd1f78304d3a6d9795e443d16be49 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 29 Mar 2017 14:53:21 +0800 Subject: [PATCH 238/994] docs(number): edit number --- css/app.css | 1 + docs/number.md | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/css/app.css b/css/app.css index fe21dc7b4..a2e2f3c51 100644 --- a/css/app.css +++ b/css/app.css @@ -120,6 +120,7 @@ input[type=search] { height: 18px; text-align: left; border: none; + outline: none; } input.searchButton { diff --git a/docs/number.md b/docs/number.md index e10c0bda6..3a262a545 100644 --- a/docs/number.md +++ b/docs/number.md @@ -658,11 +658,11 @@ ES2016 新增了一个指数运算符(`**`)。 指数运算符可以与等号结合,形成一个新的赋值运算符(`**=`)。 ```javascript -let a = 2; +let a = 1.5; a **= 2; // 等同于 a = a * a; -let b = 3; +let b = 4; b **= 3; // 等同于 b = b * b * b; ``` From 87c0669a0bb9aeca272934b0162293407d92a977 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AF=B7=E5=8F=AB=E6=88=91=E7=8E=8B=E7=A3=8A=E5=90=8C?= =?UTF-8?q?=E5=AD=A6=28Wanglei=29?= Date: Sat, 1 Apr 2017 17:17:44 +0800 Subject: [PATCH 239/994] update generator-async.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ‘next法返回值的value属性’改为‘next返回值的value属性’ --- docs/generator-async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator-async.md b/docs/generator-async.md index 4018cd141..510113f43 100644 --- a/docs/generator-async.md +++ b/docs/generator-async.md @@ -138,7 +138,7 @@ g.next() // { value: undefined, done: true } Generator 函数可以暂停执行和恢复执行,这是它能封装异步任务的根本原因。除此之外,它还有两个特性,使它可以作为异步编程的完整解决方案:函数体内外的数据交换和错误处理机制。 -`next`法返回值的value属性,是 Generator 函数向外输出数据;`next`方法还可以接受参数,向 Generator 函数体内输入数据。 +`next`返回值的value属性,是 Generator 函数向外输出数据;`next`方法还可以接受参数,向 Generator 函数体内输入数据。 ```javascript function* gen(x){ From ea23aa7291536d22c8eb2dd14529f32cfdfeb43c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 6 Apr 2017 17:45:05 +0800 Subject: [PATCH 240/994] docs(generator): edit generator-async --- docs/generator-async.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/generator-async.md b/docs/generator-async.md index 4018cd141..bb2dc48b4 100644 --- a/docs/generator-async.md +++ b/docs/generator-async.md @@ -760,7 +760,7 @@ Node 提供 Stream 模式读写数据,特点是一次只处理数据的一部 - `end`事件:整个“数据流”处理“完了。 - `error`事件:发生错误。 -使用`Promise.race()`函数,可以判断这三个事件之中哪一个最先发生,只有当`data`时间最先发生时,才进入下一个数据块的处理。从而,通过一个`while`循环,完成所有数据的读取。 +使用`Promise.race()`函数,可以判断这三个事件之中哪一个最先发生,只有当`data`事件最先发生时,才进入下一个数据块的处理。从而,我们可以通过一个`while`循环,完成所有数据的读取。 ```javascript const co = require('co'); @@ -788,5 +788,5 @@ co(function*() { }); ``` -上面代码采用 Stream 模式读取《悲惨世界》的文本文件,对于每个数据块都使用`stream.once`方法,在`data`、`end`、`error`三个事件上添加一次性回调函数。变量`res`只有在`data`事件发生时,才有值。然后,累加每个数据块之中`valjean`这个词出现的次数。 +上面代码采用 Stream 模式读取《悲惨世界》的文本文件,对于每个数据块都使用`stream.once`方法,在`data`、`end`、`error`三个事件上添加一次性回调函数。变量`res`只有在`data`事件发生时才有值,然后累加每个数据块之中`valjean`这个词出现的次数。 From 6975897049bdf0b477534caf9870b04983597ff5 Mon Sep 17 00:00:00 2001 From: Jacty Date: Mon, 10 Apr 2017 01:49:05 +0800 Subject: [PATCH 241/994] type mistake type mistake --- docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro.md b/docs/intro.md index 77412e788..fe7a71826 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -150,7 +150,7 @@ $ npm install --save-dev babel-preset-stage-3 } ``` -注意,以下所有 Babe l工具和模块的使用,都必须先写好`.babelrc`。 +注意,以下所有 Babel工具和模块的使用,都必须先写好`.babelrc`。 ### 命令行转码`babel-cli` From 0fbc3306bea2f04c35e72139a898615bc61cc877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=90=E9=9C=96?= <304647173@qq.com> Date: Tue, 11 Apr 2017 13:07:06 +0800 Subject: [PATCH 242/994] =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generator函数的`next`方法输出的内容顺序一般是`value`在前,`done`在后。 --- docs/generator.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/generator.md b/docs/generator.md index aa44375f5..2197c4857 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -699,12 +699,12 @@ function* numbers () { } yield 6; } -var g = numbers() -g.next() // { done: false, value: 1 } -g.next() // { done: false, value: 2 } -g.return(7) // { done: false, value: 4 } -g.next() // { done: false, value: 5 } -g.next() // { done: true, value: 7 } +var g = numbers(); +g.next() // { value: 1, done: false } +g.next() // { value: 2, done: false } +g.return(7) // { value: 4, done: false } +g.next() // { value: 5, done: false } +g.next() // { value: 7, done: true } ``` 上面代码中,调用`return`方法后,就开始执行`finally`代码块,然后等到`finally`代码块执行完,再执行`return`方法。 From 5a7e690e5f148333987c8a249df67e538b20f623 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 12 Apr 2017 13:14:13 +0800 Subject: [PATCH 243/994] =?UTF-8?q?=E4=BF=AE=E6=AD=A3querySelectorAll?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E7=9A=84NodeList=E9=9B=86=E5=90=88=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E4=BD=BF=E7=94=A8forEach=E6=96=B9=E6=B3=95=E9=81=8D?= =?UTF-8?q?=E5=8E=86=E7=9A=84=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正querySelectorAll返回的NodeList集合不能使用forEach方法遍历的描述. 1.在chrome中querySelectorAll返回的NodeList集合可以使用forEach方法遍历 2.document.querySelectorAll('td').forEach(function (p) { console.log(p instanceof Object); }); 输出: 6 true undefined --- docs/array.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/array.md b/docs/array.md index f3626270b..49097b510 100644 --- a/docs/array.md +++ b/docs/array.md @@ -37,7 +37,7 @@ function foo() { } ``` -上面代码中,`querySelectorAll`方法返回的是一个类似数组的对象,只有将这个对象转为真正的数组,才能使用`forEach`方法。 +上面代码中,`querySelectorAll`方法返回的是一个类似数组的对象,可以将这个对象转为真正的数组,再使用`forEach`方法。 只要是部署了Iterator接口的数据结构,`Array.from`都能将其转为数组。 From 3aed4ae0fbee54534bd15c4174f2d22a4fb27bb6 Mon Sep 17 00:00:00 2001 From: Jacty Date: Thu, 13 Apr 2017 02:58:57 +0800 Subject: [PATCH 244/994] typo mistake typo mistake --- docs/string.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/string.md b/docs/string.md index 735c5a1b8..0bb4c7f57 100644 --- a/docs/string.md +++ b/docs/string.md @@ -124,7 +124,7 @@ String.fromCharCode(0x20BB7) 上面代码中,`String.fromCharCode`不能识别大于`0xFFFF`的码点,所以`0x20BB7`就发生了溢出,最高位`2`被舍弃了,最后返回码点`U+0BB7`对应的字符,而不是码点`U+20BB7`对应的字符。 -ES6提供了`String.fromCodePoint`方法,可以识别`0xFFFF`的字符,弥补了`String.fromCharCode`方法的不足。在作用上,正好与`codePointAt`方法相反。 +ES6提供了`String.fromCodePoint`方法,可以识别大于`0xFFFF`的字符,弥补了`String.fromCharCode`方法的不足。在作用上,正好与`codePointAt`方法相反。 ```javascript String.fromCodePoint(0x20BB7) From c17b484d0e56c33549bbf92399494300407ffc86 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 13 Apr 2017 17:23:37 +0800 Subject: [PATCH 245/994] docs(set): edit map --- docs/set-map.md | 394 +++++++++++++++++++++++++++++++----------------- 1 file changed, 252 insertions(+), 142 deletions(-) diff --git a/docs/set-map.md b/docs/set-map.md index ebba6ded6..7486a3307 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -25,12 +25,12 @@ Set 函数可以接受一个数组(或类似数组的对象)作为参数, ```javascript // 例一 -var set = new Set([1, 2, 3, 4, 4]); +const set = new Set([1, 2, 3, 4, 4]); [...set] // [1, 2, 3, 4] // 例二 -var items = new Set([1, 2, 3, 4, 5, 5, 5, 5]); +const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]); items.size // 5 // 例三 @@ -38,7 +38,7 @@ function divs () { return [...document.querySelectorAll('div')]; } -var set = new Set(divs()); +const set = new Set(divs()); set.size // 56 // 类似于 @@ -116,7 +116,7 @@ s.has(2) // false ```javascript // 对象的写法 -var properties = { +const properties = { 'width': 1, 'height': 1 }; @@ -126,7 +126,7 @@ if (properties[someName]) { } // Set的写法 -var properties = new Set(); +const properties = new Set(); properties.add('width'); properties.add('height'); @@ -136,11 +136,11 @@ if (properties.has(someName)) { } ``` -`Array.from`方法可以将Set结构转为数组。 +`Array.from`方法可以将 Set 结构转为数组。 ```javascript -var items = new Set([1, 2, 3, 4, 5]); -var array = Array.from(items); +const items = new Set([1, 2, 3, 4, 5]); +const array = Array.from(items); ``` 这就提供了去除数组重复成员的另一种方法。 @@ -296,59 +296,60 @@ set = new Set(Array.from(set, val => val * 2)); ## WeakSet -WeakSet结构与Set类似,也是不重复的值的集合。但是,它与Set有两个区别。 +WeakSet 结构与 Set 类似,也是不重复的值的集合。但是,它与 Set 有两个区别。 -首先,WeakSet的成员只能是对象,而不能是其他类型的值。 - -其次,WeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于WeakSet之中。这个特点意味着,无法引用WeakSet的成员,因此WeakSet是不可遍历的。 +首先,WeakSet 的成员只能是对象,而不能是其他类型的值。 ```javascript -var ws = new WeakSet(); +const ws = new WeakSet(); ws.add(1) // TypeError: Invalid value used in weak set ws.add(Symbol()) // TypeError: invalid value used in weak set ``` -上面代码试图向WeakSet添加一个数值和`Symbol`值,结果报错,因为WeakSet只能放置对象。 +上面代码试图向 WeakSet 添加一个数值和`Symbol`值,结果报错,因为 WeakSet 只能放置对象。 + +其次,WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中。这个特点意味着,无法引用 WeakSet 的成员,因此 WeakSet 是不可遍历的。 -WeakSet是一个构造函数,可以使用`new`命令,创建WeakSet数据结构。 +WeakSet 是一个构造函数,可以使用`new`命令,创建 WeakSet 数据结构。 ```javascript -var ws = new WeakSet(); +const ws = new WeakSet(); ``` -作为构造函数,WeakSet可以接受一个数组或类似数组的对象作为参数。(实际上,任何具有iterable接口的对象,都可以作为WeakSet的参数。)该数组的所有成员,都会自动成为WeakSet实例对象的成员。 +作为构造函数,WeakSet 可以接受一个数组或类似数组的对象作为参数。(实际上,任何具有 Iterable 接口的对象,都可以作为 WeakSet 的参数。)该数组的所有成员,都会自动成为 WeakSet 实例对象的成员。 ```javascript -var a = [[1,2], [3,4]]; -var ws = new WeakSet(a); +const a = [[1, 2], [3, 4]]; +const ws = new WeakSet(a); +// WeakSet {[1, 2], [3, 4]} ``` -上面代码中,`a`是一个数组,它有两个成员,也都是数组。将`a`作为WeakSet构造函数的参数,`a`的成员会自动成为WeakSet的成员。 +上面代码中,`a`是一个数组,它有两个成员,也都是数组。将`a`作为 WeakSet 构造函数的参数,`a`的成员会自动成为 WeakSet 的成员。 -注意,是`a`数组的成员成为WeakSet的成员,而不是`a`数组本身。这意味着,数组的成员只能是对象。 +注意,是`a`数组的成员成为 WeakSet 的成员,而不是`a`数组本身。这意味着,数组的成员只能是对象。 ```javascript -var b = [3, 4]; -var ws = new WeakSet(b); +const b = [3, 4]; +const ws = new WeakSet(b); // Uncaught TypeError: Invalid value used in weak set(…) ``` -上面代码中,数组`b`的成员不是对象,加入WeaKSet就会报错。 +上面代码中,数组`b`的成员不是对象,加入 WeaKSet 就会报错。 -WeakSet结构有以下三个方法。 +WeakSet 结构有以下三个方法。 -- **WeakSet.prototype.add(value)**:向WeakSet实例添加一个新成员。 -- **WeakSet.prototype.delete(value)**:清除WeakSet实例的指定成员。 -- **WeakSet.prototype.has(value)**:返回一个布尔值,表示某个值是否在WeakSet实例之中。 +- **WeakSet.prototype.add(value)**:向 WeakSet 实例添加一个新成员。 +- **WeakSet.prototype.delete(value)**:清除 WeakSet 实例的指定成员。 +- **WeakSet.prototype.has(value)**:返回一个布尔值,表示某个值是否在 WeakSet 实例之中。 下面是一个例子。 ```javascript -var ws = new WeakSet(); -var obj = {}; -var foo = {}; +const ws = new WeakSet(); +const obj = {}; +const foo = {}; ws.add(window); ws.add(obj); @@ -394,25 +395,25 @@ class Foo { ## Map -### Map结构的目的和基本用法 +### 含义和基本用法 -JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。 +JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。 ```javascript -var data = {}; -var element = document.getElementById('myDiv'); +const data = {}; +const element = document.getElementById('myDiv'); data[element] = 'metadata'; data['[object HTMLDivElement]'] // "metadata" ``` -上面代码原意是将一个DOM节点作为对象`data`的键,但是由于对象只接受字符串作为键名,所以`element`被自动转为字符串`[object HTMLDivElement]`。 +上面代码原意是将一个 DOM 节点作为对象`data`的键,但是由于对象只接受字符串作为键名,所以`element`被自动转为字符串`[object HTMLDivElement]`。 -为了解决这个问题,ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。 +为了解决这个问题,ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。 ```javascript -var m = new Map(); -var o = {p: 'Hello World'}; +const m = new Map(); +const o = {p: 'Hello World'}; m.set(o, 'content') m.get(o) // "content" @@ -422,12 +423,12 @@ m.delete(o) // true m.has(o) // false ``` -上面代码使用`set`方法,将对象`o`当作`m`的一个键,然后又使用`get`方法读取这个键,接着使用`delete`方法删除了这个键。 +上面代码使用 Map 结构的`set`方法,将对象`o`当作`m`的一个键,然后又使用`get`方法读取这个键,接着使用`delete`方法删除了这个键。 -作为构造函数,Map也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。 +上面的例子展示了如何向 Map 添加成员。作为构造函数,Map 也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。 ```javascript -var map = new Map([ +const map = new Map([ ['name', '张三'], ['title', 'Author'] ]); @@ -439,35 +440,44 @@ map.has('title') // true map.get('title') // "Author" ``` -上面代码在新建Map实例时,就指定了两个键`name`和`title`。 +上面代码在新建 Map 实例时,就指定了两个键`name`和`title`。 -Map构造函数接受数组作为参数,实际上执行的是下面的算法。 +`Map`构造函数接受数组作为参数,实际上执行的是下面的算法。 ```javascript -var items = [ +const items = [ ['name', '张三'], ['title', 'Author'] ]; -var map = new Map(); -items.forEach(([key, value]) => map.set(key, value)); + +const map = new Map(); + +items.forEach( + ([key, value]) => map.set(key, value) +); ``` -下面的例子中,字符串`true`和布尔值`true`是两个不同的键。 +事实上,不仅仅是数组,任何具有 Iterator 接口的数据结构(详见《Iterator》一章)都可以当作`Map`构造函数的参数。这就是说,`Set`和`Map`都可以用来生成新的 Map。 ```javascript -var m = new Map([ - [true, 'foo'], - ['true', 'bar'] +const set = new Set([ + ['foo', 1], + ['bar', 2] ]); +const m1 = new Map(set); +m1.get('foo') // 1 -m.get(true) // 'foo' -m.get('true') // 'bar' +const m2 = new Map([['baz', 3]]); +const m3 = new Map(m2); +m3.get('baz') // 3 ``` +上面代码中,我们分别使用 Set 对象和 Map 对象,当作`Map`构造函数的参数,结果都生成了新的 Map 对象。 + 如果对同一个键多次赋值,后面的值将覆盖前面的值。 ```javascript -let map = new Map(); +const map = new Map(); map .set(1, 'aaa') @@ -485,10 +495,10 @@ new Map().get('asfddfsasadf') // undefined ``` -注意,只有对同一个对象的引用,Map结构才将其视为同一个键。这一点要非常小心。 +注意,只有对同一个对象的引用,Map 结构才将其视为同一个键。这一点要非常小心。 ```javascript -var map = new Map(); +const map = new Map(); map.set(['a'], 555); map.get(['a']) // undefined @@ -496,13 +506,13 @@ map.get(['a']) // undefined 上面代码的`set`和`get`方法,表面是针对同一个键,但实际上这是两个值,内存地址是不一样的,因此`get`方法无法读取该键,返回`undefined`。 -同理,同样的值的两个实例,在Map结构中被视为两个键。 +同理,同样的值的两个实例,在 Map 结构中被视为两个键。 ```javascript -var map = new Map(); +const map = new Map(); -var k1 = ['a']; -var k2 = ['a']; +const k1 = ['a']; +const k2 = ['a']; map .set(k1, 111) @@ -512,20 +522,28 @@ map.get(k1) // 111 map.get(k2) // 222 ``` -上面代码中,变量`k1`和`k2`的值是一样的,但是它们在Map结构中被视为两个键。 +上面代码中,变量`k1`和`k2`的值是一样的,但是它们在 Map 结构中被视为两个键。 -由上可知,Map的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题,我们扩展别人的库的时候,如果使用对象作为键名,就不用担心自己的属性与原作者的属性同名。 +由上可知,Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题,我们扩展别人的库的时候,如果使用对象作为键名,就不用担心自己的属性与原作者的属性同名。 -如果Map的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map将其视为一个键,包括`0`和`-0`。另外,虽然`NaN`不严格相等于自身,但Map将其视为同一个键。 +如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键,包括`0`和`-0`,布尔值`true`和字符串`true`则是两个不同的键。另外,`undefined`和`null`也是两个不同的键。虽然`NaN`不严格相等于自身,但 Map 将其视为同一个键。 ```javascript let map = new Map(); -map.set(NaN, 123); -map.get(NaN) // 123 - map.set(-0, 123); map.get(+0) // 123 + +map.set(true, 1); +map.set('true', 2); +map.get(true) // 1 + +map.set(undefined, 3); +map.set(null, 4); +map.get(undefined) // 3 + +map.set(NaN, 123); +map.get(NaN) // 123 ``` ### 实例的属性和操作方法 @@ -534,10 +552,10 @@ Map结构的实例有以下属性和操作方法。 **(1)size属性** -`size`属性返回Map结构的成员总数。 +`size`属性返回 Map 结构的成员总数。 ```javascript -let map = new Map(); +const map = new Map(); map.set('foo', true); map.set('bar', false); @@ -546,17 +564,17 @@ map.size // 2 **(2)set(key, value)** -`set`方法设置`key`所对应的键值,然后返回整个Map结构。如果`key`已经有值,则键值会被更新,否则就新生成该键。 +`set`方法设置键名`key`对应的键值为`value`,然后返回整个 Map 结构。如果`key`已经有值,则键值会被更新,否则就新生成该键。 ```javascript -var m = new Map(); +const m = new Map(); -m.set("edition", 6) // 键是字符串 -m.set(262, "standard") // 键是数值 -m.set(undefined, "nah") // 键是undefined +m.set('edition', 6) // 键是字符串 +m.set(262, 'standard') // 键是数值 +m.set(undefined, 'nah') // 键是 undefined ``` -`set`方法返回的是Map本身,因此可以采用链式写法。 +`set`方法返回的是当前的`Map`对象,因此可以采用链式写法。 ```javascript let map = new Map() @@ -570,43 +588,44 @@ let map = new Map() `get`方法读取`key`对应的键值,如果找不到`key`,返回`undefined`。 ```javascript -var m = new Map(); +const m = new Map(); -var hello = function() {console.log("hello");} -m.set(hello, "Hello ES6!") // 键是函数 +const hello = function() {console.log('hello');}; +m.set(hello, 'Hello ES6!') // 键是函数 m.get(hello) // Hello ES6! ``` **(4)has(key)** -`has`方法返回一个布尔值,表示某个键是否在Map数据结构中。 +`has`方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。 ```javascript -var m = new Map(); +const m = new Map(); -m.set("edition", 6); -m.set(262, "standard"); -m.set(undefined, "nah"); +m.set('edition', 6); +m.set(262, 'standard'); +m.set(undefined, 'nah'); -m.has("edition") // true -m.has("years") // false +m.has('edition') // true +m.has('years') // false m.has(262) // true m.has(undefined) // true ``` **(5)delete(key)** -`delete`方法删除某个键,返回true。如果删除失败,返回false。 +`delete`方法删除某个键,返回`true`。如果删除失败,返回`false`。 ```javascript -var m = new Map(); -m.set(undefined, "nah"); +const m = new Map(); +m.set(undefined, 'nah'); m.has(undefined) // true m.delete(undefined) m.has(undefined) // false ``` + **(6)clear()** `clear`方法清除所有成员,没有返回值。 @@ -623,19 +642,17 @@ map.size // 0 ### 遍历方法 -Map原生提供三个遍历器生成函数和一个遍历方法。 +Map 结构原生提供三个遍历器生成函数和一个遍历方法。 - `keys()`:返回键名的遍历器。 - `values()`:返回键值的遍历器。 - `entries()`:返回所有成员的遍历器。 -- `forEach()`:遍历Map的所有成员。 +- `forEach()`:遍历 Map 的所有成员。 -需要特别注意的是,Map的遍历顺序就是插入顺序。 - -下面是使用实例。 +需要特别注意的是,Map 的遍历顺序就是插入顺序。 ```javascript -let map = new Map([ +const map = new Map([ ['F', 'no'], ['T', 'yes'], ]); @@ -662,24 +679,28 @@ for (let item of map.entries()) { for (let [key, value] of map.entries()) { console.log(key, value); } +// "F" "no" +// "T" "yes" // 等同于使用map.entries() for (let [key, value] of map) { console.log(key, value); } +// "F" "no" +// "T" "yes" ``` -上面代码最后的那个例子,表示Map结构的默认遍历器接口(`Symbol.iterator`属性),就是`entries`方法。 +上面代码最后的那个例子,表示 Map 结构的默认遍历器接口(`Symbol.iterator`属性),就是`entries`方法。 ```javascript map[Symbol.iterator] === map.entries // true ``` -Map结构转为数组结构,比较快速的方法是结合使用扩展运算符(`...`)。 +Map 结构转为数组结构,比较快速的方法是使用扩展运算符(`...`)。 ```javascript -let map = new Map([ +const map = new Map([ [1, 'one'], [2, 'two'], [3, 'three'], @@ -698,26 +719,26 @@ let map = new Map([ // [[1,'one'], [2, 'two'], [3, 'three']] ``` -结合数组的`map`方法、`filter`方法,可以实现Map的遍历和过滤(Map本身没有`map`和`filter`方法)。 +结合数组的`map`方法、`filter`方法,可以实现 Map 的遍历和过滤(Map 本身没有`map`和`filter`方法)。 ```javascript -let map0 = new Map() +const map0 = new Map() .set(1, 'a') .set(2, 'b') .set(3, 'c'); -let map1 = new Map( +const map1 = new Map( [...map0].filter(([k, v]) => k < 3) ); -// 产生Map结构 {1 => 'a', 2 => 'b'} +// 产生 Map 结构 {1 => 'a', 2 => 'b'} -let map2 = new Map( +const map2 = new Map( [...map0].map(([k, v]) => [k * 2, '_' + v]) ); -// 产生Map结构 {2 => '_a', 4 => '_b', 6 => '_c'} +// 产生 Map 结构 {2 => '_a', 4 => '_b', 6 => '_c'} ``` -此外,Map还有一个`forEach`方法,与数组的`forEach`方法类似,也可以实现遍历。 +此外,Map 还有一个`forEach`方法,与数组的`forEach`方法类似,也可以实现遍历。 ```javascript map.forEach(function(value, key, map) { @@ -728,7 +749,7 @@ map.forEach(function(value, key, map) { `forEach`方法还可以接受第二个参数,用来绑定`this`。 ```javascript -var reporter = { +const reporter = { report: function(key, value) { console.log("Key: %s, Value: %s", key, value); } @@ -743,28 +764,36 @@ map.forEach(function(value, key, map) { ### 与其他数据结构的互相转换 -**(1)Map转为数组** +**(1)Map 转为数组** -前面已经提过,Map转为数组最方便的方法,就是使用扩展运算符(...)。 +前面已经提过,Map 转为数组最方便的方法,就是使用扩展运算符(`...`)。 ```javascript -let myMap = new Map().set(true, 7).set({foo: 3}, ['abc']); +const myMap = new Map() + .set(true, 7) + .set({foo: 3}, ['abc']); [...myMap] // [ [ true, 7 ], [ { foo: 3 }, [ 'abc' ] ] ] ``` -**(2)数组转为Map** +**(2)数组 转为 Map** -将数组转入Map构造函数,就可以转为Map。 +将数组转入 Map 构造函数,就可以转为 Map。 ```javascript -new Map([[true, 7], [{foo: 3}, ['abc']]]) -// Map {true => 7, Object {foo: 3} => ['abc']} +new Map([ + [true, 7], + [{foo: 3}, ['abc']] +]) +// Map { +// true => 7, +// Object {foo: 3} => ['abc'] +// } ``` -**(3)Map转为对象** +**(3)Map 转为对象** -如果所有Map的键都是字符串,它可以转为对象。 +如果所有 Map 的键都是字符串,它可以转为对象。 ```javascript function strMapToObj(strMap) { @@ -775,12 +804,14 @@ function strMapToObj(strMap) { return obj; } -let myMap = new Map().set('yes', true).set('no', false); +const myMap = new Map() + .set('yes', true) + .set('no', false); strMapToObj(myMap) // { yes: true, no: false } ``` -**(4)对象转为Map** +**(4)对象转为 Map** ```javascript function objToStrMap(obj) { @@ -792,12 +823,12 @@ function objToStrMap(obj) { } objToStrMap({yes: true, no: false}) -// [ [ 'yes', true ], [ 'no', false ] ] +// Map {"yes" => true, "no" => false} ``` -**(5)Map转为JSON** +**(5)Map 转为 JSON** -Map转为JSON要区分两种情况。一种情况是,Map的键名都是字符串,这时可以选择转为对象JSON。 +Map 转为 JSON 要区分两种情况。一种情况是,Map 的键名都是字符串,这时可以选择转为对象 JSON。 ```javascript function strMapToJson(strMap) { @@ -809,7 +840,7 @@ strMapToJson(myMap) // '{"yes":true,"no":false}' ``` -另一种情况是,Map的键名有非字符串,这时可以选择转为数组JSON。 +另一种情况是,Map 的键名有非字符串,这时可以选择转为数组 JSON。 ```javascript function mapToArrayJson(map) { @@ -821,20 +852,20 @@ mapToArrayJson(myMap) // '[[true,7],[{"foo":3},["abc"]]]' ``` -**(6)JSON转为Map** +**(6)JSON 转为 Map** -JSON转为Map,正常情况下,所有键名都是字符串。 +JSON 转为 Map,正常情况下,所有键名都是字符串。 ```javascript function jsonToStrMap(jsonStr) { return objToStrMap(JSON.parse(jsonStr)); } -jsonToStrMap('{"yes":true,"no":false}') +jsonToStrMap('{"yes": true, "no": false}') // Map {'yes' => true, 'no' => false} ``` -但是,有一种特殊情况,整个JSON就是一个数组,且每个数组成员本身,又是一个有两个成员的数组。这时,它可以一一对应地转为Map。这往往是数组转为JSON的逆操作。 +但是,有一种特殊情况,整个 JSON 就是一个数组,且每个数组成员本身,又是一个有两个成员的数组。这时,它可以一一对应地转为Map。这往往是数组转为 JSON 的逆操作。 ```javascript function jsonToMap(jsonStr) { @@ -847,27 +878,74 @@ jsonToMap('[[true,7],[{"foo":3},["abc"]]]') ## WeakMap -`WeakMap`结构与`Map`结构基本类似,唯一的区别是它只接受对象作为键名(`null`除外),不接受其他类型的值作为键名,而且键名所指向的对象,不计入垃圾回收机制。 +### 含义和用法 + +`WeakMap`结构与`Map`结构类似,也是用于生成键值对。 + +```javascript +// WeakMap 可以使用 set 方法添加成员 +const wm1 = new WeakMap(); +const key = {foo: 1}; +wm1.set(key, 2); +wm1.get(key) // 2 + +// WeakMap 也可以接受一个数组, +// 作为构造函数的参数 +const k1 = [1, 2, 3]; +const k2 = [4, 5, 6]; +const wm2 = new WeakMap([[k1, 'foo'], [k2, 'bar']]); +wm2.get(k2) // "bar" +``` + +`WeakMap`与`Map`的区别有两点。 + +首先,`WeakMap`只接受对象作为键名(`null`除外),不接受其他类型的值作为键名。 ```javascript -var map = new WeakMap() +const map = new WeakMap(); map.set(1, 2) // TypeError: 1 is not an object! map.set(Symbol(), 2) // TypeError: Invalid value used as weak map key ``` -上面代码中,如果将`1`和`Symbol`作为WeakMap的键名,都会报错。 +上面代码中,如果将数值`1`和`Symbol`值作为 WeakMap 的键名,都会报错。 -`WeakMap`的设计目的在于,键名是对象的弱引用(垃圾回收机制不将该引用考虑在内),所以其所对应的对象可能会被自动回收。当对象被回收后,`WeakMap`自动移除对应的键值对。典型应用是,一个对应DOM元素的`WeakMap`结构,当某个DOM元素被清除,其所对应的`WeakMap`记录就会自动被移除。基本上,`WeakMap`的专用场合就是,它的键所对应的对象,可能会在将来消失。`WeakMap`结构有助于防止内存泄漏。 +其次,`WeakMap`的键名所指向的对象,不计入垃圾回收机制。 -下面是`WeakMap`结构的一个例子,可以看到用法上与`Map`几乎一样。 +`WeakMap`的设计目的在于,有时我们想在某个对象上面存放一些数据,但是这会形成对于这个对象的引用。请看下面的例子。 ```javascript -var wm = new WeakMap(); -var element = document.querySelector(".element"); +const e1 = document.getElementById('foo'); +const e2 = document.getElementById('bar'); +const arr = [ + [e1, 'foo 元素'], + [e2, 'bar 元素'], +]; +``` -wm.set(element, "Original"); +上面代码中,`e1`和`e2`是两个对象,我们通过`arr`数组对这两个对象添加一些文字说明。这就形成了`arr`对`e1`和`e2`的引用。 + +一旦不再需要这两个对象,我们就必须手动删除这个引用,否则垃圾回收机制就不会释放`e1`和`e2`占用的内存。 + +```javascript +// 不需要 e1 和 e2 的时候 +// 必须手动删除引用 +arr [0] = null; +arr [1] = null; +``` + +上面这样的写法显然很不方便。一旦忘了写,就会造成内存泄露。 + +WeakMap 就是为了解决这个问题而诞生的,它的键名所引用的对象都是弱引用,即垃圾回收机制不将该引用考虑在内。因此,只要所引用的对象的其他引用都被清除,垃圾回收机制就会释放该对象所占用的内存。也就是说,一旦不再需要,WeakMap 里面的键名对象和所对应的键值对会自动消失,不用手动删除引用。 + +基本上,如果你要往对象上添加数据,又不想干扰垃圾回收机制,就可以使用 WeakMap。一个典型应用场景是,在网页的 DOM 元素上添加数据,就可以使用`WeakMap`结构。当该 DOM 元素被清除,其所对应的`WeakMap`记录就会自动被移除。 + +```javascript +const wm = new WeakMap(); +const element = document.querySelector('.element'); + +wm.set(element, 'Original'); wm.get(element) // "Original" element.parentNode.removeChild(element); @@ -877,19 +955,37 @@ wm.get(element) // undefined 上面代码中,变量`wm`是一个`WeakMap`实例,我们将一个`DOM`节点`element`作为键名,然后销毁这个节点,`element`对应的键就自动消失了,再引用这个键名就返回`undefined`。 -WeakMap与Map在API上的区别主要是两个,一是没有遍历操作(即没有`key()`、`values()`和`entries()`方法),也没有`size`属性;二是无法清空,即不支持`clear`方法。这与`WeakMap`的键不被计入引用、被垃圾回收机制忽略有关。因此,`WeakMap`只有四个方法可用:`get()`、`set()`、`has()`、`delete()`。 +总之,`WeakMap`的专用场合就是,它的键所对应的对象,可能会在将来消失。`WeakMap`结构有助于防止内存泄漏。 + +注意,WeakMap 弱引用的只是键名,而不是键值。键值依然是正常引用。 ```javascript -var wm = new WeakMap(); +const wm = new WeakMap(); +let key = {}; +let obj = {foo: 1}; + +wm.set(key, obj); +obj = null; +wm.get(key) +// Object {foo: 1} +``` -wm.size -// undefined +上面代码中,键值`obj`是正常引用。所以,即使在 WeakMap 外部消除了`obj`的引用,WeakMap 内部的引用依然存在。 -wm.forEach -// undefined +WeakMap 与 Map 在 API 上的区别主要是两个,一是没有遍历操作(即没有`key()`、`values()`和`entries()`方法),也没有`size`属性。因为没有办法列出所有键名,这个键名是否存在完全不可预测,跟垃圾回收机制是否运行相关。二是无法清空,即不支持`clear`方法。因此,`WeakMap`只有四个方法可用:`get()`、`set()`、`has()`、`delete()`。 + +```javascript +const wm = new WeakMap(); + +// size、forEach、clear 方法都不存在 +wm.size // undefined +wm.forEach // undefined +wm.clear // undefined ``` -前文说过,WeakMap应用的典型场合就是DOM节点作为键名。下面是一个例子。 +### WeakMap 的用途 + +前文说过,WeakMap 应用的典型场合就是 DOM 节点作为键名。下面是一个例子。 ```javascript let myElement = document.getElementById('logo'); @@ -905,11 +1001,25 @@ myElement.addEventListener('click', function() { 上面代码中,`myElement`是一个 DOM 节点,每当发生`click`事件,就更新一下状态。我们将这个状态作为键值放在 WeakMap 里,对应的键名就是`myElement`。一旦这个 DOM 节点删除,该状态就会自动消失,不存在内存泄漏风险。 +进一步说,注册监听事件的`listener`对象,就很合适用 WeakMap 实现。 + +```javascript +const listener = new WeakMap(); + +listener.set(element1, handler1); +listener.set(element2, handler2); + +element1.addEventListener('click', listener.get(element1), false); +element2.addEventListener('click', listener.get(element2), false); +``` + +上面代码中,监听函数放在 WeakMap 里面。一旦 DOM 对象消失,跟它绑定的监听函数也会自动消失。 + WeakMap 的另一个用处是部署私有属性。 ```javascript -let _counter = new WeakMap(); -let _action = new WeakMap(); +const _counter = new WeakMap(); +const _action = new WeakMap(); class Countdown { constructor(counter, action) { @@ -927,11 +1037,11 @@ class Countdown { } } -let c = new Countdown(2, () => console.log('DONE')); +const c = new Countdown(2, () => console.log('DONE')); c.dec() c.dec() // DONE ``` -上面代码中,Countdown类的两个内部属性`_counter`和`_action`,是实例的弱引用,所以如果删除实例,它们也就随之消失,不会造成内存泄漏。 +上面代码中,`Countdown`类的两个内部属性`_counter`和`_action`,是实例的弱引用,所以如果删除实例,它们也就随之消失,不会造成内存泄漏。 From b330d721acc81af02b67dd62ffc6108b3ffdcf09 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 13 Apr 2017 21:36:16 +0800 Subject: [PATCH 246/994] =?UTF-8?q?bar()=E8=BE=93=E5=87=BA=E8=A1=A8?= =?UTF-8?q?=E8=BF=B0=E6=9C=89=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bar() 输出表述有误, outer 应该在 bar() 运行时输出! --- docs/function.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/function.md b/docs/function.md index 3f3c61acf..65273fcd0 100644 --- a/docs/function.md +++ b/docs/function.md @@ -301,10 +301,10 @@ let foo = 'outer'; function bar(func = x => foo) { let foo = 'inner'; - console.log(func()); // outer + console.log(func()); } -bar(); +bar(); // outer ``` 上面代码中,函数`bar`的参数`func`的默认值是一个匿名函数,返回值为变量`foo`。函数参数形成的单独作用域里面,并没有定义变量`foo`,所以`foo`指向外层的全局变量`foo`,因此输出`outer`。 From c582198e7a7dbf0446622464dfe5541dcdd2995d Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 13 Apr 2017 22:09:46 +0800 Subject: [PATCH 247/994] =?UTF-8?q?=E8=AF=AD=E4=B9=89=E4=B8=8D=E6=B8=85?= =?UTF-8?q?=E6=99=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 语义不清晰。 2. 引入 Python 作为比较,对于不了解 Python 的读者并无意义。 --- docs/function.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/function.md b/docs/function.md index 3f3c61acf..a8c807347 100644 --- a/docs/function.md +++ b/docs/function.md @@ -371,7 +371,7 @@ foo() 上面代码的`foo`函数,如果调用的时候没有参数,就会调用默认值`throwIfMissing`函数,从而抛出一个错误。 -从上面代码还可以看到,参数`mustBeProvided`的默认值等于`throwIfMissing`函数的运行结果(即函数名之后有一对圆括号),这表明参数的默认值不是在定义时执行,而是在运行时执行(即如果参数已经赋值,默认值中的函数就不会运行),这与 Python 语言不一样。 +从上面代码还可以看到,参数`mustBeProvided`的默认值等于`throwIfMissing`函数的运行结果(注意函数名throwIfMissing之后有一对圆括号),这表明参数的默认值不是在定义时执行,而是在运行时执行。如果参数已经赋值,默认值中的函数就不会运行。 另外,可以将参数默认值设为`undefined`,表明这个参数是可以省略的。 From ca2a2fc8b3a45a1706bb0b974f0554a3a4e78f32 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 14 Apr 2017 13:25:58 +0800 Subject: [PATCH 248/994] docs(function): edit function --- docs/function.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/function.md b/docs/function.md index 1a80f5093..1d44bdc44 100644 --- a/docs/function.md +++ b/docs/function.md @@ -371,7 +371,7 @@ foo() 上面代码的`foo`函数,如果调用的时候没有参数,就会调用默认值`throwIfMissing`函数,从而抛出一个错误。 -从上面代码还可以看到,参数`mustBeProvided`的默认值等于`throwIfMissing`函数的运行结果(注意函数名throwIfMissing之后有一对圆括号),这表明参数的默认值不是在定义时执行,而是在运行时执行。如果参数已经赋值,默认值中的函数就不会运行。 +从上面代码还可以看到,参数`mustBeProvided`的默认值等于`throwIfMissing`函数的运行结果(注意函数名`throwIfMissing`之后有一对圆括号),这表明参数的默认值不是在定义时执行,而是在运行时执行。如果参数已经赋值,默认值中的函数就不会运行。 另外,可以将参数默认值设为`undefined`,表明这个参数是可以省略的。 From e1bfba24ed128b33046277244aa5535d9bee8d24 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 17 Apr 2017 12:56:24 +0800 Subject: [PATCH 249/994] docs(set): edit weakMap & weakSet --- docs/set-map.md | 144 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 118 insertions(+), 26 deletions(-) diff --git a/docs/set-map.md b/docs/set-map.md index 7486a3307..d07c284b8 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -66,7 +66,7 @@ set.add(b); set // Set {NaN} ``` -上面代码向Set实例添加了两个`NaN`,但是只能加入一个。这表明,在Set内部,两个`NaN`是相等。 +上面代码向 Set 实例添加了两个`NaN`,但是只能加入一个。这表明,在 Set 内部,两个`NaN`是相等。 另外,两个对象总是不相等的。 @@ -82,14 +82,14 @@ set.size // 2 上面代码表示,由于两个空对象不相等,所以它们被视为两个值。 -### Set实例的属性和方法 +### Set 实例的属性和方法 -Set结构的实例有以下属性。 +Set 结构的实例有以下属性。 - `Set.prototype.constructor`:构造函数,默认就是`Set`函数。 - `Set.prototype.size`:返回`Set`实例的成员总数。 -Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。 +Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。 - `add(value)`:添加某个值,返回Set结构本身。 - `delete(value)`:删除某个值,返回一个布尔值,表示删除是否成功。 @@ -155,7 +155,7 @@ dedupe([1, 1, 2, 3]) // [1, 2, 3] ### 遍历操作 -Set结构的实例有四个遍历方法,可以用于遍历成员。 +Set 结构的实例有四个遍历方法,可以用于遍历成员。 - `keys()`:返回键名的遍历器 - `values()`:返回键值的遍历器 @@ -195,14 +195,14 @@ for (let item of set.entries()) { 上面代码中,`entries`方法返回的遍历器,同时包括键名和键值,所以每次输出一个数组,它的两个成员完全相等。 -Set结构的实例默认可遍历,它的默认遍历器生成函数就是它的`values`方法。 +Set 结构的实例默认可遍历,它的默认遍历器生成函数就是它的`values`方法。 ```javascript Set.prototype[Symbol.iterator] === Set.prototype.values // true ``` -这意味着,可以省略`values`方法,直接用`for...of`循环遍历Set。 +这意味着,可以省略`values`方法,直接用`for...of`循环遍历 Set。 ```javascript let set = new Set(['red', 'green', 'blue']); @@ -227,11 +227,11 @@ set.forEach((value, key) => console.log(value * 2) ) // 6 ``` -上面代码说明,`forEach`方法的参数就是一个处理函数。该函数的参数依次为键值、键名、集合本身(上例省略了该参数)。另外,`forEach`方法还可以有第二个参数,表示绑定的this对象。 +上面代码说明,`forEach`方法的参数就是一个处理函数。该函数的参数依次为键值、键名、集合本身(上例省略了该参数)。另外,`forEach`方法还可以有第二个参数,表示绑定的`this`对象。 **(3)遍历的应用** -扩展运算符(`...`)内部使用`for...of`循环,所以也可以用于Set结构。 +扩展运算符(`...`)内部使用`for...of`循环,所以也可以用于 Set 结构。 ```javascript let set = new Set(['red', 'green', 'blue']); @@ -239,7 +239,7 @@ let arr = [...set]; // ['red', 'green', 'blue'] ``` -扩展运算符和Set结构相结合,就可以去除数组的重复成员。 +扩展运算符和 Set 结构相结合,就可以去除数组的重复成员。 ```javascript let arr = [3, 5, 2, 2, 5, 5]; @@ -247,7 +247,7 @@ let unique = [...new Set(arr)]; // [3, 5, 2] ``` -而且,数组的`map`和`filter`方法也可以用于Set了。 +而且,数组的`map`和`filter`方法也可以用于 Set 了。 ```javascript let set = new Set([1, 2, 3]); @@ -259,7 +259,7 @@ set = new Set([...set].filter(x => (x % 2) == 0)); // 返回Set结构:{2, 4} ``` -因此使用Set可以很容易地实现并集(Union)、交集(Intersect)和差集(Difference)。 +因此使用 Set 可以很容易地实现并集(Union)、交集(Intersect)和差集(Difference)。 ```javascript let a = new Set([1, 2, 3]); @@ -278,7 +278,7 @@ let difference = new Set([...a].filter(x => !b.has(x))); // Set {1} ``` -如果想在遍历操作中,同步改变原来的Set结构,目前没有直接的方法,但有两种变通方法。一种是利用原Set结构映射出一个新的结构,然后赋值给原来的Set结构;另一种是利用`Array.from`方法。 +如果想在遍历操作中,同步改变原来的 Set 结构,目前没有直接的方法,但有两种变通方法。一种是利用原 Set 结构映射出一个新的结构,然后赋值给原来的 Set 结构;另一种是利用`Array.from`方法。 ```javascript // 方法一 @@ -292,10 +292,12 @@ set = new Set(Array.from(set, val => val * 2)); // set的值是2, 4, 6 ``` -上面代码提供了两种方法,直接在遍历操作中改变原来的Set结构。 +上面代码提供了两种方法,直接在遍历操作中改变原来的 Set 结构。 ## WeakSet +### 含义 + WeakSet 结构与 Set 类似,也是不重复的值的集合。但是,它与 Set 有两个区别。 首先,WeakSet 的成员只能是对象,而不能是其他类型的值。 @@ -310,7 +312,15 @@ ws.add(Symbol()) 上面代码试图向 WeakSet 添加一个数值和`Symbol`值,结果报错,因为 WeakSet 只能放置对象。 -其次,WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中。这个特点意味着,无法引用 WeakSet 的成员,因此 WeakSet 是不可遍历的。 +其次,WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中。 + +这是因为垃圾回收机制依赖引用计数,如果一个值的引用次数不为`0`,垃圾回收机制就不会释放这块内存。对于那些不重要的引用,在结束使用之后,有时会忘记取消引用,导致内存无法释放,进而可能会引发内存泄漏。WeakSet 里面的引用,都不计入垃圾回收机制,所以就不存在这个问题。因此,WeakSet 适合临时存放一组对象,以及存放跟对象绑定的信息。只要这些对象在外部消失,它在 WeakMap 里面的引用就会自动消失。 + +由于上面这个特点,WeakSet 的成员是不适合引用的,因为它会随时消失。另外,由于 WeakSet 内部有多少个成员,取决于垃圾回收机制有没有运行,运行前后很可能成员个数是不一样的,而垃圾回收机制何时运行是不可预测的,因此 ES6 规定 WeakSet 不可遍历。 + +这些特点同样适用于本章后面要介绍的 WeakMap 结构。 + +### 语法 WeakSet 是一个构造函数,可以使用`new`命令,创建 WeakSet 数据结构。 @@ -373,9 +383,9 @@ ws.forEach(function(item){ console.log('WeakSet has ' + item)}) 上面代码试图获取`size`和`forEach`属性,结果都不能成功。 -WeakSet不能遍历,是因为成员都是弱引用,随时可能消失,遍历机制无法保证成员的存在,很可能刚刚遍历结束,成员就取不到了。WeakSet的一个用处,是储存DOM节点,而不用担心这些节点从文档移除时,会引发内存泄漏。 +WeakSet 不能遍历,是因为成员都是弱引用,随时可能消失,遍历机制无法保证成员的存在,很可能刚刚遍历结束,成员就取不到了。WeakSet 的一个用处,是储存 DOM 节点,而不用担心这些节点从文档移除时,会引发内存泄漏。 -下面是WeakSet的另一个例子。 +下面是 WeakSet 的另一个例子。 ```javascript const foos = new WeakSet() @@ -548,7 +558,7 @@ map.get(NaN) // 123 ### 实例的属性和操作方法 -Map结构的实例有以下属性和操作方法。 +Map 结构的实例有以下属性和操作方法。 **(1)size属性** @@ -878,7 +888,7 @@ jsonToMap('[[true,7],[{"foo":3},["abc"]]]') ## WeakMap -### 含义和用法 +### 含义 `WeakMap`结构与`Map`结构类似,也是用于生成键值对。 @@ -907,6 +917,8 @@ map.set(1, 2) // TypeError: 1 is not an object! map.set(Symbol(), 2) // TypeError: Invalid value used as weak map key +map.set(null, 2) +// TypeError: Invalid value used as weak map key ``` 上面代码中,如果将数值`1`和`Symbol`值作为 WeakMap 的键名,都会报错。 @@ -943,17 +955,16 @@ WeakMap 就是为了解决这个问题而诞生的,它的键名所引用的对 ```javascript const wm = new WeakMap(); -const element = document.querySelector('.element'); -wm.set(element, 'Original'); -wm.get(element) // "Original" +const element = document.getElementById('example'); -element.parentNode.removeChild(element); -element = null; -wm.get(element) // undefined +wm.set(element, 'some information'); +wm.get(element) // "some information" ``` -上面代码中,变量`wm`是一个`WeakMap`实例,我们将一个`DOM`节点`element`作为键名,然后销毁这个节点,`element`对应的键就自动消失了,再引用这个键名就返回`undefined`。 +上面代码中,先新建一个 Weakmap 实例。然后,将一个 DOM 节点作为键名存入该实例,并将一些附加信息作为键值,一起存放在 WeakMap 里面。这时,WeakMap 里面对`element`的引用就是弱引用,不会被计入垃圾回收机制。 + +也就是说,上面的 DOM 节点对象的引用计数是`1`,而不是`2`。这时,一旦消除对该节点的引用,它占用的内存就会被垃圾回收机制释放。Weakmap 保存的这个键值对,也会自动消失。 总之,`WeakMap`的专用场合就是,它的键所对应的对象,可能会在将来消失。`WeakMap`结构有助于防止内存泄漏。 @@ -972,6 +983,87 @@ wm.get(key) 上面代码中,键值`obj`是正常引用。所以,即使在 WeakMap 外部消除了`obj`的引用,WeakMap 内部的引用依然存在。 +### WeakMap 的示例 + +WeakMap 的例子很难演示,因为无法观察它里面的引用会自动消失。此时,其他引用都解除了,已经没有引用指向 WeakMap 的键名了,导致无法证实那个键名是不是存在。 + +贺师俊老师[提示](https://github.com/ruanyf/es6tutorial/issues/362#issuecomment-292109104),如果引用所指向的值占用特别多的内存,就可以通过 Node 的`process.memoryUsage`方法看出来。根据这个思路,网友[vtxf](https://github.com/ruanyf/es6tutorial/issues/362#issuecomment-292451925)补充了下面的例子。 + +首先,打开 Node 命令行。 + +```bash +$ node --expose-gc +``` + +上面代码中,`--expose-gc`参数表示允许手动执行垃圾回收机制。 + +然后,执行下面的代码。 + +```javascript +// 手动执行一次垃圾回收,保证获取的内存使用状态准确 +> global.gc(); +undefined + +// 查看内存占用的初始状态,heapUsed 为 4M 左右 +> process.memoryUsage(); +{ rss: 21106688, + heapTotal: 7376896, + heapUsed: 4153936, + external: 9059 } + +> let wm = new WeakMap(); +undefined + +> const b = new Object(); +undefined + +> global.gc(); +undefined + +// 此时,heapUsed 仍然为 4M 左右 +> process.memoryUsage(); +{ rss: 20537344, + heapTotal: 9474048, + heapUsed: 3967272, + external: 8993 } + +// 在 WeakMap 中添加一个键值对, +// 键名为对象 b,键值为一个 5*1024*1024 的数组 +> wm.set(b, new Array(5*1024*1024)); +WeakMap {} + +// 手动执行一次垃圾回收 +> global.gc(); +undefined + +// 此时,heapUsed 为 45M 左右 +> process.memoryUsage(); +{ rss: 62652416, + heapTotal: 51437568, + heapUsed: 45911664, + external: 8951 } + +// 解除对象 b 的引用 +> b = null; +null + +// 再次执行垃圾回收 +> global.gc(); +undefined + +// 解除 b 的引用以后,heapUsed 变回 4M 左右 +// 说明 WeakMap 中的那个长度为 5*1024*1024 的数组被销毁了 +> process.memoryUsage(); +{ rss: 20639744, + heapTotal: 8425472, + heapUsed: 3979792, + external: 8956 } +``` + +上面代码中,只要外部的引用消失,WeakMap 内部的引用,就会自动被垃圾回收清除。由此可见,有了 WeakMap 的帮助,解决内存泄漏就会简单很多。 + +### WeakMap 的语法 + WeakMap 与 Map 在 API 上的区别主要是两个,一是没有遍历操作(即没有`key()`、`values()`和`entries()`方法),也没有`size`属性。因为没有办法列出所有键名,这个键名是否存在完全不可预测,跟垃圾回收机制是否运行相关。二是无法清空,即不支持`clear`方法。因此,`WeakMap`只有四个方法可用:`get()`、`set()`、`has()`、`delete()`。 ```javascript From 15b962627eb36704564aaa66937449a4b37ec2b7 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 19 Apr 2017 20:16:24 +0800 Subject: [PATCH 250/994] docs(object): edit object --- docs/object.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/object.md b/docs/object.md index 62b53996c..99b091c37 100644 --- a/docs/object.md +++ b/docs/object.md @@ -1047,11 +1047,12 @@ x.a.b // 2 let o1 = { a: 1 }; let o2 = { b: 2 }; o2.__proto__ = o1; -let o3 = { ...o2 }; +let { ...o3 } = o2; o3 // { b: 2 } +o3.a // undefined ``` -上面代码中,对象`o3`是`o2`的拷贝,但是只复制了`o2`自身的属性,没有复制它的原型对象`o1`的属性。 +上面代码中,对象`o3`复制了`o2`,但是只复制了`o2`自身的属性,没有复制它的原型对象`o1`的属性。 下面是另一个例子。 From b2182920bb74a5aeaf5b37468974018ed7f36f1d Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 21 Apr 2017 13:58:23 +0800 Subject: [PATCH 251/994] docs(symbol): edit symbol --- docs/function.md | 8 ++++---- docs/object.md | 4 ++-- docs/symbol.md | 46 +++++++++++++++++++++++----------------------- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/function.md b/docs/function.md index 1d44bdc44..dc00bbf1e 100644 --- a/docs/function.md +++ b/docs/function.md @@ -723,7 +723,7 @@ let arr = [...obj]; // TypeError: Cannot spread non-iterable object ## 严格模式 -从ES5开始,函数内部可以设定为严格模式。 +从 ES5 开始,函数内部可以设定为严格模式。 ```javascript function doSomething(a, b) { @@ -732,7 +732,7 @@ function doSomething(a, b) { } ``` -《ECMAScript 2016标准》做了一点修改,规定只要函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式,否则会报错。 +ES2016 做了一点修改,规定只要函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式,否则会报错。 ```javascript // 报错 @@ -762,7 +762,7 @@ const obj = { }; ``` -这样规定的原因是,函数内部的严格模式,同时适用于函数体代码和函数参数代码。但是,函数执行的时候,先执行函数参数代码,然后再执行函数体代码。这样就有一个不合理的地方,只有从函数体代码之中,才能知道参数代码是否应该以严格模式执行,但是参数代码却应该先于函数体代码执行。 +这样规定的原因是,函数内部的严格模式,同时适用于函数体和函数参数。但是,函数执行的时候,先执行函数参数,然后再执行函数体。这样就有一个不合理的地方,只有从函数体之中,才能知道参数是否应该以严格模式执行,但是参数却应该先于函数体执行。 ```javascript // 报错 @@ -772,7 +772,7 @@ function doSomething(value = 070) { } ``` -上面代码中,参数`value`的默认值是八进制数`070`,但是严格模式下不能用前缀`0`表示八进制,所以应该报错。但是实际上,JavaScript引擎会先成功执行`value = 070`,然后进入函数体内部,发现需要用严格模式执行,这时才会报错。 +上面代码中,参数`value`的默认值是八进制数`070`,但是严格模式下不能用前缀`0`表示八进制,所以应该报错。但是实际上,JavaScript 引擎会先成功执行`value = 070`,然后进入函数体内部,发现需要用严格模式执行,这时才会报错。 虽然可以先解析函数体代码,再执行参数代码,但是这样无疑就增加了复杂性。因此,标准索性禁止了这种用法,只要参数使用了默认值、解构赋值、或者扩展运算符,就不能显式指定严格模式。 diff --git a/docs/object.md b/docs/object.md index 99b091c37..d9d33a83d 100644 --- a/docs/object.md +++ b/docs/object.md @@ -2,7 +2,7 @@ ## 属性的简洁表示法 -ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 +ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 ```javascript var foo = 'bar'; @@ -1066,7 +1066,7 @@ y // undefined z // 3 ``` -上面代码中,变量`x`是单纯的解构赋值,所以可以读取继承的属性;解构赋值产生的变量`y`和`z`,只能读取对象自身的属性,所以只有变量`z`可以赋值成功。 +上面代码中,变量`x`是单纯的解构赋值,所以可以读取对象`o`继承的属性;变量`y`和`z`是双重解构赋值,只能读取对象`o`自身的属性,所以只有变量`z`可以赋值成功。 解构赋值的一个用处,是扩展某个函数的参数,引入其他操作。 diff --git a/docs/symbol.md b/docs/symbol.md index 8681b4f5b..a0744c183 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -2,11 +2,11 @@ ## 概述 -ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是ES6引入Symbol的原因。 +ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入`Symbol`的原因。 -ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。 +ES6 引入了一种新的原始数据类型`Symbol`,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:`undefined`、`null`、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。 -Symbol值通过`Symbol`函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的Symbol类型。凡是属性名属于Symbol类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。 +Symbol 值通过`Symbol`函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。 ```javascript let s = Symbol(); @@ -15,11 +15,11 @@ typeof s // "symbol" ``` -上面代码中,变量`s`就是一个独一无二的值。`typeof`运算符的结果,表明变量`s`是Symbol数据类型,而不是字符串之类的其他类型。 +上面代码中,变量`s`就是一个独一无二的值。`typeof`运算符的结果,表明变量`s`是 Symbol 数据类型,而不是字符串之类的其他类型。 -注意,`Symbol`函数前不能使用`new`命令,否则会报错。这是因为生成的Symbol是一个原始类型的值,不是对象。也就是说,由于Symbol值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。 +注意,`Symbol`函数前不能使用`new`命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象。也就是说,由于 Symbol 值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。 -`Symbol`函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。 +`Symbol`函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。 ```javascript var s1 = Symbol('foo'); @@ -32,7 +32,7 @@ s1.toString() // "Symbol(foo)" s2.toString() // "Symbol(bar)" ``` -上面代码中,`s1`和`s2`是两个Symbol值。如果不加参数,它们在控制台的输出都是`Symbol()`,不利于区分。有了参数以后,就等于为它们加上了描述,输出的时候就能够分清,到底是哪一个值。 +上面代码中,`s1`和`s2`是两个 Symbol 值。如果不加参数,它们在控制台的输出都是`Symbol()`,不利于区分。有了参数以后,就等于为它们加上了描述,输出的时候就能够分清,到底是哪一个值。 如果 Symbol 的参数是一个对象,就会调用该对象的`toString`方法,将其转为字符串,然后才生成一个 Symbol 值。 @@ -64,7 +64,7 @@ s1 === s2 // false 上面代码中,`s1`和`s2`都是`Symbol`函数的返回值,而且参数相同,但是它们是不相等的。 -Symbol值不能与其他类型的值进行运算,会报错。 +Symbol 值不能与其他类型的值进行运算,会报错。 ```javascript var sym = Symbol('My symbol'); @@ -75,7 +75,7 @@ var sym = Symbol('My symbol'); // TypeError: can't convert symbol to string ``` -但是,Symbol值可以显式转为字符串。 +但是,Symbol 值可以显式转为字符串。 ```javascript var sym = Symbol('My symbol'); @@ -84,7 +84,7 @@ String(sym) // 'Symbol(My symbol)' sym.toString() // 'Symbol(My symbol)' ``` -另外,Symbol值也可以转为布尔值,但是不能转为数值。 +另外,Symbol 值也可以转为布尔值,但是不能转为数值。 ```javascript var sym = Symbol(); @@ -99,9 +99,9 @@ Number(sym) // TypeError sym + 2 // TypeError ``` -## 作为属性名的Symbol +## 作为属性名的 Symbol -由于每一个Symbol值都是不相等的,这意味着Symbol值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。 +由于每一个 Symbol 值都是不相等的,这意味着 Symbol 值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。 ```javascript var mySymbol = Symbol(); @@ -123,9 +123,9 @@ Object.defineProperty(a, mySymbol, { value: 'Hello!' }); a[mySymbol] // "Hello!" ``` -上面代码通过方括号结构和`Object.defineProperty`,将对象的属性名指定为一个Symbol值。 +上面代码通过方括号结构和`Object.defineProperty`,将对象的属性名指定为一个 Symbol 值。 -注意,Symbol值作为对象属性名时,不能用点运算符。 +注意,Symbol 值作为对象属性名时,不能用点运算符。 ```javascript var mySymbol = Symbol(); @@ -136,9 +136,9 @@ a[mySymbol] // undefined a['mySymbol'] // "Hello!" ``` -上面代码中,因为点运算符后面总是字符串,所以不会读取`mySymbol`作为标识名所指代的那个值,导致`a`的属性名实际上是一个字符串,而不是一个Symbol值。 +上面代码中,因为点运算符后面总是字符串,所以不会读取`mySymbol`作为标识名所指代的那个值,导致`a`的属性名实际上是一个字符串,而不是一个 Symbol 值。 -同理,在对象的内部,使用Symbol值定义属性时,Symbol值必须放在方括号之中。 +同理,在对象的内部,使用 Symbol 值定义属性时,Symbol 值必须放在方括号之中。 ```javascript let s = Symbol(); @@ -150,7 +150,7 @@ let obj = { obj[s](123); ``` -上面代码中,如果`s`不放在方括号中,该属性的键名就是字符串`s`,而不是`s`所代表的那个Symbol值。 +上面代码中,如果`s`不放在方括号中,该属性的键名就是字符串`s`,而不是`s`所代表的那个 Symbol 值。 采用增强的对象写法,上面代码的`obj`对象可以写得更简洁一些。 @@ -160,7 +160,7 @@ let obj = { }; ``` -Symbol类型还可以用于定义一组常量,保证这组常量的值都是不相等的。 +Symbol 类型还可以用于定义一组常量,保证这组常量的值都是不相等的。 ```javascript log.levels = { @@ -190,9 +190,9 @@ function getComplement(color) { } ``` -常量使用Symbol值最大的好处,就是其他任何值都不可能有相同的值了,因此可以保证上面的`switch`语句会按设计的方式工作。 +常量使用 Symbol 值最大的好处,就是其他任何值都不可能有相同的值了,因此可以保证上面的`switch`语句会按设计的方式工作。 -还有一点需要注意,Symbol值作为属性名时,该属性还是公开属性,不是私有属性。 +还有一点需要注意,Symbol 值作为属性名时,该属性还是公开属性,不是私有属性。 ## 实例:消除魔术字符串 @@ -215,7 +215,7 @@ function getArea(shape, options) { getArea('Triangle', { width: 100, height: 100 }); // 魔术字符串 ``` -上面代码中,字符串“Triangle”就是一个魔术字符串。它多次出现,与代码形成“强耦合”,不利于将来的修改和维护。 +上面代码中,字符串`Triangle`就是一个魔术字符串。它多次出现,与代码形成“强耦合”,不利于将来的修改和维护。 常用的消除魔术字符串的方法,就是把它写成一个变量。 @@ -237,9 +237,9 @@ function getArea(shape, options) { getArea(shapeType.triangle, { width: 100, height: 100 }); ``` -上面代码中,我们把“Triangle”写成`shapeType`对象的`triangle`属性,这样就消除了强耦合。 +上面代码中,我们把`Triangle`写成`shapeType`对象的`triangle`属性,这样就消除了强耦合。 -如果仔细分析,可以发现`shapeType.triangle`等于哪个值并不重要,只要确保不会跟其他`shapeType`属性的值冲突即可。因此,这里就很适合改用Symbol值。 +如果仔细分析,可以发现`shapeType.triangle`等于哪个值并不重要,只要确保不会跟其他`shapeType`属性的值冲突即可。因此,这里就很适合改用 Symbol 值。 ```javascript const shapeType = { From fcdea67264949da25ad90e124016bf45c1348d76 Mon Sep 17 00:00:00 2001 From: Jacty Date: Sat, 22 Apr 2017 02:32:49 +0800 Subject: [PATCH 252/994] typo typo --- docs/function.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/function.md b/docs/function.md index dc00bbf1e..490a179be 100644 --- a/docs/function.md +++ b/docs/function.md @@ -591,7 +591,7 @@ rest // [2, 3, 4, 5] const [first, ...rest] = []; first // undefined -rest // []: +rest // [] const [first, ...rest] = ["foo"]; first // "foo" From 4eb879872cbf7f3f9b3341d57155992568c79a27 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 22 Apr 2017 23:28:32 +0800 Subject: [PATCH 253/994] docs(reflect): edit reflect --- docs/reflect.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reflect.md b/docs/reflect.md index 7d1d211b8..26d33ece3 100644 --- a/docs/reflect.md +++ b/docs/reflect.md @@ -355,12 +355,12 @@ function MyDate() { // 旧写法 Object.defineProperty(MyDate, 'now', { - value: () => new Date.now() + value: () => Date.now() }); // 新写法 Reflect.defineProperty(MyDate, 'now', { - value: () => new Date.now() + value: () => Date.now() }); ``` From e06759e7efcea000d2bc39113b208c47dc48a2c8 Mon Sep 17 00:00:00 2001 From: Jacty Date: Tue, 25 Apr 2017 20:51:59 +0800 Subject: [PATCH 254/994] =?UTF-8?q?=E8=BF=99=E9=87=8C=E5=BA=94=E8=AF=A5?= =?UTF-8?q?=E6=98=AF=E8=AF=B4=E6=B5=85=E6=8B=B7=E8=B4=9D=E5=90=A7=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这里应该是说浅拷贝吧?前文说过Object.assign()是浅拷贝呀~ --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index d9d33a83d..701367423 100644 --- a/docs/object.md +++ b/docs/object.md @@ -566,7 +566,7 @@ function processContent(options) { 上面代码中,`DEFAULTS`对象是默认值,`options`对象是用户提供的参数。`Object.assign`方法将`DEFAULTS`和`options`合并成一个新对象,如果两者有同名属性,则`option`的属性值会覆盖`DEFAULTS`的属性值。 -注意,由于存在深拷贝的问题,`DEFAULTS`对象和`options`对象的所有属性的值,最好都是简单类型,不要指向另一个对象。否则,`DEFAULTS`对象的该属性很可能不起作用。 +注意,由于存在浅拷贝的问题,`DEFAULTS`对象和`options`对象的所有属性的值,最好都是简单类型,不要指向另一个对象。否则,`DEFAULTS`对象的该属性很可能不起作用。 ```javascript const DEFAULTS = { From fd9f4d6d00ce6ecaf59434fd68f8f1e7005d2969 Mon Sep 17 00:00:00 2001 From: Jacty Date: Tue, 25 Apr 2017 20:53:21 +0800 Subject: [PATCH 255/994] typo typo --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index d9d33a83d..714627bf4 100644 --- a/docs/object.md +++ b/docs/object.md @@ -652,7 +652,7 @@ ES6一共有5种方法可以遍历对象的属性。 **(5)Reflect.ownKeys(obj)** -`Reflect.ownKeys`返回一个数组,包含对象自身的所有属性,不管是属性名是Symbol或字符串,也不管是否可枚举。 +`Reflect.ownKeys`返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举。 以上的5种方法遍历对象的属性,都遵守同样的属性遍历的次序规则。 From 34f321ec99f84314eb55dc52417dfb5102e880be Mon Sep 17 00:00:00 2001 From: Jacty Date: Tue, 25 Apr 2017 21:30:00 +0800 Subject: [PATCH 256/994] typo typo --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index d9d33a83d..0fe361c9e 100644 --- a/docs/object.md +++ b/docs/object.md @@ -1166,7 +1166,7 @@ let runtimeError = { }; ``` -如果扩展运算符的参数是`null`或`undefined`,这个两个值会被忽略,不会报错。 +如果扩展运算符的参数是`null`或`undefined`,这两个值会被忽略,不会报错。 ```javascript let emptyObject = { ...null, ...undefined }; // 不报错 From 7b81350aef68c79c108e5f5bc50d890accc2ada8 Mon Sep 17 00:00:00 2001 From: amisare <243297288@qq.com> Date: Wed, 26 Apr 2017 10:18:58 +0800 Subject: [PATCH 257/994] Update promise.md --- docs/promise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/promise.md b/docs/promise.md index 256524198..18d796b5d 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -597,7 +597,7 @@ p.then(function (s){ // Hello ``` -上面代码生成一个新的Promise对象的实例`p`。由于字符串`Hello`不属于异步操作(判断方法是它不是具有then方法的对象),返回Promise实例的状态从一生成就是`Resolved`,所以回调函数会立即执行。`Promise.resolve`方法的参数,会同时传给回调函数。 +上面代码生成一个新的Promise对象的实例`p`。由于字符串`Hello`不属于异步操作(判断方法是字符串对象不具有then方法),返回Promise实例的状态从一生成就是`Resolved`,所以回调函数会立即执行。`Promise.resolve`方法的参数,会同时传给回调函数。 **(4)不带有任何参数** From f72cd63cdd631ac7b6b1240c62074be7de3a34dd Mon Sep 17 00:00:00 2001 From: lengjing <853625225@qq.com> Date: Wed, 26 Apr 2017 10:41:53 +0800 Subject: [PATCH 258/994] Update generator.md --- docs/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator.md b/docs/generator.md index 2197c4857..1af51fc5c 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -221,7 +221,7 @@ g[Symbol.iterator]() === g ## next方法的参数 -`yield`句本身没有返回值,或者说总是返回`undefined`。`next`方法可以带一个参数,该参数就会被当作上一个`yield`语句的返回值。 +`yield`语句本身没有返回值,或者说总是返回`undefined`。`next`方法可以带一个参数,该参数就会被当作上一个`yield`语句的返回值。 ```javascript function* f() { From 3d280b452e7e1a1a1fa00cedf7dcea423234caaf Mon Sep 17 00:00:00 2001 From: amisare <243297288@qq.com> Date: Wed, 26 Apr 2017 11:01:30 +0800 Subject: [PATCH 259/994] Update array.md --- docs/array.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/array.md b/docs/array.md index 49097b510..33f5bd1be 100644 --- a/docs/array.md +++ b/docs/array.md @@ -70,7 +70,7 @@ function foo() { [...document.querySelectorAll('div')] ``` -扩展运算符背后调用的是遍历器接口(`Symbol.iterator`),如果一个对象没有部署这个接口,就无法转换。`Array.from`方法则是还支持类似数组的对象。所谓类似数组的对象,本质特征只有一点,即必须有`length`属性。因此,任何有`length`属性的对象,都可以通过`Array.from`方法转为数组,而此时扩展运算符就无法转换。 +扩展运算符背后调用的是遍历器接口(`Symbol.iterator`),如果一个对象没有部署这个接口,就无法转换。`Array.from`方法还支持类似数组的对象。所谓类似数组的对象,本质特征只有一点,即必须有`length`属性。因此,任何有`length`属性的对象,都可以通过`Array.from`方法转为数组,而此时扩展运算符就无法转换。 ```javascript Array.from({ length: 3 }); From e2867f1956b3f2c8838fce963748abfa4396b291 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 26 Apr 2017 23:03:25 +0800 Subject: [PATCH 260/994] docs(set): edit weakmap --- docs/generator-async.md | 7 +++---- docs/set-map.md | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/generator-async.md b/docs/generator-async.md index 6c0b7e9d3..e2c8ae216 100644 --- a/docs/generator-async.md +++ b/docs/generator-async.md @@ -320,7 +320,7 @@ var Thunk = function(fn){ }; // ES6版本 -var Thunk = function(fn) { +const Thunk = function(fn) { return function (...args) { return function (callback) { return fn.call(this, ...args, callback); @@ -342,10 +342,9 @@ readFileThunk(fileA)(callback); function f(a, cb) { cb(a); } -let ft = Thunk(f); +const ft = Thunk(f); -let log = console.log.bind(console); -ft(1)(log) // 1 +ft(1)(console.log) // 1 ``` ### Thunkify 模块 diff --git a/docs/set-map.md b/docs/set-map.md index d07c284b8..f373dd62a 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -1014,7 +1014,7 @@ undefined > let wm = new WeakMap(); undefined -> const b = new Object(); +> let b = new Object(); undefined > global.gc(); @@ -1053,7 +1053,7 @@ undefined // 解除 b 的引用以后,heapUsed 变回 4M 左右 // 说明 WeakMap 中的那个长度为 5*1024*1024 的数组被销毁了 -> process.memoryUsage(); +> process.memoryUsage(); { rss: 20639744, heapTotal: 8425472, heapUsed: 3979792, From 0cc0ce06bbabbfe07afe2275bcd1573e5416cf28 Mon Sep 17 00:00:00 2001 From: Jacty Date: Thu, 27 Apr 2017 01:13:38 +0800 Subject: [PATCH 261/994] typo typo --- docs/symbol.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/symbol.md b/docs/symbol.md index a0744c183..9d80d87e6 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -196,7 +196,7 @@ function getComplement(color) { ## 实例:消除魔术字符串 -魔术字符串指的是,在代码之中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。风格良好的代码,应该尽量消除魔术字符串,该由含义清晰的变量代替。 +魔术字符串指的是,在代码之中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。风格良好的代码,应该尽量消除魔术字符串,改由含义清晰的变量代替。 ```javascript function getArea(shape, options) { From 6867e870bce2fe8c34229ebd466b16e16a83b1d9 Mon Sep 17 00:00:00 2001 From: Jacty Date: Thu, 27 Apr 2017 02:18:55 +0800 Subject: [PATCH 262/994] typo typo --- docs/set-map.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/set-map.md b/docs/set-map.md index f373dd62a..954cdbf8a 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -788,7 +788,7 @@ const myMap = new Map() **(2)数组 转为 Map** -将数组转入 Map 构造函数,就可以转为 Map。 +将数组传入 Map 构造函数,就可以转为 Map。 ```javascript new Map([ From be1049f12ad7355424479be83f278aa95022d38d Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 29 Apr 2017 06:33:43 +0800 Subject: [PATCH 263/994] docs(generator): edit typo --- docs/function.md | 41 +++++---- docs/generator.md | 207 +++++++++++++++++++++++----------------------- 2 files changed, 122 insertions(+), 126 deletions(-) diff --git a/docs/function.md b/docs/function.md index 490a179be..52f11d8bd 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1228,7 +1228,7 @@ function f(x){ } ``` -上面代码中,函数f的最后一步是调用函数g,这就叫尾调用。 +上面代码中,函数`f`的最后一步是调用函数`g`,这就叫尾调用。 以下三种情况,都不属于尾调用。 @@ -1250,7 +1250,7 @@ function f(x){ } ``` -上面代码中,情况一是调用函数g之后,还有赋值操作,所以不属于尾调用,即使语义完全一样。情况二也属于调用后还有操作,即使写在一行内。情况三等同于下面的代码。 +上面代码中,情况一是调用函数`g`之后,还有赋值操作,所以不属于尾调用,即使语义完全一样。情况二也属于调用后还有操作,即使写在一行内。情况三等同于下面的代码。 ```javascript function f(x){ @@ -1270,13 +1270,13 @@ function f(x) { } ``` -上面代码中,函数m和n都属于尾调用,因为它们都是函数f的最后一步操作。 +上面代码中,函数`m`和`n`都属于尾调用,因为它们都是函数`f`的最后一步操作。 ### 尾调用优化 尾调用之所以与其他调用不同,就在于它的特殊的调用位置。 -我们知道,函数调用会在内存形成一个“调用记录”,又称“调用帧”(call frame),保存调用位置和内部变量等信息。如果在函数A的内部调用函数B,那么在A的调用帧上方,还会形成一个B的调用帧。等到B运行结束,将结果返回到A,B的调用帧才会消失。如果函数B内部还调用函数C,那就还有一个C的调用帧,以此类推。所有的调用帧,就形成一个“调用栈”(call stack)。 +我们知道,函数调用会在内存形成一个“调用记录”,又称“调用帧”(call frame),保存调用位置和内部变量等信息。如果在函数`A`的内部调用函数`B`,那么在`A`的调用帧上方,还会形成一个`B`的调用帧。等到`B`运行结束,将结果返回到`A`,`B`的调用帧才会消失。如果函数`B`内部还调用函数`C`,那就还有一个`C`的调用帧,以此类推。所有的调用帧,就形成一个“调用栈”(call stack)。 尾调用由于是函数的最后一步操作,所以不需要保留外层函数的调用帧,因为调用位置、内部变量等信息都不会再用到了,只要直接用内层函数的调用帧,取代外层函数的调用帧就可以了。 @@ -1298,7 +1298,7 @@ f(); g(3); ``` -上面代码中,如果函数g不是尾调用,函数f就需要保存内部变量m和n的值、g的调用位置等信息。但由于调用g之后,函数f就结束了,所以执行到最后一步,完全可以删除 f(x) 的调用帧,只保留 g(3) 的调用帧。 +上面代码中,如果函数`g`不是尾调用,函数`f`就需要保存内部变量`m`和`n`的值、`g`的调用位置等信息。但由于调用`g`之后,函数`f`就结束了,所以执行到最后一步,完全可以删除`f(x)`的调用帧,只保留`g(3)`的调用帧。 这就叫做“尾调用优化”(Tail call optimization),即只保留内层函数的调用帧。如果所有函数都是尾调用,那么完全可以做到每次执行时,调用帧只有一项,这将大大节省内存。这就是“尾调用优化”的意义。 @@ -1331,7 +1331,7 @@ function factorial(n) { factorial(5) // 120 ``` -上面代码是一个阶乘函数,计算n的阶乘,最多需要保存n个调用记录,复杂度 O(n) 。 +上面代码是一个阶乘函数,计算`n`的阶乘,最多需要保存`n`个调用记录,复杂度 O(n) 。 如果改写成尾递归,只保留一个调用记录,复杂度 O(1) 。 @@ -1344,9 +1344,9 @@ function factorial(n, total) { factorial(5, 1) // 120 ``` -还有一个比较著名的例子,就是计算fibonacci 数列,也能充分说明尾递归优化的重要性 +还有一个比较著名的例子,就是计算 Fibonacci 数列,也能充分说明尾递归优化的重要性。 -如果是非尾递归的fibonacci 递归方法 +非尾递归的 Fibonacci 数列实现如下。 ```javascript function Fibonacci (n) { @@ -1355,13 +1355,12 @@ function Fibonacci (n) { return Fibonacci(n - 1) + Fibonacci(n - 2); } -Fibonacci(10); // 89 -// Fibonacci(100) -// Fibonacci(500) -// 堆栈溢出了 +Fibonacci(10) // 89 +Fibonacci(100) // 堆栈溢出 +Fibonacci(500) // 堆栈溢出 ``` -如果我们使用尾递归优化过的fibonacci 递归算法 +尾递归优化过的 Fibonacci 数列实现如下。 ```javascript function Fibonacci2 (n , ac1 = 1 , ac2 = 1) { @@ -1375,11 +1374,11 @@ Fibonacci2(1000) // 7.0330367711422765e+208 Fibonacci2(10000) // Infinity ``` -由此可见,“尾调用优化”对递归操作意义重大,所以一些函数式编程语言将其写入了语言规格。ES6也是如此,第一次明确规定,所有ECMAScript的实现,都必须部署“尾调用优化”。这就是说,在ES6中,只要使用尾递归,就不会发生栈溢出,相对节省内存。 +由此可见,“尾调用优化”对递归操作意义重大,所以一些函数式编程语言将其写入了语言规格。ES6 是如此,第一次明确规定,所有 ECMAScript 的实现,都必须部署“尾调用优化”。这就是说,ES6 中只要使用尾递归,就不会发生栈溢出,相对节省内存。 ### 递归函数的改写 -尾递归的实现,往往需要改写递归函数,确保最后一步只调用自身。做到这一点的方法,就是把所有用到的内部变量改写成函数的参数。比如上面的例子,阶乘函数 factorial 需要用到一个中间变量 total ,那就把这个中间变量改写成函数的参数。这样做的缺点就是不太直观,第一眼很难看出来,为什么计算5的阶乘,需要传入两个参数5和1? +尾递归的实现,往往需要改写递归函数,确保最后一步只调用自身。做到这一点的方法,就是把所有用到的内部变量改写成函数的参数。比如上面的例子,阶乘函数 factorial 需要用到一个中间变量`total`,那就把这个中间变量改写成函数的参数。这样做的缺点就是不太直观,第一眼很难看出来,为什么计算`5`的阶乘,需要传入两个参数`5`和`1`? 两个方法可以解决这个问题。方法一是在尾递归函数之外,再提供一个正常形式的函数。 @@ -1396,7 +1395,7 @@ function factorial(n) { factorial(5) // 120 ``` -上面代码通过一个正常形式的阶乘函数 factorial ,调用尾递归函数 tailFactorial ,看起来就正常多了。 +上面代码通过一个正常形式的阶乘函数`factorial`,调用尾递归函数`tailFactorial`,看起来就正常多了。 函数式编程有一个概念,叫做柯里化(currying),意思是将多参数的函数转换成单参数的形式。这里也可以使用柯里化。 @@ -1417,9 +1416,9 @@ const factorial = currying(tailFactorial, 1); factorial(5) // 120 ``` -上面代码通过柯里化,将尾递归函数 tailFactorial 变为只接受1个参数的 factorial 。 +上面代码通过柯里化,将尾递归函数`tailFactorial`变为只接受一个参数的`factorial`。 -第二种方法就简单多了,就是采用ES6的函数默认值。 +第二种方法就简单多了,就是采用 ES6 的函数默认值。 ```javascript function factorial(n, total = 1) { @@ -1430,13 +1429,13 @@ function factorial(n, total = 1) { factorial(5) // 120 ``` -上面代码中,参数 total 有默认值1,所以调用时不用提供这个值。 +上面代码中,参数`total`有默认值`1`,所以调用时不用提供这个值。 总结一下,递归本质上是一种循环操作。纯粹的函数式编程语言没有循环操作命令,所有的循环都用递归实现,这就是为什么尾递归对这些语言极其重要。对于其他支持“尾调用优化”的语言(比如Lua,ES6),只需要知道循环可以用递归代替,而一旦使用递归,就最好使用尾递归。 ### 严格模式 -ES6的尾调用优化只在严格模式下开启,正常模式是无效的。 +ES6 的尾调用优化只在严格模式下开启,正常模式是无效的。 这是因为在正常模式下,函数内部有两个变量,可以跟踪函数的调用栈。 @@ -1447,7 +1446,7 @@ ES6的尾调用优化只在严格模式下开启,正常模式是无效的。 ```javascript function restricted() { - "use strict"; + 'use strict'; restricted.caller; // 报错 restricted.arguments; // 报错 } diff --git a/docs/generator.md b/docs/generator.md index 1af51fc5c..209c8acdf 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -4,13 +4,13 @@ ### 基本概念 -Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数的异步应用》一章。 +Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍 Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数的异步应用》一章。 Generator 函数有多种理解角度。从语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。 执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。 -形式上,Generator 函数是一个普通函数,但是有两个特征。一是,`function`关键字与函数名之间有一个星号;二是,函数体内部使用`yield`语句,定义不同的内部状态(`yield`在英语里的意思就是“产出”)。 +形式上,Generator 函数是一个普通函数,但是有两个特征。一是,`function`关键字与函数名之间有一个星号;二是,函数体内部使用`yield`表达式,定义不同的内部状态(`yield`在英语里的意思就是“产出”)。 ```javascript function* helloWorldGenerator() { @@ -22,11 +22,11 @@ function* helloWorldGenerator() { var hw = helloWorldGenerator(); ``` -上面代码定义了一个Generator函数`helloWorldGenerator`,它内部有两个`yield`语句“hello”和“world”,即该函数有三个状态:hello,world和return语句(结束执行)。 +上面代码定义了一个 Generator 函数`helloWorldGenerator`,它内部有两个`yield`表达式(`hello`和`world`),即该函数有三个状态:hello,world 和 return 语句(结束执行)。 -然后,Generator函数的调用方法与普通函数一样,也是在函数名后面加上一对圆括号。不同的是,调用Generator函数后,该函数并不执行,返回的也不是函数运行结果,而是一个指向内部状态的指针对象,也就是上一章介绍的遍历器对象(Iterator Object)。 +然后,Generator 函数的调用方法与普通函数一样,也是在函数名后面加上一对圆括号。不同的是,调用 Generator 函数后,该函数并不执行,返回的也不是函数运行结果,而是一个指向内部状态的指针对象,也就是上一章介绍的遍历器对象(Iterator Object)。 -下一步,必须调用遍历器对象的next方法,使得指针移向下一个状态。也就是说,每次调用`next`方法,内部指针就从函数头部或上一次停下来的地方开始执行,直到遇到下一个`yield`语句(或`return`语句)为止。换言之,Generator函数是分段执行的,`yield`语句是暂停执行的标记,而`next`方法可以恢复执行。 +下一步,必须调用遍历器对象的`next`方法,使得指针移向下一个状态。也就是说,每次调用`next`方法,内部指针就从函数头部或上一次停下来的地方开始执行,直到遇到下一个`yield`表达式(或`return`语句)为止。换言之,Generator 函数是分段执行的,`yield`表达式是暂停执行的标记,而`next`方法可以恢复执行。 ```javascript hw.next() @@ -44,45 +44,42 @@ hw.next() 上面代码一共调用了四次`next`方法。 -第一次调用,Generator函数开始执行,直到遇到第一个`yield`语句为止。`next`方法返回一个对象,它的`value`属性就是当前`yield`语句的值hello,`done`属性的值false,表示遍历还没有结束。 +第一次调用,Generator 函数开始执行,直到遇到第一个`yield`表达式为止。`next`方法返回一个对象,它的`value`属性就是当前`yield`表达式的值`hello`,`done`属性的值`false`,表示遍历还没有结束。 -第二次调用,Generator函数从上次`yield`语句停下的地方,一直执行到下一个`yield`语句。`next`方法返回的对象的`value`属性就是当前`yield`语句的值world,`done`属性的值false,表示遍历还没有结束。 +第二次调用,Generator 函数从上次`yield`表达式停下的地方,一直执行到下一个`yield`表达式。`next`方法返回的对象的`value`属性就是当前`yield`表达式的值`world`,`done`属性的值`false`,表示遍历还没有结束。 -第三次调用,Generator函数从上次`yield`语句停下的地方,一直执行到`return`语句(如果没有return语句,就执行到函数结束)。`next`方法返回的对象的`value`属性,就是紧跟在`return`语句后面的表达式的值(如果没有`return`语句,则`value`属性的值为undefined),`done`属性的值true,表示遍历已经结束。 +第三次调用,Generator 函数从上次`yield`表达式停下的地方,一直执行到`return`语句(如果没有`return`语句,就执行到函数结束)。`next`方法返回的对象的`value`属性,就是紧跟在`return`语句后面的表达式的值(如果没有`return`语句,则`value`属性的值为`undefined`),`done`属性的值`true`,表示遍历已经结束。 -第四次调用,此时Generator函数已经运行完毕,`next`方法返回对象的`value`属性为undefined,`done`属性为true。以后再调用`next`方法,返回的都是这个值。 +第四次调用,此时 Generator 函数已经运行完毕,`next`方法返回对象的`value`属性为`undefined`,`done`属性为`true`。以后再调用`next`方法,返回的都是这个值。 -总结一下,调用Generator函数,返回一个遍历器对象,代表Generator函数的内部指针。以后,每次调用遍历器对象的`next`方法,就会返回一个有着`value`和`done`两个属性的对象。`value`属性表示当前的内部状态的值,是`yield`语句后面那个表达式的值;`done`属性是一个布尔值,表示是否遍历结束。 +总结一下,调用 Generator 函数,返回一个遍历器对象,代表 Generator 函数的内部指针。以后,每次调用遍历器对象的`next`方法,就会返回一个有着`value`和`done`两个属性的对象。`value`属性表示当前的内部状态的值,是`yield`表达式后面那个表达式的值;`done`属性是一个布尔值,表示是否遍历结束。 -ES6没有规定,`function`关键字与函数名之间的星号,写在哪个位置。这导致下面的写法都能通过。 +ES6 没有规定,`function`关键字与函数名之间的星号,写在哪个位置。这导致下面的写法都能通过。 ```javascript function * foo(x, y) { ··· } - function *foo(x, y) { ··· } - function* foo(x, y) { ··· } - function*foo(x, y) { ··· } ``` -由于Generator函数仍然是普通函数,所以一般的写法是上面的第三种,即星号紧跟在`function`关键字后面。本书也采用这种写法。 +由于 Generator 函数仍然是普通函数,所以一般的写法是上面的第三种,即星号紧跟在`function`关键字后面。本书也采用这种写法。 -### yield语句 +### yield 表达式 -由于Generator函数返回的遍历器对象,只有调用`next`方法才会遍历下一个内部状态,所以其实提供了一种可以暂停执行的函数。`yield`语句就是暂停标志。 +由于 Generator 函数返回的遍历器对象,只有调用`next`方法才会遍历下一个内部状态,所以其实提供了一种可以暂停执行的函数。`yield`表达式就是暂停标志。 遍历器对象的`next`方法的运行逻辑如下。 -(1)遇到`yield`语句,就暂停执行后面的操作,并将紧跟在`yield`后面的那个表达式的值,作为返回的对象的`value`属性值。 +(1)遇到`yield`表达式,就暂停执行后面的操作,并将紧跟在`yield`后面的那个表达式的值,作为返回的对象的`value`属性值。 -(2)下一次调用`next`方法时,再继续往下执行,直到遇到下一个`yield`语句。 +(2)下一次调用`next`方法时,再继续往下执行,直到遇到下一个`yield`表达式。 -(3)如果没有再遇到新的`yield`语句,就一直运行到函数结束,直到`return`语句为止,并将`return`语句后面的表达式的值,作为返回的对象的`value`属性值。 +(3)如果没有再遇到新的`yield`表达式,就一直运行到函数结束,直到`return`语句为止,并将`return`语句后面的表达式的值,作为返回的对象的`value`属性值。 (4)如果该函数没有`return`语句,则返回的对象的`value`属性值为`undefined`。 -需要注意的是,`yield`语句后面的表达式,只有当调用`next`方法、内部指针指向该语句时才会执行,因此等于为JavaScript提供了手动的“惰性求值”(Lazy Evaluation)的语法功能。 +需要注意的是,`yield`表达式后面的表达式,只有当调用`next`方法、内部指针指向该语句时才会执行,因此等于为 JavaScript 提供了手动的“惰性求值”(Lazy Evaluation)的语法功能。 ```javascript function* gen() { @@ -90,11 +87,11 @@ function* gen() { } ``` -上面代码中,yield后面的表达式`123 + 456`,不会立即求值,只会在`next`方法将指针移到这一句时,才会求值。 +上面代码中,`yield`后面的表达式`123 + 456`,不会立即求值,只会在`next`方法将指针移到这一句时,才会求值。 -`yield`语句与`return`语句既有相似之处,也有区别。相似之处在于,都能返回紧跟在语句后面的那个表达式的值。区别在于每次遇到`yield`,函数暂停执行,下一次再从该位置继续向后执行,而`return`语句不具备位置记忆的功能。一个函数里面,只能执行一次(或者说一个)`return`语句,但是可以执行多次(或者说多个)`yield`语句。正常函数只能返回一个值,因为只能执行一次`return`;Generator函数可以返回一系列的值,因为可以有任意多个`yield`。从另一个角度看,也可以说Generator生成了一系列的值,这也就是它的名称的来历(在英语中,generator这个词是“生成器”的意思)。 +`yield`表达式与`return`语句既有相似之处,也有区别。相似之处在于,都能返回紧跟在语句后面的那个表达式的值。区别在于每次遇到`yield`,函数暂停执行,下一次再从该位置继续向后执行,而`return`语句不具备位置记忆的功能。一个函数里面,只能执行一次(或者说一个)`return`语句,但是可以执行多次(或者说多个)`yield`表达式。正常函数只能返回一个值,因为只能执行一次`return`;Generator 函数可以返回一系列的值,因为可以有任意多个`yield`。从另一个角度看,也可以说 Generator 生成了一系列的值,这也就是它的名称的来历(英语中,generator 这个词是“生成器”的意思)。 -Generator函数可以不用`yield`语句,这时就变成了一个单纯的暂缓执行函数。 +Generator 函数可以不用`yield`表达式,这时就变成了一个单纯的暂缓执行函数。 ```javascript function* f() { @@ -110,7 +107,7 @@ setTimeout(function () { 上面代码中,函数`f`如果是普通函数,在为变量`generator`赋值时就会执行。但是,函数`f`是一个 Generator 函数,就变成只有调用`next`方法时,函数`f`才会执行。 -另外需要注意,`yield`语句只能用在 Generator 函数里面,用在其他地方都会报错。 +另外需要注意,`yield`表达式只能用在 Generator 函数里面,用在其他地方都会报错。 ```javascript (function (){ @@ -119,7 +116,7 @@ setTimeout(function () { // SyntaxError: Unexpected number ``` -上面代码在一个普通函数中使用`yield`语句,结果产生一个句法错误。 +上面代码在一个普通函数中使用`yield`表达式,结果产生一个句法错误。 下面是另外一个例子。 @@ -141,7 +138,7 @@ for (var f of flat(arr)){ } ``` -上面代码也会产生句法错误,因为`forEach`方法的参数是一个普通函数,但是在里面使用了`yield`语句(这个函数里面还使用了`yield*`语句,详细介绍见后文)。一种修改方法是改用`for`循环。 +上面代码也会产生句法错误,因为`forEach`方法的参数是一个普通函数,但是在里面使用了`yield`表达式(这个函数里面还使用了`yield*`表达式,详细介绍见后文)。一种修改方法是改用`for`循环。 ```javascript var arr = [1, [[2, 3], 4], [5, 6]]; @@ -164,7 +161,7 @@ for (var f of flat(arr)) { // 1, 2, 3, 4, 5, 6 ``` -另外,`yield`语句如果用在一个表达式之中,必须放在圆括号里面。 +另外,`yield`表达式如果用在另一个表达式之中,必须放在圆括号里面。 ```javascript function* demo() { @@ -176,7 +173,7 @@ function* demo() { } ``` -`yield`语句用作函数参数或放在赋值表达式的右边,可以不加括号。 +`yield`表达式用作函数参数或放在赋值表达式的右边,可以不加括号。 ```javascript function* demo() { @@ -189,7 +186,7 @@ function* demo() { 上一章说过,任意一个对象的`Symbol.iterator`方法,等于该对象的遍历器生成函数,调用该函数会返回该对象的一个遍历器对象。 -由于Generator函数就是遍历器生成函数,因此可以把Generator赋值给对象的`Symbol.iterator`属性,从而使得该对象具有Iterator接口。 +由于 Generator 函数就是遍历器生成函数,因此可以把 Generator 赋值给对象的`Symbol.iterator`属性,从而使得该对象具有 Iterator 接口。 ```javascript var myIterable = {}; @@ -202,9 +199,9 @@ myIterable[Symbol.iterator] = function* () { [...myIterable] // [1, 2, 3] ``` -上面代码中,Generator函数赋值给`Symbol.iterator`属性,从而使得`myIterable`对象具有了Iterator接口,可以被`...`运算符遍历了。 +上面代码中,Generator 函数赋值给`Symbol.iterator`属性,从而使得`myIterable`对象具有了 Iterator 接口,可以被`...`运算符遍历了。 -Generator函数执行后,返回一个遍历器对象。该对象本身也具有`Symbol.iterator`属性,执行后返回自身。 +Generator 函数执行后,返回一个遍历器对象。该对象本身也具有`Symbol.iterator`属性,执行后返回自身。 ```javascript function* gen(){ @@ -217,11 +214,11 @@ g[Symbol.iterator]() === g // true ``` -上面代码中,`gen`是一个Generator函数,调用它会生成一个遍历器对象`g`。它的`Symbol.iterator`属性,也是一个遍历器对象生成函数,执行后返回它自己。 +上面代码中,`gen`是一个 Generator 函数,调用它会生成一个遍历器对象`g`。它的`Symbol.iterator`属性,也是一个遍历器对象生成函数,执行后返回它自己。 -## next方法的参数 +## next 方法的参数 -`yield`语句本身没有返回值,或者说总是返回`undefined`。`next`方法可以带一个参数,该参数就会被当作上一个`yield`语句的返回值。 +`yield`表达式本身没有返回值,或者说总是返回`undefined`。`next`方法可以带一个参数,该参数就会被当作上一个`yield`表达式的返回值。 ```javascript function* f() { @@ -238,7 +235,7 @@ g.next() // { value: 1, done: false } g.next(true) // { value: 0, done: false } ``` -上面代码先定义了一个可以无限运行的 Generator 函数`f`,如果`next`方法没有参数,每次运行到`yield`语句,变量`reset`的值总是`undefined`。当`next`方法带一个参数`true`时,变量`reset`就被重置为这个参数(即`true`),因此`i`会等于`-1`,下一轮循环就会从`-1`开始递增。 +上面代码先定义了一个可以无限运行的 Generator 函数`f`,如果`next`方法没有参数,每次运行到`yield`表达式,变量`reset`的值总是`undefined`。当`next`方法带一个参数`true`时,变量`reset`就被重置为这个参数(即`true`),因此`i`会等于`-1`,下一轮循环就会从`-1`开始递增。 这个功能有很重要的语法意义。Generator 函数从暂停状态到恢复运行,它的上下文状态(context)是不变的。通过`next`方法的参数,就有办法在 Generator 函数开始运行之后,继续向函数体内部注入值。也就是说,可以在 Generator 函数运行的不同阶段,从外部向内部注入不同的值,从而调整函数行为。 @@ -264,11 +261,11 @@ b.next(13) // { value:42, done:true } 上面代码中,第二次运行`next`方法的时候不带参数,导致y的值等于`2 * undefined`(即`NaN`),除以3以后还是`NaN`,因此返回对象的`value`属性也等于`NaN`。第三次运行`Next`方法的时候不带参数,所以`z`等于`undefined`,返回对象的`value`属性等于`5 + NaN + undefined`,即`NaN`。 -如果向`next`方法提供参数,返回结果就完全不一样了。上面代码第一次调用`b`的`next`方法时,返回`x+1`的值6;第二次调用`next`方法,将上一次`yield`语句的值设为12,因此`y`等于24,返回`y / 3`的值8;第三次调用`next`方法,将上一次`yield`语句的值设为13,因此`z`等于13,这时`x`等于5,`y`等于24,所以`return`语句的值等于42。 +如果向`next`方法提供参数,返回结果就完全不一样了。上面代码第一次调用`b`的`next`方法时,返回`x+1`的值`6`;第二次调用`next`方法,将上一次`yield`表达式的值设为`12`,因此`y`等于`24`,返回`y / 3`的值`8`;第三次调用`next`方法,将上一次`yield`表达式的值设为`13`,因此`z`等于`13`,这时`x`等于`5`,`y`等于`24`,所以`return`语句的值等于`42`。 -注意,由于`next`方法的参数表示上一个`yield`语句的返回值,所以第一次使用`next`方法时,不能带有参数。V8引擎直接忽略第一次使用`next`方法时的参数,只有从第二次使用`next`方法开始,参数才是有效的。从语义上讲,第一个`next`方法用来启动遍历器对象,所以不用带有参数。 +注意,由于`next`方法的参数表示上一个`yield`表达式的返回值,所以第一次使用`next`方法时,不能带有参数。V8 引擎直接忽略第一次使用`next`方法时的参数,只有从第二次使用`next`方法开始,参数才是有效的。从语义上讲,第一个`next`方法用来启动遍历器对象,所以不用带有参数。 -如果想要第一次调用`next`方法时,就能够输入值,可以在Generator函数外面再包一层。 +如果想要第一次调用`next`方法时,就能够输入值,可以在 Generator 函数外面再包一层。 ```javascript function wrapper(generatorFunction) { @@ -288,9 +285,9 @@ wrapped().next('hello!') // First input: hello! ``` -上面代码中,Generator函数如果不用`wrapper`先包一层,是无法第一次调用`next`方法,就输入参数的。 +上面代码中,Generator 函数如果不用`wrapper`先包一层,是无法第一次调用`next`方法,就输入参数的。 -再看一个通过`next`方法的参数,向Generator函数内部输入值的例子。 +再看一个通过`next`方法的参数,向 Generator 函数内部输入值的例子。 ```javascript function* dataConsumer() { @@ -309,11 +306,11 @@ genObj.next('b') // 2. b ``` -上面代码是一个很直观的例子,每次通过`next`方法向Generator函数输入值,然后打印出来。 +上面代码是一个很直观的例子,每次通过`next`方法向 Generator 函数输入值,然后打印出来。 -## for...of循环 +## for...of 循环 -`for...of`循环可以自动遍历Generator函数时生成的`Iterator`对象,且此时不再需要调用`next`方法。 +`for...of`循环可以自动遍历 Generator 函数时生成的`Iterator`对象,且此时不再需要调用`next`方法。 ```javascript function *foo() { @@ -331,9 +328,9 @@ for (let v of foo()) { // 1 2 3 4 5 ``` -上面代码使用`for...of`循环,依次显示5个`yield`语句的值。这里需要注意,一旦`next`方法的返回对象的`done`属性为`true`,`for...of`循环就会中止,且不包含该返回对象,所以上面代码的`return`语句返回的6,不包括在`for...of`循环之中。 +上面代码使用`for...of`循环,依次显示5个`yield`表达式的值。这里需要注意,一旦`next`方法的返回对象的`done`属性为`true`,`for...of`循环就会中止,且不包含该返回对象,所以上面代码的`return`语句返回的`6`,不包括在`for...of`循环之中。 -下面是一个利用Generator函数和`for...of`循环,实现斐波那契数列的例子。 +下面是一个利用 Generator 函数和`for...of`循环,实现斐波那契数列的例子。 ```javascript function* fibonacci() { @@ -352,7 +349,7 @@ for (let n of fibonacci()) { 从上面代码可见,使用`for...of`语句时不需要使用`next`方法。 -利用`for...of`循环,可以写出遍历任意对象(object)的方法。原生的JavaScript对象没有遍历接口,无法使用`for...of`循环,通过Generator函数为它加上这个接口,就可以用了。 +利用`for...of`循环,可以写出遍历任意对象(object)的方法。原生的 JavaScript 对象没有遍历接口,无法使用`for...of`循环,通过 Generator 函数为它加上这个接口,就可以用了。 ```javascript function* objectEntries(obj) { @@ -372,7 +369,7 @@ for (let [key, value] of objectEntries(jane)) { // last: Doe ``` -上面代码中,对象`jane`原生不具备Iterator接口,无法用`for...of`遍历。这时,我们通过Generator函数`objectEntries`为它加上遍历器接口,就可以用`for...of`遍历了。加上遍历器接口的另一种写法是,将Generator函数加到对象的`Symbol.iterator`属性上面。 +上面代码中,对象`jane`原生不具备 Iterator 接口,无法用`for...of`遍历。这时,我们通过 Generator 函数`objectEntries`为它加上遍历器接口,就可以用`for...of`遍历了。加上遍历器接口的另一种写法是,将 Generator 函数加到对象的`Symbol.iterator`属性上面。 ```javascript function* objectEntries() { @@ -394,7 +391,7 @@ for (let [key, value] of jane) { // last: Doe ``` -除了`for...of`循环以外,扩展运算符(`...`)、解构赋值和`Array.from`方法内部调用的,都是遍历器接口。这意味着,它们都可以将Generator函数返回的Iterator对象,作为参数。 +除了`for...of`循环以外,扩展运算符(`...`)、解构赋值和`Array.from`方法内部调用的,都是遍历器接口。这意味着,它们都可以将 Generator 函数返回的 Iterator 对象,作为参数。 ```javascript function* numbers () { @@ -425,7 +422,7 @@ for (let n of numbers()) { ## Generator.prototype.throw() -Generator函数返回的遍历器对象,都有一个`throw`方法,可以在函数体外抛出错误,然后在Generator函数体内捕获。 +Generator 函数返回的遍历器对象,都有一个`throw`方法,可以在函数体外抛出错误,然后在 Generator 函数体内捕获。 ```javascript var g = function* () { @@ -449,7 +446,7 @@ try { // 外部捕获 b ``` -上面代码中,遍历器对象`i`连续抛出两个错误。第一个错误被Generator函数体内的`catch`语句捕获。`i`第二次抛出错误,由于Generator函数内部的`catch`语句已经执行过了,不会再捕捉到这个错误了,所以这个错误就被抛出了Generator函数体,被函数体外的`catch`语句捕获。 +上面代码中,遍历器对象`i`连续抛出两个错误。第一个错误被 Generator 函数体内的`catch`语句捕获。`i`第二次抛出错误,由于 Generator 函数内部的`catch`语句已经执行过了,不会再捕捉到这个错误了,所以这个错误就被抛出了 Generator 函数体,被函数体外的`catch`语句捕获。 `throw`方法可以接受一个参数,该参数会被`catch`语句接收,建议抛出`Error`对象的实例。 @@ -496,7 +493,7 @@ try { 上面代码之所以只捕获了`a`,是因为函数体外的`catch`语句块,捕获了抛出的`a`错误以后,就不会再继续`try`代码块里面剩余的语句了。 -如果Generator函数内部没有部署`try...catch`代码块,那么`throw`方法抛出的错误,将被外部`try...catch`代码块捕获。 +如果 Generator 函数内部没有部署`try...catch`代码块,那么`throw`方法抛出的错误,将被外部`try...catch`代码块捕获。 ```javascript var g = function* () { @@ -518,9 +515,9 @@ try { // 外部捕获 a ``` -上面代码中,Generator函数`g`内部没有部署`try...catch`代码块,所以抛出的错误直接被外部`catch`代码块捕获。 +上面代码中,Generator 函数`g`内部没有部署`try...catch`代码块,所以抛出的错误直接被外部`catch`代码块捕获。 -如果Generator函数内部和外部,都没有部署`try...catch`代码块,那么程序将报错,直接中断执行。 +如果 Generator 函数内部和外部,都没有部署`try...catch`代码块,那么程序将报错,直接中断执行。 ```javascript var gen = function* gen(){ @@ -537,7 +534,7 @@ g.throw(); 上面代码中,`g.throw`抛出错误以后,没有任何`try...catch`代码块可以捕获这个错误,导致程序报错,中断执行。 -`throw`方法被捕获以后,会附带执行下一条`yield`语句。也就是说,会附带执行一次`next`方法。 +`throw`方法被捕获以后,会附带执行下一条`yield`表达式。也就是说,会附带执行一次`next`方法。 ```javascript var gen = function* gen(){ @@ -556,7 +553,7 @@ g.throw() // b g.next() // c ``` -上面代码中,`g.throw`方法被捕获以后,自动执行了一次`next`方法,所以会打印`b`。另外,也可以看到,只要Generator函数内部部署了`try...catch`代码块,那么遍历器的`throw`方法抛出的错误,不影响下一次遍历。 +上面代码中,`g.throw`方法被捕获以后,自动执行了一次`next`方法,所以会打印`b`。另外,也可以看到,只要 Generator 函数内部部署了`try...catch`代码块,那么遍历器的`throw`方法抛出的错误,不影响下一次遍历。 另外,`throw`命令与`g.throw`方法是无关的,两者互不影响。 @@ -580,9 +577,9 @@ try { 上面代码中,`throw`命令抛出的错误不会影响到遍历器的状态,所以两次执行`next`方法,都进行了正确的操作。 -这种函数体内捕获错误的机制,大大方便了对错误的处理。多个`yield`语句,可以只用一个`try...catch`代码块来捕获错误。如果使用回调函数的写法,想要捕获多个错误,就不得不为每个函数内部写一个错误处理语句,现在只在Generator函数内部写一次`catch`语句就可以了。 +这种函数体内捕获错误的机制,大大方便了对错误的处理。多个`yield`表达式,可以只用一个`try...catch`代码块来捕获错误。如果使用回调函数的写法,想要捕获多个错误,就不得不为每个函数内部写一个错误处理语句,现在只在 Generator 函数内部写一次`catch`语句就可以了。 -Generator函数体外抛出的错误,可以在函数体内捕获;反过来,Generator函数体内抛出的错误,也可以被函数体外的`catch`捕获。 +Generator 函数体外抛出的错误,可以在函数体内捕获;反过来,Generator 函数体内抛出的错误,也可以被函数体外的`catch`捕获。 ```javascript function* foo() { @@ -604,7 +601,7 @@ try { 上面代码中,第二个`next`方法向函数体内传入一个参数42,数值是没有`toUpperCase`方法的,所以会抛出一个TypeError错误,被函数体外的`catch`捕获。 -一旦Generator执行过程中抛出错误,且没有被内部捕获,就不会再执行下去了。如果此后还调用`next`方法,将返回一个`value`属性等于`undefined`、`done`属性等于`true`的对象,即JavaScript引擎认为这个Generator已经运行结束了。 +一旦 Generator 执行过程中抛出错误,且没有被内部捕获,就不会再执行下去了。如果此后还调用`next`方法,将返回一个`value`属性等于`undefined`、`done`属性等于`true`的对象,即 JavaScript 引擎认为这个 Generator 已经运行结束了。 ```javascript function* g() { @@ -648,7 +645,7 @@ log(g()); // caller done ``` -上面代码一共三次运行`next`方法,第二次运行的时候会抛出错误,然后第三次运行的时候,Generator函数就已经结束了,不再执行下去了。 +上面代码一共三次运行`next`方法,第二次运行的时候会抛出错误,然后第三次运行的时候,Generator 函数就已经结束了,不再执行下去了。 ## Generator.prototype.return() @@ -685,7 +682,7 @@ g.next() // { value: 1, done: false } g.return() // { value: undefined, done: true } ``` -如果Generator函数内部有`try...finally`代码块,那么`return`方法会推迟到`finally`代码块执行完再执行。 +如果 Generator 函数内部有`try...finally`代码块,那么`return`方法会推迟到`finally`代码块执行完再执行。 ```javascript function* numbers () { @@ -709,7 +706,7 @@ g.next() // { value: 7, done: true } 上面代码中,调用`return`方法后,就开始执行`finally`代码块,然后等到`finally`代码块执行完,再执行`return`方法。 -## yield* 语句 +## yield* 表达式 如果在 Generator 函数内部,调用另一个 Generator 函数,默认情况下是没有效果的。 @@ -734,7 +731,7 @@ for (let v of bar()){ 上面代码中,`foo`和`bar`都是 Generator 函数,在`bar`里面调用`foo`,是不会有效果的。 -这个就需要用到`yield*`语句,用来在一个 Generator 函数里面执行另一个 Generator 函数。 +这个就需要用到`yield*`表达式,用来在一个 Generator 函数里面执行另一个 Generator 函数。 ```javascript function* bar() { @@ -801,7 +798,7 @@ gen.next().value // "close" 上面例子中,`outer2`使用了`yield*`,`outer1`没使用。结果就是,`outer1`返回一个遍历器对象,`outer2`返回该遍历器对象的内部值。 -从语法角度看,如果`yield`命令后面跟的是一个遍历器对象,需要在`yield`命令后面加上星号,表明它返回的是一个遍历器对象。这被称为`yield*`语句。 +从语法角度看,如果`yield`表达式后面跟的是一个遍历器对象,需要在`yield`表达式后面加上星号,表明它返回的是一个遍历器对象。这被称为`yield*`表达式。 ```javascript let delegatedIterator = (function* () { @@ -826,7 +823,7 @@ for(let value of delegatingIterator) { 上面代码中,`delegatingIterator`是代理者,`delegatedIterator`是被代理者。由于`yield* delegatedIterator`语句得到的值,是一个遍历器,所以要用星号表示。运行结果就是使用一个遍历器,遍历了多个Generator函数,有递归的效果。 -`yield*`后面的Generator函数(没有`return`语句时),等同于在Generator函数内部,部署一个`for...of`循环。 +`yield*`后面的 Generator 函数(没有`return`语句时),等同于在 Generator 函数内部,部署一个`for...of`循环。 ```javascript function* concat(iter1, iter2) { @@ -860,7 +857,7 @@ gen().next() // { value:"a", done:false } 上面代码中,`yield`命令后面如果不加星号,返回的是整个数组,加了星号就表示返回的是数组的遍历器对象。 -实际上,任何数据结构只要有Iterator接口,就可以被`yield*`遍历。 +实际上,任何数据结构只要有 Iterator 接口,就可以被`yield*`遍历。 ```javascript let read = (function* () { @@ -872,9 +869,9 @@ read.next().value // "hello" read.next().value // "h" ``` -上面代码中,`yield`语句返回整个字符串,`yield*`语句返回单个字符。因为字符串具有Iterator接口,所以被`yield*`遍历。 +上面代码中,`yield`表达式返回整个字符串,`yield*`语句返回单个字符。因为字符串具有 Iterator 接口,所以被`yield*`遍历。 -如果被代理的Generator函数有`return`语句,那么就可以向代理它的Generator函数返回数据。 +如果被代理的 Generator 函数有`return`语句,那么就可以向代理它的 Generator 函数返回数据。 ```javascript function *foo() { @@ -994,7 +991,7 @@ result ## 作为对象属性的Generator函数 -如果一个对象的属性是Generator函数,可以简写成下面的形式。 +如果一个对象的属性是 Generator 函数,可以简写成下面的形式。 ```javascript let obj = { @@ -1004,7 +1001,7 @@ let obj = { }; ``` -上面代码中,`myGeneratorMethod`属性前面有一个星号,表示这个属性是一个Generator函数。 +上面代码中,`myGeneratorMethod`属性前面有一个星号,表示这个属性是一个 Generator 函数。 它的完整形式如下,与上面的写法是等价的。 @@ -1016,9 +1013,9 @@ let obj = { }; ``` -## Generator函数的`this` +## Generator 函数的`this` -Generator函数总是返回一个遍历器,ES6规定这个遍历器是Generator函数的实例,也继承了Generator函数的`prototype`对象上的方法。 +Generator 函数总是返回一个遍历器,ES6 规定这个遍历器是 Generator 函数的实例,也继承了 Generator 函数的`prototype`对象上的方法。 ```javascript function* g() {} @@ -1033,7 +1030,7 @@ obj instanceof g // true obj.hello() // 'hi!' ``` -上面代码表明,Generator函数`g`返回的遍历器`obj`,是`g`的实例,而且继承了`g.prototype`。但是,如果把`g`当作普通的构造函数,并不会生效,因为`g`返回的总是遍历器对象,而不是`this`对象。 +上面代码表明,Generator 函数`g`返回的遍历器`obj`,是`g`的实例,而且继承了`g.prototype`。但是,如果把`g`当作普通的构造函数,并不会生效,因为`g`返回的总是遍历器对象,而不是`this`对象。 ```javascript function* g() { @@ -1060,9 +1057,9 @@ new F() 上面代码中,`new`命令跟构造函数`F`一起使用,结果报错,因为`F`不是构造函数。 -那么,有没有办法让Generator函数返回一个正常的对象实例,既可以用`next`方法,又可以获得正常的`this`? +那么,有没有办法让 Generator 函数返回一个正常的对象实例,既可以用`next`方法,又可以获得正常的`this`? -下面是一个变通方法。首先,生成一个空对象,使用`call`方法绑定Generator函数内部的`this`。这样,构造函数调用以后,这个空对象就是Generator函数的实例对象了。 +下面是一个变通方法。首先,生成一个空对象,使用`call`方法绑定 Generator 函数内部的`this`。这样,构造函数调用以后,这个空对象就是 Generator 函数的实例对象了。 ```javascript function* F() { @@ -1082,7 +1079,7 @@ obj.b // 2 obj.c // 3 ``` -上面代码中,首先是`F`内部的`this`对象绑定`obj`对象,然后调用它,返回一个Iterator对象。这个对象执行三次`next`方法(因为`F`内部有两个`yield`语句),完成F内部所有代码的运行。这时,所有内部属性都绑定在`obj`对象上了,因此`obj`对象也就成了`F`的实例。 +上面代码中,首先是`F`内部的`this`对象绑定`obj`对象,然后调用它,返回一个 Iterator 对象。这个对象执行三次`next`方法(因为`F`内部有两个`yield`表达式),完成F内部所有代码的运行。这时,所有内部属性都绑定在`obj`对象上了,因此`obj`对象也就成了`F`的实例。 上面代码中,执行的是遍历器对象`f`,但是生成的对象实例是`obj`,有没有办法将这两个对象统一呢? @@ -1131,9 +1128,9 @@ f.c // 3 ## 含义 -### Generator与状态机 +### Generator 与状态机 -Generator是实现状态机的最佳结构。比如,下面的clock函数就是一个状态机。 +Generator 是实现状态机的最佳结构。比如,下面的`clock`函数就是一个状态机。 ```javascript var ticking = true; @@ -1146,10 +1143,10 @@ var clock = function() { } ``` -上面代码的clock函数一共有两种状态(Tick和Tock),每运行一次,就改变一次状态。这个函数如果用Generator实现,就是下面这样。 +上面代码的`clock`函数一共有两种状态(`Tick`和`Tock`),每运行一次,就改变一次状态。这个函数如果用 Generator 实现,就是下面这样。 ```javascript -var clock = function*() { +var clock = function* () { while (true) { console.log('Tick!'); yield; @@ -1159,7 +1156,7 @@ var clock = function*() { }; ``` -上面的Generator实现与ES5实现对比,可以看到少了用来保存状态的外部变量`ticking`,这样就更简洁,更安全(状态不会被非法篡改)、更符合函数式编程的思想,在写法上也更优雅。Generator之所以可以不用外部变量保存状态,是因为它本身就包含了一个状态信息,即目前是否处于暂停态。 +上面的 Generator 实现与 ES5 实现对比,可以看到少了用来保存状态的外部变量`ticking`,这样就更简洁,更安全(状态不会被非法篡改)、更符合函数式编程的思想,在写法上也更优雅。Generator 之所以可以不用外部变量保存状态,是因为它本身就包含了一个状态信息,即目前是否处于暂停态。 ### Generator与协程 @@ -1175,19 +1172,19 @@ var clock = function*() { 不难看出,协程适合用于多任务运行的环境。在这个意义上,它与普通的线程很相似,都有自己的执行上下文、可以分享全局变量。它们的不同之处在于,同一时间可以有多个线程处于运行状态,但是运行的协程只能有一个,其他协程都处于暂停状态。此外,普通的线程是抢先式的,到底哪个线程优先得到资源,必须由运行环境决定,但是协程是合作式的,执行权由协程自己分配。 -由于ECMAScript是单线程语言,只能保持一个调用栈。引入协程以后,每个任务可以保持自己的调用栈。这样做的最大好处,就是抛出错误的时候,可以找到原始的调用栈。不至于像异步操作的回调函数那样,一旦出错,原始的调用栈早就结束。 +由于 JavaScript 是单线程语言,只能保持一个调用栈。引入协程以后,每个任务可以保持自己的调用栈。这样做的最大好处,就是抛出错误的时候,可以找到原始的调用栈。不至于像异步操作的回调函数那样,一旦出错,原始的调用栈早就结束。 -Generator函数是ECMAScript 6对协程的实现,但属于不完全实现。Generator函数被称为“半协程”(semi-coroutine),意思是只有Generator函数的调用者,才能将程序的执行权还给Generator函数。如果是完全执行的协程,任何函数都可以让暂停的协程继续执行。 +Generator 函数是 ES6 对协程的实现,但属于不完全实现。Generator 函数被称为“半协程”(semi-coroutine),意思是只有 Generator 函数的调用者,才能将程序的执行权还给 Generator 函数。如果是完全执行的协程,任何函数都可以让暂停的协程继续执行。 -如果将Generator函数当作协程,完全可以将多个需要互相协作的任务写成Generator函数,它们之间使用yield语句交换控制权。 +如果将 Generator 函数当作协程,完全可以将多个需要互相协作的任务写成 Generator 函数,它们之间使用`yield`表示式交换控制权。 ## 应用 -Generator可以暂停函数执行,返回任意表达式的值。这种特点使得Generator有多种应用场景。 +Generator 可以暂停函数执行,返回任意表达式的值。这种特点使得 Generator 有多种应用场景。 ### (1)异步操作的同步化表达 -Generator函数的暂停执行的效果,意味着可以把异步操作写在yield语句里面,等到调用next方法时再往后执行。这实际上等同于不需要写回调函数了,因为异步操作的后续操作可以放在yield语句下面,反正要等到调用next方法时再执行。所以,Generator函数的一个重要实际意义就是用来处理异步操作,改写回调函数。 +Generator 函数的暂停执行的效果,意味着可以把异步操作写在`yield`表达式里面,等到调用`next`方法时再往后执行。这实际上等同于不需要写回调函数了,因为异步操作的后续操作可以放在`yield`表达式下面,反正要等到调用`next`方法时再执行。所以,Generator 函数的一个重要实际意义就是用来处理异步操作,改写回调函数。 ```javascript function* loadUI() { @@ -1203,9 +1200,9 @@ loader.next() loader.next() ``` -上面代码表示,第一次调用loadUI函数时,该函数不会执行,仅返回一个遍历器。下一次对该遍历器调用next方法,则会显示Loading界面,并且异步加载数据。等到数据加载完成,再一次使用next方法,则会隐藏Loading界面。可以看到,这种写法的好处是所有Loading界面的逻辑,都被封装在一个函数,按部就班非常清晰。 +上面代码中,第一次调用`loadUI`函数时,该函数不会执行,仅返回一个遍历器。下一次对该遍历器调用`next`方法,则会显示`Loading`界面(`showLoadingScreen`),并且异步加载数据(`loadUIDataAsynchronously`)。等到数据加载完成,再一次使用`next`方法,则会隐藏`Loading`界面。可以看到,这种写法的好处是所有`Loading`界面的逻辑,都被封装在一个函数,按部就班非常清晰。 -Ajax是典型的异步操作,通过Generator函数部署Ajax操作,可以用同步的方式表达。 +Ajax 是典型的异步操作,通过 Generator 函数部署 Ajax 操作,可以用同步的方式表达。 ```javascript function* main() { @@ -1224,9 +1221,9 @@ var it = main(); it.next(); ``` -上面代码的main函数,就是通过Ajax操作获取数据。可以看到,除了多了一个yield,它几乎与同步操作的写法完全一样。注意,makeAjaxCall函数中的next方法,必须加上response参数,因为yield语句构成的表达式,本身是没有值的,总是等于undefined。 +上面代码的`main`函数,就是通过 Ajax 操作获取数据。可以看到,除了多了一个`yield`,它几乎与同步操作的写法完全一样。注意,`makeAjaxCall`函数中的`next`方法,必须加上`response`参数,因为`yield`表达式,本身是没有值的,总是等于`undefined`。 -下面是另一个例子,通过Generator函数逐行读取文本文件。 +下面是另一个例子,通过 Generator 函数逐行读取文本文件。 ```javascript function* numbers() { @@ -1241,7 +1238,7 @@ function* numbers() { } ``` -上面代码打开文本文件,使用yield语句可以手动逐行读取文件。 +上面代码打开文本文件,使用`yield`表达式可以手动逐行读取文件。 ### (2)控制流管理 @@ -1259,7 +1256,7 @@ step1(function (value1) { }); ``` -采用Promise改写上面的代码。 +采用 Promise 改写上面的代码。 ```javascript Promise.resolve(step1) @@ -1274,7 +1271,7 @@ Promise.resolve(step1) .done(); ``` -上面代码已经把回调函数,改成了直线执行的形式,但是加入了大量Promise的语法。Generator函数可以进一步改善代码运行流程。 +上面代码已经把回调函数,改成了直线执行的形式,但是加入了大量 Promise 的语法。Generator 函数可以进一步改善代码运行流程。 ```javascript function* longRunningTask(value1) { @@ -1320,22 +1317,22 @@ function *iterateSteps(steps){ } ``` -上面代码中,数组`steps`封装了一个任务的多个步骤,Generator函数`iterateSteps`则是依次为这些步骤加上`yield`命令。 +上面代码中,数组`steps`封装了一个任务的多个步骤,Generator 函数`iterateSteps`则是依次为这些步骤加上`yield`命令。 将任务分解成步骤之后,还可以将项目分解成多个依次执行的任务。 ```javascript let jobs = [job1, job2, job3]; -function *iterateJobs(jobs){ +function* iterateJobs(jobs){ for (var i=0; i< jobs.length; i++){ var job = jobs[i]; - yield *iterateSteps(job.steps); + yield* iterateSteps(job.steps); } } ``` -上面代码中,数组`jobs`封装了一个项目的多个任务,Generator函数`iterateJobs`则是依次为这些任务加上`yield *`命令。 +上面代码中,数组`jobs`封装了一个项目的多个任务,Generator 函数`iterateJobs`则是依次为这些任务加上`yield*`命令。 最后,就可以用`for...of`循环一次性依次执行所有任务的所有步骤。 @@ -1360,9 +1357,9 @@ while (!res.done){ } ``` -### (3)部署Iterator接口 +### (3)部署 Iterator 接口 -利用Generator函数,可以在任意对象上部署Iterator接口。 +利用 Generator 函数,可以在任意对象上部署 Iterator 接口。 ```javascript function* iterEntries(obj) { @@ -1383,9 +1380,9 @@ for (let [key, value] of iterEntries(myObj)) { // bar 7 ``` -上述代码中,`myObj`是一个普通对象,通过`iterEntries`函数,就有了Iterator接口。也就是说,可以在任意对象上部署`next`方法。 +上述代码中,`myObj`是一个普通对象,通过`iterEntries`函数,就有了 Iterator 接口。也就是说,可以在任意对象上部署`next`方法。 -下面是一个对数组部署Iterator接口的例子,尽管数组原生具有这个接口。 +下面是一个对数组部署 Iterator 接口的例子,尽管数组原生具有这个接口。 ```javascript function* makeSimpleGenerator(array){ @@ -1405,7 +1402,7 @@ gen.next().done // true ### (4)作为数据结构 -Generator可以看作是数据结构,更确切地说,可以看作是一个数组结构,因为Generator函数可以返回一系列的值,这意味着它可以对任意表达式,提供类似数组的接口。 +Generator 可以看作是数据结构,更确切地说,可以看作是一个数组结构,因为 Generator 函数可以返回一系列的值,这意味着它可以对任意表达式,提供类似数组的接口。 ```javascript function *doStuff() { @@ -1415,7 +1412,7 @@ function *doStuff() { } ``` -上面代码就是依次返回三个函数,但是由于使用了Generator函数,导致可以像处理数组那样,处理这三个返回的函数。 +上面代码就是依次返回三个函数,但是由于使用了 Generator 函数,导致可以像处理数组那样,处理这三个返回的函数。 ```javascript for (task of doStuff()) { @@ -1423,7 +1420,7 @@ for (task of doStuff()) { } ``` -实际上,如果用ES5表达,完全可以用数组模拟Generator的这种用法。 +实际上,如果用 ES5 表达,完全可以用数组模拟 Generator 的这种用法。 ```javascript function doStuff() { @@ -1435,5 +1432,5 @@ function doStuff() { } ``` -上面的函数,可以用一模一样的for...of循环处理!两相一比较,就不难看出Generator使得数据或者操作,具备了类似数组的接口。 +上面的函数,可以用一模一样的`for...of`循环处理!两相一比较,就不难看出 Generator 使得数据或者操作,具备了类似数组的接口。 From ab9781950823a2aad255e2bd6ed7488320f34671 Mon Sep 17 00:00:00 2001 From: Tse-Hsien Chiang Date: Thu, 11 May 2017 17:10:53 +0800 Subject: [PATCH 264/994] Fix typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正錯字:Funciton.prototype -> Function.prototype --- docs/class.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/class.md b/docs/class.md index 3904e0779..7a71c27a1 100644 --- a/docs/class.md +++ b/docs/class.md @@ -695,7 +695,7 @@ A.__proto__ === Function.prototype // true A.prototype.__proto__ === Object.prototype // true ``` -这种情况下,A作为一个基类(即不存在任何继承),就是一个普通函数,所以直接继承`Funciton.prototype`。但是,`A`调用后返回一个空对象(即`Object`实例),所以`A.prototype.__proto__`指向构造函数(`Object`)的`prototype`属性。 +这种情况下,A作为一个基类(即不存在任何继承),就是一个普通函数,所以直接继承`Function.prototype`。但是,`A`调用后返回一个空对象(即`Object`实例),所以`A.prototype.__proto__`指向构造函数(`Object`)的`prototype`属性。 第三种特殊情况,子类继承`null`。 @@ -707,7 +707,7 @@ A.__proto__ === Function.prototype // true A.prototype.__proto__ === undefined // true ``` -这种情况与第二种情况非常像。`A`也是一个普通函数,所以直接继承`Funciton.prototype`。但是,A调用后返回的对象不继承任何方法,所以它的`__proto__`指向`Function.prototype`,即实质上执行了下面的代码。 +这种情况与第二种情况非常像。`A`也是一个普通函数,所以直接继承`Function.prototype`。但是,A调用后返回的对象不继承任何方法,所以它的`__proto__`指向`Function.prototype`,即实质上执行了下面的代码。 ```javascript class C extends null { From 136b9371beb35f32f90dbf3be7b1b464fc22b46d Mon Sep 17 00:00:00 2001 From: Jacty Date: Tue, 16 May 2017 11:25:01 +0800 Subject: [PATCH 265/994] typo typo --- docs/module-loader.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/module-loader.md b/docs/module-loader.md index 036f9c01b..8dd7856fa 100644 --- a/docs/module-loader.md +++ b/docs/module-loader.md @@ -23,7 +23,7 @@ 默认情况下,浏览器是同步加载 JavaScript 脚本,即渲染引擎遇到` @@ -274,7 +274,7 @@ export {}; 上面的命令并不是输出一个空对象,而是不输出任何接口的 ES6 标准写法。 -如何不指定绝对路径,Node 加载 ES6 模块会依次寻找以下脚本,与`require()`的规则一致。 +如果不指定绝对路径,Node 加载 ES6 模块会依次寻找以下脚本,与`require()`的规则一致。 ```javascript import './foo'; From e01c68988bb41e68a68f98b2771ea87d1e3bbc73 Mon Sep 17 00:00:00 2001 From: Jacty Date: Tue, 16 May 2017 13:25:23 +0800 Subject: [PATCH 266/994] typo typo --- docs/style.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/style.md b/docs/style.md index 37f1ae4d7..33696789b 100644 --- a/docs/style.md +++ b/docs/style.md @@ -436,7 +436,7 @@ const Breadcrumbs = React.createClass({ export default Breadcrumbs ``` -如果模块只有一个输出值,就使用`export default`,如果模块有多个输出值,就不使用`export default`,不要`export default`与普通的`export`同时使用。 +如果模块只有一个输出值,就使用`export default`,如果模块有多个输出值,就不使用`export default`,`export default`与普通的`export`不要同时使用。 不要在模块输入中使用通配符。因为这样可以确保你的模块之中,有一个默认输出(export default)。 From 63fba269329c21e12ed6e262cafed537cf0c752b Mon Sep 17 00:00:00 2001 From: walkthecat <58568819@qq.com> Date: Wed, 17 May 2017 10:07:02 +0800 Subject: [PATCH 267/994] Update simd.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上面代码中,`Uint16`的最小值是`0`,`subSaturate`的最小值是`-32678`。一旦运算发生溢出,就返回最小值。 修改为 上面代码中,`Uint16`的最小值是`0`,`Int16`的最小值是`-32678`。一旦运算发生溢出,就返回最小值。 --- docs/simd.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/simd.md b/docs/simd.md index 65e0f64c3..5ecb388a1 100644 --- a/docs/simd.md +++ b/docs/simd.md @@ -167,7 +167,7 @@ SIMD.Int16x8.subSaturate(c, d) // Int16x8[-32768, 0, 0, 0, 0, 0, 0, 0, 0] ``` -上面代码中,`Uint16`的最小值是`0`,`subSaturate`的最小值是`-32678`。一旦运算发生溢出,就返回最小值。 +上面代码中,`Uint16`的最小值是`0`,`Int16`的最小值是`-32678`。一旦运算发生溢出,就返回最小值。 ### SIMD.%type%.mul(),SIMD.%type%.div(),SIMD.%type%.sqrt() From 6cffe77c7c3a9ce87ed9dfa1519522324adbbc21 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 19 May 2017 16:41:41 +0800 Subject: [PATCH 268/994] docs(decorator): edit decorator --- docs/decorator.md | 16 ++++++++-------- docs/set-map.md | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/decorator.md b/docs/decorator.md index 690370f38..e9cfd748b 100644 --- a/docs/decorator.md +++ b/docs/decorator.md @@ -2,19 +2,19 @@ ## 类的修饰 -修饰器(Decorator)是一个函数,用来修改类的行为。这是ES7的一个[提案](https://github.com/wycats/javascript-decorators),目前Babel转码器已经支持。 - -修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,修饰器能在编译阶段运行代码。 +修饰器(Decorator)是一个函数,用来修改类的行为。这是 ES 的一个[提案](https://github.com/wycats/javascript-decorators),目前 Babel 转码器已经支持。 ```javascript +@testable +class MyTestableClass { + // ... +} + function testable(target) { target.isTestable = true; } -@testable -class MyTestableClass {} - -console.log(MyTestableClass.isTestable) // true +MyTestableClass.isTestable // true ``` 上面代码中,`@testable`就是一个修饰器。它修改了`MyTestableClass`这个类的行为,为它加上了静态属性`isTestable`。 @@ -31,7 +31,7 @@ class A {} A = decorator(A) || A; ``` -也就是说,修饰器本质就是编译时执行的函数。 +注意,修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,修饰器能在编译阶段运行代码。也就是说,修饰器本质就是编译时执行的函数。 修饰器函数的第一个参数,就是所要修饰的目标类。 diff --git a/docs/set-map.md b/docs/set-map.md index 954cdbf8a..6583eed23 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -890,7 +890,7 @@ jsonToMap('[[true,7],[{"foo":3},["abc"]]]') ### 含义 -`WeakMap`结构与`Map`结构类似,也是用于生成键值对。 +`WeakMap`结构与`Map`结构类似,也是用于生成键值对的集合。 ```javascript // WeakMap 可以使用 set 方法添加成员 From 2f89b0de2d3afdaba85fc38ca764f20197cf9b61 Mon Sep 17 00:00:00 2001 From: P-ppc Date: Fri, 19 May 2017 17:53:59 +0800 Subject: [PATCH 269/994] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dpromise.md=E7=AC=A6?= =?UTF-8?q?=E5=8F=B7=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将全角单引号修正为半角单引号 --- docs/promise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/promise.md b/docs/promise.md index 18d796b5d..eeed778a4 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -633,7 +633,7 @@ console.log('one'); // three ``` -上面代码中,`setTimeout(fn, 0)`在下一轮“事件循环”开始时执行,`Promise.resolve()`在本轮“事件循环”结束时执行,`console.log(’one‘)`则是立即执行,因此最先输出。 +上面代码中,`setTimeout(fn, 0)`在下一轮“事件循环”开始时执行,`Promise.resolve()`在本轮“事件循环”结束时执行,`console.log('one')`则是立即执行,因此最先输出。 ## Promise.reject() From bb7ce158b3226d97f5c7f8c095c8021691d822f6 Mon Sep 17 00:00:00 2001 From: xiangyangLi Date: Wed, 24 May 2017 16:00:40 +0800 Subject: [PATCH 270/994] =?UTF-8?q?=E7=BC=BA=E5=B0=91=E6=8B=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator.md b/docs/generator.md index 209c8acdf..0a30b50ec 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -130,7 +130,7 @@ var flat = function* (a) { } else { yield item; } - } + }); }; for (var f of flat(arr)){ From 7acf0179717f0d8b2d353cc42aa4492c3f79cddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=B1=BC=E9=A6=99=E8=8C=84=E5=AD=90?= Date: Thu, 25 May 2017 11:37:24 +0800 Subject: [PATCH 271/994] typo fixed --- docs/array.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/array.md b/docs/array.md index 33f5bd1be..ad93b13c1 100644 --- a/docs/array.md +++ b/docs/array.md @@ -357,7 +357,7 @@ if (arr.indexOf(el) !== -1) { } ``` -`indexOf`方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相当运算符(===)进行判断,这会导致对`NaN`的误判。 +`indexOf`方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相等运算符(===)进行判断,这会导致对`NaN`的误判。 ```javascript [NaN].indexOf(NaN) From 495337e85bee6e94dbda12e43d77ac8522746e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=B1=BC=E9=A6=99=E8=8C=84=E5=AD=90?= Date: Thu, 25 May 2017 20:44:37 +0800 Subject: [PATCH 272/994] typo fixed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将“并排的两个双冒号”修改为“并排的两个冒号” --- docs/function.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/function.md b/docs/function.md index 52f11d8bd..842260b5c 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1168,7 +1168,7 @@ var fix = f => (x => f(v => x(x)(v))) 箭头函数可以绑定`this`对象,大大减少了显式绑定`this`对象的写法(`call`、`apply`、`bind`)。但是,箭头函数并不适用于所有场合,所以ES7提出了“函数绑定”(function bind)运算符,用来取代`call`、`apply`、`bind`调用。虽然该语法还是ES7的一个[提案](https://github.com/zenparsing/es-function-bind),但是Babel转码器已经支持。 -函数绑定运算符是并排的两个双冒号(::),双冒号左边是一个对象,右边是一个函数。该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。 +函数绑定运算符是并排的两个冒号(::),双冒号左边是一个对象,右边是一个函数。该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。 ```javascript foo::bar; From b939b7725c467f1802b6ffb1e0d89cfe65aa29b6 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 25 May 2017 20:52:05 +0800 Subject: [PATCH 273/994] docs(promise): edit promise --- docs/promise.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/promise.md b/docs/promise.md index 18d796b5d..e8d665c0e 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -351,19 +351,19 @@ someAsyncThing().then(function() { }); ``` -上面代码中,`someAsyncThing`函数产生的Promise对象会报错,但是由于没有指定`catch`方法,这个错误不会被捕获,也不会传递到外层代码,导致运行后没有任何输出。注意,Chrome浏览器不遵守这条规定,它会抛出错误“ReferenceError: x is not defined”。 +上面代码中,`someAsyncThing`函数产生的 Promise 对象会报错,但是由于没有指定`catch`方法,这个错误不会被捕获,也不会传递到外层代码。正常情况下,运行后不会有任何输出,但是浏览器此时会打印出错误“ReferenceError: x is not defined”,不过不会终止脚本执行,如果这个脚本放在服务器执行,退出码就是`0`(即表示执行成功)。 ```javascript -var promise = new Promise(function(resolve, reject) { +var promise = new Promise(function (resolve, reject) { resolve('ok'); - setTimeout(function() { throw new Error('test') }, 0) + setTimeout(function () { throw new Error('test') }, 0) }); -promise.then(function(value) { console.log(value) }); +promise.then(function (value) { console.log(value) }); // ok // Uncaught Error: test ``` -上面代码中,Promise 指定在下一轮“事件循环”再抛出错误,结果由于没有指定使用`try...catch`语句,就冒泡到最外层,成了未捕获的错误。因为此时,Promise的函数体已经运行结束了,所以这个错误是在Promise函数体外抛出的。 +上面代码中,Promise 指定在下一轮“事件循环”再抛出错误。到了那个时候,Promise 的运行已经结束了,所以这个错误是在 Promise 函数体外抛出的,会冒泡到最外层,成了未捕获的错误。 Node 有一个`unhandledRejection`事件,专门监听未捕获的`reject`错误。 @@ -373,7 +373,7 @@ process.on('unhandledRejection', function (err, p) { }); ``` -上面代码中,`unhandledRejection`事件的监听函数有两个参数,第一个是错误对象,第二个是报错的Promise实例,它可以用来了解发生错误的环境信息。。 +上面代码中,`unhandledRejection`事件的监听函数有两个参数,第一个是错误对象,第二个是报错的 Promise 实例,它可以用来了解发生错误的环境信息。。 需要注意的是,`catch`方法返回的还是一个 Promise 对象,因此后面还可以接着调用`then`方法。 From 23c05f824420ee99f5dfee65e801af96d320b5b4 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 26 May 2017 17:25:33 +0800 Subject: [PATCH 274/994] docs(function): edit arrow function --- docs/function.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/function.md b/docs/function.md index 52f11d8bd..d6a843e0d 100644 --- a/docs/function.md +++ b/docs/function.md @@ -225,7 +225,7 @@ foo(undefined, null) 上面代码中,`length`属性的返回值,等于函数的参数个数减去指定了默认值的参数个数。比如,上面最后一个函数,定义了3个参数,其中有一个参数`c`指定了默认值,因此`length`属性等于`3`减去`1`,最后得到`2`。 -这是因为`length`属性的含义是,该函数预期传入的参数个数。某个参数指定默认值以后,预期传入的参数个数就不包括这个参数了。同理,rest参数也不会计入`length`属性。 +这是因为`length`属性的含义是,该函数预期传入的参数个数。某个参数指定默认值以后,预期传入的参数个数就不包括这个参数了。同理,rest 参数也不会计入`length`属性。 ```javascript (function(...args) {}).length // 0 @@ -937,7 +937,7 @@ var result = values.sort(function (a, b) { var result = values.sort((a, b) => a - b); ``` -下面是rest参数与箭头函数结合的例子。 +下面是 rest 参数与箭头函数结合的例子。 ```javascript const numbers = (...nums) => nums; @@ -959,9 +959,9 @@ headAndTail(1, 2, 3, 4, 5) (2)不可以当作构造函数,也就是说,不可以使用`new`命令,否则会抛出一个错误。 -(3)不可以使用`arguments`对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。 +(3)不可以使用`arguments`对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。 -(4)不可以使用`yield`命令,因此箭头函数不能用作Generator函数。 +(4)不可以使用`yield`命令,因此箭头函数不能用作 Generator 函数。 上面四点中,第一点尤其值得注意。`this`对象的指向是可变的,但是在箭头函数中,它是固定的。 @@ -1004,7 +1004,7 @@ setTimeout(() => console.log('s2: ', timer.s2), 3100); 上面代码中,`Timer`函数内部设置了两个定时器,分别使用了箭头函数和普通函数。前者的`this`绑定定义时所在的作用域(即`Timer`函数),后者的`this`指向运行时所在的作用域(即全局对象)。所以,3100毫秒之后,`timer.s1`被更新了3次,而`timer.s2`一次都没更新。 -箭头函数可以让`this`指向固定化,这种特性很有利于封装回调函数。下面是一个例子,DOM事件的回调函数封装在一个对象里面。 +箭头函数可以让`this`指向固定化,这种特性很有利于封装回调函数。下面是一个例子,DOM 事件的回调函数封装在一个对象里面。 ```javascript var handler = { @@ -1025,7 +1025,7 @@ var handler = { `this`指向的固定化,并不是因为箭头函数内部有绑定`this`的机制,实际原因是箭头函数根本没有自己的`this`,导致内部的`this`就是外层代码块的`this`。正是因为它没有`this`,所以也就不能用作构造函数。 -所以,箭头函数转成ES5的代码如下。 +所以,箭头函数转成 ES5 的代码如下。 ```javascript // ES6 @@ -1097,11 +1097,11 @@ foo(2, 4, 6, 8) 上面代码中,箭头函数没有自己的`this`,所以`bind`方法无效,内部的`this`指向外部的`this`。 -长期以来,JavaScript语言的`this`对象一直是一个令人头痛的问题,在对象方法中使用`this`,必须非常小心。箭头函数”绑定”`this`,很大程度上解决了这个困扰。 +长期以来,JavaScript 语言的`this`对象一直是一个令人头痛的问题,在对象方法中使用`this`,必须非常小心。箭头函数”绑定”`this`,很大程度上解决了这个困扰。 ### 嵌套的箭头函数 -箭头函数内部,还可以再使用箭头函数。下面是一个ES5语法的多重嵌套函数。 +箭头函数内部,还可以再使用箭头函数。下面是一个 ES5 语法的多重嵌套函数。 ```javascript function insert(value) { From 3347915274ac6b28989dafc1fdf4b587664af679 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 28 May 2017 10:29:23 +0800 Subject: [PATCH 275/994] docs(class): edit class --- docs/class.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/class.md b/docs/class.md index 7a71c27a1..6fc4e4d8f 100644 --- a/docs/class.md +++ b/docs/class.md @@ -4,7 +4,7 @@ ### 概述 -JavaScript语言的传统方法是通过构造函数,定义并生成新对象。下面是一个例子。 +在 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。 ```javascript function Point(x, y) { @@ -19,9 +19,9 @@ Point.prototype.toString = function () { var p = new Point(1, 2); ``` -上面这种写法跟传统的面向对象语言(比如C++和Java)差异很大,很容易让新学习这门语言的程序员感到困惑。 +上面这种写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。 -ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过`class`关键字,可以定义类。基本上,ES6的`class`可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的`class`写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用ES6的“类”改写,就是下面这样。 +ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过`class`关键字,可以定义类。基本上,ES6 的`class`可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的`class`写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的`class`改写,就是下面这样。 ```javascript //定义类 From 3c1b9269502553ae78aa7ddb034046e835b5581d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=B1=BC=E9=A6=99=E8=8C=84=E5=AD=90?= Date: Mon, 29 May 2017 00:08:53 +0800 Subject: [PATCH 276/994] Typo fixed --- docs/iterator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/iterator.md b/docs/iterator.md index 62c388f2c..b87c1f96c 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -792,7 +792,7 @@ for (let value of myArray) { ``` - 有着同`for...in`一样的简洁语法,但是没有`for...in`那些缺点。 -- 不同用于`forEach`方法,它可以与`break`、`continue`和`return`配合使用。 +- 不同于`forEach`方法,它可以与`break`、`continue`和`return`配合使用。 - 提供了遍历所有数据结构的统一操作接口。 下面是一个使用break语句,跳出`for...of`循环的例子。 From 8a2c746996407c66155ab7b2c1457ef99b16ccd7 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 31 May 2017 20:54:06 +0800 Subject: [PATCH 277/994] docs(let): edit let --- docs/let.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/let.md b/docs/let.md index 7c42ed921..b46ae1320 100644 --- a/docs/let.md +++ b/docs/let.md @@ -57,7 +57,7 @@ a[6](); // 6 上面代码中,变量`i`是`let`声明的,当前的`i`只在本轮循环有效,所以每一次循环的`i`其实都是一个新的变量,所以最后输出的是`6`。你可能会问,如果每一轮循环的变量`i`都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量`i`时,就在上一轮循环的基础上进行计算。 -另外,`for`循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。 +另外,`for`循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。 ```javascript for (let i = 0; i < 3; i++) { @@ -69,7 +69,7 @@ for (let i = 0; i < 3; i++) { // abc ``` -上面代码输出了3次`abc`,这表明函数内部的变量`i`和外部的变量`i`是分离的。 +上面代码输出了3次`abc`,这表明函数内部的变量`i`不同于循环变量`i`,有自己单独的作用域。 ### 不存在变量提升 From d0865f07738d3c650e2e8673935ff9886b0c7935 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 4 Jun 2017 12:42:27 +0800 Subject: [PATCH 278/994] docs: edit Object --- docs/object.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/object.md b/docs/object.md index 8e0c80a1b..acf4f16ff 100644 --- a/docs/object.md +++ b/docs/object.md @@ -632,40 +632,40 @@ Object.getOwnPropertyDescriptor(class {foo() {}}.prototype, 'foo').enumerable ## 属性的遍历 -ES6一共有5种方法可以遍历对象的属性。 +ES6 一共有5种方法可以遍历对象的属性。 **(1)for...in** -`for...in`循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。 +`for...in`循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。 **(2)Object.keys(obj)** -`Object.keys`返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)。 +`Object.keys`返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)。 **(3)Object.getOwnPropertyNames(obj)** -`Object.getOwnPropertyNames`返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)。 +`Object.getOwnPropertyNames`返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)。 **(4)Object.getOwnPropertySymbols(obj)** -`Object.getOwnPropertySymbols`返回一个数组,包含对象自身的所有Symbol属性。 +`Object.getOwnPropertySymbols`返回一个数组,包含对象自身的所有 Symbol 属性。 **(5)Reflect.ownKeys(obj)** -`Reflect.ownKeys`返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举。 +`Reflect.ownKeys`返回一个数组,包含对象自身的所有属性,不管属性名是 Symbol 或字符串,也不管是否可枚举。 以上的5种方法遍历对象的属性,都遵守同样的属性遍历的次序规则。 - 首先遍历所有属性名为数值的属性,按照数字排序。 - 其次遍历所有属性名为字符串的属性,按照生成时间排序。 -- 最后遍历所有属性名为Symbol值的属性,按照生成时间排序。 +- 最后遍历所有属性名为 Symbol 值的属性,按照生成时间排序。 ```javascript Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 }) // ['2', '10', 'b', 'a', Symbol()] ``` -上面代码中,`Reflect.ownKeys`方法返回一个数组,包含了参数对象的所有属性。这个数组的属性次序是这样的,首先是数值属性`2`和`10`,其次是字符串属性`b`和`a`,最后是Symbol属性。 +上面代码中,`Reflect.ownKeys`方法返回一个数组,包含了参数对象的所有属性。这个数组的属性次序是这样的,首先是数值属性`2`和`10`,其次是字符串属性`b`和`a`,最后是 Symbol 属性。 ## `__proto__`属性,Object.setPrototypeOf(),Object.getPrototypeOf() @@ -1337,6 +1337,10 @@ let a = {a: 'a'}; let b = {b: 'b'}; let c = {c: 'c'}; let d = mix(c).with(a, b); + +d.c // "c" +d.b // "b" +d.a // "a" ``` 上面代码中,对象`a`和`b`被混入了对象`c`。 From 4019d9d01cb1af1e7cd6b5c5b8e24c7665fbffaa Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 4 Jun 2017 12:47:03 +0800 Subject: [PATCH 279/994] docs: edit Object --- docs/object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index acf4f16ff..4b490ccea 100644 --- a/docs/object.md +++ b/docs/object.md @@ -1343,7 +1343,7 @@ d.b // "b" d.a // "a" ``` -上面代码中,对象`a`和`b`被混入了对象`c`。 +上面代码返回一个新的对象`d`,代表了对象`a`和`b`被混入了对象`c`的操作。 出于完整性的考虑,`Object.getOwnPropertyDescriptors`进入标准以后,还会有`Reflect.getOwnPropertyDescriptors`方法。 From 38816c896a46b964eae773006f053785cb692aeb Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 4 Jun 2017 13:04:36 +0800 Subject: [PATCH 280/994] docs: edit Promise --- docs/promise.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/promise.md b/docs/promise.md index 7f1db8be7..7142b2c3b 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -16,13 +16,13 @@ Promise 是异步编程的一种解决方案,比传统的解决方案——回 `Promise`也有一些缺点。首先,无法取消`Promise`,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,`Promise`内部抛出的错误,不会反应到外部。第三,当处于`Pending`状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。 -如果某些事件不断地反复发生,一般来说,使用 stream 模式是比部署`Promise`更好的选择。 +如果某些事件不断地反复发生,一般来说,使用 [Stream](https://nodejs.org/api/stream.html) 模式是比部署`Promise`更好的选择。 ## 基本用法 -ES6规定,Promise对象是一个构造函数,用来生成Promise实例。 +ES6 规定,`Promise`对象是一个构造函数,用来生成`Promise`实例。 -下面代码创造了一个Promise实例。 +下面代码创造了一个`Promise`实例。 ```javascript var promise = new Promise(function(resolve, reject) { @@ -36,11 +36,11 @@ var promise = new Promise(function(resolve, reject) { }); ``` -Promise构造函数接受一个函数作为参数,该函数的两个参数分别是`resolve`和`reject`。它们是两个函数,由JavaScript引擎提供,不用自己部署。 +`Promise`构造函数接受一个函数作为参数,该函数的两个参数分别是`resolve`和`reject`。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。 -`resolve`函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从Pending变为Resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;`reject`函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从Pending变为Rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。 +`resolve`函数的作用是,将`Promise`对象的状态从“未完成”变为“成功”(即从 Pending 变为 Resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;`reject`函数的作用是,将`Promise`对象的状态从“未完成”变为“失败”(即从 Pending 变为 Rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。 -Promise实例生成以后,可以用`then`方法分别指定`Resolved`状态和`Reject`状态的回调函数。 +`Promise`实例生成以后,可以用`then`方法分别指定`Resolved`状态和`Reject`状态的回调函数。 ```javascript promise.then(function(value) { @@ -50,9 +50,9 @@ promise.then(function(value) { }); ``` -`then`方法可以接受两个回调函数作为参数。第一个回调函数是Promise对象的状态变为Resolved时调用,第二个回调函数是Promise对象的状态变为Reject时调用。其中,第二个函数是可选的,不一定要提供。这两个函数都接受Promise对象传出的值作为参数。 +`then`方法可以接受两个回调函数作为参数。第一个回调函数是`Promise`对象的状态变为`Resolved`时调用,第二个回调函数是`Promise`对象的状态变为`Rejected`时调用。其中,第二个函数是可选的,不一定要提供。这两个函数都接受`Promise`对象传出的值作为参数。 -下面是一个Promise对象的简单例子。 +下面是一个`Promise`对象的简单例子。 ```javascript function timeout(ms) { @@ -66,9 +66,9 @@ timeout(100).then((value) => { }); ``` -上面代码中,`timeout`方法返回一个Promise实例,表示一段时间以后才会发生的结果。过了指定的时间(`ms`参数)以后,Promise实例的状态变为Resolved,就会触发`then`方法绑定的回调函数。 +上面代码中,`timeout`方法返回一个`Promise`实例,表示一段时间以后才会发生的结果。过了指定的时间(`ms`参数)以后,`Promise`实例的状态变为`Resolved`,就会触发`then`方法绑定的回调函数。 -Promise新建后就会立即执行。 +Promise 新建后就会立即执行。 ```javascript let promise = new Promise(function(resolve, reject) { @@ -87,7 +87,7 @@ console.log('Hi!'); // Resolved ``` -上面代码中,Promise新建后立即执行,所以首先输出的是“Promise”。然后,`then`方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以“Resolved”最后输出。 +上面代码中,Promise 新建后立即执行,所以首先输出的是`Promise`。然后,`then`方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以`Resolved`最后输出。 下面是异步加载图片的例子。 @@ -109,9 +109,9 @@ function loadImageAsync(url) { } ``` -上面代码中,使用Promise包装了一个图片加载的异步操作。如果加载成功,就调用`resolve`方法,否则就调用`reject`方法。 +上面代码中,使用`Promise`包装了一个图片加载的异步操作。如果加载成功,就调用`resolve`方法,否则就调用`reject`方法。 -下面是一个用Promise对象实现的Ajax操作的例子。 +下面是一个用`Promise`对象实现的 Ajax 操作的例子。 ```javascript var getJSON = function(url) { @@ -145,9 +145,9 @@ getJSON("/posts.json").then(function(json) { }); ``` -上面代码中,`getJSON`是对XMLHttpRequest对象的封装,用于发出一个针对JSON数据的HTTP请求,并且返回一个Promise对象。需要注意的是,在`getJSON`内部,`resolve`函数和`reject`函数调用时,都带有参数。 +上面代码中,`getJSON`是对 XMLHttpRequest 对象的封装,用于发出一个针对 JSON 数据的 HTTP 请求,并且返回一个`Promise`对象。需要注意的是,在`getJSON`内部,`resolve`函数和`reject`函数调用时,都带有参数。 -如果调用`resolve`函数和`reject`函数时带有参数,那么它们的参数会被传递给回调函数。`reject`函数的参数通常是Error对象的实例,表示抛出的错误;`resolve`函数的参数除了正常的值以外,还可能是另一个Promise实例,表示异步操作的结果有可能是一个值,也有可能是另一个异步操作,比如像下面这样。 +如果调用`resolve`函数和`reject`函数时带有参数,那么它们的参数会被传递给回调函数。`reject`函数的参数通常是`Error`对象的实例,表示抛出的错误;`resolve`函数的参数除了正常的值以外,还可能是另一个 Promise 实例,表示异步操作的结果有可能是一个值,也有可能是另一个异步操作,比如像下面这样。 ```javascript var p1 = new Promise(function (resolve, reject) { @@ -183,9 +183,9 @@ p2 ## Promise.prototype.then() -Promise实例具有`then`方法,也就是说,`then`方法是定义在原型对象Promise.prototype上的。它的作用是为Promise实例添加状态改变时的回调函数。前面说过,`then`方法的第一个参数是Resolved状态的回调函数,第二个参数(可选)是Rejected状态的回调函数。 +Promise 实例具有`then`方法,也就是说,`then`方法是定义在原型对象`Promise.prototype`上的。它的作用是为 Promise 实例添加状态改变时的回调函数。前面说过,`then`方法的第一个参数是`Resolved`状态的回调函数,第二个参数(可选)是`Rejected`状态的回调函数。 -`then`方法返回的是一个新的Promise实例(注意,不是原来那个Promise实例)。因此可以采用链式写法,即`then`方法后面再调用另一个`then`方法。 +`then`方法返回的是一个新的`Promise`实例(注意,不是原来那个`Promise`实例)。因此可以采用链式写法,即`then`方法后面再调用另一个`then`方法。 ```javascript getJSON("/posts.json").then(function(json) { @@ -197,7 +197,7 @@ getJSON("/posts.json").then(function(json) { 上面的代码使用`then`方法,依次指定了两个回调函数。第一个回调函数完成以后,会将返回结果作为参数,传入第二个回调函数。 -采用链式的`then`,可以指定一组按照次序调用的回调函数。这时,前一个回调函数,有可能返回的还是一个Promise对象(即有异步操作),这时后一个回调函数,就会等待该Promise对象的状态发生变化,才会被调用。 +采用链式的`then`,可以指定一组按照次序调用的回调函数。这时,前一个回调函数,有可能返回的还是一个`Promise`对象(即有异步操作),这时后一个回调函数,就会等待该`Promise`对象的状态发生变化,才会被调用。 ```javascript getJSON("/post/1.json").then(function(post) { @@ -209,7 +209,7 @@ getJSON("/post/1.json").then(function(post) { }); ``` -上面代码中,第一个`then`方法指定的回调函数,返回的是另一个Promise对象。这时,第二个`then`方法指定的回调函数,就会等待这个新的Promise对象状态发生变化。如果变为Resolved,就调用`funcA`,如果状态变为Rejected,就调用`funcB`。 +上面代码中,第一个`then`方法指定的回调函数,返回的是另一个`Promise`对象。这时,第二个`then`方法指定的回调函数,就会等待这个新的`Promise`对象状态发生变化。如果变为`Resolved`,就调用`funcA`,如果状态变为`Rejected`,就调用`funcB`。 如果采用箭头函数,上面的代码可以写得更简洁。 From 3e302652a0124115a827b3040a1f5ad34c135a7f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 4 Jun 2017 18:59:41 +0800 Subject: [PATCH 281/994] docs(Promise): edit Promise.all --- docs/promise.md | 50 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/docs/promise.md b/docs/promise.md index 7142b2c3b..6b9106ba2 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -453,13 +453,13 @@ someAsyncThing().then(function() { ## Promise.all() -`Promise.all`方法用于将多个Promise实例,包装成一个新的Promise实例。 +`Promise.all`方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。 ```javascript var p = Promise.all([p1, p2, p3]); ``` -上面代码中,`Promise.all`方法接受一个数组作为参数,`p1`、`p2`、`p3`都是Promise对象的实例,如果不是,就会先调用下面讲到的`Promise.resolve`方法,将参数转为Promise实例,再进一步处理。(`Promise.all`方法的参数可以不是数组,但必须具有Iterator接口,且返回的每个成员都是Promise实例。) +上面代码中,`Promise.all`方法接受一个数组作为参数,`p1`、`p2`、`p3`都是 Promise 实例,如果不是,就会先调用下面讲到的`Promise.resolve`方法,将参数转为 Promise 实例,再进一步处理。(`Promise.all`方法的参数可以不是数组,但必须具有 Iterator 接口,且返回的每个成员都是 Promise 实例。) `p`的状态由`p1`、`p2`、`p3`决定,分成两种情况。 @@ -472,7 +472,7 @@ var p = Promise.all([p1, p2, p3]); ```javascript // 生成一个Promise对象的数组 var promises = [2, 3, 5, 7, 11, 13].map(function (id) { - return getJSON("/post/" + id + ".json"); + return getJSON('/post/' + id + ".json"); }); Promise.all(promises).then(function (posts) { @@ -482,7 +482,7 @@ Promise.all(promises).then(function (posts) { }); ``` -上面代码中,`promises`是包含6个Promise实例的数组,只有这6个实例的状态都变成`fulfilled`,或者其中有一个变为`rejected`,才会调用`Promise.all`方法后面的回调函数。 +上面代码中,`promises`是包含6个 Promise 实例的数组,只有这6个实例的状态都变成`fulfilled`,或者其中有一个变为`rejected`,才会调用`Promise.all`方法后面的回调函数。 下面是另一个例子。 @@ -504,6 +504,48 @@ Promise.all([ 上面代码中,`booksPromise`和`userPromise`是两个异步操作,只有等到它们的结果都返回了,才会触发`pickTopRecommentations`这个回调函数。 +注意,如果作为参数的 Promise 实例,自己定义了`catch`方法,那么它一旦被`rejected`,并不会触发`Promise.all()`的`catch`方法。 + +```javascript +const p1 = new Promise((resolve, reject) => { + resolve('hello'); +}) +.then(result => result) +.catch(e => e); + +const p2 = new Promise((resolve, reject) => { + throw new Error('报错了'); +}) +.then(result => result) +.catch(e => e); + +Promise.all([p1, p2]) +.then(result => console.log(result)) +.catch(e => console.log(e)); +// ["hello", Error: 报错了] +``` + +上面代码中,`p1`会`resolved`,`p2`首先会`rejected`,但是`p2`有自己的`catch`方法,该方法返回的是一个新的 Promise 实例,`p2`指向的实际上是这个实例。该实例执行完`catch`方法后,也会变成`resolved`,导致`Promise.all()`方法参数里面的两个实例都会`resolved`,因此会调用`then`方法指定的回调函数,而不会调用`catch`方法指定的回调函数。 + +如果`p2`没有自己的`catch`方法,就会调用`Promise.all()`的`catch`方法。 + +```javascript +const p1 = new Promise((resolve, reject) => { + resolve('hello'); +}) +.then(result => result); + +const p2 = new Promise((resolve, reject) => { + throw new Error('报错了'); +}) +.then(result => result); + +Promise.all([p1, p2]) +.then(result => console.log(result)) +.catch(e => console.log(e)); +// Error: 报错了 +``` + ## Promise.race() `Promise.race`方法同样是将多个Promise实例,包装成一个新的Promise实例。 From 9a16eba5790bc9f18abe500b7e3f5e2ca263de70 Mon Sep 17 00:00:00 2001 From: Cody Chan Date: Tue, 6 Jun 2017 00:34:50 +0800 Subject: [PATCH 282/994] Fix typo --- docs/module.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/module.md b/docs/module.md index 009592804..dca0ede99 100644 --- a/docs/module.md +++ b/docs/module.md @@ -171,7 +171,7 @@ setTimeout(() => foo = 'baz', 500); 上面代码输出变量`foo`,值为`bar`,500毫秒之后变成`baz`。 -这一点与 CommonJS 规范完全不同。CommonJS 模块输出的是值的缓存,不存在动态更新,详见下文《ES6模块加载的实质》一节。 +这一点与 CommonJS 规范完全不同。CommonJS 模块输出的是值的缓存,不存在动态更新,详见下文《Module 的加载实现》一节。 最后,`export`命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内,就会报错,下一节的`import`命令也是如此。这是因为处于条件代码块之中,就没法做静态优化了,违背了ES6模块的设计初衷。 From 165ba46cea6ac1bd70101e543675e00a62ee557c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 7 Jun 2017 09:22:06 +0800 Subject: [PATCH 283/994] docs: add class-extends --- docs/class-extends.md | 682 +++++++++++++++++++++++++ docs/class.md | 1114 +++++++++-------------------------------- docs/let.md | 18 +- sidebar.md | 3 +- 4 files changed, 924 insertions(+), 893 deletions(-) create mode 100644 docs/class-extends.md diff --git a/docs/class-extends.md b/docs/class-extends.md new file mode 100644 index 000000000..89e3bec82 --- /dev/null +++ b/docs/class-extends.md @@ -0,0 +1,682 @@ +# Class 的继承 + +## 简介 + +Class 可以通过`extends`关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。 + +```javascript +class Point { +} + +class ColorPoint extends Point { +} +``` + +上面代码定义了一个`ColorPoint`类,该类通过`extends`关键字,继承了`Point`类的所有属性和方法。但是由于没有部署任何代码,所以这两个类完全一样,等于复制了一个`Point`类。下面,我们在`ColorPoint`内部加上代码。 + +```javascript +class ColorPoint extends Point { + constructor(x, y, color) { + super(x, y); // 调用父类的constructor(x, y) + this.color = color; + } + + toString() { + return this.color + ' ' + super.toString(); // 调用父类的toString() + } +} +``` + +上面代码中,`constructor`方法和`toString`方法之中,都出现了`super`关键字,它在这里表示父类的构造函数,用来新建父类的`this`对象。 + +子类必须在`constructor`方法中调用`super`方法,否则新建实例时会报错。这是因为子类没有自己的`this`对象,而是继承父类的`this`对象,然后对其进行加工。如果不调用`super`方法,子类就得不到`this`对象。 + +```javascript +class Point { /* ... */ } + +class ColorPoint extends Point { + constructor() { + } +} + +let cp = new ColorPoint(); // ReferenceError +``` + +上面代码中,`ColorPoint`继承了父类`Point`,但是它的构造函数没有调用`super`方法,导致新建实例时报错。 + +ES5 的继承,实质是先创造子类的实例对象`this`,然后再将父类的方法添加到`this`上面(`Parent.apply(this)`)。ES6 的继承机制完全不同,实质是先创造父类的实例对象`this`(所以必须先调用`super`方法),然后再用子类的构造函数修改`this`。 + +如果子类没有定义`constructor`方法,这个方法会被默认添加,代码如下。也就是说,不管有没有显式定义,任何一个子类都有`constructor`方法。 + +```javascript +class ColorPoint extends Point { +} + +// 等同于 +class ColorPoint extends Point { + constructor(...args) { + super(...args); + } +} +``` + +另一个需要注意的地方是,在子类的构造函数中,只有调用`super`之后,才可以使用`this`关键字,否则会报错。这是因为子类实例的构建,是基于对父类实例加工,只有`super`方法才能返回父类实例。 + +```javascript +class Point { + constructor(x, y) { + this.x = x; + this.y = y; + } +} + +class ColorPoint extends Point { + constructor(x, y, color) { + this.color = color; // ReferenceError + super(x, y); + this.color = color; // 正确 + } +} +``` + +上面代码中,子类的`constructor`方法没有调用`super`之前,就使用`this`关键字,结果报错,而放在`super`方法之后就是正确的。 + +下面是生成子类实例的代码。 + +```javascript +let cp = new ColorPoint(25, 8, 'green'); + +cp instanceof ColorPoint // true +cp instanceof Point // true +``` + +上面代码中,实例对象`cp`同时是`ColorPoint`和`Point`两个类的实例,这与 ES5 的行为完全一致。 + +## Object.getPrototypeOf() + +`Object.getPrototypeOf`方法可以用来从子类上获取父类。 + +```javascript +Object.getPrototypeOf(ColorPoint) === Point +// true +``` + +因此,可以使用这个方法判断,一个类是否继承了另一个类。 + +## super 关键字 + +`super`这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。 + +第一种情况,`super`作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次`super`函数。 + +```javascript +class A {} + +class B extends A { + constructor() { + super(); + } +} +``` + +上面代码中,子类`B`的构造函数之中的`super()`,代表调用父类的构造函数。这是必须的,否则 JavaScript 引擎会报错。 + +注意,`super`虽然代表了父类`A`的构造函数,但是返回的是子类`B`的实例,即`super`内部的`this`指的是`B`,因此`super()`在这里相当于`A.prototype.constructor.call(this)`。 + +```javascript +class A { + constructor() { + console.log(new.target.name); + } +} +class B extends A { + constructor() { + super(); + } +} +new A() // A +new B() // B +``` + +上面代码中,`new.target`指向当前正在执行的函数。可以看到,在`super()`执行时,它指向的是子类`B`的构造函数,而不是父类`A`的构造函数。也就是说,`super()`内部的`this`指向的是`B`。 + +作为函数时,`super()`只能用在子类的构造函数之中,用在其他地方就会报错。 + +```javascript +class A {} + +class B extends A { + m() { + super(); // 报错 + } +} +``` + +上面代码中,`super()`用在`B`类的`m`方法之中,就会造成句法错误。 + +第二种情况,`super`作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。 + +```javascript +class A { + p() { + return 2; + } +} + +class B extends A { + constructor() { + super(); + console.log(super.p()); // 2 + } +} + +let b = new B(); +``` + +上面代码中,子类`B`当中的`super.p()`,就是将`super`当作一个对象使用。这时,`super`在普通方法之中,指向`A.prototype`,所以`super.p()`就相当于`A.prototype.p()`。 + +这里需要注意,由于`super`指向父类的原型对象,所以定义在父类实例上的方法或属性,是无法通过`super`调用的。 + +```javascript +class A { + constructor() { + this.p = 2; + } +} + +class B extends A { + get m() { + return super.p; + } +} + +let b = new B(); +b.m // undefined +``` + +上面代码中,`p`是父类`A`实例的属性,`super.p`就引用不到它。 + +如果属性定义在父类的原型对象上,`super`就可以取到。 + +```javascript +class A {} +A.prototype.x = 2; + +class B extends A { + constructor() { + super(); + console.log(super.x) // 2 + } +} + +let b = new B(); +``` + +上面代码中,属性`x`是定义在`A.prototype`上面的,所以`super.x`可以取到它的值。 + +ES6 规定,通过`super`调用父类的方法时,`super`会绑定子类的`this`。 + +```javascript +class A { + constructor() { + this.x = 1; + } + print() { + console.log(this.x); + } +} + +class B extends A { + constructor() { + super(); + this.x = 2; + } + m() { + super.print(); + } +} + +let b = new B(); +b.m() // 2 +``` + +上面代码中,`super.print()`虽然调用的是`A.prototype.print()`,但是`A.prototype.print()`会绑定子类`B`的`this`,导致输出的是`2`,而不是`1`。也就是说,实际上执行的是`super.print.call(this)`。 + +由于绑定子类的`this`,所以如果通过`super`对某个属性赋值,这时`super`就是`this`,赋值的属性会变成子类实例的属性。 + +```javascript +class A { + constructor() { + this.x = 1; + } +} + +class B extends A { + constructor() { + super(); + this.x = 2; + super.x = 3; + console.log(super.x); // undefined + console.log(this.x); // 3 + } +} + +let b = new B(); +``` + +上面代码中,`super.x`赋值为`3`,这时等同于对`this.x`赋值为`3`。而当读取`super.x`的时候,读的是`A.prototype.x`,所以返回`undefined`。 + +如果`super`作为对象,用在静态方法之中,这时`super`将指向父类,而不是父类的原型对象。 + +```javascript +class Parent { + static myMethod(msg) { + console.log('static', msg); + } + + myMethod(msg) { + console.log('instance', msg); + } +} + +class Child extends Parent { + static myMethod(msg) { + super.myMethod(msg); + } + + myMethod(msg) { + super.myMethod(msg); + } +} + +Child.myMethod(1); // static 1 + +var child = new Child(); +child.myMethod(2); // instance 2 +``` + +上面代码中,`super`在静态方法之中指向父类,在普通方法之中指向父类的原型对象。 + +注意,使用`super`的时候,必须显式指定是作为函数、还是作为对象使用,否则会报错。 + +```javascript +class A {} + +class B extends A { + constructor() { + super(); + console.log(super); // 报错 + } +} +``` + +上面代码中,`console.log(super)`当中的`super`,无法看出是作为函数使用,还是作为对象使用,所以 JavaScript 引擎解析代码的时候就会报错。这时,如果能清晰地表明`super`的数据类型,就不会报错。 + +```javascript +class A {} + +class B extends A { + constructor() { + super(); + console.log(super.valueOf() instanceof B); // true + } +} + +let b = new B(); +``` + +上面代码中,`super.valueOf()`表明`super`是一个对象,因此就不会报错。同时,由于`super`绑定`B`的`this`,所以`super.valueOf()`返回的是一个`B`的实例。 + +最后,由于对象总是继承其他对象的,所以可以在任意一个对象中,使用`super`关键字。 + +```javascript +var obj = { + toString() { + return "MyObject: " + super.toString(); + } +}; + +obj.toString(); // MyObject: [object Object] +``` + +## 类的 prototype 属性和\_\_proto\_\_属性 + +大多数浏览器的 ES5 实现之中,每一个对象都有`__proto__`属性,指向对应的构造函数的`prototype`属性。Class 作为构造函数的语法糖,同时有`prototype`属性和`__proto__`属性,因此同时存在两条继承链。 + +(1)子类的`__proto__`属性,表示构造函数的继承,总是指向父类。 + +(2)子类`prototype`属性的`__proto__`属性,表示方法的继承,总是指向父类的`prototype`属性。 + +```javascript +class A { +} + +class B extends A { +} + +B.__proto__ === A // true +B.prototype.__proto__ === A.prototype // true +``` + +上面代码中,子类`B`的`__proto__`属性指向父类`A`,子类`B`的`prototype`属性的`__proto__`属性指向父类`A`的`prototype`属性。 + +这样的结果是因为,类的继承是按照下面的模式实现的。 + +```javascript +class A { +} + +class B { +} + +// B 的实例继承 A 的实例 +Object.setPrototypeOf(B.prototype, A.prototype); + +// B 的实例继承 A 的静态属性 +Object.setPrototypeOf(B, A); + +const b = new B(); +``` + +《对象的扩展》一章给出过`Object.setPrototypeOf`方法的实现。 + +```javascript +Object.setPrototypeOf = function (obj, proto) { + obj.__proto__ = proto; + return obj; +} +``` + +因此,就得到了上面的结果。 + +```javascript +Object.setPrototypeOf(B.prototype, A.prototype); +// 等同于 +B.prototype.__proto__ = A.prototype; + +Object.setPrototypeOf(B, A); +// 等同于 +B.__proto__ = A; +``` + +这两条继承链,可以这样理解:作为一个对象,子类(`B`)的原型(`__proto__`属性)是父类(`A`);作为一个构造函数,子类(`B`)的原型(`prototype`属性)是父类的实例。 + +```javascript +Object.create(A.prototype); +// 等同于 +B.prototype.__proto__ = A.prototype; +``` + +### extends 的继承目标 + +`extends`关键字后面可以跟多种类型的值。 + +```javascript +class B extends A { +} +``` + +上面代码的`A`,只要是一个有`prototype`属性的函数,就能被`B`继承。由于函数都有`prototype`属性(除了`Function.prototype`函数),因此`A`可以是任意函数。 + +下面,讨论三种特殊情况。 + +第一种特殊情况,子类继承`Object`类。 + +```javascript +class A extends Object { +} + +A.__proto__ === Object // true +A.prototype.__proto__ === Object.prototype // true +``` + +这种情况下,`A`其实就是构造函数`Object`的复制,`A`的实例就是`Object`的实例。 + +第二种特殊情况,不存在任何继承。 + +```javascript +class A { +} + +A.__proto__ === Function.prototype // true +A.prototype.__proto__ === Object.prototype // true +``` + +这种情况下,A作为一个基类(即不存在任何继承),就是一个普通函数,所以直接继承`Function.prototype`。但是,`A`调用后返回一个空对象(即`Object`实例),所以`A.prototype.__proto__`指向构造函数(`Object`)的`prototype`属性。 + +第三种特殊情况,子类继承`null`。 + +```javascript +class A extends null { +} + +A.__proto__ === Function.prototype // true +A.prototype.__proto__ === undefined // true +``` + +这种情况与第二种情况非常像。`A`也是一个普通函数,所以直接继承`Function.prototype`。但是,A调用后返回的对象不继承任何方法,所以它的`__proto__`指向`Function.prototype`,即实质上执行了下面的代码。 + +```javascript +class C extends null { + constructor() { return Object.create(null); } +} +``` + +### 实例的 \_\_proto\_\_ 属性 + +子类实例的`__proto__`属性的`__proto__`属性,指向父类实例的`__proto__`属性。也就是说,子类的原型的原型,是父类的原型。 + +```javascript +var p1 = new Point(2, 3); +var p2 = new ColorPoint(2, 3, 'red'); + +p2.__proto__ === p1.__proto__ // false +p2.__proto__.__proto__ === p1.__proto__ // true +``` + +上面代码中,`ColorPoint`继承了`Point`,导致前者原型的原型是后者的原型。 + +因此,通过子类实例的`__proto__.__proto__`属性,可以修改父类实例的行为。 + +```javascript +p2.__proto__.__proto__.printName = function () { + console.log('Ha'); +}; + +p1.printName() // "Ha" +``` + +上面代码在`ColorPoint`的实例`p2`上向`Point`类添加方法,结果影响到了`Point`的实例`p1`。 + +## 原生构造函数的继承 + +原生构造函数是指语言内置的构造函数,通常用来生成数据结构。ECMAScript 的原生构造函数大致有下面这些。 + +- Boolean() +- Number() +- String() +- Array() +- Date() +- Function() +- RegExp() +- Error() +- Object() + +以前,这些原生构造函数是无法继承的,比如,不能自己定义一个`Array`的子类。 + +```javascript +function MyArray() { + Array.apply(this, arguments); +} + +MyArray.prototype = Object.create(Array.prototype, { + constructor: { + value: MyArray, + writable: true, + configurable: true, + enumerable: true + } +}); +``` + +上面代码定义了一个继承Array的`MyArray`类。但是,这个类的行为与`Array`完全不一致。 + +```javascript +var colors = new MyArray(); +colors[0] = "red"; +colors.length // 0 + +colors.length = 0; +colors[0] // "red" +``` + +之所以会发生这种情况,是因为子类无法获得原生构造函数的内部属性,通过`Array.apply()`或者分配给原型对象都不行。原生构造函数会忽略`apply`方法传入的`this`,也就是说,原生构造函数的`this`无法绑定,导致拿不到内部属性。 + +ES5 是先新建子类的实例对象`this`,再将父类的属性添加到子类上,由于父类的内部属性无法获取,导致无法继承原生的构造函数。比如,`Array`构造函数有一个内部属性`[[DefineOwnProperty]]`,用来定义新属性时,更新`length`属性,这个内部属性无法在子类获取,导致子类的`length`属性行为不正常。 + +下面的例子中,我们想让一个普通对象继承`Error`对象。 + +```javascript +var e = {}; + +Object.getOwnPropertyNames(Error.call(e)) +// [ 'stack' ] + +Object.getOwnPropertyNames(e) +// [] +``` + +上面代码中,我们想通过`Error.call(e)`这种写法,让普通对象`e`具有`Error`对象的实例属性。但是,`Error.call()`完全忽略传入的第一个参数,而是返回一个新对象,`e`本身没有任何变化。这证明了`Error.call(e)`这种写法,无法继承原生构造函数。 + +ES6 允许继承原生构造函数定义子类,因为 ES6 是先新建父类的实例对象`this`,然后再用子类的构造函数修饰`this`,使得父类的所有行为都可以继承。下面是一个继承`Array`的例子。 + +```javascript +class MyArray extends Array { + constructor(...args) { + super(...args); + } +} + +var arr = new MyArray(); +arr[0] = 12; +arr.length // 1 + +arr.length = 0; +arr[0] // undefined +``` + +上面代码定义了一个`MyArray`类,继承了`Array`构造函数,因此就可以从`MyArray`生成数组的实例。这意味着,ES6 可以自定义原生数据结构(比如`Array`、`String`等)的子类,这是 ES5 无法做到的。 + +上面这个例子也说明,`extends`关键字不仅可以用来继承类,还可以用来继承原生的构造函数。因此可以在原生数据结构的基础上,定义自己的数据结构。下面就是定义了一个带版本功能的数组。 + +```javascript +class VersionedArray extends Array { + constructor() { + super(); + this.history = [[]]; + } + commit() { + this.history.push(this.slice()); + } + revert() { + this.splice(0, this.length, ...this.history[this.history.length - 1]); + } +} + +var x = new VersionedArray(); + +x.push(1); +x.push(2); +x // [1, 2] +x.history // [[]] + +x.commit(); +x.history // [[], [1, 2]] +x.push(3); +x // [1, 2, 3] + +x.revert(); +x // [1, 2] +``` + +上面代码中,`VersionedArray`结构会通过`commit`方法,将自己的当前状态存入`history`属性,然后通过`revert`方法,可以撤销当前版本,回到上一个版本。除此之外,`VersionedArray`依然是一个数组,所有原生的数组方法都可以在它上面调用。 + +下面是一个自定义`Error`子类的例子。 + +```javascript +class ExtendableError extends Error { + constructor(message) { + super(); + this.message = message; + this.stack = (new Error()).stack; + this.name = this.constructor.name; + } +} + +class MyError extends ExtendableError { + constructor(m) { + super(m); + } +} + +var myerror = new MyError('ll'); +myerror.message // "ll" +myerror instanceof Error // true +myerror.name // "MyError" +myerror.stack +// Error +// at MyError.ExtendableError +// ... +``` + +注意,继承`Object`的子类,有一个[行为差异](http://stackoverflow.com/questions/36203614/super-does-not-pass-arguments-when-instantiating-a-class-extended-from-object)。 + +```javascript +class NewObj extends Object{ + constructor(){ + super(...arguments); + } +} +var o = new NewObj({attr: true}); +console.log(o.attr === true); // false +``` + +上面代码中,`NewObj`继承了`Object`,但是无法通过`super`方法向父类`Object`传参。这是因为ES6改变了`Object`构造函数的行为,一旦发现`Object`方法不是通过`new Object()`这种形式调用,ES6 规定`Object`构造函数会忽略参数。 + +## Mixin 模式的实现 + +Mixin 模式指的是,将多个类的接口“混入”(mix in)另一个类。它在 ES6 的实现如下。 + +```javascript +function mix(...mixins) { + class Mix {} + + for (let mixin of mixins) { + copyProperties(Mix, mixin); + copyProperties(Mix.prototype, mixin.prototype); + } + + return Mix; +} + +function copyProperties(target, source) { + for (let key of Reflect.ownKeys(source)) { + if ( key !== "constructor" + && key !== "prototype" + && key !== "name" + ) { + let desc = Object.getOwnPropertyDescriptor(source, key); + Object.defineProperty(target, key, desc); + } + } +} +``` + +上面代码的`mix`函数,可以将多个对象合成为一个类。使用的时候,只要继承这个类即可。 + +```javascript +class DistributedEdit extends mix(Loggable, Serializable) { + // ... +} +``` + diff --git a/docs/class.md b/docs/class.md index 6fc4e4d8f..a3ce57670 100644 --- a/docs/class.md +++ b/docs/class.md @@ -1,10 +1,8 @@ -# Class +# Class 的基本语法 -## Class基本语法 +## 简介 -### 概述 - -在 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。 +JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。 ```javascript function Point(x, y) { @@ -21,7 +19,9 @@ var p = new Point(1, 2); 上面这种写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。 -ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过`class`关键字,可以定义类。基本上,ES6 的`class`可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的`class`写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的`class`改写,就是下面这样。 +ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过`class`关键字,可以定义类。 + +基本上,ES6 的`class`可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的`class`写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的`class`改写,就是下面这样。 ```javascript //定义类 @@ -37,11 +37,11 @@ class Point { } ``` -上面代码定义了一个“类”,可以看到里面有一个`constructor`方法,这就是构造方法,而`this`关键字则代表实例对象。也就是说,ES5的构造函数`Point`,对应ES6的`Point`类的构造方法。 +上面代码定义了一个“类”,可以看到里面有一个`constructor`方法,这就是构造方法,而`this`关键字则代表实例对象。也就是说,ES5 的构造函数`Point`,对应 ES6 的`Point`类的构造方法。 `Point`类除了构造方法,还定义了一个`toString`方法。注意,定义“类”的方法的时候,前面不需要加上`function`这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。 -ES6的类,完全可以看作构造函数的另一种写法。 +ES6 的类,完全可以看作构造函数的另一种写法。 ```javascript class Point { @@ -67,19 +67,19 @@ var b = new Bar(); b.doStuff() // "stuff" ``` -构造函数的`prototype`属性,在ES6的“类”上面继续存在。事实上,类的所有方法都定义在类的`prototype`属性上面。 +构造函数的`prototype`属性,在 ES6 的“类”上面继续存在。事实上,类的所有方法都定义在类的`prototype`属性上面。 ```javascript class Point { - constructor(){ + constructor() { // ... } - toString(){ + toString() { // ... } - toValue(){ + toValue() { // ... } } @@ -87,8 +87,9 @@ class Point { // 等同于 Point.prototype = { - toString(){}, - toValue(){} + constructor() {}, + toString() {}, + toValue() {}, }; ``` @@ -101,7 +102,7 @@ let b = new B(); b.constructor === B.prototype.constructor // true ``` -上面代码中,`b`是B类的实例,它的`constructor`方法就是B类原型的`constructor`方法。 +上面代码中,`b`是`B`类的实例,它的`constructor`方法就是`B`类原型的`constructor`方法。 由于类的方法都定义在`prototype`对象上面,所以类的新方法可以添加在`prototype`对象上面。`Object.assign`方法可以很方便地一次向类添加多个方法。 @@ -118,7 +119,7 @@ Object.assign(Point.prototype, { }); ``` -`prototype`对象的`constructor`属性,直接指向“类”的本身,这与ES5的行为是一致的。 +`prototype`对象的`constructor`属性,直接指向“类”的本身,这与 ES5 的行为是一致的。 ```javascript Point.prototype.constructor === Point // true @@ -143,7 +144,7 @@ Object.getOwnPropertyNames(Point.prototype) // ["constructor","toString"] ``` -上面代码中,`toString`方法是`Point`类内部定义的方法,它是不可枚举的。这一点与ES5的行为不一致。 +上面代码中,`toString`方法是`Point`类内部定义的方法,它是不可枚举的。这一点与 ES5 的行为不一致。 ```javascript var Point = function (x, y) { @@ -160,13 +161,14 @@ Object.getOwnPropertyNames(Point.prototype) // ["constructor","toString"] ``` -上面代码采用ES5的写法,`toString`方法就是可枚举的。 +上面代码采用 ES5 的写法,`toString`方法就是可枚举的。 类的属性名,可以采用表达式。 ```javascript -let methodName = "getArea"; -class Square{ +let methodName = 'getArea'; + +class Square { constructor(length) { // ... } @@ -179,14 +181,28 @@ class Square{ 上面代码中,`Square`类的方法名`getArea`,是从表达式得到的。 -### constructor方法 +## 严格模式 + +类和模块的内部,默认就是严格模式,所以不需要使用`use strict`指定运行模式。只要你的代码写在类或模块之中,就只有严格模式可用。 + +考虑到未来所有的代码,其实都是运行在模块之中,所以 ES6 实际上把整个语言升级到了严格模式。 + +## constructor 方法 `constructor`方法是类的默认方法,通过`new`命令生成对象实例时,自动调用该方法。一个类必须有`constructor`方法,如果没有显式定义,一个空的`constructor`方法会被默认添加。 ```javascript -constructor() {} +class Point { +} + +// 等同于 +class Point { + constructor() {} +} ``` +上面代码中,定义了一个空的类`Point`,JavaScript 引擎会自动为它添加一个空的`constructor`方法。 + `constructor`方法默认返回实例对象(即`this`),完全可以指定返回另外一个对象。 ```javascript @@ -202,7 +218,7 @@ new Foo() instanceof Foo 上面代码中,`constructor`函数返回一个全新的对象,结果导致实例对象不是`Foo`类的实例。 -类的构造函数,不使用`new`是没法调用的,会报错。这是它跟普通构造函数的一个主要区别,后者不用`new`也可以执行。 +类必须使用`new`调用,否则会报错。这是它跟普通构造函数的一个主要区别,后者不用`new`也可以执行。 ```javascript class Foo { @@ -215,11 +231,15 @@ Foo() // TypeError: Class constructor Foo cannot be invoked without 'new' ``` -### 类的实例对象 +## 类的实例对象 -生成类的实例对象的写法,与ES5完全一样,也是使用`new`命令。如果忘记加上`new`,像函数那样调用`Class`,将会报错。 +生成类的实例对象的写法,与 ES5 完全一样,也是使用`new`命令。前面说过,如果忘记加上`new`,像函数那样调用`Class`,将会报错。 ```javascript +class Point { + // ... +} + // 报错 var point = Point(2, 3); @@ -227,7 +247,7 @@ var point = Point(2, 3); var point = new Point(2, 3); ``` -与ES5一样,实例的属性除非显式定义在其本身(即定义在`this`对象上),否则都是定义在原型上(即定义在`class`上)。 +与 ES5 一样,实例的属性除非显式定义在其本身(即定义在`this`对象上),否则都是定义在原型上(即定义在`class`上)。 ```javascript //定义类 @@ -254,9 +274,9 @@ point.hasOwnProperty('toString') // false point.__proto__.hasOwnProperty('toString') // true ``` -上面代码中,`x`和`y`都是实例对象`point`自身的属性(因为定义在`this`变量上),所以`hasOwnProperty`方法返回`true`,而`toString`是原型对象的属性(因为定义在`Point`类上),所以`hasOwnProperty`方法返回`false`。这些都与ES5的行为保持一致。 +上面代码中,`x`和`y`都是实例对象`point`自身的属性(因为定义在`this`变量上),所以`hasOwnProperty`方法返回`true`,而`toString`是原型对象的属性(因为定义在`Point`类上),所以`hasOwnProperty`方法返回`false`。这些都与 ES5 的行为保持一致。 -与ES5一样,类的所有实例共享一个原型对象。 +与 ES5 一样,类的所有实例共享一个原型对象。 ```javascript var p1 = new Point(2,3); @@ -266,9 +286,9 @@ p1.__proto__ === p2.__proto__ //true ``` -上面代码中,`p1`和`p2`都是Point的实例,它们的原型都是Point.prototype,所以`__proto__`属性是相等的。 +上面代码中,`p1`和`p2`都是`Point`的实例,它们的原型都是`Point.prototype`,所以`__proto__`属性是相等的。 -这也意味着,可以通过实例的`__proto__`属性为Class添加方法。 +这也意味着,可以通过实例的`__proto__`属性为“类”添加方法。 ```javascript var p1 = new Point(2,3); @@ -283,30 +303,9 @@ var p3 = new Point(4,2); p3.printName() // "Oops" ``` -上面代码在`p1`的原型上添加了一个`printName`方法,由于`p1`的原型就是`p2`的原型,因此`p2`也可以调用这个方法。而且,此后新建的实例`p3`也可以调用这个方法。这意味着,使用实例的`__proto__`属性改写原型,必须相当谨慎,不推荐使用,因为这会改变Class的原始定义,影响到所有实例。 - -### 不存在变量提升 - -Class不存在变量提升(hoist),这一点与ES5完全不同。 - -```javascript -new Foo(); // ReferenceError -class Foo {} -``` - -上面代码中,`Foo`类使用在前,定义在后,这样会报错,因为ES6不会把类的声明提升到代码头部。这种规定的原因与下文要提到的继承有关,必须保证子类在父类之后定义。 - -```javascript -{ - let Foo = class {}; - class Bar extends Foo { - } -} -``` - -上面的代码不会报错,因为`Bar`继承`Foo`的时候,`Foo`已经有定义了。但是,如果存在`class`的提升,上面代码就会报错,因为`class`会被提升到代码头部,而`let`命令是不提升的,所以导致`Bar`继承`Foo`的时候,`Foo`还没有定义。 +上面代码在`p1`的原型上添加了一个`printName`方法,由于`p1`的原型就是`p2`的原型,因此`p2`也可以调用这个方法。而且,此后新建的实例`p3`也可以调用这个方法。这意味着,使用实例的`__proto__`属性改写原型,必须相当谨慎,不推荐使用,因为这会改变“类”的原始定义,影响到所有实例。 -### Class表达式 +## Class 表达式 与函数一样,类也可以使用表达式的形式定义。 @@ -318,7 +317,7 @@ const MyClass = class Me { }; ``` -上面代码使用表达式定义了一个类。需要注意的是,这个类的名字是`MyClass`而不是`Me`,`Me`只在Class的内部代码可用,指代当前类。 +上面代码使用表达式定义了一个类。需要注意的是,这个类的名字是`MyClass`而不是`Me`,`Me`只在 Class 的内部代码可用,指代当前类。 ```javascript let inst = new MyClass(); @@ -326,7 +325,7 @@ inst.getClassName() // Me Me.name // ReferenceError: Me is not defined ``` -上面代码表示,`Me`只在Class内部有定义。 +上面代码表示,`Me`只在 Class 内部有定义。 如果类的内部没用到的话,可以省略`Me`,也就是可以写成下面的形式。 @@ -334,7 +333,7 @@ Me.name // ReferenceError: Me is not defined const MyClass = class { /* ... */ }; ``` -采用Class表达式,可以写出立即执行的Class。 +采用 Class 表达式,可以写出立即执行的 Class。 ```javascript let person = new class { @@ -352,7 +351,28 @@ person.sayName(); // "张三" 上面代码中,`person`是一个立即执行的类的实例。 -### 私有方法 +## 不存在变量提升 + +类不存在变量提升(hoist),这一点与 ES5 完全不同。 + +```javascript +new Foo(); // ReferenceError +class Foo {} +``` + +上面代码中,`Foo`类使用在前,定义在后,这样会报错,因为 ES6 不会把类的声明提升到代码头部。这种规定的原因与下文要提到的继承有关,必须保证子类在父类之后定义。 + +```javascript +{ + let Foo = class {}; + class Bar extends Foo { + } +} +``` + +上面的代码不会报错,因为`Bar`继承`Foo`的时候,`Foo`已经有定义了。但是,如果存在`class`的提升,上面代码就会报错,因为`class`会被提升到代码头部,而`let`命令是不提升的,所以导致`Bar`继承`Foo`的时候,`Foo`还没有定义。 + +## 私有方法 私有方法是常见需求,但 ES6 不提供,只能通过变通方法模拟实现。 @@ -419,7 +439,51 @@ export default class myClass{ 上面代码中,`bar`和`snaf`都是`Symbol`值,导致第三方无法获取到它们,因此达到了私有方法和私有属性的效果。 -### this的指向 +## 私有属性 + +与私有方法一样,ES6 不支持私有属性。目前,有一个[提案](https://github.com/tc39/proposal-private-fields),为`class`加了私有属性。方法是在属性名之前,使用`#`表示。 + +```javascript +class Point { + #x; + + constructor(x = 0) { + #x = +x; + } + + get x() { return #x } + set x(value) { #x = +value } +} +``` + +上面代码中,`#x`就表示私有属性`x`,在`Point`类之外是读取不到这个属性的。还可以看到,私有属性与实例的属性是可以同名的(比如,`#x`与`get x()`)。 + +私有属性可以指定初始值,在构造函数执行时进行初始化。 + +```javascript +class Point { + #x = 0; + constructor() { + #x; // 0 + } +} +``` + +之所以要引入一个新的前缀`#`表示私有属性,而没有采用`private`关键字,是因为 JavaScript 是一门动态语言,使用独立的符号似乎是唯一的可靠方法,能够准确地区分一种属性是否为私有属性。另外,Ruby 语言使用`@`表示私有属性,ES6 没有用这个符号而使用`#`,是因为`@`已经被留给了 Decorator。 + +该提案只规定了私有属性的写法。但是,很自然地,它也可以用来写私有方法。 + +```javascript +class Foo { + #a; + #b; + #sum() { return #a + #b; } + printSum() { console.log(#sum()); } + constructor(a, b) { #a = a; #b = b; } +} +``` + +## this 的指向 类的方法内部如果含有`this`,它默认指向类的实例。但是,必须非常小心,一旦单独使用该方法,很可能报错。 @@ -491,15 +555,9 @@ function selfish (target) { const logger = selfish(new Logger()); ``` -### 严格模式 - -类和模块的内部,默认就是严格模式,所以不需要使用`use strict`指定运行模式。只要你的代码写在类或模块之中,就只有严格模式可用。 - -考虑到未来所有的代码,其实都是运行在模块之中,所以ES6实际上把整个语言升级到了严格模式。 - -### name属性 +## name 属性 -由于本质上,ES6的类只是ES5的构造函数的一层包装,所以函数的许多特性都被`Class`继承,包括`name`属性。 +由于本质上,ES6 的类只是 ES5 的构造函数的一层包装,所以函数的许多特性都被`Class`继承,包括`name`属性。 ```javascript class Point {} @@ -508,824 +566,191 @@ Point.name // "Point" `name`属性总是返回紧跟在`class`关键字后面的类名。 -## Class的继承 +## Class 的取值函数(getter)和存值函数(setter) -### 基本用法 - -Class之间可以通过`extends`关键字实现继承,这比ES5的通过修改原型链实现继承,要清晰和方便很多。 - -```javascript -class ColorPoint extends Point {} -``` - -上面代码定义了一个`ColorPoint`类,该类通过`extends`关键字,继承了`Point`类的所有属性和方法。但是由于没有部署任何代码,所以这两个类完全一样,等于复制了一个`Point`类。下面,我们在`ColorPoint`内部加上代码。 +与 ES5 一样,在“类”的内部可以使用`get`和`set`关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。 ```javascript -class ColorPoint extends Point { - constructor(x, y, color) { - super(x, y); // 调用父类的constructor(x, y) - this.color = color; +class MyClass { + constructor() { + // ... } - - toString() { - return this.color + ' ' + super.toString(); // 调用父类的toString() + get prop() { + return 'getter'; + } + set prop(value) { + console.log('setter: '+value); } } -``` -上面代码中,`constructor`方法和`toString`方法之中,都出现了`super`关键字,它在这里表示父类的构造函数,用来新建父类的`this`对象。 - -子类必须在`constructor`方法中调用`super`方法,否则新建实例时会报错。这是因为子类没有自己的`this`对象,而是继承父类的`this`对象,然后对其进行加工。如果不调用`super`方法,子类就得不到`this`对象。 - -```javascript -class Point { /* ... */ } +let inst = new MyClass(); -class ColorPoint extends Point { - constructor() { - } -} +inst.prop = 123; +// setter: 123 -let cp = new ColorPoint(); // ReferenceError +inst.prop +// 'getter' ``` -上面代码中,`ColorPoint`继承了父类`Point`,但是它的构造函数没有调用`super`方法,导致新建实例时报错。 - -ES5的继承,实质是先创造子类的实例对象`this`,然后再将父类的方法添加到`this`上面(`Parent.apply(this)`)。ES6的继承机制完全不同,实质是先创造父类的实例对象`this`(所以必须先调用`super`方法),然后再用子类的构造函数修改`this`。 +上面代码中,`prop`属性有对应的存值函数和取值函数,因此赋值和读取行为都被自定义了。 -如果子类没有定义`constructor`方法,这个方法会被默认添加,代码如下。也就是说,不管有没有显式定义,任何一个子类都有`constructor`方法。 +存值函数和取值函数是设置在属性的 Descriptor 对象上的。 ```javascript -constructor(...args) { - super(...args); -} -``` - -另一个需要注意的地方是,在子类的构造函数中,只有调用`super`之后,才可以使用`this`关键字,否则会报错。这是因为子类实例的构建,是基于对父类实例加工,只有`super`方法才能返回父类实例。 +class CustomHTMLElement { + constructor(element) { + this.element = element; + } -```javascript -class Point { - constructor(x, y) { - this.x = x; - this.y = y; + get html() { + return this.element.innerHTML; } -} -class ColorPoint extends Point { - constructor(x, y, color) { - this.color = color; // ReferenceError - super(x, y); - this.color = color; // 正确 + set html(value) { + this.element.innerHTML = value; } } -``` - -上面代码中,子类的`constructor`方法没有调用`super`之前,就使用`this`关键字,结果报错,而放在`super`方法之后就是正确的。 -下面是生成子类实例的代码。 - -```javascript -let cp = new ColorPoint(25, 8, 'green'); +var descriptor = Object.getOwnPropertyDescriptor( + CustomHTMLElement.prototype, "html" +); -cp instanceof ColorPoint // true -cp instanceof Point // true +"get" in descriptor // true +"set" in descriptor // true ``` -上面代码中,实例对象`cp`同时是`ColorPoint`和`Point`两个类的实例,这与ES5的行为完全一致。 - -### 类的prototype属性和\_\_proto\_\_属性 +上面代码中,存值函数和取值函数是定义在`html`属性的描述对象上面,这与 ES5 完全一致。 -大多数浏览器的ES5实现之中,每一个对象都有`__proto__`属性,指向对应的构造函数的prototype属性。Class作为构造函数的语法糖,同时有prototype属性和`__proto__`属性,因此同时存在两条继承链。 - -(1)子类的`__proto__`属性,表示构造函数的继承,总是指向父类。 +## Class 的 Generator 方法 -(2)子类`prototype`属性的`__proto__`属性,表示方法的继承,总是指向父类的`prototype`属性。 +如果某个方法之前加上星号(`*`),就表示该方法是一个 Generator 函数。 ```javascript -class A { +class Foo { + constructor(...args) { + this.args = args; + } + * [Symbol.iterator]() { + for (let arg of this.args) { + yield arg; + } + } } -class B extends A { +for (let x of new Foo('hello', 'world')) { + console.log(x); } - -B.__proto__ === A // true -B.prototype.__proto__ === A.prototype // true +// hello +// world ``` -上面代码中,子类`B`的`__proto__`属性指向父类`A`,子类`B`的`prototype`属性的`__proto__`属性指向父类`A`的`prototype`属性。 +上面代码中,`Foo`类的`Symbol.iterator`方法前有一个星号,表示该方法是一个 Generator 函数。`Symbol.iterator`方法返回一个`Foo`类的默认遍历器,`for...of`循环会自动调用这个遍历器。 + +## Class 的静态方法 -这样的结果是因为,类的继承是按照下面的模式实现的。 +类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上`static`关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。 ```javascript -class A { -} - -class B { +class Foo { + static classMethod() { + return 'hello'; + } } -// B的实例继承A的实例 -Object.setPrototypeOf(B.prototype, A.prototype); -const b = new B(); +Foo.classMethod() // 'hello' -// B的实例继承A的静态属性 -Object.setPrototypeOf(B, A); -const b = new B(); +var foo = new Foo(); +foo.classMethod() +// TypeError: foo.classMethod is not a function ``` -《对象的扩展》一章给出过`Object.setPrototypeOf`方法的实现。 - -```javascript -Object.setPrototypeOf = function (obj, proto) { - obj.__proto__ = proto; - return obj; -} -``` +上面代码中,`Foo`类的`classMethod`方法前有`static`关键字,表明该方法是一个静态方法,可以直接在`Foo`类上调用(`Foo.classMethod()`),而不是在`Foo`类的实例上调用。如果在实例上调用静态方法,会抛出一个错误,表示不存在该方法。 -因此,就得到了上面的结果。 +父类的静态方法,可以被子类继承。 ```javascript -Object.setPrototypeOf(B.prototype, A.prototype); -// 等同于 -B.prototype.__proto__ = A.prototype; - -Object.setPrototypeOf(B, A); -// 等同于 -B.__proto__ = A; -``` +class Foo { + static classMethod() { + return 'hello'; + } +} -这两条继承链,可以这样理解:作为一个对象,子类(`B`)的原型(`__proto__`属性)是父类(`A`);作为一个构造函数,子类(`B`)的原型(`prototype`属性)是父类的实例。 +class Bar extends Foo { +} -```javascript -Object.create(A.prototype); -// 等同于 -B.prototype.__proto__ = A.prototype; +Bar.classMethod() // 'hello' ``` -### Extends 的继承目标 +上面代码中,父类`Foo`有一个静态方法,子类`Bar`可以调用这个方法。 -`extends`关键字后面可以跟多种类型的值。 +静态方法也是可以从`super`对象上调用的。 ```javascript -class B extends A { +class Foo { + static classMethod() { + return 'hello'; + } } -``` - -上面代码的`A`,只要是一个有`prototype`属性的函数,就能被`B`继承。由于函数都有`prototype`属性(除了`Function.prototype`函数),因此`A`可以是任意函数。 -下面,讨论三种特殊情况。 - -第一种特殊情况,子类继承Object类。 - -```javascript -class A extends Object { +class Bar extends Foo { + static classMethod() { + return super.classMethod() + ', too'; + } } -A.__proto__ === Object // true -A.prototype.__proto__ === Object.prototype // true +Bar.classMethod() // "hello, too" ``` -这种情况下,`A`其实就是构造函数`Object`的复制,`A`的实例就是`Object`的实例。 +## Class 的静态属性和实例属性 -第二种特殊情况,不存在任何继承。 +静态属性指的是 Class 本身的属性,即`Class.propName`,而不是定义在实例对象(`this`)上的属性。 ```javascript -class A { +class Foo { } -A.__proto__ === Function.prototype // true -A.prototype.__proto__ === Object.prototype // true +Foo.prop = 1; +Foo.prop // 1 ``` -这种情况下,A作为一个基类(即不存在任何继承),就是一个普通函数,所以直接继承`Function.prototype`。但是,`A`调用后返回一个空对象(即`Object`实例),所以`A.prototype.__proto__`指向构造函数(`Object`)的`prototype`属性。 +上面的写法为`Foo`类定义了一个静态属性`prop`。 -第三种特殊情况,子类继承`null`。 +目前,只有这种写法可行,因为 ES6 明确规定,Class 内部只有静态方法,没有静态属性。 ```javascript -class A extends null { -} - -A.__proto__ === Function.prototype // true -A.prototype.__proto__ === undefined // true -``` - -这种情况与第二种情况非常像。`A`也是一个普通函数,所以直接继承`Function.prototype`。但是,A调用后返回的对象不继承任何方法,所以它的`__proto__`指向`Function.prototype`,即实质上执行了下面的代码。 +// 以下两种写法都无效 +class Foo { + // 写法一 + prop: 2 -```javascript -class C extends null { - constructor() { return Object.create(null); } + // 写法二 + static prop: 2 } -``` - -### Object.getPrototypeOf() -`Object.getPrototypeOf`方法可以用来从子类上获取父类。 - -```javascript -Object.getPrototypeOf(ColorPoint) === Point -// true +Foo.prop // undefined ``` -因此,可以使用这个方法判断,一个类是否继承了另一个类。 +ES7 有一个静态属性的[提案](https://github.com/jeffmo/es-class-properties),目前 Babel 转码器支持。 -### super 关键字 +这个提案对实例属性和静态属性,都规定了新的写法。 -`super`这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。 +(1)类的实例属性 -第一种情况,`super`作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次`super`函数。 +类的实例属性可以用等式,写入类的定义之中。 ```javascript -class A {} +class MyClass { + myProp = 42; -class B extends A { constructor() { - super(); + console.log(this.myProp); // 42 } } ``` -上面代码中,子类`B`的构造函数之中的`super()`,代表调用父类的构造函数。这是必须的,否则 JavaScript 引擎会报错。 +上面代码中,`myProp`就是`MyClass`的实例属性。在`MyClass`的实例上,可以读取这个属性。 -注意,`super`虽然代表了父类`A`的构造函数,但是返回的是子类`B`的实例,即`super`内部的`this`指的是`B`,因此`super()`在这里相当于`A.prototype.constructor.call(this)`。 - -```javascript -class A { - constructor() { - console.log(new.target.name); - } -} -class B extends A { - constructor() { - super(); - } -} -new A() // A -new B() // B -``` - -上面代码中,`new.target`指向当前正在执行的函数。可以看到,在`super()`执行时,它指向的是子类`B`的构造函数,而不是父类`A`的构造函数。也就是说,`super()`内部的`this`指向的是`B`。 - -作为函数时,`super()`只能用在子类的构造函数之中,用在其他地方就会报错。 - -```javascript -class A {} - -class B extends A { - m() { - super(); // 报错 - } -} -``` - -上面代码中,`super()`用在`B`类的`m`方法之中,就会造成句法错误。 - -第二种情况,`super`作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。 - -```javascript -class A { - p() { - return 2; - } -} - -class B extends A { - constructor() { - super(); - console.log(super.p()); // 2 - } -} - -let b = new B(); -``` - -上面代码中,子类`B`当中的`super.p()`,就是将`super`当作一个对象使用。这时,`super`在普通方法之中,指向`A.prototype`,所以`super.p()`就相当于`A.prototype.p()`。 - -这里需要注意,由于`super`指向父类的原型对象,所以定义在父类实例上的方法或属性,是无法通过`super`调用的。 - -```javascript -class A { - constructor() { - this.p = 2; - } -} - -class B extends A { - get m() { - return super.p; - } -} - -let b = new B(); -b.m // undefined -``` - -上面代码中,`p`是父类`A`实例的属性,`super.p`就引用不到它。 - -如果属性定义在父类的原型对象上,`super`就可以取到。 - -```javascript -class A {} -A.prototype.x = 2; - -class B extends A { - constructor() { - super(); - console.log(super.x) // 2 - } -} - -let b = new B(); -``` - -上面代码中,属性`x`是定义在`A.prototype`上面的,所以`super.x`可以取到它的值。 - -ES6 规定,通过`super`调用父类的方法时,`super`会绑定子类的`this`。 - -```javascript -class A { - constructor() { - this.x = 1; - } - print() { - console.log(this.x); - } -} - -class B extends A { - constructor() { - super(); - this.x = 2; - } - m() { - super.print(); - } -} - -let b = new B(); -b.m() // 2 -``` - -上面代码中,`super.print()`虽然调用的是`A.prototype.print()`,但是`A.prototype.print()`会绑定子类`B`的`this`,导致输出的是`2`,而不是`1`。也就是说,实际上执行的是`super.print.call(this)`。 - -由于绑定子类的`this`,所以如果通过`super`对某个属性赋值,这时`super`就是`this`,赋值的属性会变成子类实例的属性。 - -```javascript -class A { - constructor() { - this.x = 1; - } -} - -class B extends A { - constructor() { - super(); - this.x = 2; - super.x = 3; - console.log(super.x); // undefined - console.log(this.x); // 3 - } -} - -let b = new B(); -``` - -上面代码中,`super.x`赋值为`3`,这时等同于对`this.x`赋值为`3`。而当读取`super.x`的时候,读的是`A.prototype.x`,所以返回`undefined`。 - -如果`super`作为对象,用在静态方法之中,这时`super`将指向父类,而不是父类的原型对象。 - -```javascript -class Parent { - static myMethod(msg) { - console.log('static', msg); - } - - myMethod(msg) { - console.log('instance', msg); - } -} - -class Child extends Parent { - static myMethod(msg) { - super.myMethod(msg); - } - - myMethod(msg) { - super.myMethod(msg); - } -} - -Child.myMethod(1); // static 1 - -var child = new Child(); -child.myMethod(2); // instance 2 -``` - -上面代码中,`super`在静态方法之中指向父类,在普通方法之中指向父类的原型对象。 - -注意,使用`super`的时候,必须显式指定是作为函数、还是作为对象使用,否则会报错。 - -```javascript -class A {} - -class B extends A { - constructor() { - super(); - console.log(super); // 报错 - } -} -``` - -上面代码中,`console.log(super)`当中的`super`,无法看出是作为函数使用,还是作为对象使用,所以 JavaScript 引擎解析代码的时候就会报错。这时,如果能清晰地表明`super`的数据类型,就不会报错。 - -```javascript -class A {} - -class B extends A { - constructor() { - super(); - console.log(super.valueOf() instanceof B); // true - } -} - -let b = new B(); -``` - -上面代码中,`super.valueOf()`表明`super`是一个对象,因此就不会报错。同时,由于`super`绑定`B`的`this`,所以`super.valueOf()`返回的是一个`B`的实例。 - -最后,由于对象总是继承其他对象的,所以可以在任意一个对象中,使用`super`关键字。 - -```javascript -var obj = { - toString() { - return "MyObject: " + super.toString(); - } -}; - -obj.toString(); // MyObject: [object Object] -``` - -### 实例的\_\_proto\_\_属性 - -子类实例的\_\_proto\_\_属性的\_\_proto\_\_属性,指向父类实例的\_\_proto\_\_属性。也就是说,子类的原型的原型,是父类的原型。 - -```javascript -var p1 = new Point(2, 3); -var p2 = new ColorPoint(2, 3, 'red'); - -p2.__proto__ === p1.__proto__ // false -p2.__proto__.__proto__ === p1.__proto__ // true -``` - -上面代码中,`ColorPoint`继承了`Point`,导致前者原型的原型是后者的原型。 - -因此,通过子类实例的`__proto__.__proto__`属性,可以修改父类实例的行为。 - -```javascript -p2.__proto__.__proto__.printName = function () { - console.log('Ha'); -}; - -p1.printName() // "Ha" -``` - -上面代码在`ColorPoint`的实例`p2`上向`Point`类添加方法,结果影响到了`Point`的实例`p1`。 - -## 原生构造函数的继承 - -原生构造函数是指语言内置的构造函数,通常用来生成数据结构。ECMAScript的原生构造函数大致有下面这些。 - -- Boolean() -- Number() -- String() -- Array() -- Date() -- Function() -- RegExp() -- Error() -- Object() - -以前,这些原生构造函数是无法继承的,比如,不能自己定义一个`Array`的子类。 - -```javascript -function MyArray() { - Array.apply(this, arguments); -} - -MyArray.prototype = Object.create(Array.prototype, { - constructor: { - value: MyArray, - writable: true, - configurable: true, - enumerable: true - } -}); -``` - -上面代码定义了一个继承Array的`MyArray`类。但是,这个类的行为与`Array`完全不一致。 - -```javascript -var colors = new MyArray(); -colors[0] = "red"; -colors.length // 0 - -colors.length = 0; -colors[0] // "red" -``` - -之所以会发生这种情况,是因为子类无法获得原生构造函数的内部属性,通过`Array.apply()`或者分配给原型对象都不行。原生构造函数会忽略`apply`方法传入的`this`,也就是说,原生构造函数的`this`无法绑定,导致拿不到内部属性。 - -ES5是先新建子类的实例对象`this`,再将父类的属性添加到子类上,由于父类的内部属性无法获取,导致无法继承原生的构造函数。比如,Array构造函数有一个内部属性`[[DefineOwnProperty]]`,用来定义新属性时,更新`length`属性,这个内部属性无法在子类获取,导致子类的`length`属性行为不正常。 - -下面的例子中,我们想让一个普通对象继承`Error`对象。 - -```javascript -var e = {}; - -Object.getOwnPropertyNames(Error.call(e)) -// [ 'stack' ] - -Object.getOwnPropertyNames(e) -// [] -``` - -上面代码中,我们想通过`Error.call(e)`这种写法,让普通对象`e`具有`Error`对象的实例属性。但是,`Error.call()`完全忽略传入的第一个参数,而是返回一个新对象,`e`本身没有任何变化。这证明了`Error.call(e)`这种写法,无法继承原生构造函数。 - -ES6允许继承原生构造函数定义子类,因为ES6是先新建父类的实例对象`this`,然后再用子类的构造函数修饰`this`,使得父类的所有行为都可以继承。下面是一个继承`Array`的例子。 - -```javascript -class MyArray extends Array { - constructor(...args) { - super(...args); - } -} - -var arr = new MyArray(); -arr[0] = 12; -arr.length // 1 - -arr.length = 0; -arr[0] // undefined -``` - -上面代码定义了一个`MyArray`类,继承了`Array`构造函数,因此就可以从`MyArray`生成数组的实例。这意味着,ES6可以自定义原生数据结构(比如Array、String等)的子类,这是ES5无法做到的。 - -上面这个例子也说明,`extends`关键字不仅可以用来继承类,还可以用来继承原生的构造函数。因此可以在原生数据结构的基础上,定义自己的数据结构。下面就是定义了一个带版本功能的数组。 - -```javascript -class VersionedArray extends Array { - constructor() { - super(); - this.history = [[]]; - } - commit() { - this.history.push(this.slice()); - } - revert() { - this.splice(0, this.length, ...this.history[this.history.length - 1]); - } -} - -var x = new VersionedArray(); - -x.push(1); -x.push(2); -x // [1, 2] -x.history // [[]] - -x.commit(); -x.history // [[], [1, 2]] -x.push(3); -x // [1, 2, 3] - -x.revert(); -x // [1, 2] -``` - -上面代码中,`VersionedArray`结构会通过`commit`方法,将自己的当前状态存入`history`属性,然后通过`revert`方法,可以撤销当前版本,回到上一个版本。除此之外,`VersionedArray`依然是一个数组,所有原生的数组方法都可以在它上面调用。 - -下面是一个自定义`Error`子类的例子。 - -```javascript -class ExtendableError extends Error { - constructor(message) { - super(); - this.message = message; - this.stack = (new Error()).stack; - this.name = this.constructor.name; - } -} - -class MyError extends ExtendableError { - constructor(m) { - super(m); - } -} - -var myerror = new MyError('ll'); -myerror.message // "ll" -myerror instanceof Error // true -myerror.name // "MyError" -myerror.stack -// Error -// at MyError.ExtendableError -// ... -``` - -注意,继承`Object`的子类,有一个[行为差异](http://stackoverflow.com/questions/36203614/super-does-not-pass-arguments-when-instantiating-a-class-extended-from-object)。 - -```javascript -class NewObj extends Object{ - constructor(){ - super(...arguments); - } -} -var o = new NewObj({attr: true}); -console.log(o.attr === true); // false -``` - -上面代码中,`NewObj`继承了`Object`,但是无法通过`super`方法向父类`Object`传参。这是因为ES6改变了`Object`构造函数的行为,一旦发现`Object`方法不是通过`new Object()`这种形式调用,ES6规定`Object`构造函数会忽略参数。 - -## Class的取值函数(getter)和存值函数(setter) - -与ES5一样,在Class内部可以使用`get`和`set`关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。 - -```javascript -class MyClass { - constructor() { - // ... - } - get prop() { - return 'getter'; - } - set prop(value) { - console.log('setter: '+value); - } -} - -let inst = new MyClass(); - -inst.prop = 123; -// setter: 123 - -inst.prop -// 'getter' -``` - -上面代码中,`prop`属性有对应的存值函数和取值函数,因此赋值和读取行为都被自定义了。 - -存值函数和取值函数是设置在属性的descriptor对象上的。 - -```javascript -class CustomHTMLElement { - constructor(element) { - this.element = element; - } - - get html() { - return this.element.innerHTML; - } - - set html(value) { - this.element.innerHTML = value; - } -} - -var descriptor = Object.getOwnPropertyDescriptor( - CustomHTMLElement.prototype, "html"); -"get" in descriptor // true -"set" in descriptor // true -``` - -上面代码中,存值函数和取值函数是定义在`html`属性的描述对象上面,这与ES5完全一致。 - -## Class 的 Generator 方法 - -如果某个方法之前加上星号(`*`),就表示该方法是一个 Generator 函数。 - -```javascript -class Foo { - constructor(...args) { - this.args = args; - } - * [Symbol.iterator]() { - for (let arg of this.args) { - yield arg; - } - } -} - -for (let x of new Foo('hello', 'world')) { - console.log(x); -} -// hello -// world -``` - -上面代码中,`Foo`类的`Symbol.iterator`方法前有一个星号,表示该方法是一个 Generator 函数。`Symbol.iterator`方法返回一个`Foo`类的默认遍历器,`for...of`循环会自动调用这个遍历器。 - -## Class 的静态方法 - -类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上`static`关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。 - -```javascript -class Foo { - static classMethod() { - return 'hello'; - } -} - -Foo.classMethod() // 'hello' - -var foo = new Foo(); -foo.classMethod() -// TypeError: foo.classMethod is not a function -``` - -上面代码中,`Foo`类的`classMethod`方法前有`static`关键字,表明该方法是一个静态方法,可以直接在`Foo`类上调用(`Foo.classMethod()`),而不是在`Foo`类的实例上调用。如果在实例上调用静态方法,会抛出一个错误,表示不存在该方法。 - -父类的静态方法,可以被子类继承。 - -```javascript -class Foo { - static classMethod() { - return 'hello'; - } -} - -class Bar extends Foo { -} - -Bar.classMethod(); // 'hello' -``` - -上面代码中,父类`Foo`有一个静态方法,子类`Bar`可以调用这个方法。 - -静态方法也是可以从`super`对象上调用的。 - -```javascript -class Foo { - static classMethod() { - return 'hello'; - } -} - -class Bar extends Foo { - static classMethod() { - return super.classMethod() + ', too'; - } -} - -Bar.classMethod(); -``` - -## Class的静态属性和实例属性 - -静态属性指的是Class本身的属性,即`Class.propname`,而不是定义在实例对象(`this`)上的属性。 - -```javascript -class Foo { -} - -Foo.prop = 1; -Foo.prop // 1 -``` - -上面的写法为`Foo`类定义了一个静态属性`prop`。 - -目前,只有这种写法可行,因为ES6明确规定,Class内部只有静态方法,没有静态属性。 - -```javascript -// 以下两种写法都无效 -class Foo { - // 写法一 - prop: 2 - - // 写法二 - static prop: 2 -} - -Foo.prop // undefined -``` - -ES7有一个静态属性的[提案](https://github.com/jeffmo/es-class-properties),目前Babel转码器支持。 - -这个提案对实例属性和静态属性,都规定了新的写法。 - -(1)类的实例属性 - -类的实例属性可以用等式,写入类的定义之中。 - -```javascript -class MyClass { - myProp = 42; - - constructor() { - console.log(this.myProp); // 42 - } -} -``` - -上面代码中,`myProp`就是`MyClass`的实例属性。在`MyClass`的实例上,可以读取这个属性。 - -以前,我们定义实例属性,只能写在类的`constructor`方法里面。 +以前,我们定义实例属性,只能写在类的`constructor`方法里面。 ```javascript class ReactCounter extends React.Component { @@ -1385,6 +810,7 @@ class MyClass { ```javascript // 老写法 class Foo { + // ... } Foo.prop = 1; @@ -1396,53 +822,9 @@ class Foo { 上面代码中,老写法的静态属性定义在类的外部。整个类生成以后,再生成静态属性。这样让人很容易忽略这个静态属性,也不符合相关代码应该放在一起的代码组织原则。另外,新写法是显式声明(declarative),而不是赋值处理,语义更好。 -## 类的私有属性 - -目前,有一个[提案](https://github.com/tc39/proposal-private-fields),为`class`加了私有属性。方法是在属性名之前,使用`#`表示。 - -```javascript -class Point { - #x; - - constructor(x = 0) { - #x = +x; - } - - get x() { return #x } - set x(value) { #x = +value } -} -``` - -上面代码中,`#x`就表示私有属性`x`,在`Point`类之外是读取不到这个属性的。还可以看到,私有属性与实例的属性是可以同名的(比如,`#x`与`get x()`)。 - -私有属性可以指定初始值,在构造函数执行时进行初始化。 - -```javascript -class Point { - #x = 0; - constructor() { - #x; // 0 - } -} -``` - -之所以要引入一个新的前缀`#`表示私有属性,而没有采用`private`关键字,是因为 JavaScript 是一门动态语言,使用独立的符号似乎是唯一的可靠方法,能够准确地区分一种属性是私有属性。另外,Ruby 语言使用`@`表示私有属性,ES6 没有用这个符号而使用`#`,是因为`@`已经被留给了 Decorator。 - -该提案只规定了私有属性的写法。但是,很自然地,它也可以用来写私有方法。 - -```javascript -class Foo { - #a; - #b; - #sum() { return #a + #b; } - printSum() { console.log(#sum()); } - constructor(a, b) { #a = a; #b = b; } -} -``` - ## new.target属性 -`new`是从构造函数生成实例的命令。ES6为`new`命令引入了一个`new.target`属性,(在构造函数中)返回`new`命令作用于的那个构造函数。如果构造函数不是通过`new`命令调用的,`new.target`会返回`undefined`,因此这个属性可以用来确定构造函数是怎么调用的。 +`new`是从构造函数生成实例的命令。ES6 为`new`命令引入了一个`new.target`属性,该属性一般用在在构造函数之中,返回`new`命令作用于的那个构造函数。如果构造函数不是通过`new`命令调用的,`new.target`会返回`undefined`,因此这个属性可以用来确定构造函数是怎么调用的。 ```javascript function Person(name) { @@ -1458,7 +840,7 @@ function Person(name) { if (new.target === Person) { this.name = name; } else { - throw new Error('必须使用new生成实例'); + throw new Error('必须使用 new 生成实例'); } } @@ -1468,7 +850,7 @@ var notAPerson = Person.call(person, '张三'); // 报错 上面代码确保构造函数只能通过`new`命令调用。 -Class内部调用`new.target`,返回当前Class。 +Class 内部调用`new.target`,返回当前 Class。 ```javascript class Rectangle { @@ -1529,39 +911,3 @@ var y = new Rectangle(3, 4); // 正确 注意,在函数外部,使用`new.target`会报错。 -## Mixin模式的实现 - -Mixin模式指的是,将多个类的接口“混入”(mix in)另一个类。它在ES6的实现如下。 - -```javascript -function mix(...mixins) { - class Mix {} - - for (let mixin of mixins) { - copyProperties(Mix, mixin); - copyProperties(Mix.prototype, mixin.prototype); - } - - return Mix; -} - -function copyProperties(target, source) { - for (let key of Reflect.ownKeys(source)) { - if ( key !== "constructor" - && key !== "prototype" - && key !== "name" - ) { - let desc = Object.getOwnPropertyDescriptor(source, key); - Object.defineProperty(target, key, desc); - } - } -} -``` - -上面代码的`mix`函数,可以将多个对象合成为一个类。使用的时候,只要继承这个类即可。 - -```javascript -class DistributedEdit extends mix(Loggable, Serializable) { - // ... -} -``` diff --git a/docs/let.md b/docs/let.md index b46ae1320..abea7befb 100644 --- a/docs/let.md +++ b/docs/let.md @@ -1,10 +1,10 @@ -# let和const命令 +# let 和 const 命令 -## let命令 +## let 命令 ### 基本用法 -ES6新增了`let`命令,用来声明变量。它的用法类似于`var`,但是所声明的变量,只在`let`命令所在的代码块内有效。 +ES6 新增了`let`命令,用来声明变量。它的用法类似于`var`,但是所声明的变量,只在`let`命令所在的代码块内有效。 ```javascript { @@ -21,10 +21,12 @@ b // 1 `for`循环的计数器,就很合适使用`let`命令。 ```javascript -for (let i = 0; i < 10; i++) {} +for (let i = 0; i < 10; i++) { + // ... +} console.log(i); -//ReferenceError: i is not defined +// ReferenceError: i is not defined ``` 上面代码中,计数器`i`只在`for`循环体内有效,在循环体外引用就会报错。 @@ -41,9 +43,9 @@ for (var i = 0; i < 10; i++) { a[6](); // 10 ``` -上面代码中,变量`i`是`var`声明的,在全局范围内都有效,所以全局只有一个变量`i`。每一次循环,变量`i`的值都会发生改变,而循环内被赋给数组`a`的`function`在运行时,会通过闭包读到这同一个变量`i`,导致最后输出的是最后一轮的`i`的值,也就是10。 +上面代码中,变量`i`是`var`命令声明的,在全局范围内都有效,所以全局只有一个变量`i`。每一次循环,变量`i`的值都会发生改变,而循环内被赋给数组`a`的函数内部的`console.log(i)`,里面的`i`指向的就是全局的`i`。也就是说,所有数组`a`的成员里面的`i`,指向的都是同一个`i`,导致运行时输出的是最后一轮的`i`的值,也就是10。 -而如果使用`let`,声明的变量仅在块级作用域内有效,最后输出的是6。 +如果使用`let`,声明的变量仅在块级作用域内有效,最后输出的是6。 ```javascript var a = []; @@ -69,7 +71,7 @@ for (let i = 0; i < 3; i++) { // abc ``` -上面代码输出了3次`abc`,这表明函数内部的变量`i`不同于循环变量`i`,有自己单独的作用域。 +上面代码正确运行,输出了3次`abc`。这表明函数内部的变量`i`与循环变量`i`不在同一个作用域,有各自单独的作用域。 ### 不存在变量提升 diff --git a/sidebar.md b/sidebar.md index 4017f308d..507a3bd14 100644 --- a/sidebar.md +++ b/sidebar.md @@ -24,7 +24,8 @@ 1. [Generator 函数的语法](#docs/generator) 1. [Generator 函数的异步应用](#docs/generator-async) 1. [async 函数](#docs/async) -1. [Class](#docs/class) +1. [Class 的基本语法](#docs/class) +1. [Class 的继承](#docs/class-extends) 1. [Decorator](#docs/decorator) 1. [Module 的语法](#docs/module) 1. [Module 的加载实现](#docs/module-loader) From d3aaf30d5c29524f0c0128acb6ba905651d989d3 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 7 Jun 2017 16:47:37 +0800 Subject: [PATCH 284/994] docs: edit Intro --- docs/intro.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index fe7a71826..3cfc541d5 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -316,13 +316,13 @@ var es5Code = require('babel-core') // '"use strict";\n\nvar x = function x(n) {\n return n + 1;\n};' ``` -上面代码中,`transform`方法的第一个参数是一个字符串,表示需要被转换的ES6代码,第二个参数是转换的配置对象。 +上面代码中,`transform`方法的第一个参数是一个字符串,表示需要被转换的 ES6 代码,第二个参数是转换的配置对象。 ### babel-polyfill Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API,比如`Iterator`、`Generator`、`Set`、`Maps`、`Proxy`、`Reflect`、`Symbol`、`Promise`等全局对象,以及一些定义在全局对象上的方法(比如`Object.assign`)都不会转码。 -举例来说,ES6在`Array`对象上新增了`Array.from`方法。Babel 就不会转码这个方法。如果想让这个方法运行,必须使用`babel-polyfill`,为当前环境提供一个垫片。 +举例来说,ES6 在`Array`对象上新增了`Array.from`方法。Babel 就不会转码这个方法。如果想让这个方法运行,必须使用`babel-polyfill`,为当前环境提供一个垫片。 安装命令如下。 @@ -366,7 +366,7 @@ $ browserify script.js -o bundle.js \ -t [ babelify --presets [ latest ] ] ``` -上面代码将ES6脚本`script.js`,转为`bundle.js`,浏览器直接加载后者就可以了。 +上面代码将 ES6 脚本`script.js`,转为`bundle.js`,浏览器直接加载后者就可以了。 在`package.json`设置下面的代码,就不用每次命令行都输入参数了。 @@ -430,7 +430,7 @@ Mocha 则是一个测试框架,如果需要执行使用 ES6 语法的测试脚 ## Traceur 转码器 -Google公司的[Traceur](https://github.com/google/traceur-compiler)转码器,也可以将 ES6 代码转为 ES5 代码。 +Google 公司的[Traceur](https://github.com/google/traceur-compiler)转码器,也可以将 ES6 代码转为 ES5 代码。 ### 直接插入网页 @@ -445,7 +445,7 @@ Traceur 允许将 ES6 代码直接插入网页。首先,必须在网页头部 ``` -上面代码中,一共有4个`script`标签。第一个是加载 Traceur 的库文件,第二个和第三个是将这个库文件用于浏览器环境,第四个则是加载用户脚本,这个脚本里面可以使用ES6代码。 +上面代码中,一共有4个`script`标签。第一个是加载 Traceur 的库文件,第二个和第三个是将这个库文件用于浏览器环境,第四个则是加载用户脚本,这个脚本里面可以使用 ES6 代码。 注意,第四个`script`标签的`type`属性的值是`module`,而不是`text/javascript`。这是 Traceur 编译器识别 ES6 代码的标志,编译器会自动将所有`type=module`的代码编译为 ES5,然后再交给浏览器执行。 @@ -499,7 +499,7 @@ Traceur 允许将 ES6 代码直接插入网页。首先,必须在网页头部 ### 在线转换 -Traceur也提供一个[在线编译器](http://google.github.io/traceur-compiler/demo/repl.html),可以在线将 ES6 代码转为 ES5 代码。转换后的代码,可以直接作为 ES5 代码插入网页运行。 +Traceur 也提供一个[在线编译器](http://google.github.io/traceur-compiler/demo/repl.html),可以在线将 ES6 代码转为 ES5 代码。转换后的代码,可以直接作为 ES5 代码插入网页运行。 上面的例子转为 ES5 代码运行,就是下面这个样子。 @@ -562,13 +562,13 @@ $ traceur --script calc.es6.js --out calc.es5.js --experimental ### Node 环境的用法 -Traceur 的 Node用法如下(假定已安装`traceur`模块)。 +Traceur 的 Node 用法如下(假定已安装`traceur`模块)。 ```javascript var traceur = require('traceur'); var fs = require('fs'); -// 将ES6脚本转为字符串 +// 将 ES6 脚本转为字符串 var contents = fs.readFileSync('es6-file.js').toString(); var result = traceur.compile(contents, { @@ -581,9 +581,9 @@ var result = traceur.compile(contents, { if (result.error) throw result.error; -// result对象的js属性就是转换后的ES5代码 +// result 对象的 js 属性就是转换后的 ES5 代码 fs.writeFileSync('out.js', result.js); -// sourceMap属性对应map文件 +// sourceMap 属性对应 map 文件 fs.writeFileSync('out.js.map', result.sourceMap); ``` From 6b56bb10bb248858edd28c7a454b749aefe6ff6e Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 7 Jun 2017 17:32:28 +0800 Subject: [PATCH 285/994] docs: edit decorator --- docs/decorator.md | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/docs/decorator.md b/docs/decorator.md index e9cfd748b..812f094e0 100644 --- a/docs/decorator.md +++ b/docs/decorator.md @@ -2,7 +2,7 @@ ## 类的修饰 -修饰器(Decorator)是一个函数,用来修改类的行为。这是 ES 的一个[提案](https://github.com/wycats/javascript-decorators),目前 Babel 转码器已经支持。 +修饰器(Decorator)是一个函数,用来修改类的行为。ES2017 引入了这项功能,目前 Babel 转码器已经支持。 ```javascript @testable @@ -118,6 +118,23 @@ let obj = new MyClass(); obj.foo() // 'foo' ``` +实际开发中,React 与 Redux 库结合使用时,常常需要写成下面这样。 + +```javascript +class MyReactComponent extends React.Component {} + +export default connect(mapStateToProps, mapDispatchToProps)(MyReactComponent); +``` + +有了装饰器,就可以改写上面的代码。 + +```javascript +@connect(mapStateToProps, mapDispatchToProps) +export default class MyReactComponent extends React.Component {} +``` + +相对来说,后一种写法看上去更容易理解。 + ## 方法的修饰 修饰器不仅可以修饰类,还可以修饰类的属性。 @@ -289,6 +306,25 @@ readOnly = require("some-decorator"); 总之,由于存在函数提升,使得修饰器不能用于函数。类是不会提升的,所以就没有这方面的问题。 +另一方面,如果一定要修饰函数,可以采用高阶函数的形式直接执行。 + +```javascript +function doSomething(name) { + console.log('Hello, ' + name); +} + +function loggingDecorator(wrapped) { + return function() { + console.log('Starting'); + const result = wrapped.apply(this, arguments); + console.log('Finished'); + return result; + } +} + +const wrapped = loggingDecorator(doSomething); +``` + ## core-decorators.js [core-decorators.js](https://github.com/jayphelps/core-decorators.js)是一个第三方模块,提供了几个常见的修饰器,通过它可以更好地理解修饰器。 From ce1274d436467833f1087d23639c266cde13a3a0 Mon Sep 17 00:00:00 2001 From: Cody Chan Date: Thu, 8 Jun 2017 01:09:22 +0800 Subject: [PATCH 286/994] docs: update React example in ES6 properly --- docs/style.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/style.md b/docs/style.md index 33696789b..6fbb89baf 100644 --- a/docs/style.md +++ b/docs/style.md @@ -427,13 +427,13 @@ module.exports = Breadcrumbs; // ES6的写法 import React from 'react'; -const Breadcrumbs = React.createClass({ +class Breadcrumbs extends React.Component { render() { return