From f74f42ae57219d571e788b35739da112dfe3626e Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 12 Nov 2015 19:34:54 +0800 Subject: [PATCH 0001/1139] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E3=80=8A=E8=AF=BB?= =?UTF-8?q?=E6=87=82ECMAScript=E8=A7=84=E6=A0=BC=E3=80=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/async.md | 16 ++-- docs/spec.md | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++ sidebar.md | 1 + 3 files changed, 244 insertions(+), 5 deletions(-) create mode 100644 docs/spec.md diff --git a/docs/async.md b/docs/async.md index 6ac24236e..fa13db1e2 100644 --- a/docs/async.md +++ b/docs/async.md @@ -450,7 +450,7 @@ run(gen); 上面代码的run函数,就是一个Generator函数的自动执行器。内部的next函数就是Thunk的回调函数。next函数先将指针移到Generator函数的下一步(gen.next方法),然后判断Generator函数是否结束(result.done 属性),如果没结束,就将next函数再传入Thunk函数(result.value属性),否则就直接退出。 -有了这个执行器,执行Generator函数方便多了。不管有多少个异步操作,直接传入run函数即可。当然,前提是每一个异步操作,都要是Thunk函数,也就是说,跟在yield命令后面的必须是Thunk函数。 +有了这个执行器,执行Generator函数方便多了。不管有多少个异步操作,直接传入`run`函数即可。当然,前提是每一个异步操作,都要是Thunk函数,也就是说,跟在`yield`命令后面的必须是Thunk函数。 ```javascript var gen = function* (){ @@ -463,7 +463,7 @@ var gen = function* (){ run(gen); ``` -上面代码中,函数gen封装了n个异步的读取文件操作,只要执行run函数,这些操作就会自动完成。这样一来,异步操作不仅可以写得像同步操作,而且一行代码就可以执行。 +上面代码中,函数`gen`封装了`n`个异步的读取文件操作,只要执行`run`函数,这些操作就会自动完成。这样一来,异步操作不仅可以写得像同步操作,而且一行代码就可以执行。 Thunk函数并不是Generator函数自动执行的唯一方案。因为自动执行的关键是,必须有一种机制,自动控制Generator函数的流程,接收和交还程序的执行权。回调函数可以做到这一点,Promise 对象也可以做到这一点。 @@ -697,7 +697,7 @@ function* somethingAsync(x) { ### 含义 -async 函数是什么?一句话,async函数就是Generator函数的语法糖。 +ES7提供了`async`函数,使得异步操作变得更加方便。async 函数是什么?一句话,async函数就是Generator函数的语法糖。 前文有一个Generator函数,依次读取两个文件。 @@ -742,9 +742,15 @@ async 函数对 Generator 函数的改进,体现在以下三点。 var result = asyncReadFile(); ``` -(2)更好的语义。async和await,比起星号和yield,语义更清楚了。async表示函数里有异步操作,await 表示紧跟在后面的表达式需要等待结果。 +上面的代码调用了`asyncReadFile`函数,然后它就会自动执行,输出最后结果。这完全不像Generator函数,需要调用`next`方法,或者用co模块,才能得到真正执行,得到最后结果。 -(3)更广的适用性。 co模块约定,yield命令后面只能是Thunk函数或Promise对象,而async函数的await命令后面,可以跟Promise对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)。 +(2)更好的语义。`async`和`await`,比起星号和`yield`,语义更清楚了。`async`表示函数里有异步操作,`await`表示紧跟在后面的表达式需要等待结果。 + +(3)更广的适用性。 co模块约定,`yield`命令后面只能是Thunk函数或Promise对象,而`async`函数的`await`命令后面,可以是Promise对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)。 + +(4)返回值是Promise。async函数的返回值是Promise对象,这比Generator函数的返回值是Iterator对象方便多了。你可以用`then`方法指定下一步的操作。 + +进一步说,async函数完全可以看作多个异步操作,包装成的一个Promise对象,而`await`命令就是内部`then`命令的语法糖。 ### async函数的实现 diff --git a/docs/spec.md b/docs/spec.md new file mode 100644 index 000000000..1c8ad5e85 --- /dev/null +++ b/docs/spec.md @@ -0,0 +1,232 @@ +# 读懂 ECMAScript 规格 + +## 概述 + +规格文件是计算机语言的官方标准,详细描述语法规则和实现方法。 + +一般来说,没有必要阅读规格,除非你要写编译器。因为规格写得非常抽象和精炼,又缺乏实例,不容易理解,而且对于解决实际的应用问题,帮助不大。但是,如果你遇到疑难的语法问题,实在找不到答案,这时可以去查看规格文件,了解语言标准是怎么说的。规格是解决问题的“最后一招”。 + +这对JavaScript语言很有必要。因为它的使用场景复杂,语法规则不统一,例外很多,各种运行环境的行为不一致,导致奇怪的语法问题层出不穷,任何语法书都不可能囊括所有情况。查看规格,不失为一种解决语法问题的最可靠、最权威的终极方法。 + +本节介绍如何读懂ECMAScript 6的规格文件。 + +ECMAScript 6的规格,可以在ECMA国际标准组织的官方网站([www.ecma-international.org/ecma-262/6.0/](http://www.ecma-international.org/ecma-262/6.0/))免费下载和在线阅读。 + +这个规格文件相当庞大,一共有26章,A4打印的话,足足有545页。它的特点就是规定得非常细致,每一个语法行为、每一个函数的实现都做了详尽的清晰的描述。基本上,编译器作者只要把每一步翻译成代码就可以了。这很大程度上,保证了所有ES6实现都有一致的行为。 + +ECMAScript 6规格的26章之中,第1章到第3章是对文件本身的介绍,与语言关系不大。第4章是对这门语言总体设计的描述,有兴趣的读者可以读一下。 + +第5章到第8章是语言宏观层面的描述。第5章是规格的名词解释和写法的介绍,第6章介绍数据类型,第7章介绍语言内部用到的抽象操作,第8章介绍代码如何运行。 + +第9章到第26章则是介绍具体的语法。 + +对于一般用户来说,除了第4章,其他章节都涉及某一方面的细节,不用通读,只要在用到的时候,查阅相关章节即可。下面通过一些例子,介绍如何使用这份规格。 + +## 相等运算符 + +先来看这个例子,请问下面表达式的值是多少。 + +```javascript +0 == null +``` + +如果你不确定答案,或者想知道语言内部怎么处理,就可以去查看规格,[7.2.12小节](http://www.ecma-international.org/ecma-262/6.0/#sec-7.2.12)是对相等运算符(`==`)的描述。 + +规格对每一种语法行为的描述,都分成两部分:先是总体的行为描述,然后是实现的算法细节。相等运算符的总体描述,只有一句话。 + +> “The comparison `x == y`, where x and y are values, produces `true` or `false`.” + +上面这句话的意思是,相等运算符用于比较两个值,返回`true`或`false`。 + +下面是算法细节。 + +> 1. ReturnIfAbrupt(x). +> 1. ReturnIfAbrupt(y). +> 1. If Type(x) is the same as Type(y), then +> Return the result of performing Strict Equality Comparison x === y. +> 1. If x is null and y is undefined, return true. +> 1. If x is undefined and y is null, return true. +> 1. If Type(x) is Number and Type(y) is String, +> return the result of the comparison x == ToNumber(y). +> 1. If Type(x) is String and Type(y) is Number, +> return the result of the comparison ToNumber(x) == y. +> 1. If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y. +> 1. If Type(y) is Boolean, return the result of the comparison x == ToNumber(y). +> 1. If Type(x) is either String, Number, or Symbol and Type(y) is Object, then +> return the result of the comparison x == ToPrimitive(y). +> 1. If Type(x) is Object and Type(y) is either String, Number, or Symbol, then +> return the result of the comparison ToPrimitive(x) == y. +> 1. Return false. + +上面这段算法,一共有12步,翻译如下。 + +> 1. 如果`x`不是正常值(比如抛出一个错误),中断执行。 +> 1. 如果`y`不是正常值,中断执行。 +> 1. 如果`Type(x)`与`Type(y)`相同,执行严格相等运算`x === y`。 +> 1. 如果`x`是`null`,`y`是`undefined`,返回`true`。 +> 1. 如果`x`是`undefined`,`y`是`null`,返回`true`。 +> 1. 如果`Type(x)`是数值,`Type(y)`是字符串,返回`x == ToNumber(y)`的结果。 +> 1. 如果`Type(x)`是字符串,`Type(y)`是数值,返回`ToNumber(x) == y`的结果。 +> 1. 如果`Type(x)`是布尔值,返回`ToNumber(x) == y`的结果。 +> 1. 如果`Type(y)`是布尔值,返回`x == ToNumber(y)`的结果。 +> 1. 如果`Type(x)`是字符串或数值或`Symbol`值,`Type(y)`是对象,返回`x == ToPrimitive(y)`的结果。 +> 1. 如果`Type(x)`是对象,`Type(y)`是字符串或数值或`Symbol`值,返回`ToPrimitive(x) == y`的结果。 +> 1. 返回`false`。 + +由于`0`的类型是数值,`null`的类型是Null(这是规格[4.3.13小节](http://www.ecma-international.org/ecma-262/6.0/#sec-4.3.13)的规定,是内部Type运算的结果,跟`typeof`运算符无关)。因此上面的前11步运算步骤都得不到结果,要到第12步才能得到`false`。 + +```javascript +0 == null // false +``` + +## 数组的空位 + +下面再看另一个例子。 + +```javascript +const a1 = [undefined, undefined, undefined]; +const a2 = [, , ,]; + +a1.length // 3 +a2.length // 3 + +a1[0] // undefined +a2[0] // undefined + +a1[0] === a2[0] // true +``` + +上面代码中,数组`a1`的成员是三个`undefined`,数组`a2`的成员是三个空位。这两个数组很相似,长度都是3,每个位置的成员读取出来都是`undefined`。 + +但是,它们实际上存在重大差异。 + +```javascript +0 in a1 // true +0 in a2 // false + +a1.hasOwnProperty(0) // true +a2.hasOwnProperty(0) // false + +Object.keys(a1) // ["0", "1", "2"] +Object.keys(a2) // [] + +a1.map(n => 1) // [1, 1, 1] +a2.map(n => 1) // [, , ,] +``` + +上面代码一共列出了四种运算,数组`a1`和`a2`的结果都不一样。前三种运算(`in`运算符、数组的`hasOwnProperty`方法、`Object.keys`方法)都说明,数组`a2`取不到属性名。最后一种运算(数组的`map`方法)说明,数组`a2`没有发生遍历。 + +为什么`a1`与`a2`成员的行为不一致?数组的成员是`undefined`或空位,到底有什么不同? + +规格的[12.2.5小节《数组的初始化》](http://www.ecma-international.org/ecma-262/6.0/#sec-12.2.5)给出了答案。 + +> “Array elements may be elided at the beginning, middle or end of the element list. Whenever a comma in the element list is not preceded by an AssignmentExpression (i.e., a comma at the beginning or after another comma), the missing array element contributes to the length of the Array and increases the index of subsequent elements. Elided array elements are not defined. If an element is elided at the end of an array, that element does not contribute to the length of the Array.” + +翻译如下。 + +> "数组成员可以省略。只要逗号前面没有任何表达式,数组的`length`属性就会加1,并且相应增加其后成员的位置索引。被省略的成员不会被定义。如果被省略的成员是数组最后一个成员,则不会导致数组`length`属性增加。” + +上面的规格说得很清楚,数组的空位会反映在`length`属性,也就是说空位有自己的位置,但是这个位置的值是未定义,即这个值是不存在的。如果一定要读取,结果就是`undefined`(因为`undefined`在JavaScript语言中表示不存在)。 + +这就解释了为什么`in`运算符、数组的`hasOwnProperty`方法、`Object.keys`方法,都取不到空位的属性名。因为这个属性名根本就不存在,规格里面没说要为空位分配属性名(位置索引),只说要为下一个元素的位置索引加1。 + +至于为什么数组的`map`方法会跳过空位,请看下一节。 + +## 数组的map方法 + +规格的[22.1.3.15小节](http://www.ecma-international.org/ecma-262/6.0/#sec-22.1.3.15)定义了数组的`map`方法。该小节先是总体描述`map`方法的行为,里面没有提到数组空位。 + +后面的算法描述是这样的。 + +> 1. Let O be ToObject(this value). +> 1. ReturnIfAbrupt(O). +> 1. Let len be ToLength(Get(O, "length")). +> 1. ReturnIfAbrupt(len). +> 1. If IsCallable(callbackfn) is false, throw a TypeError exception. +> 1. If thisArg was supplied, let T be thisArg; else let T be undefined. +> 1. Let A be ArraySpeciesCreate(O, len). +> 1. ReturnIfAbrupt(A). +> 1. Let k be 0. +> 1. Repeat, while k < len +> a. Let Pk be ToString(k). +> b. Let kPresent be HasProperty(O, Pk). +> c. ReturnIfAbrupt(kPresent). +> d. If kPresent is true, then +> d-1. Let kValue be Get(O, Pk). +> d-2. ReturnIfAbrupt(kValue). +> d-3. Let mappedValue be Call(callbackfn, T, «kValue, k, O»). +> d-4. ReturnIfAbrupt(mappedValue). +> d-5. Let status be CreateDataPropertyOrThrow (A, Pk, mappedValue). +> d-6. ReturnIfAbrupt(status). +> e. Increase k by 1. +> 1. Return A. + +翻译如下。 + +> 1. 得到当前数组的`this`对象 +> 1. 如果报错就返回 +> 1. 求出当前数组的`length`属性 +> 1. 如果报错就返回 +> 1. 如果map方法的参数`callbackfn`不可执行,就报错 +> 1. 如果map方法的参数之中,指定了`this`,就让`T`等于该参数,否则`T`为`undefined` +> 1. 生成一个新的数组`A`,跟当前数组的`length`属性保持一致 +> 1. 如果报错就返回 +> 1. 设定`k`等于0 +> 1. 只要`k`小于当前数组的`length`属性,就重复下面步骤 +> a. 设定`Pk`等于`ToString(k)`,即将`K`转为字符串 +> b. 设定`kPresent`等于`HasProperty(O, Pk)`,即求当前数组有没有指定属性 +> c. 如果报错就返回 +> d. 如果`kPresent`等于`true`,则进行下面步骤 +> d-1. 设定`kValue`等于`Get(O, Pk)`,取出当前数组的指定属性 +> d-2. 如果报错就返回 +> d-3. 设定`mappedValue`等于`Call(callbackfn, T, «kValue, k, O»)`,即执行回调函数 +> d-4. 如果报错就返回 +> d-5. 设定`status`等于`CreateDataPropertyOrThrow (A, Pk, mappedValue)`,即将回调函数的值放入`A`数组的指定位置 +> d-6. 如果报错就返回 +> e. `k`增加1 +> 1. 返回`A` + +仔细查看上面的算法,可以发现,当处理一个全是空位的数组时,前面步骤都没有问题。进入第10步的b时,`kpresent`会报错,因为空位对应的属性名,对于数组来说是不存在的,因此就会返回,不会进行后面的步骤。 + +```javascript +const arr = [, , ,]; +arr.map(n => { + console.log(n); + return 1; +}) // [, , ,] +``` + +上面代码中,`arr`是一个全是空位的数组,`map`方法遍历成员时,发现是空位,就直接跳过,不会进入回调函数。因此,回调函数里面的`console.log`语句根本不会执行,整个`map`方法返回一个全是空位的新数组。 + +V8引擎对`map`方法的[实现](https://github.com/v8/v8/blob/44c44521ae11859478b42004f57ea93df52526ee/src/js/array.js#L1347)如下,可以看到跟规格的算法描述完全一致。 + +```javascript +function ArrayMap(f, receiver) { + CHECK_OBJECT_COERCIBLE(this, "Array.prototype.map"); + + // Pull out the length so that modifications to the length in the + // loop will not affect the looping and side effects are visible. + var array = TO_OBJECT(this); + var length = TO_LENGTH_OR_UINT32(array.length); + return InnerArrayMap(f, receiver, array, length); +} + +function InnerArrayMap(f, receiver, array, length) { + if (!IS_CALLABLE(f)) throw MakeTypeError(kCalledNonCallable, f); + + var accumulator = new InternalArray(length); + var is_array = IS_ARRAY(array); + var stepping = DEBUG_IS_STEPPING(f); + for (var i = 0; i < length; i++) { + if (HAS_INDEX(array, i, is_array)) { + var element = array[i]; + // Prepare break slots for debugger step in. + if (stepping) %DebugPrepareStepInIfStepping(f); + accumulator[i] = %_Call(f, receiver, element, i, array); + } + } + var result = new GlobalArray(); + %MoveArrayContents(accumulator, result); + return result; +} +``` diff --git a/sidebar.md b/sidebar.md index 174d24e1b..c4133f260 100644 --- a/sidebar.md +++ b/sidebar.md @@ -27,6 +27,7 @@ 1. [Decorator](#docs/decorator) 1. [Module](#docs/module) 1. [编程风格](#docs/style) +1. [读懂规格](#docs/spec) 1. [参考链接](#docs/reference) ## 其他 From 430515672c30de6ae52aa892a00719d28ac3b5e8 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 12 Nov 2015 19:42:07 +0800 Subject: [PATCH 0002/1139] fix typo --- docs/spec.md | 76 ++++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/docs/spec.md b/docs/spec.md index 1c8ad5e85..0b082b1cf 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -34,7 +34,7 @@ ECMAScript 6规格的26章之中,第1章到第3章是对文件本身的介绍 规格对每一种语法行为的描述,都分成两部分:先是总体的行为描述,然后是实现的算法细节。相等运算符的总体描述,只有一句话。 -> “The comparison `x == y`, where x and y are values, produces `true` or `false`.” +> “The comparison `x == y`, where `x` and `y` are values, produces `true` or `false`.” 上面这句话的意思是,相等运算符用于比较两个值,返回`true`或`false`。 @@ -42,21 +42,21 @@ ECMAScript 6规格的26章之中,第1章到第3章是对文件本身的介绍 > 1. ReturnIfAbrupt(x). > 1. ReturnIfAbrupt(y). -> 1. If Type(x) is the same as Type(y), then -> Return the result of performing Strict Equality Comparison x === y. -> 1. If x is null and y is undefined, return true. -> 1. If x is undefined and y is null, return true. -> 1. If Type(x) is Number and Type(y) is String, -> return the result of the comparison x == ToNumber(y). -> 1. If Type(x) is String and Type(y) is Number, +> 1. If `Type(x)` is the same as `Type(y)`, then +> Return the result of performing Strict Equality Comparison `x === y`. +> 1. If `x` is `null` and `y` is `undefined`, return `true`. +> 1. If `x` is `undefined` and `y` is `null`, return `true`. +> 1. If `Type(x)` is Number and `Type(y)` is String, +> return the result of the comparison `x == ToNumber(y)`. +> 1. If `Type(x)` is String and `Type(y)` is Number, > return the result of the comparison ToNumber(x) == y. -> 1. If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y. -> 1. If Type(y) is Boolean, return the result of the comparison x == ToNumber(y). -> 1. If Type(x) is either String, Number, or Symbol and Type(y) is Object, then -> return the result of the comparison x == ToPrimitive(y). -> 1. If Type(x) is Object and Type(y) is either String, Number, or Symbol, then -> return the result of the comparison ToPrimitive(x) == y. -> 1. Return false. +> 1. If `Type(x)` is Boolean, return the result of the comparison `ToNumber(x) == y`. +> 1. If `Type(y)` is Boolean, return the result of the comparison `x == ToNumber(y)`. +> 1. If `Type(x)` is either String, Number, or Symbol and `Type(y)` is Object, then +> return the result of the comparison `x == ToPrimitive(y)`. +> 1. If `Type(x)` is Object and `Type(y)` is either String, Number, or Symbol, then +> return the result of the comparison `ToPrimitive(x) == y`. +> 1. Return `false`. 上面这段算法,一共有12步,翻译如下。 @@ -138,7 +138,7 @@ a2.map(n => 1) // [, , ,] 后面的算法描述是这样的。 -> 1. Let O be ToObject(this value). +> 1. Let `O` be `ToObject(this value)`. > 1. ReturnIfAbrupt(O). > 1. Let len be ToLength(Get(O, "length")). > 1. ReturnIfAbrupt(len). @@ -147,17 +147,17 @@ a2.map(n => 1) // [, , ,] > 1. Let A be ArraySpeciesCreate(O, len). > 1. ReturnIfAbrupt(A). > 1. Let k be 0. -> 1. Repeat, while k < len -> a. Let Pk be ToString(k). -> b. Let kPresent be HasProperty(O, Pk). -> c. ReturnIfAbrupt(kPresent). -> d. If kPresent is true, then -> d-1. Let kValue be Get(O, Pk). -> d-2. ReturnIfAbrupt(kValue). -> d-3. Let mappedValue be Call(callbackfn, T, «kValue, k, O»). -> d-4. ReturnIfAbrupt(mappedValue). -> d-5. Let status be CreateDataPropertyOrThrow (A, Pk, mappedValue). -> d-6. ReturnIfAbrupt(status). +> 1. Repeat, while k < len +> a. Let Pk be ToString(k). +> b. Let kPresent be HasProperty(O, Pk). +> c. ReturnIfAbrupt(kPresent). +> d. If kPresent is true, then +> d-1. Let kValue be Get(O, Pk). +> d-2. ReturnIfAbrupt(kValue). +> d-3. Let mappedValue be Call(callbackfn, T, «kValue, k, O»). +> d-4. ReturnIfAbrupt(mappedValue). +> d-5. Let status be CreateDataPropertyOrThrow (A, Pk, mappedValue). +> d-6. ReturnIfAbrupt(status). > e. Increase k by 1. > 1. Return A. @@ -172,17 +172,17 @@ a2.map(n => 1) // [, , ,] > 1. 生成一个新的数组`A`,跟当前数组的`length`属性保持一致 > 1. 如果报错就返回 > 1. 设定`k`等于0 -> 1. 只要`k`小于当前数组的`length`属性,就重复下面步骤 -> a. 设定`Pk`等于`ToString(k)`,即将`K`转为字符串 -> b. 设定`kPresent`等于`HasProperty(O, Pk)`,即求当前数组有没有指定属性 -> c. 如果报错就返回 -> d. 如果`kPresent`等于`true`,则进行下面步骤 -> d-1. 设定`kValue`等于`Get(O, Pk)`,取出当前数组的指定属性 -> d-2. 如果报错就返回 -> d-3. 设定`mappedValue`等于`Call(callbackfn, T, «kValue, k, O»)`,即执行回调函数 -> d-4. 如果报错就返回 -> d-5. 设定`status`等于`CreateDataPropertyOrThrow (A, Pk, mappedValue)`,即将回调函数的值放入`A`数组的指定位置 -> d-6. 如果报错就返回 +> 1. 只要`k`小于当前数组的`length`属性,就重复下面步骤 +> a. 设定`Pk`等于`ToString(k)`,即将`K`转为字符串 +> b. 设定`kPresent`等于`HasProperty(O, Pk)`,即求当前数组有没有指定属性 +> c. 如果报错就返回 +> d. 如果`kPresent`等于`true`,则进行下面步骤 +> d-1. 设定`kValue`等于`Get(O, Pk)`,取出当前数组的指定属性 +> d-2. 如果报错就返回 +> d-3. 设定`mappedValue`等于`Call(callbackfn, T, «kValue, k, O»)`,即执行回调函数 +> d-4. 如果报错就返回 +> d-5. 设定`status`等于`CreateDataPropertyOrThrow (A, Pk, mappedValue)`,即将回调函数的值放入`A`数组的指定位置 +> d-6. 如果报错就返回 > e. `k`增加1 > 1. 返回`A` From d066d470b5fcb6d4d87e35795ec42d47b8a6dd8f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 12 Nov 2015 19:51:23 +0800 Subject: [PATCH 0003/1139] fix typo --- docs/spec.md | 60 ++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/spec.md b/docs/spec.md index 0b082b1cf..969acdff0 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -49,12 +49,12 @@ ECMAScript 6规格的26章之中,第1章到第3章是对文件本身的介绍 > 1. If `Type(x)` is Number and `Type(y)` is String, > return the result of the comparison `x == ToNumber(y)`. > 1. If `Type(x)` is String and `Type(y)` is Number, -> return the result of the comparison ToNumber(x) == y. +> return the result of the comparison `ToNumber(x) == y`. > 1. If `Type(x)` is Boolean, return the result of the comparison `ToNumber(x) == y`. > 1. If `Type(y)` is Boolean, return the result of the comparison `x == ToNumber(y)`. > 1. If `Type(x)` is either String, Number, or Symbol and `Type(y)` is Object, then > return the result of the comparison `x == ToPrimitive(y)`. -> 1. If `Type(x)` is Object and `Type(y)` is either String, Number, or Symbol, then +> 1. If `Type(x)` is Object and `Type(y)` is either String, Number, or Symbol, then > return the result of the comparison `ToPrimitive(x) == y`. > 1. Return `false`. @@ -73,7 +73,7 @@ ECMAScript 6规格的26章之中,第1章到第3章是对文件本身的介绍 > 1. 如果`Type(x)`是对象,`Type(y)`是字符串或数值或`Symbol`值,返回`ToPrimitive(x) == y`的结果。 > 1. 返回`false`。 -由于`0`的类型是数值,`null`的类型是Null(这是规格[4.3.13小节](http://www.ecma-international.org/ecma-262/6.0/#sec-4.3.13)的规定,是内部Type运算的结果,跟`typeof`运算符无关)。因此上面的前11步运算步骤都得不到结果,要到第12步才能得到`false`。 +由于`0`的类型是数值,`null`的类型是Null(这是规格[4.3.13小节](http://www.ecma-international.org/ecma-262/6.0/#sec-4.3.13)的规定,是内部Type运算的结果,跟`typeof`运算符无关)。因此上面的前11步都得不到结果,要到第12步才能得到`false`。 ```javascript 0 == null // false @@ -139,27 +139,27 @@ a2.map(n => 1) // [, , ,] 后面的算法描述是这样的。 > 1. Let `O` be `ToObject(this value)`. -> 1. ReturnIfAbrupt(O). -> 1. Let len be ToLength(Get(O, "length")). -> 1. ReturnIfAbrupt(len). -> 1. If IsCallable(callbackfn) is false, throw a TypeError exception. -> 1. If thisArg was supplied, let T be thisArg; else let T be undefined. -> 1. Let A be ArraySpeciesCreate(O, len). -> 1. ReturnIfAbrupt(A). -> 1. Let k be 0. -> 1. Repeat, while k < len -> a. Let Pk be ToString(k). -> b. Let kPresent be HasProperty(O, Pk). -> c. ReturnIfAbrupt(kPresent). -> d. If kPresent is true, then -> d-1. Let kValue be Get(O, Pk). -> d-2. ReturnIfAbrupt(kValue). -> d-3. Let mappedValue be Call(callbackfn, T, «kValue, k, O»). -> d-4. ReturnIfAbrupt(mappedValue). -> d-5. Let status be CreateDataPropertyOrThrow (A, Pk, mappedValue). -> d-6. ReturnIfAbrupt(status). -> e. Increase k by 1. -> 1. Return A. +> 1. `ReturnIfAbrupt(O)`. +> 1. Let `len` be `ToLength(Get(O, "length"))`. +> 1. `ReturnIfAbrupt(len)`. +> 1. If `IsCallable(callbackfn)` is `false`, throw a TypeError exception. +> 1. If `thisArg` was supplied, let `T` be `thisArg`; else let `T` be `undefined`. +> 1. Let `A` be `ArraySpeciesCreate(O, len)`. +> 1. `ReturnIfAbrupt(A)`. +> 1. Let `k` be 0. +> 1. Repeat, while `k` < `len` +> a. Let `Pk` be `ToString(k)`. +> b. Let `kPresent` be `HasProperty(O, Pk)`. +> c. `ReturnIfAbrupt(kPresent)`. +> d. If `kPresent` is `true`, then +> d-1. Let `kValue` be `Get(O, Pk)`. +> d-2. `ReturnIfAbrupt(kValue)`. +> d-3. Let `mappedValue` be `Call(callbackfn, T, «kValue, k, O»)`. +> d-4. `ReturnIfAbrupt(mappedValue)`. +> d-5. Let `status` be `CreateDataPropertyOrThrow (A, Pk, mappedValue)`. +> d-6. `ReturnIfAbrupt(status)`. +> e. Increase `k` by 1. +> 1. Return `A`. 翻译如下。 @@ -177,12 +177,12 @@ a2.map(n => 1) // [, , ,] > b. 设定`kPresent`等于`HasProperty(O, Pk)`,即求当前数组有没有指定属性 > c. 如果报错就返回 > d. 如果`kPresent`等于`true`,则进行下面步骤 -> d-1. 设定`kValue`等于`Get(O, Pk)`,取出当前数组的指定属性 -> d-2. 如果报错就返回 -> d-3. 设定`mappedValue`等于`Call(callbackfn, T, «kValue, k, O»)`,即执行回调函数 -> d-4. 如果报错就返回 -> d-5. 设定`status`等于`CreateDataPropertyOrThrow (A, Pk, mappedValue)`,即将回调函数的值放入`A`数组的指定位置 -> d-6. 如果报错就返回 +> d-1. 设定`kValue`等于`Get(O, Pk)`,取出当前数组的指定属性 +> d-2. 如果报错就返回 +> d-3. 设定`mappedValue`等于`Call(callbackfn, T, «kValue, k, O»)`,即执行回调函数 +> d-4. 如果报错就返回 +> d-5. 设定`status`等于`CreateDataPropertyOrThrow (A, Pk, mappedValue)`,即将回调函数的值放入`A`数组的指定位置 +> d-6. 如果报错就返回 > e. `k`增加1 > 1. 返回`A` From b3460911dc480ec53c10f79780d2a83fb4d56de2 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 12 Nov 2015 22:31:53 +0800 Subject: [PATCH 0004/1139] fix typo --- docs/object.md | 2 +- docs/spec.md | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/object.md b/docs/object.md index 39b52cbff..ff1f6a7d1 100644 --- a/docs/object.md +++ b/docs/object.md @@ -523,7 +523,7 @@ ES6一共有6种方法可以遍历对象的属性。 `Object.getOwnPropertyNames`返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)。 -**4)Object.getOwnPropertySymbols(obj)** +**(4)Object.getOwnPropertySymbols(obj)** `Object.getOwnPropertySymbols`返回一个数组,包含对象自身的所有Symbol属性。 diff --git a/docs/spec.md b/docs/spec.md index 969acdff0..d4423ee53 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -14,11 +14,7 @@ ECMAScript 6的规格,可以在ECMA国际标准组织的官方网站([www.ec 这个规格文件相当庞大,一共有26章,A4打印的话,足足有545页。它的特点就是规定得非常细致,每一个语法行为、每一个函数的实现都做了详尽的清晰的描述。基本上,编译器作者只要把每一步翻译成代码就可以了。这很大程度上,保证了所有ES6实现都有一致的行为。 -ECMAScript 6规格的26章之中,第1章到第3章是对文件本身的介绍,与语言关系不大。第4章是对这门语言总体设计的描述,有兴趣的读者可以读一下。 - -第5章到第8章是语言宏观层面的描述。第5章是规格的名词解释和写法的介绍,第6章介绍数据类型,第7章介绍语言内部用到的抽象操作,第8章介绍代码如何运行。 - -第9章到第26章则是介绍具体的语法。 +ECMAScript 6规格的26章之中,第1章到第3章是对文件本身的介绍,与语言关系不大。第4章是对这门语言总体设计的描述,有兴趣的读者可以读一下。第5章到第8章是语言宏观层面的描述。第5章是规格的名词解释和写法的介绍,第6章介绍数据类型,第7章介绍语言内部用到的抽象操作,第8章介绍代码如何运行。第9章到第26章介绍具体的语法。 对于一般用户来说,除了第4章,其他章节都涉及某一方面的细节,不用通读,只要在用到的时候,查阅相关章节即可。下面通过一些例子,介绍如何使用这份规格。 From 0fc76fec74da81292b31d1fa17af260ab4cac66a Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 12 Nov 2015 22:52:27 +0800 Subject: [PATCH 0005/1139] edit array/hole --- docs/array.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/array.md b/docs/array.md index 569d835f6..473266e20 100644 --- a/docs/array.md +++ b/docs/array.md @@ -461,6 +461,19 @@ Array.from(['a',,'b']) new Array(3).fill('a') // ["a","a","a"] ``` +`for...of`循环也会遍历空位。 + +```javascript +let arr = [, ,]; +for (let i of arr) { + console.log(1); +} +// 1 +// 1 +``` + +上面代码中,数组`arr`有两个空位,`for...of`并没有忽略它们。如果改成`map`方法遍历,空位是会跳过的。 + `entries()`、`keys()`、`values()`、`find()`和`findIndex()`会将空位处理成`undefined`。 ```javascript From 8afab8ca89f082772326529288f0f09e52498140 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 13 Nov 2015 13:22:20 +0800 Subject: [PATCH 0006/1139] edit function/length --- docs/function.md | 8 +++++++- docs/spec.md | 6 ++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/function.md b/docs/function.md index 1500843ca..120511b2d 100644 --- a/docs/function.md +++ b/docs/function.md @@ -204,7 +204,13 @@ foo(undefined, null) (function(a, b, c = 5){}).length // 2 ``` -上面代码中,`length`属性的返回值,等于函数的参数个数减去指定了默认值的参数个数。 +上面代码中,`length`属性的返回值,等于函数的参数个数减去指定了默认值的参数个数。比如,上面最后一个函数,定义了3个参数,其中有一个参数`c`指定了默认值,因此`length`属性等于3减去1,最后得到2。 + +这是因为`length`属性的含义是,该函数预期传入的参数个数。某个参数指定默认值以后,预期传入的参数个数就不包括这个参数了。同理,rest参数也不会计入`length`属性。 + +```javascript +(function(...args) {}).length // 0 +``` ### 作用域 diff --git a/docs/spec.md b/docs/spec.md index d4423ee53..aa7fee02d 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -8,7 +8,7 @@ 这对JavaScript语言很有必要。因为它的使用场景复杂,语法规则不统一,例外很多,各种运行环境的行为不一致,导致奇怪的语法问题层出不穷,任何语法书都不可能囊括所有情况。查看规格,不失为一种解决语法问题的最可靠、最权威的终极方法。 -本节介绍如何读懂ECMAScript 6的规格文件。 +本章介绍如何读懂ECMAScript 6的规格文件。 ECMAScript 6的规格,可以在ECMA国际标准组织的官方网站([www.ecma-international.org/ecma-262/6.0/](http://www.ecma-international.org/ecma-262/6.0/))免费下载和在线阅读。 @@ -20,7 +20,9 @@ ECMAScript 6规格的26章之中,第1章到第3章是对文件本身的介绍 ## 相等运算符 -先来看这个例子,请问下面表达式的值是多少。 +相等运算符(`==`)是一个很让人头痛的运算符,它的语法行为多变,不符合直觉。这个小节就看看规格怎么规定它的行为。 + +请看下面这个表达式,请问它的值是多少。 ```javascript 0 == null From f05acc0c84ff5e42e1ac43cf0bd0880ba06b1c76 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 16 Nov 2015 15:56:15 +0800 Subject: [PATCH 0007/1139] edit symbol/magic string --- docs/symbol.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/symbol.md b/docs/symbol.md index 5fcee3aab..191f25180 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -182,6 +182,61 @@ function getComplement(color) { 还有一点需要注意,Symbol值作为属性名时,该属性还是公开属性,不是私有属性。 +## 实例:消除魔术字符串 + +魔术字符串指的是,在代码之中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。风格良好的代码,应该尽量消除魔术字符串,该由含义清晰的变量代替。 + +```javascript +function getArea(shape, options) { + var area = 0; + + switch (shape) { + case 'Triangle': // 魔术字符串 + area = .5 * options.width * options.height; + break; + /* ... more code ... */ + } + + return area; +} + +getArea('Triangle', { width: 100, height: 100 }); // 魔术字符串 +``` + +上面代码中,字符串“Triangle”就是一个魔术字符串。它多次出现,与代码形成“强耦合”,不利于将来的修改和维护。 + +常用的消除魔术字符串的方法,就是把它写成一个变量。 + +```javascript +var shapeType = { + triangle: 'Triangle' +}; + +function getArea(shape, options) { + var area = 0; + switch (shape) { + case shapeType.triangle: + area = .5 * options.width * options.height; + break; + } + return area; +} + +getArea(shapeType.triangle, { width: 100, height: 100 }); +``` + +上面代码中,我们把“Triangle”写成`shapeType`对象的`triangle`属性,这样就消除了强耦合。 + +如果仔细分析,可以发现`shapeType.triangle`等于哪个值并不重要,只要确保不会跟其他`shapeType`属性的值冲突即可。因此,这里就很适合改用Symbol值。 + +```javascript +const shapeType = { + triangle: Symbol() +}; +``` + +上面代码中,除了将`shapeType.triangle`的值设为一个Symbol,其他地方都不用修改。 + ## 属性名的遍历 Symbol作为属性名,该属性不会出现在`for...in`、`for...of`循环中,也不会被`Object.keys()`、`Object.getOwnPropertyNames()`返回。但是,它也不是私有属性,有一个`Object.getOwnPropertySymbols`方法,可以获取指定对象的所有Symbol属性名。 From 3dcf078440965039a2edd977dc32c65ed21c37e7 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 16 Nov 2015 21:36:29 +0800 Subject: [PATCH 0008/1139] edit destructuring & class --- docs/class.md | 22 +--------------------- docs/destructuring.md | 2 +- docs/reference.md | 1 + 3 files changed, 3 insertions(+), 22 deletions(-) diff --git a/docs/class.md b/docs/class.md index 36f16732b..6508164bc 100644 --- a/docs/class.md +++ b/docs/class.md @@ -793,27 +793,7 @@ var descriptor = Object.getOwnPropertyDescriptor( "set" in descriptor // true ``` -上面代码中,存值函数和取值函数是定义在html属性的描述对象上面,这与ES5完全一致。 - -下面的例子针对所有属性,设置存值函数和取值函数。 - -```javascript -class Jedi { - constructor(options = {}) { - // ... - } - - set(key, val) { - this[key] = val; - } - - get(key) { - return this[key]; - } -} -``` - -上面代码中,Jedi实例所有属性的存取,都会通过存值函数和取值函数。 +上面代码中,存值函数和取值函数是定义在`html`属性的描述对象上面,这与ES5完全一致。 ## Class的Generator方法 diff --git a/docs/destructuring.md b/docs/destructuring.md index 923b43db9..7381a0feb 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -286,7 +286,7 @@ start // error: start is undefined let obj = {}; let arr = []; -({ foo: obj.prop, bar: arr[0] }) = { foo: 123, bar: true }; +({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true }); obj // {prop:123} arr // [true] diff --git a/docs/reference.md b/docs/reference.md index ce743a2e0..106341bd9 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -27,6 +27,7 @@ - Benjamin De Cock, [Frontend Guidelines](https://github.com/bendc/frontend-guidelines): ES6最佳实践 - Jani Hartikainen, [ES6: What are the benefits of the new features in practice?](http://codeutopia.net/blog/2015/01/06/es6-what-are-the-benefits-of-the-new-features-in-practice/) - kangax, [Javascript quiz. ES6 edition](http://perfectionkills.com/javascript-quiz-es6/): ES6小测试 +- Jeremy Fairbank, [HTML5DevConf ES7 and Beyond!](https://speakerdeck.com/jfairbank/html5devconf-es7-and-beyond): ES7新增语法点介绍 ## let和const From b12393b3a99f49dd0d8fd447739120f9d5908593 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 18 Nov 2015 17:44:36 +0800 Subject: [PATCH 0009/1139] edit array --- docs/array.md | 8 ++- docs/fp.md | 187 +++++++++++++++++++++++++++++++++++++++++++++++++ docs/module.md | 16 +++-- 3 files changed, 203 insertions(+), 8 deletions(-) create mode 100644 docs/fp.md diff --git a/docs/array.md b/docs/array.md index 473266e20..bd97f5e08 100644 --- a/docs/array.md +++ b/docs/array.md @@ -160,13 +160,13 @@ Array.of(3).length // 1 ```javascript Array() // [] -Array(3) // [undefined, undefined, undefined] +Array(3) // [, , ,] Array(3, 11, 8) // [3, 11, 8] ``` -上面代码说明,只有当参数个数不少于2个,`Array()`才会返回由参数组成的新数组。 +上面代码中,`Array`方法没有参数、一个参数、三个参数时,返回结果都不一样。只有当参数个数不少于2个时,`Array()`才会返回由参数组成的新数组。参数个数只有一个时,实际上是指定数组的长度。 -`Array.of`基本上可以用来替代`new Array()`,并且不存在`new Array(length)`导致的重载。它的行为非常统一。 +`Array.of`基本上可以用来替代`Array()`或`new Array()`,并且不存在由于参数不同而导致的重载。它的行为非常统一。 ```javascript Array.of() // [] @@ -175,6 +175,8 @@ Array.of(1) // [1] Array.of(1, 2) // [1, 2] ``` +`Array.of`总是返回参数值组成的数组。如果没有参数,就返回一个空数组。 + `Array.of`方法可以用下面的代码模拟实现。 ```javascript diff --git a/docs/fp.md b/docs/fp.md new file mode 100644 index 000000000..b84d4cdfe --- /dev/null +++ b/docs/fp.md @@ -0,0 +1,187 @@ +# 函数式编程 + +从一诞生,JavaScript语言就具有函数式编程的烙印。它将函数作为一种独立的数据类型,与其他数据类型处于完全平等的地位。在JavaScript语言中,你可以采用面向对象编程,也可以采用函数式编程。有人甚至说,JavaScript是有史以来第一种被大规模采用的函数式编程语言。 + +ES6的种种新增功能,使得函数式编程变得更方便、更强大。本章介绍ES6如何进行函数式编程。 + +## 函数合成 + +函数合成(function composition)指的是,将多个函数合成一个函数。 + +```javascript +let add = x => x + x; +let pow = x => x * x; +let inv = x => 1 / x; + +let comp = f.comp(add, pow, inv); + +comp(1) // 0.25 +comp(4) // 0.015625 +``` + +上面代码中,`f.comp`就是函数合成器,它的参数全部都是函数,然后返回一个新的函数。 + +函数合成的代码如下。 + +```javascript +let f = {}; +f.comp = (...fs) => { + return (...args) => + fs.map( + f => args = [f.apply(null, args)] + ).pop()[0]; + }; +``` + +上面代码先依次遍历执行`f.comp`方法的参数(即排队执行的各个函数),每一次都将结果`args`变量存入一个数组。所以,对于`comp(1)`来说,最后结果是`[[1], [0.5], [0.25]]`,然后再用`pop`方法取出最后一个元素。 + +## 参数倒置 + +参数倒置(flip)指的是改变函数参数的顺序。 + +```javascript +var divide = (a, b) => a / b; +var flip = f.flip(divide); + +flip(10, 5) // 0.5 +flip(1, 10) // 10 +``` + +上面代码中,如果按照正常的参数顺序,10除以5等于2。但是,参数倒置以后得到的新函数,结果就是5除以10,结果得到0.5。 + +参数倒置的代码非常简单。 + +```javascript +let f = {}; +f.flip = + fn => + (...args) => fn.apply(null, args.reverse()); +``` + +## 执行边界 + +执行边界(until)指的是函数执行到满足条件为止。 + +```javascript +let condition = x => x > 100; +let inc = x => x + 1; +let until = f.until(condition, inc); + +until(0) // 101 + +condition = x => x === 5; +until = f.until(condition, inc); + +until(3) // 5 +``` + +上面代码中,第一段的条件是执行到`x`大于100为止,所以`x`初值为0时,会一直执行到101。第二段的条件是执行到等于5为止,所以`x`最后的值是5。 + +执行边界的实现如下。 + +```javascript +let f = {}; +f.until = (condition, f) => + (...args) => { + var r = f.apply(null, args); + return condition(r) ? r : f.until(condition, f)(r); + }; +``` + +上面代码的关键就是,如果满足条件就返回结果,否则不断递归执行。 + +## 队列操作 + +队列(list)操作包括以下几种。 + +- `head`: 取出队列的第一个非空成员。 +- `last`: 取出有限队列的最后一个非空成员。 +- `tail`: 取出除了“队列头”以外的其他非空成员。 +- `init`: 取出除了“队列尾”以外的其他非空成员。 + +下面是例子。 + +```javascript +f.head(5, 27, 3, 1) // 5 +f.last(5, 27, 3, 1) // 1 +f.tail(5, 27, 3, 1) // [27, 3, 1] +f.init(5, 27, 3, 1) // [5, 27, 3] +``` + +这些方法的实现如下。 + +```javascript +let f = {}; +f.head = (...xs) => xs[0]; +f.last = (...xs) => xs.slice(-1); +f.tail = (...xs) => Array.prototype.slice.call(xs, 1); +f.init = (...xs) => xs.slice(0, -1); +``` + +## 合并操作 + +合并操作分为`concat`和`concatMap`两种。前者就是将多个数组合成一个,后者则是先处理一下参数,然后再将处理结果合成一个数组。 + +```javascript +f.concat([5], [27], [3]) // [5, 27, 3] +f.concatMap(x => 'hi ' + x, 1, [[2]], 3) // ['hi 1', 'hi 2', 'hi 3'] +``` + +这两种方法的实现代码如下。 + +```javascript +let f = {}; +f.concat = + (...xs) => xs.reduce((a, b) => a.concat(b)); +f.concatMap = + (f, ...xs) => f.concat(xs.map(f)); +``` + +## 配对操作 + +配对操作分为`zip`和`zipWith`两种方法。`zip`操作将两个队列的成员,一一配对,合成一个新的队列。如果两个队列不等长,较长的那个队列多出来的成员,会被忽略。`zipWith`操作的第一个参数是一个函数,然后会将后面的队列成员一一配对,输入该函数,返回值就组成一个新的队列。 + +下面是例子。 + +```javascript +let a = [0, 1, 2]; +let b = [3, 4, 5]; +let c = [6, 7, 8]; + +f.zip(a, b) // [[0, 3], [1, 4], [2, 5]] +f.zipWith((a, b) => a + b, a, b, c) // [9, 12, 15] +``` + +上面代码中,`zipWith`方法的第一个参数是一个求和函数,它将后面三个队列的成员,一一配对进行相加。 + +这两个方法的实现如下。 + +```javascript +let f = {}; + +f.zip = (...xs) => { + let r = []; + let nple = []; + let length = Math.min.apply(null, xs.map(x => x.length)); + + for (var i = 0; i < length; i++) { + xs.forEach( + x => nple.push(x[i]) + ); + + r.push(nple); + nple = []; + } + + return r; +}; + +f.zipWith = (op, ...xs) => + f.zip.apply(null, xs).map( + (x) => x.reduce(op) + ); +``` + +## 参考链接 + +- Mateo Gianolio, [Haskell in ES6: Part 1](http://casualjavascript.com/javascript/es6/haskell/native/implementation/2015/11/12/haskell-in-es6-part-1.html) diff --git a/docs/module.md b/docs/module.md index 4c48459a1..ae1a236b9 100644 --- a/docs/module.md +++ b/docs/module.md @@ -287,13 +287,19 @@ export default foo; 下面比较一下默认输出和正常输出。 ```javascript +// 输出 +export default function crc32() { + // ... +} +// 输入 import crc32 from 'crc32'; -// 对应的输出 -export default function crc32(){} -import { crc32 } from 'crc32'; -// 对应的输出 -export function crc32(){}; +// 输出 +export function crc32() { + // ... +}; +// 输入 +import {crc32} from 'crc32'; ``` 上面代码的两组写法,第一组是使用`export default`时,对应的`import`语句不需要使用大括号;第二组是不使用`export default`时,对应的`import`语句需要使用大括号。 From 52ba0574f635cce65bb496fe591f8cd5225ecf4c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 24 Nov 2015 16:20:33 +0800 Subject: [PATCH 0010/1139] edit iterator/for...of --- docs/iterator.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/iterator.md b/docs/iterator.md index fd963c0f1..e84f64dd7 100644 --- a/docs/iterator.md +++ b/docs/iterator.md @@ -525,10 +525,10 @@ arr.forEach(function (element, index) { }); ``` -JavaScript原有的`for...in`循环,只能获得对象的键名,不能直接获取键值。ES6提供for...of循环,允许遍历获得键值。 +JavaScript原有的`for...in`循环,只能获得对象的键名,不能直接获取键值。ES6提供`for...of`循环,允许遍历获得键值。 ```javascript -var arr = ["a", "b", "c", "d"]; +var arr = ['a', 'b', 'c', 'd']; for (let a in arr) { console.log(a); // 0 1 2 3 @@ -541,6 +541,23 @@ for (let a of arr) { 上面代码表明,`for...in`循环读取键名,`for...of`循环读取键值。如果要通过`for...of`循环,获取数组的索引,可以借助数组实例的`entries`方法和`keys`方法,参见《数组的扩展》章节。 +`for...of`循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟`for...in`循环也不一样。 + +```javascript +let arr = [3, 5, 7]; +arr.foo = 'hello'; + +for (let i in arr) { + console.log(i); // "0", "1", "2", "foo" +} + +for (let i of arr) { + console.log(i); // "3", "5", "7" +} +``` + +上面代码中,`for...of`循环不会返回数组`arr`的`foo`属性。 + ### Set和Map结构 Set和Map结构也原生具有Iterator接口,可以直接使用`for...of`循环。 From 9b5c66493eb74311f60eb654b4f371aef281a976 Mon Sep 17 00:00:00 2001 From: johnson Date: Wed, 25 Nov 2015 21:46:15 +0800 Subject: [PATCH 0011/1139] Update intro.md due to babel version update --- docs/intro.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index 482afc27c..d4665e2a5 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -12,7 +12,7 @@ ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经 该标准从一开始就是针对JavaScript语言制定的,但是之所以不叫JavaScript,有两个原因。一是商标,Java是Sun公司的商标,根据授权协议,只有Netscape公司可以合法地使用JavaScript这个名字,且JavaScript本身也已经被Netscape公司注册为商标。二是想体现这门语言的制定者是ECMA,不是Netscape,这样有利于保证这门语言的开放性和中立性。 -因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。在日常场合,这两个词是可以互换的。 +因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。在日常场合,这两个词是可以互换的。 ## ECMAScript的历史 @@ -93,7 +93,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的程度。运行下面的命令,可以查看本机支持ES6的程度。 ```bash $ npm install -g es-checker @@ -126,7 +126,7 @@ input.map(function (item) { 命令行下,Babel的安装命令如下。 ```bash -$ npm install --global babel +$ npm install --global babel-cli ``` Babel自带一个`babel-node`命令,提供支持ES6的REPL环境。它支持Node的REPL环境的所有功能,而且可以直接运行ES6代码。 @@ -255,6 +255,10 @@ require("babel/register"); 有了上面这行语句,后面所有通过`require`命令加载的后缀名为`.es6`、`.es`、`.jsx`和`.js`的脚本,都会先通过`babel`转码后再加载。 +### 在线转换 + +Babel提供一个[REPL在线编译器](https://babeljs.io/repl/),可以在线将ES6代码转为ES5代码。转换后的代码,可以直接作为ES5代码插入网页运行 + ## Traceur转码器 Google公司的[Traceur](https://github.com/google/traceur-compiler)转码器,也可以将ES6代码转为ES5代码。 @@ -307,7 +311,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代码运行,就是下面这个样子。 @@ -437,10 +441,4 @@ fs.writeFileSync('out.js.map', result.sourceMap); ECMAScript当前的所有提案,可以在TC39的官方网站[Github.com/tc39/ecma262](https://github.com/tc39/ecma262)查看。 -Babel转码器对Stage 2及以上阶段的功能,是默认支持的。对于那些默认没有打开的功能,需要手动打开。 - -```bash -$ babel --stage 0 -$ babel --optional es7.decorators -``` - +Babel转码器可以通过安装和使用插件来使用各个stage的语言。 From f5ec2938b4355d10262be1d1cbcd768bde219515 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 26 Nov 2015 11:02:28 +0800 Subject: [PATCH 0012/1139] edit array/compresion --- docs/array.md | 54 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/docs/array.md b/docs/array.md index bd97f5e08..b4c060714 100644 --- a/docs/array.md +++ b/docs/array.md @@ -512,7 +512,7 @@ a2 // [2, 4, 6, 8] 注意,数组推导中,`for...of`结构总是写在最前面,返回的表达式写在最后面。 -for...of后面还可以附加if语句,用来设定循环的限制条件。 +`for...of`后面还可以附加`if`语句,用来设定循环的限制条件。 ```javascript var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ]; @@ -527,9 +527,33 @@ var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ]; // [ 2006] ``` -上面代码表明,if语句写在for...of与返回的表达式之间,可以使用多个if语句。 +上面代码表明,`if`语句要写在`for...of`与返回的表达式之间,而且可以多个`if`语句连用。 -数组推导可以替代map和filter方法。 +下面是另一个例子。 + +```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]; @@ -541,14 +565,14 @@ var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ]; [1,4,2,3,-8].filter(function(i) { return i < 3 }); ``` -上面代码说明,模拟map功能只要单纯的for...of循环就行了,模拟filter功能除了for...of循环,还必须加上if语句。 +上面代码说明,模拟`map`功能只要单纯的`for...of`循环就行了,模拟`filter`功能除了`for...of`循环,还必须加上`if`语句。 -在一个数组推导中,还可以使用多个for...of结构,构成多重循环。 +在一个数组推导中,还可以使用多个`for...of`结构,构成多重循环。 ```javascript -var a1 = ["x1", "y1"]; -var a2 = ["x2", "y2"]; -var a3 = ["x3", "y3"]; +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 @@ -561,9 +585,9 @@ var a3 = ["x3", "y3"]; // y1y2y3 ``` -上面代码在一个数组推导之中,使用了三个for...of结构。 +上面代码在一个数组推导之中,使用了三个`for...of`结构。 -需要注意的是,数组推导的方括号构成了一个单独的作用域,在这个方括号中声明的变量类似于使用let语句声明的变量。 +需要注意的是,数组推导的方括号构成了一个单独的作用域,在这个方括号中声明的变量类似于使用`let`语句声明的变量。 由于字符串可以视为数组,因此字符串也可以直接用于数组推导。 @@ -577,16 +601,6 @@ var a3 = ["x3", "y3"]; 数组推导需要注意的地方是,新数组会立即在内存中生成。这时,如果原数组是一个很大的数组,将会非常耗费内存。 -推导的用法不限于数组,还可以直接使用。 - -```javascript -var results = ( - for (c of customers) - if (c.city == "Seattle") - { name: c.name, age: c.age } -) -``` - ## Array.observe(),Array.unobserve() 这两个方法用于监听(取消监听)数组的变化,指定回调函数。 From c6b9b0ce0dd648cf8d58ee36c85a12d955b09949 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 28 Nov 2015 19:27:17 +0800 Subject: [PATCH 0013/1139] add string/padStart & padEnd --- docs/intro.md | 2 +- docs/reference.md | 1 + docs/string.md | 28 ++++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/docs/intro.md b/docs/intro.md index d4665e2a5..d99a927c6 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -93,7 +93,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的程度。运行下面的命令,可以查看本机支持ES6的程度。 ```bash $ npm install -g es-checker diff --git a/docs/reference.md b/docs/reference.md index 106341bd9..897824a05 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -48,6 +48,7 @@ - Addy Osmani, [Getting Literal With ES6 Template Strings](http://updates.html5rocks.com/2015/01/ES6-Template-Strings): 模板字符串的介绍 - Blake Winton, [ES6 Templates](https://weblog.latte.ca/blake/tech/firefox/templates.html): 模板字符串的介绍 - Peter Jaszkowiak, [How to write a template compiler in JavaScript](https://medium.com/@PitaJ/how-to-write-a-template-compiler-in-javascript-f174df6f32f): 使用模板字符串,编写一个模板编译函数 +- Axel Rauschmayer, [ES.stage3: string padding](http://www.2ality.com/2015/11/string-padding.html) ## 正则 diff --git a/docs/string.md b/docs/string.md index 0ae76ded5..31cc34ace 100644 --- a/docs/string.md +++ b/docs/string.md @@ -297,6 +297,34 @@ s.includes('Hello', 6) // false 'na'.repeat('3') // "nanana" ``` +## padStart(),padEnd() + +ES7推出了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。`padStart`用于头部补全,`padEnd`用于尾部补全。 + +```javascript +'x'.padStart(5, 'ab') // 'ababx' +'x'.padStart(4, 'ab') // 'abax' + +'x'.padEnd(5, 'ab') // 'xabab' +'x'.padEnd(4, 'ab') // 'xaba' +``` + +上面代码中,`padStart`和`padEnd`一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。 + +如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。 + +```javascript +'xxx'.padStart(2, 'ab') // 'xxx' +'xxx'.padEnd(2, 'ab') // 'xxx' +``` + +如果省略第二个参数,则会用空格补全长度。 + +```javascript +'x'.padStart(4) // ' x' +'x'.padEnd(4) // 'x ' +``` + ## 模板字符串 传统的JavaScript语言,输出模板通常是这样写的。 From 1228e708a510dd5e29c5efb612b3854b1842df87 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 30 Nov 2015 10:51:39 +0800 Subject: [PATCH 0014/1139] edit intro/babel --- docs/intro.md | 77 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 60 insertions(+), 17 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index d99a927c6..27f12f38b 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -127,6 +127,16 @@ input.map(function (item) { ```bash $ npm install --global babel-cli +$ npm install --save babel-preset-es2015 +``` + +然后在当前目录下,新建一个配置文件`.babelrc`。 + +```javascript +// .babelrc +{ + "presets": ['es2015'] +} ``` Babel自带一个`babel-node`命令,提供支持ES6的REPL环境。它支持Node的REPL环境的所有功能,而且可以直接运行ES6代码。 @@ -181,10 +191,10 @@ $ babel -d build-dir source-dir -s ### 浏览器环境 -Babel也可以用于浏览器。它的浏览器版本,可以通过安装`babel-core`模块获取。 +Babel也可以用于浏览器。但是,从Babel 6.0开始,不再直接提供浏览器版本,而是要用构建工具构建出来。如果你没有或不想使用构建工具,只有通过安装5.x版本的`babel-core`模块获取。 ```bash -$ npm install babel-core +$ npm install babel-core@5 ``` 运行上面的命令以后,就可以在当前目录的`node_modules/babel-core/`子目录里面,找到`babel`的浏览器版本`browser.js`(未精简)和`browser.min.js`(已精简)。 @@ -202,23 +212,27 @@ $ npm install babel-core 这种写法是实时将ES6代码转为ES5,对网页性能会有影响。生产环境需要加载已经转码完成的脚本。 -`Babel`配合`Browserify`一起使用,可以生成浏览器能够直接加载的脚本。 +下面是`Babel`配合`Browserify`一起使用,可以生成浏览器能够直接加载的脚本。首先,安装`babelify`模块。 + +```bash +$ npm install --save-dev babelify babel-preset-2015 +``` + +然后,再用命令行转换ES6脚本。 ```bash -$ browserify script.js -t babelify --outfile bundle.js +$ browserify script.js -o bundle.js \ + -t [ babelify --presets [ es2015 react ] ] ``` -上面代码将ES6脚本`script.js`,转为`bundle.js`。浏览器直接加载后者就可以了,不用再加载`browser.js`。 +上面代码将ES6脚本`script.js`,转为`bundle.js`,浏览器直接加载后者就可以了。 在`package.json`设置下面的代码,就不用每次命令行都输入参数了。 ```javascript { - // ... "browserify": { - "transform": [ - ["babelify", { "stage": [0] }] - ] + "transform": [["babelify", { "presets": ["es2015"] }]] } } ``` @@ -227,34 +241,63 @@ $ browserify script.js -t babelify --outfile bundle.js Node脚本之中,需要转换ES6脚本,可以像下面这样写。 -先安装`babel-core`。 +先安装`babel-core`和`babel-preset-2015`。 + +```javascript +$ npm install --save-dev babel-core babel-preset-2015 +``` + +然后,在项目根目录下新建一个`.babelrc`文件。 ```javascript -$ npm install --save-dev babel-core +{ + "presets": ["es2015"] +} ``` 然后在脚本中,调用`babel-core`的`transform`方法。 ```javascript -require("babel-core").transform("code", options); +var es5Code = 'let x = n => n + 1'; +var es6Code = require('babel-core') + .transform(es5Code, {presets: ['es2015']}) + .code; +// '"use strict";\n\nvar x = function x(n) {\n return n + 1;\n};' ``` -上面代码中,`transform`方法的第一个参数是一个字符串,表示ES6代码。 +上面代码中,`transform`方法的第一个参数是一个字符串,表示需要转换的ES5代码,第二个参数是转换的配置对象。 -Node脚本还有一种特殊的`babel`用法,即把`babel`加载为`require`命令的一个钩子。先将`babel`全局安装。 +Node脚本还有一种特殊的`babel`用法,即把`babel`加载为`require`命令的一个钩子。安装`babel-core`和`babel-preset-es2015`以后,先在项目的根目录下面,设置一个配置文件`.babelrc`。 -```bash -$ npm install -g babel +```javascript +// .babelrc +{ + "presets": ["es2015"] +} ``` 然后,在你的应用的入口脚本(entry script)头部,加入下面的语句。 ```javascript -require("babel/register"); +require("babel-core/register"); ``` 有了上面这行语句,后面所有通过`require`命令加载的后缀名为`.es6`、`.es`、`.jsx`和`.js`的脚本,都会先通过`babel`转码后再加载。 +需要注意的是,Babel默认不会转换Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如`Object.assign`)。如果你用到了这些功能,当前的运行环境又不支持。就需要安装`babel-polyfill`模块。 + +```bash +$ npm install babel-polyfill --save +``` + +然后,在所有脚本头部加上一行。 + +```javascript +require('babel-polyfill'); +// 或者 +import 'babel-polyfill'; +``` + ### 在线转换 Babel提供一个[REPL在线编译器](https://babeljs.io/repl/),可以在线将ES6代码转为ES5代码。转换后的代码,可以直接作为ES5代码插入网页运行 From 1ed8d1d91597ae88a0d1780c8cf6291a44e2d872 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 30 Nov 2015 12:08:15 +0800 Subject: [PATCH 0015/1139] edit function/bind operator --- docs/function.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/function.md b/docs/function.md index 120511b2d..18e03318a 100644 --- a/docs/function.md +++ b/docs/function.md @@ -977,10 +977,10 @@ var fix = f => (x => f(v => x(x)(v))) ```javascript foo::bar; // 等同于 -bar.call(foo); +bar.bind(foo); foo::bar(...arguments); -i// 等同于 +// 等同于 bar.apply(foo, arguments); const hasOwnProperty = Object.prototype.hasOwnProperty; From 85f0cfeb3fc8ac49f7c931497ad0d55946cf758b Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 1 Dec 2015 17:18:07 +0800 Subject: [PATCH 0016/1139] fix typo --- docs/decorator.md | 18 +++++++++++++++--- docs/module.md | 4 ++-- docs/promise.md | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/decorator.md b/docs/decorator.md index dbff61a4f..127ef5b50 100644 --- a/docs/decorator.md +++ b/docs/decorator.md @@ -571,16 +571,28 @@ class MyClass {} ## Babel转码器的支持 -目前,Babel转码器已经支持Decorator,命令行的用法如下。 +目前,Babel转码器已经支持Decorator。 + +首先,安装`babel-core`和`babel-plugin-transform-decorators`。由于后者包括在`babel-preset-stage-0`之中,所以改为安装`babel-preset-stage-0`亦可。 ```bash -$ babel --optional es7.decorators +$ npm install babel-core babel-plugin-transform-decorators ``` +然后,设置配置文件`.babelrc`。 + +```javascript +{ + "plugins": ["transform-decorators"] +} +``` + +这时,Babel就可以对Decorator转码了。 + 脚本中打开的命令如下。 ```javascript -babel.transform("code", {optional: ["es7.decorators"]}) +babel.transform("code", {plugins: ["transform-decorators"]}) ``` Babel的官方网站提供一个[在线转码器](https://babeljs.io/repl/),只要勾选Experimental,就能支持Decorator的在线转码。 diff --git a/docs/module.md b/docs/module.md index ae1a236b9..684860cff 100644 --- a/docs/module.md +++ b/docs/module.md @@ -689,7 +689,7 @@ TypeError: even is not a function ## ES6模块的转码 -浏览器目前还不支持ES6模块,为了现在就能使用,可以将转为ES5的写法。 +浏览器目前还不支持ES6模块,为了现在就能使用,可以将转为ES5的写法。除了Babel可以用来转码之外,还有以下两个方法,也可以用来转码。 ### ES6 module transpiler @@ -707,7 +707,7 @@ $ npm install -g es6-module-transpiler $ compile-modules convert file1.js file2.js ``` -o参数可以指定转码后的文件名。 +`-o`参数可以指定转码后的文件名。 ```bash $ compile-modules convert -o out.js file1.js diff --git a/docs/promise.md b/docs/promise.md index e98b0354d..a19fda3fe 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -525,7 +525,7 @@ ES6的Promise API提供的方法不是很多,有些有用的方法可以自己 ### done() -Promise对象的回调链,不管以`then`方法或`catch`方法结尾,要是最后一个方法抛出错误,都有可能无法漏掉(Promise内部的错误不会冒泡到全局)。因此,我们可以提供一个`done`方法,总是处于回调链的尾端,保证抛出任何可能出现的错误。 +Promise对象的回调链,不管以`then`方法或`catch`方法结尾,要是最后一个方法抛出错误,都有可能无法捕捉到(因为Promise内部的错误不会冒泡到全局)。因此,我们可以提供一个`done`方法,总是处于回调链的尾端,保证抛出任何可能出现的错误。 ```javascript asyncFunc() From 4929da48d9b4290ab2c3678f9f5cdb91865fbaec Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 1 Dec 2015 17:24:36 +0800 Subject: [PATCH 0017/1139] delete object/Object.observe --- docs/array.md | 7 ---- docs/object.md | 87 -------------------------------------------------- 2 files changed, 94 deletions(-) diff --git a/docs/array.md b/docs/array.md index b4c060714..a544a5d2b 100644 --- a/docs/array.md +++ b/docs/array.md @@ -601,10 +601,3 @@ var a3 = ['x3', 'y3']; 数组推导需要注意的地方是,新数组会立即在内存中生成。这时,如果原数组是一个很大的数组,将会非常耗费内存。 -## Array.observe(),Array.unobserve() - -这两个方法用于监听(取消监听)数组的变化,指定回调函数。 - -它们的用法与`Object.observe`和`Object.unobserve`方法完全一致,也属于ES7的一部分,请参阅《对象的扩展》一章。 - -唯一的区别是,对象可监听的变化一共有六种,而数组只有四种:`add`、`update`、`delete`、`splice`(数组的`length`属性发生变化)。 diff --git a/docs/object.md b/docs/object.md index ff1f6a7d1..b6eb72776 100644 --- a/docs/object.md +++ b/docs/object.md @@ -666,93 +666,6 @@ Object.getPrototypeOf(rec) === Rectangle.prototype // false ``` -## Object.observe(),Object.unobserve() - -Object.observe方法用来监听对象(以及数组)的变化。一旦监听对象发生变化,就会触发回调函数。 - -```javascript -var user = {}; -Object.observe(user, function(changes){ - changes.forEach(function(change) { - user.fullName = user.firstName+" "+user.lastName; - }); -}); - -user.firstName = 'Michael'; -user.lastName = 'Jackson'; -user.fullName // 'Michael Jackson' -``` - -上面代码中,Object.observer方法监听user对象。一旦该对象发生变化,就自动生成fullName属性。 - -一般情况下,Object.observe方法接受两个参数,第一个参数是监听的对象,第二个函数是一个回调函数。一旦监听对象发生变化(比如新增或删除一个属性),就会触发这个回调函数。很明显,利用这个方法可以做很多事情,比如自动更新DOM。 - -```javascript -var div = $("#foo"); - -Object.observe(user, function(changes){ - changes.forEach(function(change) { - var fullName = user.firstName+" "+user.lastName; - div.text(fullName); - }); -}); -``` - -上面代码中,只要user对象发生变化,就会自动更新DOM。如果配合jQuery的change方法,就可以实现数据对象与DOM对象的双向自动绑定。 - -回调函数的changes参数是一个数组,代表对象发生的变化。下面是一个更完整的例子。 - -```javascript -var o = {}; - -function observer(changes){ - changes.forEach(function(change) { - console.log('发生变动的属性:' + change.name); - console.log('变动前的值:' + change.oldValue); - console.log('变动后的值:' + change.object[change.name]); - console.log('变动类型:' + change.type); - }); -} - -Object.observe(o, observer); -``` - -参照上面代码,Object.observe方法指定的回调函数,接受一个数组(changes)作为参数。该数组的成员与对象的变化一一对应,也就是说,对象发生多少个变化,该数组就有多少个成员。每个成员是一个对象(change),它的name属性表示发生变化源对象的属性名,oldValue属性表示发生变化前的值,object属性指向变动后的源对象,type属性表示变化的种类。基本上,change对象是下面的样子。 - -```javascript -var change = { - object: {...}, - type: 'update', - name: 'p2', - oldValue: 'Property 2' -} -``` - -Object.observe方法目前共支持监听六种变化。 - -- add:添加属性 -- update:属性值的变化 -- delete:删除属性 -- setPrototype:设置原型 -- reconfigure:属性的attributes对象发生变化 -- preventExtensions:对象被禁止扩展(当一个对象变得不可扩展时,也就不必再监听了) - -Object.observe方法还可以接受第三个参数,用来指定监听的事件种类。 - -```javascript -Object.observe(o, observer, ['delete']); -``` - -上面的代码表示,只在发生delete事件时,才会调用回调函数。 - -Object.unobserve方法用来取消监听。 - -```javascript -Object.unobserve(o, observer); -``` - -注意,Object.observe和Object.unobserve这两个方法不属于ES6,而是属于ES7的一部分。不过,Chrome浏览器从33版起就已经支持。 - ## 对象的扩展运算符 目前,ES7有一个[提案](https://github.com/sebmarkbage/ecmascript-rest-spread),将rest参数/扩展运算符(...)引入对象。Babel转码器已经支持这项功能。 From e6b8a2ffc9f81d23f383f3ee6f9c5b5a059b8776 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 1 Dec 2015 19:34:02 +0800 Subject: [PATCH 0018/1139] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/intro.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index 27f12f38b..ae5b35395 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -22,11 +22,13 @@ ES6从开始制定到最后发布,整整用了15年。 2000年,ECMAScript 4.0开始酝酿。这个版本最后没有通过,但是它的大部分内容被ES6继承了。因此,ES6制定的起点其实是2000年。 -为什么ES4没有通过呢?因为这个版本太激进了,对ES3做了彻底升级,导致标准委员会的一些成员不愿意接受。2007年10月,ECMAScript 4.0版草案发布,本来预计次年8月发布正式版本。但是,各方对于是否通过这个标准,发生了严重分歧。以Yahoo、Microsoft、Google为首的大公司,反对JavaScript的大幅升级,主张小幅改动;以JavaScript创造者Brendan Eich为首的Mozilla公司,则坚持当前的草案。 +为什么ES4没有通过呢?因为这个版本太激进了,对ES3做了彻底升级,导致标准委员会的一些成员不愿意接受。ECMA的第39号技术专家委员会(Technical Committee 39,简称TC39)负责制订ECMAScript标准,成员包括Microsoft、Mozilla、Google等大公司。 -2008年7月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激进,ECMA开会决定,中止ECMAScript 4.0的开发,将其中涉及现有功能改善的一小部分,发布为ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版本,由于会议的气氛,该版本的项目代号起名为Harmony(和谐)。会后不久,ECMAScript 3.1就改名为ECMAScript 5。 +2007年10月,ECMAScript 4.0版草案发布,本来预计次年8月发布正式版本。但是,各方对于是否通过这个标准,发生了严重分歧。以Yahoo、Microsoft、Google为首的大公司,反对JavaScript的大幅升级,主张小幅改动;以JavaScript创造者Brendan Eich为首的Mozilla公司,则坚持当前的草案。 -2009年12月,ECMAScript 5.0版正式发布。Harmony项目则一分为二,一些较为可行的设想定名为JavaScript.next继续开发,后来演变成ECMAScript 6;一些不是很成熟的设想,则被视为JavaScript.next.next,在更远的将来再考虑推出。 +2008年7月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激烈,ECMA开会决定,中止ECMAScript 4.0的开发,将其中涉及现有功能改善的一小部分,发布为ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版本,由于会议的气氛,该版本的项目代号起名为Harmony(和谐)。会后不久,ECMAScript 3.1就改名为ECMAScript 5。 + +2009年12月,ECMAScript 5.0版正式发布。Harmony项目则一分为二,一些较为可行的设想定名为JavaScript.next继续开发,后来演变成ECMAScript 6;一些不是很成熟的设想,则被视为JavaScript.next.next,在更远的将来再考虑推出。TC39委员会的总体考虑是,ES5与ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成。当时,JavaScript.next指的是ES6,第六版发布以后,就指ES7。TC39的判断是,ES5会在2013年的年中成为JavaScript开发的主流标准,并在此后五年中一直保持这个位置。 2011年6月,ECMAscript 5.1版发布,并且成为ISO国际标准(ISO/IEC 16262:2011)。 @@ -36,8 +38,6 @@ ES6从开始制定到最后发布,整整用了15年。 2015年6月,ECMAScript 6正式通过,成为国际标准。从2000年算起,这时已经过去了15年。 -ECMA的第39号技术专家委员会(Technical Committee 39,简称TC39)负责制订ECMAScript标准,成员包括Microsoft、Mozilla、Google等大公司。TC39的总体考虑是,ES5与ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成。当时,JavaScript.next指的是ES6,第六版发布以后,就指ES7。TC39的判断是,ES5会在2013年的年中成为JavaScript开发的主流标准,并在此后五年中一直保持这个位置。 - ## 部署进度 各大浏览器的最新版本,对ES6的支持可以查看[kangax.github.io/es5-compat-table/es6/](http://kangax.github.io/es5-compat-table/es6/)。随着时间的推移,支持度已经越来越高了,ES6的大部分特性都实现了。 @@ -47,7 +47,7 @@ Node.js是JavaScript语言的服务器运行环境,对ES6的支持度比浏览 安装nvm需要打开命令行窗口,运行下面的命令。 ```bash -$ curl -o- https://raw.githubusercontent.com/creationix/nvm//install.sh | bash +$ curl -o https://raw.githubusercontent.com/creationix/nvm//install.sh | bash ``` 上面命令的`version number`处,需要用版本号替换。本节写作时的版本号是`v0.29.0`。该命令运行后,`nvm`会默认安装在用户主目录的`.nvm`子目录。 From ce893ab57636949678ba6f0196fe1f23e4538ecf Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 2 Dec 2015 13:31:57 +0800 Subject: [PATCH 0019/1139] delete module/module clause --- docs/module.md | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/docs/module.md b/docs/module.md index 684860cff..c633176ec 100644 --- a/docs/module.md +++ b/docs/module.md @@ -225,21 +225,6 @@ console.log("圆面积:" + circle.area(4)); console.log("圆周长:" + circle.circumference(14)); ``` -## module命令 - -module命令可以取代import语句,达到整体输入模块的作用。 - -```javascript -// main.js - -module circle from './circle'; - -console.log("圆面积:" + circle.area(4)); -console.log("圆周长:" + circle.circumference(14)); -``` - -module命令后面跟一个变量,表示输入的模块定义在该变量上。 - ## export default命令 从前面的例子可以看出,使用`import`命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。但是,用户肯定希望快速上手,未必愿意阅读文档,去了解模块有哪些属性和方法。 From 87d321e9ef53e6aca39ce38445235f6c2c2a4dd5 Mon Sep 17 00:00:00 2001 From: tommyZZM Date: Wed, 2 Dec 2015 16:25:29 +0800 Subject: [PATCH 0020/1139] Update style.md usage of Arrow function --- docs/style.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/style.md b/docs/style.md index 49cc1dd8d..28c4378cc 100644 --- a/docs/style.md +++ b/docs/style.md @@ -260,9 +260,14 @@ const nodes = Array.from(foo); }); // good -[1, 2, 3].map((x) => { +[1, 2, 3].map(x => { return x * x; }); + +// with more than one argument +[1, 2, 3].map((x,i) => { + return x * i; +}); ``` 箭头函数取代`Function.prototype.bind`,不应再用self/\_this/that绑定 this。 From 372eb0f67f2b1aec883784772a0b1615fc23e267 Mon Sep 17 00:00:00 2001 From: tommyZZM Date: Wed, 2 Dec 2015 16:29:03 +0800 Subject: [PATCH 0021/1139] Update style.md --- docs/style.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/style.md b/docs/style.md index 28c4378cc..6f5179459 100644 --- a/docs/style.md +++ b/docs/style.md @@ -260,12 +260,11 @@ const nodes = Array.from(foo); }); // good -[1, 2, 3].map(x => { - return x * x; -}); +[1, 2, 3].map(x => x * x); -// with more than one argument +// with more argument and code [1, 2, 3].map((x,i) => { + console.log(x); return x * i; }); ``` From 421b8ab3210f9de90723bc16e9e59b3a32912320 Mon Sep 17 00:00:00 2001 From: tommyZZM Date: Wed, 2 Dec 2015 16:38:49 +0800 Subject: [PATCH 0022/1139] Update style.md --- docs/style.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/style.md b/docs/style.md index 6f5179459..fcdd7e209 100644 --- a/docs/style.md +++ b/docs/style.md @@ -260,11 +260,15 @@ const nodes = Array.from(foo); }); // good +[1, 2, 3].map((x) => { + return x * x; +}); + +// best [1, 2, 3].map(x => x * x); -// with more argument and code +// best [1, 2, 3].map((x,i) => { - console.log(x); return x * i; }); ``` From 94f0d4921f1a5c76726701fff35eb89310b566bb Mon Sep 17 00:00:00 2001 From: tommyZZM Date: Wed, 2 Dec 2015 16:44:36 +0800 Subject: [PATCH 0023/1139] Update style.md --- docs/style.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/style.md b/docs/style.md index fcdd7e209..33ac06cd2 100644 --- a/docs/style.md +++ b/docs/style.md @@ -266,11 +266,6 @@ const nodes = Array.from(foo); // best [1, 2, 3].map(x => x * x); - -// best -[1, 2, 3].map((x,i) => { - return x * i; -}); ``` 箭头函数取代`Function.prototype.bind`,不应再用self/\_this/that绑定 this。 From 1a6aa1ae426e0bbe6a0340e2417342693d975a3f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 3 Dec 2015 15:20:42 +0800 Subject: [PATCH 0024/1139] edit js/ditto --- docs/module.md | 2 +- js/ditto.js | 240 ++++++++++++++++++++++++------------------------- 2 files changed, 120 insertions(+), 122 deletions(-) diff --git a/docs/module.md b/docs/module.md index c633176ec..37b012a98 100644 --- a/docs/module.md +++ b/docs/module.md @@ -625,7 +625,7 @@ export function odd(n) { } ``` -上面代码中,`even.js`里面的函数`foo`有一个参数`n`,只要不等于0,就会减去1,传入加载的`odd()`。`odd.js`也会做类似操作。 +上面代码中,`even.js`里面的函数`even`有一个参数`n`,只要不等于0,就会减去1,传入加载的`odd()`。`odd.js`也会做类似操作。 运行上面这段代码,结果如下。 diff --git a/js/ditto.js b/js/ditto.js index f9c821055..43cc2645b 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -21,22 +21,22 @@ var disqusCode = '

留言

'; var menu = new Array(); function initialize() { - // initialize sidebar and buttons - if (ditto.sidebar) { - init_sidebar_section(); - } - - if (ditto.back_to_top_button) { - init_back_to_top_button(); - } - - if (ditto.edit_button) { - init_edit_button(); - } - - // page router - router(); - $(window).on('hashchange', router); + // initialize sidebar and buttons + if (ditto.sidebar) { + init_sidebar_section(); + } + + if (ditto.back_to_top_button) { + init_back_to_top_button(); + } + + if (ditto.edit_button) { + init_edit_button(); + } + + // page router + router(); + $(window).on('hashchange', router); } function init_sidebar_section() { @@ -99,8 +99,8 @@ function init_edit_button() { } function replace_symbols(text) { - // replace symbols with underscore - return text.replace(/[&\/\\#,+=()$~%.'":*?<>{}\ \]\[]/g, "_"); + // replace symbols with underscore + return text.replace(/[&\/\\#,+=()$~%.'":*?<>{}\ \]\[]/g, "_"); } function li_create_linkage(li_tag, header_level) { @@ -193,119 +193,117 @@ function show_loading() { } function router() { + var path = location.hash.replace(/#([^#]*)(#.*)?/, './$1'); + + if (ditto.save_progress && store.get('menu-progress') !== location.hash) { + store.set('menu-progress', location.hash); + store.set('page-progress', 0); + } + + // default page if hash is empty + if (location.pathname === "/index.html") { + path = location.pathname.replace("index.html", ditto.index); + normalize_paths(); + } else if (path === "") { + path = window.location + ditto.index; + normalize_paths(); + } else { + path = path + ".md"; + } + + // 取消scroll事件的监听函数 + // 防止改变下面的变量perc的值 + $(window).off('scroll'); + + // otherwise get the markdown and render it + var loading = show_loading(); + $.get(path, function(data) { + $(ditto.error_id).hide(); + $(ditto.content_id).html(marked(data) + disqusCode); + if ($(ditto.content_id + " h1").text() === ditto.document_title) { + document.title = ditto.document_title; + } else { + document.title = $(ditto.content_id + " h1").text() + " - " + ditto.document_title; + } + normalize_paths(); + create_page_anchors(); + + // 完成代码高亮 + $('#content code').map(function() { + Prism.highlightElement(this); + }); - var path = location.hash.replace(/#([^#]*)(#.*)?/, './$1'); + // 加载disqus + (function() { + // http://docs.disqus.com/help/2/ + window.disqus_shortname = 'es6'; + window.disqus_identifier = (location.hash ? location.hash.replace("#", "") : 'READEME'); + window.disqus_title = $(ditto.content_id + " h1").text(); + window.disqus_url = 'http://es6.ruanyifeng.com/' + (location.hash ? location.hash.replace("#", "") : 'README'); + + // http://docs.disqus.com/developers/universal/ + (function() { + var dsq = document.createElement('script'); + dsq.type = 'text/javascript'; + dsq.async = true; + dsq.src = 'http://' + window.disqus_shortname + '.disqus.com/embed.js'; + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); + })(); + })(); - if (ditto.save_progress && store.get('menu-progress') !== location.hash) { - store.set('menu-progress', location.hash); - store.set('page-progress', 0); + var perc = ditto.save_progress ? store.get('page-progress') || 0 : 0; + + if (location.hash !== '' || Boolean(perc)) { + if (!Boolean(perc)) { + $('html, body').animate({ + scrollTop: ($('#content').offset().top + 10) + }, 300); + $('html, body').animate({ + scrollTop: ($('#content').offset().top) + }, 300); + } else { + $('html, body').animate({ + scrollTop: ($('body').height()-$(window).height())*perc + }, 200); + } } - // default page if hash is empty - if (location.pathname === "/index.html") { - path = location.pathname.replace("index.html", ditto.index); - normalize_paths(); - } else if (path === "") { - path = window.location + ditto.index; - normalize_paths(); + if (location.hash === '' || location.hash === menu[0]) { + $('#pageup').css('display', 'none'); } else { - path = path + ".md"; + $('#pageup').css('display', 'inline-block'); } - // 取消scroll事件的监听函数 - // 防止改变下面的变量perc的值 - $(window).off('scroll'); - - // otherwise get the markdown and render it - var loading = show_loading(); - $.get(path, function(data) { - $(ditto.error_id).hide(); - $(ditto.content_id).html(marked(data) + disqusCode); - if ($(ditto.content_id + " h1").text() === ditto.document_title) { - document.title = ditto.document_title; - } else { - document.title = $(ditto.content_id + " h1").text() + " - " + ditto.document_title; - } - normalize_paths(); - create_page_anchors(); + if (location.hash === menu[(menu.length - 1)]) { + $('#pagedown').css('display', 'none'); + } else { + $('#pagedown').css('display', 'inline-block'); + } - // 完成代码高亮 - $('#content code').map(function() { - Prism.highlightElement(this); + (function() { + var $w = $(window); + var $prog2 = $('.progress-indicator-2'); + var wh = $w.height(); + var h = $('body').height(); + var sHeight = h - wh; + $w.on('scroll', function() { + window.requestAnimationFrame(function(){ + var perc = Math.max(0, Math.min(1, $w.scrollTop() / sHeight)); + updateProgress(perc); }); + }); - // 加载disqus - (function() { - // http://docs.disqus.com/help/2/ - window.disqus_shortname = 'es6'; - window.disqus_identifier = (location.hash ? location.hash.replace("#", "") : 'READEME'); - window.disqus_title = $(ditto.content_id + " h1").text(); - window.disqus_url = 'http://es6.ruanyifeng.com/' + (location.hash ? location.hash.replace("#", "") : 'README'); - - // http://docs.disqus.com/developers/universal/ - (function() { - var dsq = document.createElement('script'); - dsq.type = 'text/javascript'; - dsq.async = true; - dsq.src = 'http://' + window.disqus_shortname + '.disqus.com/embed.js'; - (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); - })(); - })(); - - var perc = ditto.save_progress ? store.get('page-progress') || 0 : 0; - - if(location.hash !== '' || Boolean(perc)){ - if (!Boolean(perc)){ - $('html, body').animate({ - scrollTop: ($('#content').offset().top + 10) - }, 300); - $('html, body').animate({ - scrollTop: ($('#content').offset().top) - }, 300); - } else { - $('html, body').animate({ - scrollTop: ($('body').height()-$(window).height())*perc - }, 200); - } - } - - if (location.hash === '' || location.hash === menu[0]) { - $('#pageup').css('display', 'none'); - } else { - $('#pageup').css('display', 'inline-block'); - } + function updateProgress(perc) { + $prog2.css({width: perc * 100 + '%'}); + ditto.save_progress && store.set('page-progress', perc); + } - if (location.hash === menu[(menu.length - 1)]) { - $('#pagedown').css('display', 'none'); - } else { - $('#pagedown').css('display', 'inline-block'); - } + }()); - (function() { - var $w = $(window); - var $prog2 = $('.progress-indicator-2'); - var wh = $w.height(); - var h = $('body').height(); - var sHeight = h - wh; - - $w.on('scroll', function() { - window.requestAnimationFrame(function(){ - var perc = Math.max(0, Math.min(1, $w.scrollTop() / sHeight)); - updateProgress(perc); - }); - }); - - function updateProgress(perc) { - $prog2.css({width: perc * 100 + '%'}); - ditto.save_progress && store.set('page-progress', perc); - } - - }()); - - }).fail(function() { - show_error(); - }).always(function() { - clearInterval(loading); - $(ditto.loading_id).hide(); - }); + }).fail(function() { + show_error(); + }).always(function() { + clearInterval(loading); + $(ditto.loading_id).hide(); + }); } From 237bb3ce45aceb147e6282704bd64d817d659b82 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 3 Dec 2015 19:35:14 +0800 Subject: [PATCH 0025/1139] feat: add section link --- css/app.css | 5 ++ js/ditto.js | 220 +++++++++++++++++++++++++++++++--------------------- 2 files changed, 136 insertions(+), 89 deletions(-) diff --git a/css/app.css b/css/app.css index 38e3db01c..44c4b91e9 100644 --- a/css/app.css +++ b/css/app.css @@ -191,6 +191,11 @@ body { border-top: 1px dotted #777; } +#content h2:hover, +#content h3:hover { + color: #ED1C24; +} + #content img { max-width: 90%; display: block; diff --git a/js/ditto.js b/js/ditto.js index 43cc2645b..c0885048e 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -70,12 +70,22 @@ function init_sidebar_section() { } function init_back_to_top_button() { - $(ditto.back_to_top_id).show(); - $(ditto.back_to_top_id).on("click", function() { - $("html body").animate({ - scrollTop: 0 - }, 200); - }); + $(ditto.back_to_top_id).show(); + $(ditto.back_to_top_id).on('click', goTop); +} + +function goTop(e) { + if(e) e.preventDefault(); + $('html body').animate({ + scrollTop: 0 + }, 200); + history.pushState(null, null, '#' + location.hash.split('#')[1]); +} + +function goSection(sectionId){ + $('html, body').animate({ + scrollTop: ($('#' + sectionId).offset().top) + }, 300); } function init_edit_button() { @@ -100,101 +110,127 @@ function init_edit_button() { function replace_symbols(text) { // replace symbols with underscore - return text.replace(/[&\/\\#,+=()$~%.'":*?<>{}\ \]\[]/g, "_"); + return text + .replace(/, /g, ',') + .replace(/[&\/\\#,.+=$~%'":*?<>{}\ \]\[]/g, "-") + .replace(/[()]/g, ''); } function li_create_linkage(li_tag, header_level) { - // add custom id and class attributes - html_safe_tag = replace_symbols(li_tag.text()); - li_tag.attr("id", html_safe_tag); - li_tag.attr("class", "link"); - - // add click listener - on click scroll to relevant header section - $(ditto.content_id + " li#" + li_tag.attr("id")).click(function() { - // scroll to relevant section - var header = $( - ditto.content_id + " h" + header_level + "." + li_tag.attr("id") - ); - $('html, body').animate({ - scrollTop: header.offset().top - }, 200); - - // highlight the relevant section - original_color = header.css("color"); - header.animate({ color: "#ED1C24", }, 500, function() { - // revert back to orig color - $(this).animate({color: original_color}, 2500); - }); + // add custom id and class attributes + html_safe_tag = replace_symbols(li_tag.text()); + li_tag.attr('data-src', html_safe_tag); + li_tag.attr("class", "link"); + + // add click listener - on click scroll to relevant header section + li_tag.click(function(e) { + e.preventDefault(); + // scroll to relevant section + var header = $( + ditto.content_id + " h" + header_level + "." + li_tag.attr('data-src') + ); + $('html, body').animate({ + scrollTop: header.offset().top + }, 200); + + // highlight the relevant section + original_color = header.css("color"); + header.animate({ color: "#ED1C24", }, 500, function() { + // revert back to orig color + $(this).animate({color: original_color}, 2500); }); + history.pushState(null, null, '#' + location.hash.split('#')[1] + '#' + li_tag.attr('data-src')); + }); } function create_page_anchors() { - // create page anchors by matching li's to headers - // if there is a match, create click listeners - // and scroll to relevant sections - - // go through header level 1 to 3 - for (var i = 1; i <= 4; i++) { - // parse all headers - var headers = []; - $('#content h' + i).map(function() { - headers.push($(this).text()); - $(this).addClass(replace_symbols($(this).text())); - this.id = 'h' + i + '-' + replace_symbols($(this).text()); - }); + // create page anchors by matching li's to headers + // if there is a match, create click listeners + // and scroll to relevant sections + + // go through header level 1 to 3 + for (var i = 2; i <= 4; i++) { + // parse all headers + var headers = []; + $('#content h' + i).map(function() { + var content = $(this).text(); + headers.push(content); + $(this).addClass(replace_symbols(content)); + this.id = replace_symbols(content); + $(this).hover(function () { + $(this).html(content + + ' § '); + }, function () { + $(this).html(content); + }); + $(this).on('click', 'a.section-link', function(event) { + event.preventDefault(); + history.pushState(null, null, '#' + location.hash.split('#')[1] + '#' + replace_symbols(content)); + goSection(replace_symbols(content)); + }); + }); - if ((i === 2) && headers.length !== 0) { - var ul_tag = $('
    ') - .insertAfter('#content h1') - .addClass("content-toc") - .attr('id', 'content-toc'); - for (var j = 0; j < headers.length; j++) { - var li_tag = $('
  1. ').text(headers[j]); - ul_tag.append(li_tag); - li_create_linkage(li_tag, i); - } - } + if ((i === 2) && headers.length !== 0) { + var ul_tag = $('
      ') + .insertAfter('#content h1') + .addClass('content-toc') + .attr('id', 'content-toc'); + for (var j = 0; j < headers.length; j++) { + var li_tag = $('
    1. ').html('' + headers[j] + ''); + ul_tag.append(li_tag); + li_create_linkage(li_tag, i); + } } + } } function normalize_paths() { - // images - $(ditto.content_id + " img").map(function() { - var src = $(this).attr("src").replace("./", ""); - if ($(this).attr("src").slice(0, 5) !== "http") { - var url = location.hash.replace("#", ""); - - // split and extract base dir - url = url.split("/"); - var base_dir = url.slice(0, url.length - 1).toString(); - - // normalize the path (i.e. make it absolute) - $(this).attr("src", base_dir + "/" + src); - } - }); - + // images + $(ditto.content_id + " img").map(function() { + var src = $(this).attr("src").replace("./", ""); + if ($(this).attr("src").slice(0, 5) !== "http") { + var url = location.hash.replace("#", ""); + + // split and extract base dir + url = url.split("/"); + var base_dir = url.slice(0, url.length - 1).toString(); + + // normalize the path (i.e. make it absolute) + $(this).attr("src", base_dir + "/" + src); + } + }); } function show_error() { - console.log("SHOW ERORR!"); - $(ditto.error_id).show(); + console.log("SHOW ERORR!"); + $(ditto.error_id).show(); } function show_loading() { - $(ditto.loading_id).show(); - $(ditto.content_id).html(""); // clear content + $(ditto.loading_id).show(); + $(ditto.content_id).html(''); // clear content - // infinite loop until clearInterval() is called on loading - var loading = setInterval(function() { - $(ditto.loading_id).fadeIn(1000).fadeOut(1000); - }, 2000); + // infinite loop until clearInterval() is called on loading + var loading = setInterval(function() { + $(ditto.loading_id).fadeIn(1000).fadeOut(1000); + }, 2000); - return loading; + return loading; } function router() { var path = location.hash.replace(/#([^#]*)(#.*)?/, './$1'); + var hashArr = location.hash.split('#'); + var sectionId; + if (hashArr.length > 2 && !(/^comment-/.test(hashArr[2]))) { + sectionId = hashArr[2]; + } + if (ditto.save_progress && store.get('menu-progress') !== location.hash) { store.set('menu-progress', location.hash); store.set('page-progress', 0); @@ -205,7 +241,7 @@ function router() { path = location.pathname.replace("index.html", ditto.index); normalize_paths(); } else if (path === "") { - path = window.location + ditto.index; + path = location.pathname + ditto.index; normalize_paths(); } else { path = path + ".md"; @@ -253,18 +289,24 @@ function router() { var perc = ditto.save_progress ? store.get('page-progress') || 0 : 0; - if (location.hash !== '' || Boolean(perc)) { - if (!Boolean(perc)) { - $('html, body').animate({ - scrollTop: ($('#content').offset().top + 10) - }, 300); - $('html, body').animate({ - scrollTop: ($('#content').offset().top) - }, 300); - } else { - $('html, body').animate({ - scrollTop: ($('body').height()-$(window).height())*perc - }, 200); + if (sectionId) { + $('html, body').animate({ + scrollTop: ($('#' + sectionId).offset().top) + }, 300); + } else { + if (location.hash !== '' || Boolean(perc)) { + if (!Boolean(perc)) { + $('html, body').animate({ + scrollTop: ($('#content').offset().top + 10) + }, 300); + $('html, body').animate({ + scrollTop: ($('#content').offset().top) + }, 300); + } else { + $('html, body').animate({ + scrollTop: ($('body').height()-$(window).height())*perc + }, 200); + } } } From 4473142341d085c0368f29cc60e2974dfd9b779c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 4 Dec 2015 22:15:13 +0800 Subject: [PATCH 0026/1139] fix error --- docs/intro.md | 8 ++++---- docs/proxy.md | 40 +++++++++++++++++----------------------- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index ae5b35395..43ec3a68d 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -215,7 +215,7 @@ $ npm install babel-core@5 下面是`Babel`配合`Browserify`一起使用,可以生成浏览器能够直接加载的脚本。首先,安装`babelify`模块。 ```bash -$ npm install --save-dev babelify babel-preset-2015 +$ npm install --save-dev babelify babel-preset-es2015 ``` 然后,再用命令行转换ES6脚本。 @@ -241,10 +241,10 @@ $ browserify script.js -o bundle.js \ Node脚本之中,需要转换ES6脚本,可以像下面这样写。 -先安装`babel-core`和`babel-preset-2015`。 +先安装`babel-core`和`babel-preset-es2015`。 ```javascript -$ npm install --save-dev babel-core babel-preset-2015 +$ npm install --save-dev babel-core babel-preset-es2015 ``` 然后,在项目根目录下新建一个`.babelrc`文件。 @@ -395,7 +395,7 @@ $ npm install -g traceur 安装成功后,就可以在命令行下使用traceur了。 -traceur直接运行es6脚本文件,会在标准输出显示运行结果,以前面的calc.js为例。 +traceur直接运行es6脚本文件,会在标准输出显示运行结果,以前面的`calc.js`为例。 ```bash $ traceur calc.js diff --git a/docs/proxy.md b/docs/proxy.md index 119c289cf..96d8a2dc9 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -137,9 +137,9 @@ fproxy.foo; // 'Hello, foo' 拦截`for (var x in proxy)`,返回一个遍历器。 -**(6)hasOwn(target, propKey)** +**(6)has(target, propKey)** -拦截`proxy.hasOwnProperty('foo')`,返回一个布尔值。 +拦截`in`运算符,返回一个布尔值。 **(7)ownKeys(target)** @@ -820,30 +820,24 @@ var loggedObj = new Proxy(obj, { ## Reflect对象的方法 -Reflect对象的方法清单如下。 +Reflect对象的方法清单如下,共14个。 -- Reflect.getOwnPropertyDescriptor(target,name) +- 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.getOwnPropertyNames(target) -- Reflect.getPrototypeOf(target) -- Reflect.setPrototypeOf(target, prototype) - Reflect.deleteProperty(target,name) +- Reflect.has(target,name) +- Reflect.ownKeys(target) - Reflect.enumerate(target) -- Reflect.freeze(target) -- Reflect.seal(target) -- Reflect.preventExtensions(target) -- Reflect.isFrozen(target) -- Reflect.isSealed(target) - Reflect.isExtensible(target) -- Reflect.has(target,name) -- Reflect.hasOwn(target,name) -- Reflect.keys(target) -- Reflect.get(target,name,receiver) -- Reflect.set(target,name,value,receiver) -- Reflect.apply(target,thisArg,args) -- Reflect.construct(target,args) +- Reflect.preventExtensions(target) +- Reflect.getOwnPropertyDescriptor(target, name) +- Reflect.getPrototypeOf(target) +- Reflect.setPrototypeOf(target, prototype) -上面这些方法的作用,大部分与Object对象的同名方法的作用都是相同的。下面是对其中几个方法的解释。 +上面这些方法的作用,大部分与`Object`对象的同名方法的作用都是相同的,而且它与`Proxy`对象的方法是一一对应的。下面是对其中几个方法的解释。 **(1)Reflect.get(target,name,receiver)** @@ -876,15 +870,15 @@ Reflect.get(obj, "foo", wrapper); **(5)Reflect.construct(target, args)** -等同于`new target(...args)`,这提供了一种不使用new,来调用构造函数的方法。 +等同于`new target(...args)`,这提供了一种不使用`new`,来调用构造函数的方法。 **(6)Reflect.getPrototypeOf(obj)** -读取对象的\_\_proto\_\_属性,等同于`Object.getPrototypeOf(obj)`。 +读取对象的`__proto__`属性,对应`Object.getPrototypeOf(obj)`。 **(7)Reflect.setPrototypeOf(obj, newProto)** -设置对象的\_\_proto\_\_属性。注意,Object对象没有对应这个方法的方法。 +设置对象的`__proto__`属性,对应`Object.setPrototypeOf(obj, newProto)`。 **(8)Reflect.apply(fun,thisArg,args)** From 6be5d7e49b8ad2d186f2e24b65c49f2717cfc4c5 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 6 Dec 2015 23:10:32 +0800 Subject: [PATCH 0027/1139] edit module --- docs/module.md | 53 +++++++++++++++++++++++++++++++++-------------- docs/reference.md | 1 + 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/docs/module.md b/docs/module.md index 37b012a98..ddb1f214f 100644 --- a/docs/module.md +++ b/docs/module.md @@ -9,18 +9,26 @@ ES6的Class只是面向对象编程的语法糖,升级了ES5的构造函数的 ES6模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS和AMD模块,都只能在运行时确定这些东西。比如,CommonJS模块就是对象,输入时必须查找对象属性。 ```javascript +// CommonJS模块 let { stat, exists, readFile } = require('fs'); + +// 等同于 +let _fs = require('fs'); +let stat = _fs.stat, exists = _fs.exists, readfile = _fs.readfile; ``` -上面代码的实质是整体加载`fs`模块(即加载`fs`的所有方法),然后使用时用到3个方法。这种加载称为“运行时加载”。 +上面代码的实质是整体加载`fs`模块(即加载`fs`的所有方法),生成一个对象(`_fs`),然后再从这个对象上面读取3个方法。这种加载称为“运行时加载”,因为只有运行时才能得到这个对象,导致完全没办法在编译时做“静态优化”。 -ES6模块不是对象,而是通过export命令显式指定输出的代码,输入时也采用静态命令的形式。 +ES6模块不是对象,而是通过`export`命令显式指定输出的代码,输入时也采用静态命令的形式。 ```javascript +// ES6模块 import { stat, exists, readFile } from 'fs'; ``` -上面代码的实质是从`fs`模块加载3个方法,其他方法不加载。这种加载称为“编译时加载”,即ES6可以在编译时就完成模块编译,效率要比CommonJS模块的加载方式高。 +上面代码的实质是从`fs`模块加载3个方法,其他方法不加载。这种加载称为“编译时加载”,即ES6可以在编译时就完成模块编译,效率要比CommonJS模块的加载方式高。当然,这也导致了没法引用ES6模块本身,因为它不是对象。 + +由于ES6模块是编译时加载,使得静态分析成为可能。有了它,就能进一步拓宽JavaScript的语法,比如引入宏(macro)和类型检验(type system)这些只能靠静态分析实现的功能。 除了静态加载带来的各种好处,ES6模块还有以下好处。 @@ -105,10 +113,10 @@ export { 上面代码使用`as`关键字,重命名了函数`v1`和`v2`的对外接口。重命名后,`v2`可以用不同的名字输出两次。 -最后,`export`命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内,就会报错,下面的`import`命令也是如此。 +最后,`export`命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内,就会报错,下面的`import`命令也是如此。这是因为处于条件代码块之中,就没法做静态优化了,违背了ES6模块的设计初衷。 ```javascript -function foo () { +function foo() { export default 'bar' // SyntaxError } foo() @@ -377,9 +385,7 @@ console.log(exp(math.E)); ES6模块加载的机制,与CommonJS模块完全不同。CommonJS模块输出的是一个值的拷贝,而ES6模块输出的是值的引用。 -CommonJS模块输入的是被输出值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。请看下面这个例子。 - -下面是一个模块文件`lib.js`。 +CommonJS模块输出的是被输出值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。请看下面这个模块文件`lib.js`的例子。 ```javascript // lib.js @@ -393,9 +399,7 @@ module.exports = { }; ``` -上面代码输出内部变量`counter`和改写这个变量的内部方法`incCounter`。 - -然后,加载上面的模块。 +上面代码输出内部变量`counter`和改写这个变量的内部方法`incCounter`。然后,在`main.js`里面加载这个模块。 ```javascript // main.js @@ -420,14 +424,14 @@ export function incCounter() { counter++; } -// main1.js +// main.js import { counter, incCounter } from './lib'; console.log(counter); // 3 incCounter(); console.log(counter); // 4 ``` -上面代码说明,ES6模块输入的变量`counter`是活的,完全反映其所在模块`lib.js`内部的变化。 +上面代码说明,ES6模块输入的变量`counter`是活的,完全反应其所在模块`lib.js`内部的变化。 再举一个出现在`export`一节中的例子。 @@ -503,13 +507,13 @@ CommonJS的一个模块,就是一个脚本文件。`require`命令第一次加 } ``` -上面代码中,该对象的id属性是模块名,`exports`属性是模块输出的各个接口,`loaded`属性是一个布尔值,表示该模块的脚本是否执行完毕。其他还有很多属性,这里都省略了。 +上面代码中,该对象的`id`属性是模块名,`exports`属性是模块输出的各个接口,`loaded`属性是一个布尔值,表示该模块的脚本是否执行完毕。其他还有很多属性,这里都省略了。 -以后需要用到这个模块的时候,就会到exports属性上面取值。即使再次执行require命令,也不会再次执行该模块,而是到缓存之中取值。 +以后需要用到这个模块的时候,就会到`exports`属性上面取值。即使再次执行`require`命令,也不会再次执行该模块,而是到缓存之中取值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。 ### CommonJS模块的循环加载 -CommonJS模块的重要特性是加载时执行,即脚本代码在`require`的时候,就会全部执行。CommonJS的做法是,一旦出现某个模块被"循环加载",就只输出已经执行的部分,还未执行的部分不会输出。 +CommonJS模块的重要特性是加载时执行,即脚本代码在`require`的时候,就会全部执行。一旦出现某个模块被"循环加载",就只输出已经执行的部分,还未执行的部分不会输出。 让我们来看,Node[官方文档](https://nodejs.org/api/modules.html#modules_cycles)里面的例子。脚本文件`a.js`代码如下。 @@ -571,6 +575,23 @@ 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`时,不会去执行模块,只是生成一个指向被加载模块的引用,需要开发者自己保证,真正取值的时候能够取到值。 diff --git a/docs/reference.md b/docs/reference.md index 897824a05..4af404cf0 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -180,6 +180,7 @@ - Axel Rauschmayer, [ECMAScript 6 modules: the final syntax](http://www.2ality.com/2014/09/es6-modules-final.html): ES6模块的介绍,以及与CommonJS规格的详细比较 - Dave Herman, [Static module resolution](http://calculist.org/blog/2012/06/29/static-module-resolution/): ES6模块的静态化设计思想 - 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模块的设计思想 ## 工具 From 974d9825bfcdedf5953feb338bde227a2d5b7a44 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 13 Dec 2015 21:24:16 +0800 Subject: [PATCH 0028/1139] edit generater --- docs/arraybuffer.md | 2 ++ docs/destructuring.md | 2 +- docs/generator.md | 47 ++++++++++++++++++++++--------------------- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index 5688ac3a7..cc9351236 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -30,6 +30,8 @@ Uint32|4|32位不带符号的整数|unsigned int Float32|4|32位浮点数|float Float64|8|64位浮点数|double +注意,二进制数组并不是真正的数组,而是类似数组的对象。 + 很多浏览器操作的API,用到了二进制数组操作二进制数据,下面是其中的几个。 - File API diff --git a/docs/destructuring.md b/docs/destructuring.md index 7381a0feb..0fe0aaff8 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -589,7 +589,7 @@ f({z: 3, y: 2, x: 1}) 解构赋值对提取JSON对象中的数据,尤其有用。 -```js +```javascript var jsonData = { id: 42, status: "OK", diff --git a/docs/generator.md b/docs/generator.md index a954ccc74..cd9ea7727 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -108,9 +108,9 @@ setTimeout(function () { }, 2000); ``` -上面代码中,函数`f`如果是普通函数,在为变量generator赋值时就会执行。但是,函数`f`是一个Generator函数,就变成只有调用`next`方法时,函数`f`才会执行。 +上面代码中,函数`f`如果是普通函数,在为变量`generator`赋值时就会执行。但是,函数`f`是一个Generator函数,就变成只有调用`next`方法时,函数`f`才会执行。 -另外需要注意,yield语句不能用在普通函数中,否则会报错。 +另外需要注意,`yield`语句不能用在普通函数中,否则会报错。 ```javascript (function (){ @@ -126,9 +126,9 @@ setTimeout(function () { ```javascript var arr = [1, [[2, 3], 4], [5, 6]]; -var flat = function* (a){ - a.forEach(function(item){ - if (typeof item !== 'number'){ +var flat = function* (a) { + a.forEach(function (item) { + if (typeof item !== 'number') { yield* flat(item); } else { yield item; @@ -141,16 +141,16 @@ for (var f of flat(arr)){ } ``` -上面代码也会产生句法错误,因为`forEach`方法的参数是一个普通函数,但是在里面使用了`yield`语句。一种修改方法是改用`for`循环。 +上面代码也会产生句法错误,因为`forEach`方法的参数是一个普通函数,但是在里面使用了`yield`语句(这个函数里面还使用了`yield*`语句,这里可以不用理会,详细说明见后文)。一种修改方法是改用`for`循环。 ```javascript var arr = [1, [[2, 3], 4], [5, 6]]; -var flat = function* (a){ +var flat = function* (a) { var length = a.length; - for(var i =0;i Date: Mon, 14 Dec 2015 21:43:59 +0800 Subject: [PATCH 0029/1139] edit ditto.js --- config.js | 26 ++++++++++++++++++++++++++ index.html | 34 +++++++++++++--------------------- 2 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 config.js diff --git a/config.js b/config.js new file mode 100644 index 000000000..2ea5eb093 --- /dev/null +++ b/config.js @@ -0,0 +1,26 @@ +var CONFIG = { + // your website's title + document_title: "ECMAScript 6入门", + + // index page + index: "README.md", + + // sidebar file + sidebar_file: "sidebar.md", + + // where the docs are actually stored on github - so you can edit + base_url: "https://github.com/ruanyf/es6tutorial/edit/gh-pages", +}; + +// ************************** +// DON'T EDIT FOLLOWING CODES +// ************************** + +addConfig(ditto, CONFIG); + +function addConfig(obj, conf) { + Object.keys(conf).forEach(function (key) { + obj[key] = conf[key]; + }); +} + diff --git a/index.html b/index.html index f0cf41184..a354ff355 100644 --- a/index.html +++ b/index.html @@ -3,13 +3,6 @@ - - - - - - - ECMAScript 6入门 @@ -18,8 +11,8 @@ - -
      + +
      back to top
      edit
      @@ -28,21 +21,20 @@
      上一章
      下一章
      + + + + + + + From b7a766f54ba687c438393911a68ee3a33fb66a82 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 16 Dec 2015 10:14:57 +0800 Subject: [PATCH 0030/1139] edit Reflect --- docs/proxy.md | 61 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 13 deletions(-) diff --git a/docs/proxy.md b/docs/proxy.md index 96d8a2dc9..6095d2a9b 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -769,19 +769,44 @@ revoke(); proxy.foo // TypeError: Revoked ``` -Proxy.revocable方法返回一个对象,该对象的proxy属性是Proxy实例,revoke属性是一个函数,可以取消Proxy实例。上面代码中,当执行revoke函数之后,再访问Proxy实例,就会抛出一个错误。 +`Proxy.revocable`方法返回一个对象,该对象的`proxy`属性是`Proxy`实例,`revoke`属性是一个函数,可以取消`Proxy`实例。上面代码中,当执行`revoke`函数之后,再访问`Proxy`实例,就会抛出一个错误。 ## Reflect概述 -Reflect对象与Proxy对象一样,也是ES6为了操作对象而提供的新API。Reflect对象的设计目的有这样几个。 +`Reflect`对象与`Proxy`对象一样,也是ES6为了操作对象而提供的新API。`Reflect`对象的设计目的有这样几个。 -(1) 将Object对象的一些明显属于语言层面的方法,放到Reflect对象上。现阶段,某些方法同时在Object和Reflect对象上部署,未来的新方法将只部署在Reflect对象上。 +(1) 将`Object`对象的一些明显属于语言内部的方法(比如`Object.defineProperty`),放到`Reflect`对象上。现阶段,某些方法同时在`Object`和`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`。 -(3) 让Object操作都变成函数行为。某些Object操作是命令式,比如`name in obj`和`delete obj[name]`,而`Reflect.has(obj, name)`和`Reflect.deleteProperty(obj, name)`让它们变成了函数行为。 +```javascript +// 老写法 +try { + Object.defineProperty(target, property, attributes); + // success +} catch (e) { + // failure +} + +// 新写法 +if (Reflect.defineProperty(target, property, attributes)) { + // success +} else { + // failure +} +``` -(4)Reflect对象的方法与Proxy对象的方法一一对应,只要是Proxy对象的方法,就能在Reflect对象上找到对应的方法。这就让Proxy对象可以方便地调用对应的Reflect方法,完成默认行为,作为修改行为的基础。也就是说,不管Proxy怎么修改默认行为,你总可以在Reflect上获取默认行为。 +(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, { @@ -795,7 +820,7 @@ Proxy(target, { }); ``` -上面代码中,Proxy方法拦截target对象的属性赋值行为。它采用`Reflect.set`方法将值赋值给对象的属性,然后再部署额外的功能。 +上面代码中,`Proxy`方法拦截`target`对象的属性赋值行为。它采用`Reflect.set`方法将值赋值给对象的属性,然后再部署额外的功能。 下面是另一个例子。 @@ -816,11 +841,21 @@ var loggedObj = new Proxy(obj, { }); ``` -上面代码中,每一个Proxy对象的拦截操作(`get`、`delete`、`has`),内部都调用对应的Reflect方法,保证原生行为能够正常执行。添加的工作,就是将每一个操作输出一行日志。 +上面代码中,每一个`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对象的方法清单如下,共14个。 +`Reflect`对象的方法清单如下,共14个。 - Reflect.apply(target,thisArg,args) - Reflect.construct(target,args) @@ -839,11 +874,11 @@ Reflect对象的方法清单如下,共14个。 上面这些方法的作用,大部分与`Object`对象的同名方法的作用都是相同的,而且它与`Proxy`对象的方法是一一对应的。下面是对其中几个方法的解释。 -**(1)Reflect.get(target,name,receiver)** +**(1)Reflect.get(target, name, receiver)** -查找并返回target对象的name属性,如果没有该属性,则返回undefined。 +查找并返回`target`对象的`name`属性,如果没有该属性,则返回`undefined`。 -如果name属性部署了读取函数,则读取函数的this绑定receiver。 +如果`name`属性部署了读取函数,则读取函数的this绑定`receiver`。 ```javascript var obj = { @@ -858,7 +893,7 @@ Reflect.get(obj, "foo", wrapper); **(2)Reflect.set(target, name, value, receiver)** -设置target对象的name属性等于value。如果name属性设置了赋值函数,则赋值函数的this绑定receiver。 +设置`target`对象的`name`属性等于`value`。如果`name`属性设置了赋值函数,则赋值函数的`this`绑定`receiver`。 **(3)Reflect.has(obj, name)** From 27212169633e9af1b75f90e162ba4736c862dc9e Mon Sep 17 00:00:00 2001 From: Ke Xu Date: Wed, 16 Dec 2015 17:33:06 -0500 Subject: [PATCH 0031/1139] 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 6508164bc..c941a350e 100644 --- a/docs/class.md +++ b/docs/class.md @@ -599,7 +599,7 @@ obj.toString(); // MyObject: [object Object] var p1 = new Point(2, 3); var p2 = new ColorPoint(2, 3, 'red'); -p2.__proto__ === p1.__proto // false +p2.__proto__ === p1.__proto__ // false p2.__proto__.__proto__ === p1.__proto__ // true ``` From 50a63996d5a8e853f77ecf4836ad8bbf2af62783 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 17 Dec 2015 14:16:23 +0800 Subject: [PATCH 0032/1139] edit module --- docs/module.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/module.md b/docs/module.md index ddb1f214f..80713e6c2 100644 --- a/docs/module.md +++ b/docs/module.md @@ -374,9 +374,9 @@ export { area as circleArea } from 'circle'; ```javascript // main.js -module math from "circleplus"; +import * as math from "circleplus"; import exp from "circleplus"; -console.log(exp(math.E)); +console.log(exp(math.e)); ``` 上面代码中的`import exp`表示,将`circleplus`模块的默认方法加载为`exp`方法。 From 767565085d697252d1d123fe38dabc5c5f5c76fd Mon Sep 17 00:00:00 2001 From: pwnn Date: Thu, 17 Dec 2015 17:01:25 +0800 Subject: [PATCH 0033/1139] fix typo --- docs/let.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/let.md b/docs/let.md index 859a343b3..8d1fb56c3 100644 --- a/docs/let.md +++ b/docs/let.md @@ -428,7 +428,7 @@ console.log(B); // 3 ## 全局对象的属性 -全局对象是最顶层的对象,在浏览器环境指的是`window`象,在Node.js指的是`global`对象。ES5之中,全局对象的属性与全局变量是等价的。 +全局对象是最顶层的对象,在浏览器环境指的是`window`对象,在Node.js指的是`global`对象。ES5之中,全局对象的属性与全局变量是等价的。 ```javascript window.a = 1; From 61d7165df96d623f5d4003a9b13ce48ab4fb9ada Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 22 Dec 2015 16:28:25 +0800 Subject: [PATCH 0034/1139] edit index.html --- docs/async.md | 8 ++++---- docs/object.md | 2 +- index.html | 12 ++++++------ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/async.md b/docs/async.md index fa13db1e2..ff94253af 100644 --- a/docs/async.md +++ b/docs/async.md @@ -98,22 +98,22 @@ Promise 的最大问题是代码冗余,原来的任务被Promise 包装了一 举例来说,读取文件的协程写法如下。 ```javascript -function asnycJob() { +function *asnycJob() { // ...其他代码 var f = yield readFile(fileA); // ...其他代码 } ``` -上面代码的函数asyncJob是一个协程,它的奥妙就在其中的yield命令。它表示执行到此处,执行权将交给其他协程。也就是说,yield命令是异步两个阶段的分界线。 +上面代码的函数`asyncJob`是一个协程,它的奥妙就在其中的`yield`命令。它表示执行到此处,执行权将交给其他协程。也就是说,`yield`命令是异步两个阶段的分界线。 -协程遇到 yield 命令就暂停,等到执行权返回,再从暂停的地方继续往后执行。它的最大优点,就是代码的写法非常像同步操作,如果去除yield命令,简直一模一样。 +协程遇到`yield`命令就暂停,等到执行权返回,再从暂停的地方继续往后执行。它的最大优点,就是代码的写法非常像同步操作,如果去除yield命令,简直一模一样。 ### Generator函数的概念 Generator函数是协程在ES6的实现,最大特点就是可以交出函数的执行权(即暂停执行)。 -整个Generator函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用yield语句注明。Generator函数的执行方法如下。 +整个Generator函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用`yield`语句注明。Generator函数的执行方法如下。 ```javascript function* gen(x){ diff --git a/docs/object.md b/docs/object.md index b6eb72776..c693cf121 100644 --- a/docs/object.md +++ b/docs/object.md @@ -227,7 +227,7 @@ var baz = { [foo]: 'abc'}; ```javascript var person = { - sayName: function() { + sayName() { console.log(this.name); }, get firstName() { diff --git a/index.html b/index.html index a354ff355..64553c17c 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,12 @@ ECMAScript 6入门 + + + + + + @@ -21,12 +27,6 @@
      上一章
      下一章
      - - - - - - + +``` + +注意,网页中实时将ES6代码转为ES5,对性能会有影响。生产环境需要加载已经转码完成的脚本。 + +下面是如何将代码打包成浏览器可以使用的脚本,以`Babel`配合`Browserify`为例。首先,安装`babelify`模块。 ```bash $ npm install --save-dev babelify babel-preset-es2015 @@ -441,13 +450,15 @@ $ npm install --save-dev eslint babel-eslint } ``` -Mocha则是一个测试框架,如果需要执行使用ES6语法的测试脚本,可以修改`package.json`的`scripts.test`脚本如下。 +Mocha则是一个测试框架,如果需要执行使用ES6语法的测试脚本,可以修改`package.json`的`scripts.test`。 ```javascript +"scripts": { "test": "mocha --ui qunit --compilers js:babel-core/register" +} ``` -上面命令中,`--compilers`参数指定脚本的转码器,意为后缀名为`js`的文件,都需要使用`babel-core/register`先转码。 +上面命令中,`--compilers`参数指定脚本的转码器,规定后缀名为`js`的文件,都需要使用`babel-core/register`先转码。 ## Traceur转码器 From 9fb9439d895a8b151eb89ca1717641d8bf08a5bc Mon Sep 17 00:00:00 2001 From: CntChen Date: Mon, 25 Jan 2016 12:48:40 +0800 Subject: [PATCH 0069/1139] edit demo code --- docs/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator.md b/docs/generator.md index 3ca20ab68..5cfce84d3 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -735,7 +735,7 @@ function* bar() { function* bar() { yield 'x'; for (let v of foo()) { - console.log(v); + yield v; } yield 'y'; } From 070985c4a44033e3355d5cc6c98bc7ab7a7ffca9 Mon Sep 17 00:00:00 2001 From: fjywan Date: Mon, 25 Jan 2016 15:20:34 +0800 Subject: [PATCH 0070/1139] Update class.md --- docs/class.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/class.md b/docs/class.md index c941a350e..d8e1656ca 100644 --- a/docs/class.md +++ b/docs/class.md @@ -74,7 +74,6 @@ class Point { // 等同于 Point.prototype = { - constructor(){}, toString(){}, toValue(){} } From 1cdc04bd8b8b7eedfb6dde9219cebf97fc709b6b Mon Sep 17 00:00:00 2001 From: catwarrior Date: Tue, 26 Jan 2016 15:49:44 +0800 Subject: [PATCH 0071/1139] Update async.md Refer to your previous blog post, it looks better. http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html --- docs/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index 5e3ee78bf..b177dc4d5 100644 --- a/docs/async.md +++ b/docs/async.md @@ -1,6 +1,6 @@ # 异步操作和Async函数 -异步编程对JavaScript语言太重要。JavaScript只有一根线程,如果没有异步编程,根本没法用,非卡死不可。 +异步编程对JavaScript语言太重要。Javascript语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。 ES6诞生以前,异步编程的方法,大概有下面四种。 From fc01552d64baedff0ea83feedf5accd1730ac24c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 29 Jan 2016 09:25:39 +0800 Subject: [PATCH 0072/1139] edit docs/symbol --- docs/destructuring.md | 2 +- docs/promise.md | 122 +++++++++++++++++++++++++++++++++++------- docs/reference.md | 1 + docs/symbol.md | 2 +- 4 files changed, 107 insertions(+), 20 deletions(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index 0fe0aaff8..fdf714fcb 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -429,7 +429,7 @@ function add([x, y]){ add([1, 2]) // 3 ``` -上面代码中,函数`add`的参数实际上不是一个数组,而是通过解构得到的变量`x`和`y`。 +上面代码中,函数`add`的参数表面上是一个数组,但在传入参数的那一刻,数组参数就被解构成变量`x`和`y`。对于函数内部的代码来说,它们能感受到的参数就是`x`和`y`。 下面是另一个例子。 diff --git a/docs/promise.md b/docs/promise.md index dd10eb33e..9a1e4c12a 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -2,9 +2,9 @@ ## Promise的含义 -`Promise`在JavaScript语言早有实现,ES6将其写进了语言标准,统一了用法,原生提供了`Promise`对象。 +Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了`Promise`对象。 -所谓`Promise`,就是一个对象,用来传递异步操作的消息。它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的API,可供进一步处理。 +所谓`Promise`,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise是一个对象,从它可以获取异步操作的消息。Promise提供统一的API,各种异步操作都可以用同样的方法进行处理。 `Promise`对象有以下两个特点。 @@ -68,6 +68,27 @@ timeout(100).then((value) => { 上面代码中,`timeout`方法返回一个Promise实例,表示一段时间以后才会发生的结果。过了指定的时间(`ms`参数)以后,Promise实例的状态变为Resolved,就会触发`then`方法绑定的回调函数。 +Promise新建后就会立即执行。 + +```javascript +let promise = new Promise(function(resolve, reject) { + console.log('Promise'); + resolve(); +}); + +promise.then(function() { + console.log('Resolved.'); +}); + +console.log('Hi!'); + +// Promise +// Hi! +// Resolved +``` + +上面代码中,Promise新建后立即执行,所以首先输出的是“Promise”。然后,`then`方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以“Resolved”最后输出。 + 下面是异步加载图片的例子。 ```javascript @@ -198,7 +219,7 @@ getJSON("/post/1.json").then( ## Promise.prototype.catch() -Promise.prototype.catch方法是`.then(null, rejection)`的别名,用于指定发生错误时的回调函数。 +`Promise.prototype.catch`方法是`.then(null, rejection)`的别名,用于指定发生错误时的回调函数。 ```javascript getJSON("/posts.json").then(function(posts) { @@ -209,7 +230,7 @@ getJSON("/posts.json").then(function(posts) { }); ``` -上面代码中,`getJSON`方法返回一个Promise对象,如果该对象状态变为Resolved,则会调用`then`方法指定的回调函数;如果异步操作抛出错误,状态就会变为Rejected,就会调用`catch`方法指定的回调函数,处理这个错误。 +上面代码中,`getJSON`方法返回一个Promise对象,如果该对象状态变为`Resolved`,则会调用`then`方法指定的回调函数;如果异步操作抛出错误,状态就会变为`Rejected`,就会调用`catch`方法指定的回调函数,处理这个错误。 ```javascript p.then((val) => console.log("fulfilled:", val)) @@ -225,15 +246,41 @@ p.then((val) => console.log(fulfilled:", val)) ```javascript var promise = new Promise(function(resolve, reject) { - throw new Error('test') + throw new Error('test'); +}); +promise.catch(function(error) { + console.log(error); }); -promise.catch(function(error) { console.log(error) }); // Error: test ``` -上面代码中,Promise抛出一个错误,就被`catch`方法指定的回调函数捕获。 +上面代码中,Promise抛出一个错误,就被`catch`方法指定的回调函数捕获。注意,上面的写法与下面两种写法是等价的。 + +```javascript +// 写法一 +var promise = new Promise(function(resolve, reject) { + try { + throw new Error('test'); + } catch(e) { + reject(e); + } +}); +promise.catch(function(error) { + console.log(error); +}); + +// 写法二 +var promise = new Promise(function(resolve, reject) { + reject(new Error('test')); +}); +promise.catch(function(error) { + console.log(error); +}); +``` + +比较上面两种写法,可以发现`reject`方法的作用,等同于抛出错误。 -如果Promise状态已经变成resolved,再抛出错误是无效的。 +如果Promise状态已经变成`Resolved`,再抛出错误是无效的。 ```javascript var promise = new Promise(function(resolve, reject) { @@ -300,7 +347,7 @@ someAsyncThing().then(function() { }); ``` -上面代码中,`someAsyncThing`函数产生的Promise对象会报错,但是由于没有指定`catch`方法,这个错误不会被捕获,也不会传递到外层代码,导致运行后没有任何输出。 +上面代码中,`someAsyncThing`函数产生的Promise对象会报错,但是由于没有指定`catch`方法,这个错误不会被捕获,也不会传递到外层代码,导致运行后没有任何输出。注意,Chrome浏览器不遵守这条规定,它会抛出错误“ReferenceError: x is not defined”。 ```javascript var promise = new Promise(function(resolve, reject) { @@ -312,7 +359,7 @@ promise.then(function(value) { console.log(value) }); // Uncaught Error: test ``` -上面代码中,Promise指定在下一轮“事件循环”再抛出错误,结果由于没有指定使用try...catch语句,就冒泡到最外层,成了未捕获的错误。因为此时,Promise的函数体已经运行结束了,所以这个错误是在Promise函数体外抛出的。 +上面代码中,Promise指定在下一轮“事件循环”再抛出错误,结果由于没有指定使用`try...catch`语句,就冒泡到最外层,成了未捕获的错误。因为此时,Promise的函数体已经运行结束了,所以这个错误是在Promise函数体外抛出的。 Node.js有一个`unhandledRejection`事件,专门监听未捕获的`reject`错误。 @@ -482,7 +529,7 @@ p.catch(error => console.log(error)) ## Promise.resolve() -有时需要将现有对象转为Promise对象,Promise.resolve方法就起到这个作用。 +有时需要将现有对象转为Promise对象,`Promise.resolve`方法就起到这个作用。 ```javascript var jsPromise = Promise.resolve($.ajax('/whatever.json')); @@ -498,7 +545,44 @@ Promise.resolve('foo') new Promise(resolve => resolve('foo')) ``` -如果Promise.resolve方法的参数,不是具有then方法的对象(又称thenable对象),则返回一个新的Promise对象,且它的状态为Resolved。 +`Promise.resolve`方法的参数分成四种情况。 + +**(1)参数是一个Promise实例** + +如果参数是Promise实例,那么`Promise.resolve`将不做任何修改、原封不动地返回这个实例。 + +**(2)参数是一个`thenable`对象** + +`thenable`对象指的是具有`then`方法的对象,比如下面这个对象。 + +```javascript +let thenable = { + then: function(resolve, reject) { + resolve(42); + } +}; +``` + +`Promise.resolve`方法会将这个对象转为Promise对象,然后就立即执行`thenable`对象的`then`方法。 + +```javascript +let thenable = { + then: function(resolve, reject) { + resolve(42); + } +}; + +let p1 = Promise.resolve(thenable); +p1.then(function(value) { + console.log(value); // 42 +}); +``` + +上面代码中,`thenable`对象的`then`方法执行后,对象`p1`的状态就变为`resolved`,从而立即执行最后那个`then`方法指定的回调函数,输出42。 + +**(3)参数不是具有`then`方法的对象,或根本就不是对象** + +如果参数是一个原始值,或者是一个不具有`then`方法的对象,则`Promise.resolve`方法返回一个新的Promise对象,状态为`Resolved`。 ```javascript var p = Promise.resolve('Hello'); @@ -509,9 +593,13 @@ p.then(function (s){ // Hello ``` -上面代码生成一个新的Promise对象的实例p。由于字符串Hello不属于异步操作(判断方法是它不是具有then方法的对象),返回Promise实例的状态从一生成就是Resolved,所以回调函数会立即执行。Promise.resolve方法的参数,会同时传给回调函数。 +上面代码生成一个新的Promise对象的实例`p`。由于字符串`Hello`不属于异步操作(判断方法是它不是具有then方法的对象),返回Promise实例的状态从一生成就是`Resolved`,所以回调函数会立即执行。`Promise.resolve`方法的参数,会同时传给回调函数。 -Promise.resolve方法允许调用时不带参数。所以,如果希望得到一个Promise对象,比较方便的方法就是直接调用Promise.resolve方法。 +**(4)不带有任何参数** + +`Promise.resolve`方法允许调用时不带参数,直接返回一个`Resolved`状态的Promise对象。 + +所以,如果希望得到一个Promise对象,比较方便的方法就是直接调用`Promise.resolve`方法。 ```javascript var p = Promise.resolve(); @@ -521,13 +609,11 @@ p.then(function () { }); ``` -上面代码的变量p就是一个Promise对象。 - -如果Promise.resolve方法的参数是一个Promise实例,则会被原封不动地返回。 +上面代码的变量`p`就是一个Promise对象。 ## Promise.reject() -`Promise.reject(reason)`方法也会返回一个新的Promise实例,该实例的状态为`rejected`。`Promise.reject`方法的参数`reason`,会被传递给实例的回调函数。 +`Promise.reject(reason)`方法也会返回一个新的Promise实例,该实例的状态为`rejected`。它的参数用法与`Promise.resolve`方法完全一致。 ```javascript var p = Promise.reject('出错了'); diff --git a/docs/reference.md b/docs/reference.md index 28d417af4..64a4e627d 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -190,6 +190,7 @@ ## 工具 +- Babel, [Babel Handbook](https://github.com/thejameskyle/babel-handbook/tree/master/translations/en): Babel的用法介绍 - Google, [traceur-compiler](https://github.com/google/traceur-compiler): Traceur编译器 - Casper Beyer, [ECMAScript 6 Features and Tools](http://caspervonb.github.io/2014/03/05/ecmascript6-features-and-tools.html) - Stoyan Stefanov, [Writing ES6 today with jstransform](http://www.phpied.com/writing-es6-today-with-jstransform/) diff --git a/docs/symbol.md b/docs/symbol.md index 191f25180..e0be8a858 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -383,7 +383,7 @@ iframe.contentWindow.Symbol.for('foo') === Symbol.for('foo') ### Symbol.hasInstance -对象的`Symbol.hasInstance`属性,指向一个内部方法。该对象使用`instanceof`运算符时,会调用这个方法,判断该对象是否为某个构造函数的实例。比如,`foo instanceof Foo`在语言内部,实际调用的是`Foo[Symbol.hasInstance](foo)`。 +对象的`Symbol.hasInstance`属性,指向一个内部方法。当其他对象使用`instanceof`运算符,判断是否为该对象的实例时,会调用这个方法。比如,`foo instanceof Foo`在语言内部,实际调用的是`Foo[Symbol.hasInstance](foo)`。 ```javascript class MyClass { From 50d4285105caab47ced0c2ea47a7a3550ed45b89 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 30 Jan 2016 00:33:01 +0800 Subject: [PATCH 0073/1139] edit symbol/hasInstance --- docs/symbol.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/symbol.md b/docs/symbol.md index e0be8a858..9a54d5b3e 100644 --- a/docs/symbol.md +++ b/docs/symbol.md @@ -391,8 +391,8 @@ class MyClass { return foo instanceof Array; } } -var o = new MyClass(); -o instanceof Array // false + +[1, 2, 3] instanceof MyClass() // true ``` ### Symbol.isConcatSpreadable From 5d673d9b98079edd1f44714363fd4a3d12f3a332 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 31 Jan 2016 14:57:51 +0800 Subject: [PATCH 0074/1139] add Object/Object.values(),Object.entries() --- docs/object.md | 113 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/docs/object.md b/docs/object.md index 3935d5c85..57a84a3f0 100644 --- a/docs/object.md +++ b/docs/object.md @@ -670,6 +670,117 @@ Object.getPrototypeOf(rec) === Rectangle.prototype // false ``` +## Object.values(),Object.entries() + +### Object.keys() + +ES5引入了`Object.keys`方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。 + +```javascript +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`。 + +```javascript +let obj = { a: 1, b: 2, c: 3 }; + +for (let key of keys(obj)) { + // ['a', 'b', 'c'] +} + +for (let value of values(obj)) { + // [1, 2, 3] +} + +for (let [key, value] of entries(obj)) { + // [['a', 1], ['b', 2], ['c', 3]] +} +``` + +### Object.values() + +`Object.values`方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。 + +```javascript +var obj = { foo: "bar", baz: 42 }; +Object.values(obj) +// ["bar", 42] +``` + +返回数组的成员顺序,与本章的《属性的遍历》部分介绍的排列规则一致。 + +```javascript +var obj = { 100: 'a', 2: 'b', 7: 'c' }; +Object.values(obj) +// ["b", "c", "a"] +``` + +上面代码中,属性名为数值的属性,是按照数值大小,从小到大遍历的,因此返回的顺序是`b`、`c`、`a`。 + +`Object.values`只返回对象自身的可遍历属性。 + +```javascript +var obj = Object.create({}, {p: 42}); +Object.values(obj) // [] +``` + +上面代码中,`Object.create`方法的第二个参数添加的对象属性(属性`p`),如果不显式声明,默认是不可遍历的。`Object.values`不会返回这个属性。 + +如果`Object.values`方法的参数是一个字符串,会返回各个字符组成的一个数组。 + +```javascript +Object.values('foo') +// ['f', 'o', 'o'] +``` + +上面代码中,字符串会先转成一个类似数组的对象。字符串的每个字符,就是该对象的一个属性。因此,`Object.values`返回每个属性的键值,就是各个字符组成的一个数组。 + +如果参数不是对象,`Object.values`会先将其转为对象。由于数值和布尔值的包装对象,都不会为实例添加非继承的属性。所以,`Object.values`会返回空数组。 + +```javascript +Object.values(42) // [] +Object.values(true) // [] +``` + +### Object.entries + +`Object.entries`方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组。 + +```javascript +var obj = { foo: 'bar', baz: 42 }; +Object.entries(obj) +// [ ["foo", "bar"], ["baz", 42] ] +``` + +除了返回值不一样,该方法的行为与`Object.values`基本一致。 + +`Object.entries`方法的一个用处是,将对象转为真正的`Map`结构。 + +```javascript +var obj = { foo: 'bar', baz: 42 }; +var map = new Map(Object.entries(obj)); +map // Map { foo: "bar", baz: 42 } +``` + +自己实现`Object.entries`方法,非常简单。 + +```javascript +// Generator函数的版本 +function* entries(obj) { + for (let key of Object.keys(obj)) { + yield [key, obj[key]]; + } +} + +// 非Generator函数的版本 +function entries(obj) { + return (for (key of Object.keys(obj)) [key, obj[key]]); +} +``` + ## 对象的扩展运算符 目前,ES7有一个[提案](https://github.com/sebmarkbage/ecmascript-rest-spread),将rest参数/扩展运算符(...)引入对象。Babel转码器已经支持这项功能。 @@ -696,7 +807,7 @@ obj.a.b = 2; x.a.b // 2 ``` -上面代码中,x是Rest参数,拷贝了对象obj的a属性。a属性引用了一个对象,修改这个对象的值,会影响到Rest参数对它的引用。 +上面代码中,`x`是Rest参数,拷贝了对象`obj`的`a`属性。a属性引用了一个对象,修改这个对象的值,会影响到Rest参数对它的引用。 另外,Rest参数不会拷贝继承自原型对象的属性。 From 6febd5de0bdab997c66a12b23b391dc7c41f606d Mon Sep 17 00:00:00 2001 From: Kaipeng Lu Date: Mon, 1 Feb 2016 14:33:52 +0800 Subject: [PATCH 0075/1139] ex to ex --- docs/number.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/number.md b/docs/number.md index b8611328f..1080ee5f2 100644 --- a/docs/number.md +++ b/docs/number.md @@ -512,7 +512,7 @@ ES6新增了4个对数相关方法。 **(1) Math.expm1()** -`Math.expm1(x)`返回ex - 1,即`Math.exp(x) - 1`。 +`Math.expm1(x)`返回ex - 1,即`Math.exp(x) - 1`。 ```javascript Math.expm1(-1); // -0.6321205588285577 From 0be4b183121169b445323ead38a8bea0ffffb1b5 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 3 Feb 2016 17:41:36 +0800 Subject: [PATCH 0076/1139] edit function/tco --- docs/function.md | 115 +++++++++++++++++++++++++++++++++++++++++----- docs/intro.md | 2 +- docs/reference.md | 1 + 3 files changed, 105 insertions(+), 13 deletions(-) diff --git a/docs/function.md b/docs/function.md index 4e14bebd3..efd32073f 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1170,17 +1170,6 @@ factorial(5, 1) // 120 由此可见,“尾调用优化”对递归操作意义重大,所以一些函数式编程语言将其写入了语言规格。ES6也是如此,第一次明确规定,所有ECMAScript的实现,都必须部署“尾调用优化”。这就是说,在ES6中,只要使用尾递归,就不会发生栈溢出,相对节省内存。 -注意,只有开启严格模式,尾调用优化才会生效。由于一旦启用尾调用优化,`func.arguments`和`func.caller`这两个函数内部对象就失去意义了,因为外层的帧会被整个替换掉,这两个对象包含的信息就会被移除。严格模式下,这两个对象也是不可用的。 - -```javascript -function restricted() { - "use strict"; - restricted.caller; // 报错 - restricted.arguments; // 报错 -} -restricted(); -``` - ### 递归函数的改写 尾递归的实现,往往需要改写递归函数,确保最后一步只调用自身。做到这一点的方法,就是把所有用到的内部变量改写成函数的参数。比如上面的例子,阶乘函数 factorial 需要用到一个中间变量 total ,那就把这个中间变量改写成函数的参数。这样做的缺点就是不太直观,第一眼很难看出来,为什么计算5的阶乘,需要传入两个参数5和1? @@ -1244,11 +1233,113 @@ ES6的尾调用优化只在严格模式下开启,正常模式是无效的。 这是因为在正常模式下,函数内部有两个变量,可以跟踪函数的调用栈。 -- `arguments`:返回调用时函数的参数。 +- `func.arguments`:返回调用时函数的参数。 - `func.caller`:返回调用当前函数的那个函数。 尾调用优化发生时,函数的调用栈会改写,因此上面两个变量就会失真。严格模式禁用这两个变量,所以尾调用模式仅在严格模式下生效。 +```javascript +function restricted() { + "use strict"; + restricted.caller; // 报错 + restricted.arguments; // 报错 +} +restricted(); +``` + +### 尾递归优化的实现 + +尾递归优化只在严格模式下生效,那么正常模式下,或者那些不支持该功能的环境中,有没有办法也使用尾递归优化呢?回答是可以的,就是自己实现尾递归优化。 + +它的原理非常简单。尾递归之所以需要优化,原因是调用栈太多,造成溢出,那么只要减少调用栈,就不会溢出。怎么做可以减少调用栈呢?就是采用“循环”换掉“递归”。 + +下面是一个正常的递归函数。 + +```javascript +function sum(x, y) { + if (y > 0) { + return sum(x + 1, y - 1); + } else { + return x; + } +} + +sum(1, 100000) +// Uncaught RangeError: Maximum call stack size exceeded(…) +``` + +上面代码中,`sum`是一个递归函数,参数`x`是需要累加的值,参数`y`控制递归次数。一旦指定`sum`递归100000次,就会报错,提示超出调用栈的最大次数。 + +蹦床函数(trampoline)可以将递归执行转为循环执行。 + +```javascript +function trampoline(f) { + while (f && f instanceof Function) { + f = f(); + } + return f; +} +``` + +上面就是蹦床函数的一个实现,它接受一个函数`f`作为参数。只要`f`执行后返回一个函数,就继续执行。注意,这里是返回一个函数,然后执行该函数,而不是函数里面调用函数,这样就避免了递归执行,从而就消除了调用栈过大的问题。 + +然后,要做的就是将原来的递归函数,改写为每一步返回另一个函数。 + +```javascript +function sum(x, y) { + if (y > 0) { + return sum.bind(null, x + 1, y - 1); + } else { + return x; + } +} +``` + +上面代码中,`sum`函数的每次执行,都会返回自身的另一个版本。 + +现在,使用蹦床函数执行`sum`,就不会发生调用栈溢出。 + +```javascript +trampoline(sum(1, 100000)) +// 100001 +``` + +蹦床函数并不是真正的尾递归优化,下面的实现才是。 + +```javascript +function tco(f) { + var value; + var active = false; + var accumulated = []; + + return function accumulator() { + accumulated.push(arguments); + if (!active) { + active = true; + while (accumulated.length) { + value = f.apply(this, accumulated.shift()); + } + active = false; + return value; + } + } +} + +var sum = tco(function(x, y) { + if (y > 0) { + return sum(x + 1, y - 1) + } + else { + return x + } +}); + +sum(1, 100000) +// 100001 +``` + +上面代码中,`tco`函数是尾递归优化的实现,它的奥妙就在于状态变量`active`。默认情况下,这个变量是不激活的。一旦进入尾递归优化的过程,这个变量就激活了。然后,每一轮递归`sum`返回的都是`undefined`,所以就避免了递归执行;而`accumulated`数组存放每一轮`sum`执行的参数,总是有值的,这就保证了`accumulator`函数内部的`while`循环总是会执行。这样就很巧妙地将“递归”改成了“循环”,而后一轮的参数会取代前一轮的参数,保证了调用栈只有一层。 + ## 函数参数的尾逗号 ES7有一个[提案](https://github.com/jeffmo/es-trailing-function-commas),允许函数的最后一个参数有尾逗号(trailing comma)。 diff --git a/docs/intro.md b/docs/intro.md index 7e30a6277..1d343498b 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -424,7 +424,7 @@ ESLint用于静态检查代码的语法和风格,安装命令如下。 $ npm install --save-dev eslint babel-eslint ``` -然后,在项目根目录下,新建一个配置文件`.eslint`,在其中加入`parser`字段。 +然后,在项目根目录下,新建一个配置文件`.eslintrc`,在其中加入`parser`字段。 ```javascript { diff --git a/docs/reference.md b/docs/reference.md index 64a4e627d..20801f618 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -74,6 +74,7 @@ - Ragan Wald, [Destructuring and Recursion in ES6](http://raganwald.com/2015/02/02/destructuring.html): rest参数和扩展运算符的详细介绍 - Axel Rauschmayer, [The names of functions in ES6](http://www.2ality.com/2015/09/function-names-es6.html): 函数的name属性的详细介绍 - Kyle Simpson, [Arrow This](http://blog.getify.com/arrow-this/): 箭头函数并没有自己的this +- Mark McDonnell, [Understanding recursion in functional JavaScript programming](http://www.integralist.co.uk/posts/js-recursion.html): 如何自己实现尾递归优化 ## 对象 From 40437de61a6382a0b7338ba010ede6dbdb738ff6 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 9 Feb 2016 09:23:29 +0800 Subject: [PATCH 0077/1139] doc: add ES7 stage 3 features --- docs/async.md | 36 ++++++--- docs/object.md | 198 ++++++++++++++++++++++++++++++++++++++++++++++ docs/proxy.md | 45 +++++++++-- docs/reference.md | 2 + docs/simd.md | 147 +++++++++++++++++++++++++++++++++- docs/string.md | 7 ++ 6 files changed, 420 insertions(+), 15 deletions(-) diff --git a/docs/async.md b/docs/async.md index efd0a509c..054c22f3b 100644 --- a/docs/async.md +++ b/docs/async.md @@ -691,7 +691,7 @@ function* somethingAsync(x) { } ``` -上面的代码允许并发三个somethingAsync异步操作,等到它们全部完成,才会进行下一步。 +上面的代码允许并发三个`somethingAsync`异步操作,等到它们全部完成,才会进行下一步。 ## async函数 @@ -721,7 +721,7 @@ var gen = function* (){ }; ``` -写成 async 函数,就是下面这样。 +写成`async`函数,就是下面这样。 ```javascript var asyncReadFile = async function (){ @@ -734,7 +734,7 @@ var asyncReadFile = async function (){ 一比较就会发现,`async`函数就是将Generator函数的星号(`*`)替换成`async`,将`yield`替换成`await`,仅此而已。 -`async`函数对 Generator 函数的改进,体现在以下三点。 +`async`函数对 Generator 函数的改进,体现在以下四点。 (1)内置执行器。Generator函数的执行必须靠执行器,所以才有了`co`模块,而`async`函数自带执行器。也就是说,`async`函数的执行,与普通函数一模一样,只要一行。 @@ -752,6 +752,8 @@ var result = asyncReadFile(); 进一步说,async函数完全可以看作多个异步操作,包装成的一个Promise对象,而`await`命令就是内部`then`命令的语法糖。 +正常情况下,`await`命令后面是一个Promise对象,否则会被转成Promise。 + ### async函数的实现 async 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里。 @@ -770,9 +772,9 @@ function fn(args){ } ``` -所有的 async 函数都可以写成上面的第二种形式,其中的 spawn 函数就是自动执行器。 +所有的`async`函数都可以写成上面的第二种形式,其中的 spawn 函数就是自动执行器。 -下面给出 spawn 函数的实现,基本就是前文自动执行器的翻版。 +下面给出`spawn`函数的实现,基本就是前文自动执行器的翻版。 ```javascript function spawn(genF) { @@ -798,11 +800,11 @@ function spawn(genF) { } ``` -async 函数是非常新的语法功能,新到都不属于 ES6,而是属于 ES7。目前,它仍处于提案阶段,但是转码器 Babel 和 regenerator 都已经支持,转码后就能使用。 +`async`函数是非常新的语法功能,新到都不属于 ES6,而是属于 ES7。目前,它仍处于提案阶段,但是转码器`Babel`和`regenerator`都已经支持,转码后就能使用。 ### async 函数的用法 -同Generator函数一样,async函数返回一个Promise对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回,等到触发的异步操作完成,再接着执行函数体内后面的语句。 +同Generator函数一样,`async`函数返回一个Promise对象,可以使用`then`方法添加回调函数。当函数执行的时候,一旦遇到`await`就会先返回,等到触发的异步操作完成,再接着执行函数体内后面的语句。 下面是一个例子。 @@ -813,12 +815,12 @@ async function getStockPriceByName(name) { return stockPrice; } -getStockPriceByName('goog').then(function (result){ +getStockPriceByName('goog').then(function (result) { console.log(result); }); ``` -上面代码是一个获取股票报价的函数,函数前面的async关键字,表明该函数内部有异步操作。调用该函数时,会立即返回一个Promise对象。 +上面代码是一个获取股票报价的函数,函数前面的`async`关键字,表明该函数内部有异步操作。调用该函数时,会立即返回一个`Promise`对象。 下面的例子,指定多少毫秒后输出一个值。 @@ -839,6 +841,22 @@ asyncPrint('hello world', 50); 上面代码指定50毫秒以后,输出"hello world"。 +Async函数有多种使用形式。 + +```javascript +// 函数声明 +async function foo() {} + +// 函数表达式 +const foo = async function () {}; + +// 对象的方法 +let obj = { async foo() {} } + +// 箭头函数 +const foo = async () => {}; +``` + ### 注意点 第一点,`await`命令后面的Promise对象,运行结果可能是rejected,所以最好把`await`命令放在`try...catch`代码块中。 diff --git a/docs/object.md b/docs/object.md index 57a84a3f0..b002af3df 100644 --- a/docs/object.md +++ b/docs/object.md @@ -729,6 +729,13 @@ Object.values(obj) // [] 上面代码中,`Object.create`方法的第二个参数添加的对象属性(属性`p`),如果不显式声明,默认是不可遍历的。`Object.values`不会返回这个属性。 +`Object.values`会过滤属性名为Symbol值的属性。 + +```javascript +Object.entries({ [Symbol()]: 123, foo: 'abc' }); +// ['abc'] +``` + 如果`Object.values`方法的参数是一个字符串,会返回各个字符组成的一个数组。 ```javascript @@ -757,6 +764,26 @@ Object.entries(obj) 除了返回值不一样,该方法的行为与`Object.values`基本一致。 +如果原对象的属性名是一个Symbol值,该属性会被省略。 + +```javascript +Object.entries({ [Symbol()]: 123, foo: 'abc' }); +// [ [ 'foo', 'abc' ] ] +``` + +上面代码中,原对象有两个属性,`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)}`); +} +// "one": 1 +// "two": 2 +``` + `Object.entries`方法的一个用处是,将对象转为真正的`Map`结构。 ```javascript @@ -896,3 +923,174 @@ let runtimeError = { ```javascript let emptyObject = { ...null, ...undefined }; // 不报错 ``` + +## Object.getOwnPropertyDescriptors() + +ES5有一个`Object.getOwnPropertyDescriptor`方法,返回某个对象属性的描述对象(descriptor)。 + +```javascript +var obj = { p: 'a' }; + +Object.getOwnPropertyDescriptor(obj, 'p') +// Object { value: "a", +// writable: true, +// enumerable: true, +// configurable: true +// } +``` + +ES7有一个提案,提出了`Object.getOwnPropertyDescriptors`方法,返回指定对象所有自身属性(非继承属性)的描述对象。 + +```javascript +const obj = { + foo: 123, + get bar() { return 'abc' }, +}; + +Object.getOwnPropertyDescriptors(obj) +// { foo: +// { value: 123, +// writable: true, +// enumerable: true, +// configurable: true }, +// bar: +// { get: [Function: bar], +// set: undefined, +// enumerable: true, +// configurable: true } } +``` + +`Object.getOwnPropertyDescriptors`方法返回一个对象,所有原对象的属性名都是该对象的属性名,对应的属性值就是该属性的描述对象。 + +该方法的实现非常容易。 + +```javascript +function getOwnPropertyDescriptors(obj) { + const result = {}; + for (let key of Reflect.ownKeys(obj)) { + result[key] = Object.getOwnPropertyDescriptor(obj, key); + } + return result; +} +``` + +该方法的提出目的,主要是为了解决`Object.assign()`无法正确拷贝`get`属性和`set`属性的问题。 + +```javascript +const source = { + set foo(value) { + console.log(value); + } +}; + +const target1 = {}; +Object.assign(target1, source); + +Object.getOwnPropertyDescriptor(target1, 'foo') +// { value: undefined, +// writable: true, +// enumerable: true, +// configurable: true } +``` + +上面代码中,`source`对象的`foo`属性的值是一个赋值函数,`Object.assign`方法将这个属性拷贝给`target1`对象,结果该属性的值变成了`undefined`。这是因为`Object.assign`方法总是拷贝一个属性的值,而不会拷贝它背后的赋值方法或取值方法。 + +这时,`Object.getOwnPropertyDescriptors`方法配合`Object.defineProperties`方法,就可以实现正确拷贝。 + +```javascript +const source = { + set foo(value) { + console.log(value); + } +}; + +const target2 = {}; +Object.defineProperties(target2, Object.getOwnPropertyDescriptors(source)); +Object.getOwnPropertyDescriptor(target2, 'foo') +// { get: undefined, +// set: [Function: foo], +// enumerable: true, +// configurable: true } +``` + +上面代码中,将两个对象合并的逻辑提炼出来,就是下面这样。 + +```javascript +const shallowMerge = (target, source) => Object.defineProperties( + target, + Object.getOwnPropertyDescriptors(source) +); +``` + +`Object.getOwnPropertyDescriptors`方法的另一个用处,是配合`Object.create`方法,将对象属性克隆到一个新对象。这属于浅拷贝。 + +```javascript +const clone = Object.create(Object.getPrototypeOf(obj), + Object.getOwnPropertyDescriptors(obj)); + +// 或者 + +const shallowClone = (obj) => Object.create( + Object.getPrototypeOf(obj), + Object.getOwnPropertyDescriptors(obj) +); +``` + +上面代码会克隆对象`obj`。 + +另外,`Object.getOwnPropertyDescriptors`方法可以实现,一个对象继承另一个对象。以前,继承另一个对象,常常写成下面这样。 + +```javascript +const obj = { + __proto__: prot, + foo: 123, +}; +``` + +ES6规定`__proto__`只有浏览器要部署,其他环境不用部署。如果去除`__proto__`,上面代码就要改成下面这样。 + +```javascript +const obj = Object.create(prot); +obj.foo = 123; + +// 或者 + +const obj = Object.assign( + Object.create(prot), + { + foo: 123, + } +); +``` + +有了`Object.getOwnPropertyDescriptors`,我们就有了另一种写法。 + +```javascript +const obj = Object.create( + prot, + Object.getOwnPropertyDescriptors({ + foo: 123, + }) +); +``` + +`Object.getOwnPropertyDescriptors`也可以用来实现Mixin(混入)模式。 + +```javascript +let mix = (object) => ({ + with: (...mixins) => mixins.reduce( + (c, mixin) => Object.create( + c, Object.getOwnPropertyDescriptors(mixin) + ), object) +}); + +// multiple mixins example +let a = {a: 'a'}; +let b = {b: 'b'}; +let c = {c: 'c'}; +let d = mix(c).with(a, b); +``` + +上面代码中,对象`a`和`b`被混入了对象`c`。 + +出于完整性的考虑,`Object.getOwnPropertyDescriptors`进入标准以后,还会有`Reflect.getOwnPropertyDescriptors`方法。 diff --git a/docs/proxy.md b/docs/proxy.md index 018f0ecef..31d03df32 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -245,7 +245,7 @@ arr[-1] // c 上面代码中,数组的位置参数是`-1`,就会输出数组的倒数最后一个成员。 -利用proxy,可以将读取属性的操作(`get`),转变为执行某个函数,从而实现属性的链式操作。 +利用Proxy,可以将读取属性的操作(`get`),转变为执行某个函数,从而实现属性的链式操作。 ```javascript var pipe = (function () { @@ -276,11 +276,46 @@ pipe(3).double.pow.reverseInt.get 上面代码设置Proxy以后,达到了将函数名链式使用的效果。 +下面的例子则是利用`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) { + const el = document.createElement(property); + for (let prop of Object.keys(attrs)) { + el.setAttribute(prop, attrs[prop]); + } + for (let child of children) { + if (typeof child === 'string') { + child = document.createTextNode(child); + } + el.appendChild(child); + } + return el; + } + } +}); +``` + ### set() `set`方法用来拦截某个属性的赋值操作。 -假定Person对象有一个`age`属性,该属性应该是一个不大于200的整数,那么可以使用Proxy对象保证`age`的属性值符合要求。 +假定`Person`对象有一个`age`属性,该属性应该是一个不大于200的整数,那么可以使用`Proxy`保证`age`的属性值符合要求。 ```javascript let validator = { @@ -364,8 +399,8 @@ var handler = { var p = new Proxy(target, handler); -p() === 'I am the proxy'; -// true +p() +// "I am the proxy" ``` 上面代码中,变量`p`是Proxy的实例,当它作为函数调用时(`p()`),就会被`apply`方法拦截,返回一个字符串。 @@ -387,7 +422,7 @@ proxy.call(null, 5, 6) // 22 proxy.apply(null, [7, 8]) // 30 ``` -上面代码中,每当执行`proxy`函数,就会被`apply`方法拦截。 +上面代码中,每当执行`proxy`函数(直接调用或`call`和`apply`调用),就会被`apply`方法拦截。 另外,直接调用`Reflect.apply`方法,也会被拦截。 diff --git a/docs/reference.md b/docs/reference.md index 20801f618..5e3d0e155 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -82,6 +82,8 @@ - Sella Rafaeli, [Native JavaScript Data-Binding](http://www.sellarafaeli.com/blog/native_javascript_data_binding): 如何使用Object.observe方法,实现数据对象与DOM对象的双向绑定 - Axel Rauschmayer, [`__proto__` in ECMAScript 6](http://www.2ality.com/2015/09/proto-es6.html) - Axel Rauschmayer, [Enumerability in ECMAScript 6](http://www.2ality.com/2015/10/enumerability-es6.html) +- 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 diff --git a/docs/simd.md b/docs/simd.md index e36e23ff5..e3ce17000 100644 --- a/docs/simd.md +++ b/docs/simd.md @@ -1,5 +1,7 @@ # SIMD 的用法 +## 概述 + SIMD是“Single Instruction/Multiple Data”的缩写,意为“单指令,多数据”。它是JavaScript操作CPU对应指令的接口,你可以看做这是一种不同的运算执行模式。与它相对的是SISD(“Single Instruction/Single Data”),即“单指令,单数据”。 SIMD的含义是使用一个指令,完成多个数据的运算;SISD的含义是使用一个指令,完成单个数据的运算,这是JavaScript的默认运算模式。显而易见,SIMD的执行效率要高于SISD,所以被广泛用于3D图形运算、物理模拟等运算量超大的项目之中。 @@ -25,9 +27,152 @@ c; // Array[6, 8, 10, 12] ```javascript var a = SIMD.Float32x4(1, 2, 3, 4); var b = SIMD.Float32x4(5, 6, 7, 8); -var c = SIMD.Float32x4.add(a,b); // Float32x4[6, 8, 10, 12] +var c = SIMD.Float32x4.add(a, b); // Float32x4[6, 8, 10, 12] ``` 上面代码之中,数组`a`和`b`的四个成员的各自相加,只用一条指令就完成了。因此,速度比上一种写法提高了4倍。 一次SIMD运算,可以处理多个数据,这些数据被称为“通道”(lane)。上面代码中,一次运算了四个数据,因此就是四个通道。 + +SIMD通常用于矢量运算。 + +```javascript +v + w = 〈v1, …, vn〉+ 〈w1, …, wn〉 + = 〈v1+w1, …, vn+wn〉 +``` + +上面代码中,`v`和`w`是两个多元矢量。它们的加运算,在SIMD下是一个指令、而不是n个指令完成的,这就大大提高了效率。这对于3D动画、图像处理、信号处理、数值处理、加密等运算是非常重要的。 + +总得来说,SIMD是数据并行处理(parallelism)的一种手段。 + +## 数据类型 + +SIMD提供多种数据类型。 + +- Float32x4:四个32位浮点数 +- Float64x2:两个64位浮点数 +- Int32x4:四个32位整数 +- Int16x8:八个16位整数 +- Int8x16:十六个8位整数 +- Uint32x4:四个无符号的32位整数 +- Uint16x8:八个无符号的16位整数 +- Uint8x16:十六个无符号的8位整数 +- Bool32x4:四个32位布尔值 +- Bool16x8:八个16位布尔值 +- Bool8x16:十六个8位布尔值 +- Bool64x2:两个64位布尔值 + +每种数据类型都是一个方法,可以传入参数,生成对应的值。 + +```javascript +var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0); +``` + +上面代码中,变量`a`就是一个128位、包含四个32位浮点数的值。 + +注意,这些数据类型方法都不是构造函数,前面不能加`new`,否则会报错。 + +```javascript +var v = new SIMD.Float32x4(0,1,2,3); +// TypeError: SIMD.Float32x4 is not a constructor +``` + +每种数据类型都有一系列运算符,下面是其中的一些。 + +- 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`的值 + +下面是一个`add`运算符的例子。 + +```javascript +c[i] = SIMD.float32x4.add(a[i], b[i]); + +// 或者 + +var tmp0 = a[i]; +var tmp1 = b[i]; +var tmp2 = SIMD.float32x4.add(tmp0, tmp1); +c[i] = tmp2; +``` + +此外,每种数据类型还有操作方法。 + +`getAt`方法返回指定位置的值。 + +```javascript +var a = SIMD.float32x4(1.0, 2.0, 3.0, 4.0); +var b = a.getAt(0); // 1.0 +``` + +`zero`方法可以将SIMD值清零。 + +```javascript +var b = SIMD.float32x4.zero(); +``` + +上面代码中,变量`b`包含的四个32位浮点数全部是0.0。 + +`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 c = SIMD.float32x4.shuffle(a, SIMD.float32x4.WWWW); +// [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] +``` + +下面是一个求平均值的例子。 + +```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 total = sum.x + sum.y + sum.z + sum.w; + return total / (n * 4); +} +``` + +## 二进制数组 + +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; +} +``` + +## 参考链接 + +- 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 31cc34ace..5108ceec7 100644 --- a/docs/string.md +++ b/docs/string.md @@ -318,6 +318,13 @@ ES7推出了字符串补全长度的功能。如果某个字符串不够指定 'xxx'.padEnd(2, 'ab') // 'xxx' ``` +如果用来补全的字符串与原字符串,两者的长度之和超过了制定的最小长度,则会截去超出位数的补全字符串。 + +```javascript +'abc'.padStart(10, '0123456789') +// '0123456abc' +``` + 如果省略第二个参数,则会用空格补全长度。 ```javascript From fd088aceabe384681813e588615ff48918b6b8ba Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 9 Feb 2016 09:57:28 +0800 Subject: [PATCH 0078/1139] doc: ES7 feature list --- docs/intro.md | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index 1d343498b..c1e31d8ec 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -624,22 +624,34 @@ fs.writeFileSync('out.js.map', result.sourceMap); **Stage 0**: -- es7.comprehensions:数组推导 -- es7.classProperties:类的属性 -- es7.functionBind:函数的绑定运算符 +- Function Bind Syntax 函数的绑定运算符 +- String.prototype.at 字符串的静态方法at **Stage 1**: -- es7.decorators:修饰器 -- es7.exportExtensions:export的扩展写法 -- es7.trailingFunctionCommas:函数参数的尾逗号 +- Class and Property Decorators Class的修饰器 +- Class Property Declarations Class的属性声明 +- es7.exportExtensions:export的写法改进 +- String.prototype.{trimLeft,trimRight} 字符串删除头尾空格的方法 **Stage 2**: -- es7.exponentiationOperator:指数运算符 -- es7.asyncFunctions:async函数 - es7.objectRestSpread:对象的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 b13b07d960581ecb91245ec355aaa96f4d9ed605 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 9 Feb 2016 10:00:25 +0800 Subject: [PATCH 0079/1139] doc: ES7 feature list --- docs/intro.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index c1e31d8ec..aced0bfba 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -624,15 +624,15 @@ fs.writeFileSync('out.js.map', result.sourceMap); **Stage 0**: -- Function Bind Syntax 函数的绑定运算符 -- String.prototype.at 字符串的静态方法at +- Function Bind Syntax:函数的绑定运算符 +- String.prototype.at:字符串的静态方法at **Stage 1**: -- Class and Property Decorators Class的修饰器 -- Class Property Declarations Class的属性声明 +- Class and Property Decorators:Class的修饰器 +- Class Property Declarations:Class的属性声明 - es7.exportExtensions:export的写法改进 -- String.prototype.{trimLeft,trimRight} 字符串删除头尾空格的方法 +- String.prototype.{trimLeft,trimRight}:字符串删除头尾空格的方法 **Stage 2**: @@ -640,17 +640,17 @@ fs.writeFileSync('out.js.map', result.sourceMap); **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 +- 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 指数运算符 +- Array.prototype.includes:数组实例的includes方法 +- Exponentiation Operator:指数运算符 ECMAScript当前的所有提案,可以在TC39的官方网站[Github.com/tc39/ecma262](https://github.com/tc39/ecma262)查看。 From bce7843d22c4f188072eaf3d2cd83c57a4e0495f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 9 Feb 2016 10:02:58 +0800 Subject: [PATCH 0080/1139] doc: ES7 feature list --- docs/intro.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index aced0bfba..b1dc038de 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -631,12 +631,12 @@ fs.writeFileSync('out.js.map', result.sourceMap); - Class and Property Decorators:Class的修饰器 - Class Property Declarations:Class的属性声明 -- es7.exportExtensions:export的写法改进 +- Additional export-from Statements:export的写法改进 - String.prototype.{trimLeft,trimRight}:字符串删除头尾空格的方法 **Stage 2**: -- es7.objectRestSpread:对象的Rest参数和扩展运算符 +- Rest/Spread Properties:对象的Rest参数和扩展运算符 **Stage 3** From ccbc40a61b59616d55d9aee7e218229b162bb9e1 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 15 Feb 2016 16:13:24 +0800 Subject: [PATCH 0081/1139] docs: edit object/rest & spread --- docs/object.md | 82 ++++++++++++++++++++++++++++++++++++++++++-------- docs/string.md | 17 ++++++++++- 2 files changed, 86 insertions(+), 13 deletions(-) diff --git a/docs/object.md b/docs/object.md index b002af3df..308181546 100644 --- a/docs/object.md +++ b/docs/object.md @@ -810,11 +810,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解构赋值** -Rest参数用于从一个对象取值,相当于将所有可遍历的、但尚未被读取的属性,分配到指定的对象上面。所有的键和它们的值,都会拷贝到新对象上面。 +对象的Rest解构赋值用于从一个对象取值,相当于将所有可遍历的、但尚未被读取的属性,分配到指定的对象上面。所有的键和它们的值,都会拷贝到新对象上面。 ```javascript let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; @@ -823,9 +823,25 @@ y // 2 z // { a: 3, b: 4 } ``` -上面代码中,变量z是Rest参数所在的对象。它获取等号右边的所有尚未读取的键(a和b),将它们和它们的值拷贝过来。 +上面代码中,变量`z`是Rest解构赋值所在的对象。它获取等号右边的所有尚未读取的键(`a`和`b`),将它们和它们的值拷贝过来。 -注意,Rest参数的拷贝是浅拷贝,即如果一个键的值是复合类型的值(数组、对象、函数)、那么Rest参数拷贝的是这个值的引用,而不是这个值的副本。 +由于Rest解构赋值要求等号右边是一个对象,所以如果等号右边是`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 } }; @@ -834,9 +850,9 @@ obj.a.b = 2; x.a.b // 2 ``` -上面代码中,`x`是Rest参数,拷贝了对象`obj`的`a`属性。a属性引用了一个对象,修改这个对象的值,会影响到Rest参数对它的引用。 +上面代码中,`x`是Rest解构赋值所在的对象,拷贝了对象`obj`的`a`属性。`a`属性引用了一个对象,修改这个对象的值,会影响到Rest解构赋值对它的引用。 -另外,Rest参数不会拷贝继承自原型对象的属性。 +另外,Rest解构赋不会拷贝继承自原型对象的属性。 ```javascript let o1 = { a: 1 }; @@ -846,11 +862,40 @@ let o3 = { ...o2 }; o3 // { b: 2 } ``` -上面代码中,对象o3是o2的复制,但是只复制了o2自身的属性,没有复制它的原型对象o1的属性。 +上面代码中,对象`o3`是`o2`的拷贝,但是只复制了`o2`自身的属性,没有复制它的原型对象`o1`的属性。 + +下面是另一个例子。 + +```javascript +var o = Object.create({ x: 1, y: 2 }); +o.z = 3; + +let { x, ...{ y, z } = o; +x; // 1 +y; // undefined +z; // 3 +``` + +上面代码中,变量`x`是单纯的解构赋值,所以可以读取继承的属性;Rest解构赋值产生的变量`y`和`z`,只能读取对象自身的属性,所以只有变量`z`可以赋值成功。 + +Rest解构赋值的一个用处,是扩展某个函数的参数,引入其他操作。 + +```javascript +function baseFunction({ a, b }) { + // ... +} +function wrapperFunction({ x, y, ...restConfig }) { + // 使用x和y参数进行操作 + // 其余参数传给原始函数 + return baseFunction(restConfig); +} +``` + +上面代码中,原始函数`baseFunction`接受`a`和`b`作为参数,函数`wrapperFunction`在`baseFunction`的基础上进行了扩展,能够接受多余的参数,并且保留原始函数的行为。 **(2)扩展运算符** -扩展运算符用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。 +扩展运算符(`...`)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。 ```javascript let z = { a: 3, b: 4 }; @@ -870,9 +915,11 @@ let aClone = Object.assign({}, a); ```javascript let ab = { ...a, ...b }; +// 等同于 +let ab = Object.assign({}, a, b); ``` -扩展运算符还可以用自定义属性,会在新对象之中,覆盖掉原有参数。 +如果用户自定义的属性,放在扩展运算符后面,则扩展运算符内部的同名属性会被覆盖掉。 ```javascript let aWithOverrides = { ...a, x: 1, y: 2 }; @@ -884,7 +931,18 @@ let x = 1, y = 2, aWithOverrides = { ...a, x, y }; let aWithOverrides = Object.assign({}, a, { x: 1, y: 2 }); ``` -上面代码中,a对象的x属性和y属性,拷贝到新对象后会被覆盖掉。 +上面代码中,`a`对象的`x`属性和`y`属性,拷贝到新对象后会被覆盖掉。 + +这用来修改现有对象部分的部分属性就很方便了。 + +```javascript +let newVersion = { + ...previousVersion, + name: 'New Name', // Override the name property +}; +``` + +上面代码中,`newVersion`对象自定义了`name`属性,其他属性全部复制自`previousVersion`对象。 如果把自定义属性放在扩展运算符前面,就变成了设置新对象的默认属性值。 @@ -918,7 +976,7 @@ let runtimeError = { }; ``` -如果扩展运算符的参数是null或undefined,这个两个值会被忽略,不会报错。 +如果扩展运算符的参数是`null`或`undefined`,这个两个值会被忽略,不会报错。 ```javascript let emptyObject = { ...null, ...undefined }; // 不报错 diff --git a/docs/string.md b/docs/string.md index 5108ceec7..9d5bfc770 100644 --- a/docs/string.md +++ b/docs/string.md @@ -318,7 +318,7 @@ ES7推出了字符串补全长度的功能。如果某个字符串不够指定 'xxx'.padEnd(2, 'ab') // 'xxx' ``` -如果用来补全的字符串与原字符串,两者的长度之和超过了制定的最小长度,则会截去超出位数的补全字符串。 +如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。 ```javascript 'abc'.padStart(10, '0123456789') @@ -332,6 +332,21 @@ ES7推出了字符串补全长度的功能。如果某个字符串不够指定 'x'.padEnd(4) // 'x ' ``` +`padStart`的常见用途是为数值补全指定位数。下面代码生成10位的数值字符串。 + +```javascript +'1'.padStart(10, '0') // "0000000001" +'12'.padStart(10, '0') // "0000000012" +'123456'.padStart(10, '0') // "0000123456" +``` + +另一个用途是提示字符串格式。 + +```javascript +'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12" +'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12" +``` + ## 模板字符串 传统的JavaScript语言,输出模板通常是这样写的。 From 8408a3c4f9abac7e812a3c71422a837b898410c2 Mon Sep 17 00:00:00 2001 From: "J.K.SAGE" Date: Tue, 16 Feb 2016 13:52:11 +0900 Subject: [PATCH 0082/1139] Update string.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit line626 也就是说,`tag`数实际上以下面的形式调用。-> 也就是说,`tag`函数实际上以下面的形式调用。 --- docs/string.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/string.md b/docs/string.md index 9d5bfc770..08a7dbdb1 100644 --- a/docs/string.md +++ b/docs/string.md @@ -623,7 +623,7 @@ function tag(stringArr, ...values){ - 第二个参数: 15 - 第三个参数:50 -也就是说,`tag`数实际上以下面的形式调用。 +也就是说,`tag`函数实际上以下面的形式调用。 ```javascript tag(['Hello ', ' world ', ''], 15, 50) From 3cec648ff2e9ecd830d7dcf5a8a13918ea484b7f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 17 Feb 2016 09:39:55 +0800 Subject: [PATCH 0083/1139] =?UTF-8?q?docs(module):=20=E8=A7=A3=E9=87=8ACom?= =?UTF-8?q?monJS=E4=B8=8EES6=E6=A8=A1=E5=9D=97=E5=8A=A0=E8=BD=BD=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=E7=9A=84=E5=B7=AE=E5=BC=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/module.md | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/docs/module.md b/docs/module.md index e95ef7b7d..ee8c985eb 100644 --- a/docs/module.md +++ b/docs/module.md @@ -394,9 +394,7 @@ function incCounter() { counter++; } module.exports = { - get counter() { - return counter; - }, + counter: counter, incCounter: incCounter, }; ``` @@ -405,17 +403,38 @@ module.exports = { ```javascript // main.js -var counter = require('./lib').counter; -var incCounter = require('./lib').incCounter; +var mod = require('./lib'); -console.log(counter); // 3 -incCounter(); -console.log(counter); // 3 +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`输出以后,`lib.js`模块内部的变化就影响不到`counter`了。 +上面代码中,输出的`counter`属性实际上是一个取值器函数。现在再执行`main.js`,就可以正确读取内部变量`counter`的变动了。 + +```bash +$ node main.js +3 +4 +``` -ES6模块的运行机制与CommonJS不一样,它遇到模块加载命令`import`时,不会去执行模块,而是只生成一个动态的只读引用。等到真的需要用到时,再到模块里面去取值,换句话说,ES6的输入有点像Unix系统的”符号连接“,原始值变了,输入值也会跟着变。因此,ES6模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 +ES6模块的运行机制与CommonJS不一样,它遇到模块加载命令`import`时,不会去执行模块,而是只生成一个动态的只读引用。等到真的需要用到时,再到模块里面去取值,换句话说,ES6的输入有点像Unix系统的”符号连接“,原始值变了,`import`输入的值也会跟着变。因此,ES6模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。 还是举上面的例子。 From 19506b0b56fdc0dd8b325361ff42d808d732182d Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 17 Feb 2016 09:57:16 +0800 Subject: [PATCH 0084/1139] =?UTF-8?q?docs(module):=20=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E8=A7=A3=E9=87=8Aexport=20default=20var=20a=20=3D=201=E4=B8=BA?= =?UTF-8?q?=E4=BB=80=E4=B9=88=E4=B8=8D=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/module.md | 24 ++++++++++++++++++++++-- docs/reference.md | 1 + 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/module.md b/docs/module.md index ee8c985eb..55a229085 100644 --- a/docs/module.md +++ b/docs/module.md @@ -248,7 +248,7 @@ export default function () { 上面代码是一个模块文件`export-default.js`,它的默认输出是一个函数。 -其他模块加载该模块时,import命令可以为该匿名函数指定任意名字。 +其他模块加载该模块时,`import`命令可以为该匿名函数指定任意名字。 ```javascript // import-default.js @@ -256,7 +256,7 @@ import customName from './export-default'; customName(); // 'foo' ``` -上面代码的import命令,可以用任意名称指向`export-default.js`输出的方法,这时就不需要知道原模块输出的函数名。需要注意的是,这时`import`命令后面,不使用大括号。 +上面代码的`impor`t命令,可以用任意名称指向`export-default.js`输出的方法,这时就不需要知道原模块输出的函数名。需要注意的是,这时`import`命令后面,不使用大括号。 `export default`命令用在非匿名函数前,也是可以的。 @@ -307,11 +307,31 @@ function add(x, y) { return x * y; }; export {add as default}; +// 等同于 +// export default add; // app.js import { default as xxx } from 'modules'; +// 等同于 +// import xxx from 'modules'; ``` +正是因为`export default`命令其实只是输出一个叫做`default`的变量,所以它后面不能跟变量声明语句。 + +```javascript +// 正确 +export var a = 1; + +// 正确 +var a = 1; +export default a; + +// 错误 +export default var a = 1; +``` + +上面代码中,`export default a`的含义是将变量`a`的值赋给变量`default`。所以,最后一种写法会报错。 + 有了`export default`命令,输入模块时就非常直观了,以输入jQuery模块为例。 ```javascript diff --git a/docs/reference.md b/docs/reference.md index 5e3d0e155..51422e2b7 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -190,6 +190,7 @@ - Dave Herman, [Static module resolution](http://calculist.org/blog/2012/06/29/static-module-resolution/): ES6模块的静态化设计思想 - 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) ## 工具 From 68a50598b25dc062d2b1c84a58543540492c4c40 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 18 Feb 2016 16:39:10 +0800 Subject: [PATCH 0085/1139] docs(string): String.prototype.at() --- docs/string.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/string.md b/docs/string.md index 08a7dbdb1..9db3ac73a 100644 --- a/docs/string.md +++ b/docs/string.md @@ -180,13 +180,15 @@ ES5对字符串对象提供`charAt`方法,返回字符串给定位置的字符 上面代码中,`charAt`方法返回的是UTF-16编码的第一个字节,实际上是无法显示的。 -ES7提供了字符串实例的`at`方法,可以识别Unicode编号大于`0xFFFF`的字符,返回正确的字符。Chrome浏览器已经支持该方法。 +目前,有一个提案,提出字符串实例的`at`方法,可以识别Unicode编号大于`0xFFFF`的字符,返回正确的字符。 ```javascript 'abc'.at(0) // "a" '𠮷'.at(0) // "𠮷" ``` +这个方法可以通过[垫片库](https://github.com/es-shims/String.prototype.at)实现。 + ## normalize() 为了表示语调和重音符号,Unicode提供了两种方法。一种是直接提供带重音符号的字符,比如`Ǒ`(\u01D1)。另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如`O`(\u004F)和`ˇ`(\u030C)合成`Ǒ`(\u004F\u030C)。 From 512365fd92762dac60a1c2725a8a4b584f4edbd7 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 18 Feb 2016 18:04:59 +0800 Subject: [PATCH 0086/1139] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/app.css | 6 ++++++ js/ditto.js | 24 +++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/css/app.css b/css/app.css index 44c4b91e9..677423762 100644 --- a/css/app.css +++ b/css/app.css @@ -105,6 +105,12 @@ body { font-size: 0.7rem; } +input[type=search] { + display: block; + width: 180px; + text-align: left; +} + #content { padding-top: 10px; padding-bottom: 150px; diff --git a/js/ditto.js b/js/ditto.js index 6ee7c5e74..2123c696f 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -12,6 +12,7 @@ var ditto = { edit_button: true, back_to_top_button: true, save_progress: true, // 保存阅读进度 + search_bar: true, // initialize function run: initialize @@ -40,8 +41,13 @@ function initialize() { } function init_sidebar_section() { - $.get(ditto.sidebar_file, function(data) { + $.get(ditto.sidebar_file, function (data) { $(ditto.sidebar_id).html(marked(data)); + + if (ditto.search_bar) { + init_searchbar(); + } + // 初始化内容数组 var menuOL = $(ditto.sidebar_id + ' ol'); menuOL.attr('start', 0); @@ -66,9 +72,25 @@ function init_sidebar_section() { }, "text").fail(function() { alert("Opps! can't find the sidebar file to display!"); }); +} +function init_searchbar() { + var search = ''; + $(ditto.sidebar_id).find('h2').first().before($(search)); + $('input[name=search]').keydown(searchbar_listener); } +function searchbar_listener(event) { + if (event.which === 13) { + var q = $('input[name=search]').val(); + if (q !== '') { + var url = 'https://github.com/ruanyf/es6tutorial/search?utf8=✓&q=' + encodeURIComponent(q); + location.href = url; + } + } +} + + function init_back_to_top_button() { $(ditto.back_to_top_id).show(); $(ditto.back_to_top_id).on('click', goTop); From 5d2a5a82cb31f49669b3669ed3b9ce75751e252c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 18 Feb 2016 19:30:51 +0800 Subject: [PATCH 0087/1139] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/app.css | 22 ++++++++++++++++++++-- images/magnifier.jpg | Bin 0 -> 607 bytes js/ditto.js | 19 +++++++++++++++++-- 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 images/magnifier.jpg diff --git a/css/app.css b/css/app.css index 677423762..cb9528ab0 100644 --- a/css/app.css +++ b/css/app.css @@ -105,10 +105,28 @@ body { font-size: 0.7rem; } -input[type=search] { - display: block; +form.searchBox { width: 180px; + border: 1px solid #4682BE; + height:20px; + position: relative; +} + +input[type=search] { + position: absolute; + top: 0; + left: 0; + width: 160px; + height: 18px; text-align: left; + border: none; +} + +input.searchButton { + position: absolute; + top: 0; + left: 160px; + height: 18px; } #content { diff --git a/images/magnifier.jpg b/images/magnifier.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d339b5b7920553e8b33a18206aece083b29fb6c6 GIT binary patch literal 607 zcmex=uI=H%w(=K}(Mey}1a#RK7?>VxzCA7BvVU=U&uVrCR%U=n0x7G(T?grNZFY-XS% z5rBh@os$s=5F$VpBLkBF0|P4)6FVy>Oo9>Q0XB99!9*cpV-quu4~m9H!A&WmrefmZ z7Bd8a=AxM)Xvp;c76T7Zm`RXXkinkeQg?7prr*NMH1lPj-2ayR+iBdsWv{8ys`l>2 zE~DkXtHaiuO7PC!tRWfd!t%_bzb-;*=8{>x?O`Y5R%AyrDtx@UVW)vm(Uq+x9}o2% zV{#L8d+<`NYfbWsu+>XmEaIGTh}F_PTtQ|-ul7bpH@*J7(?YMz(Oui#uv2XB=i~e< zUxh{aMnp;o?+!S%>Z-WI-CN#US^1LH0u}uNWMhsn7|P0Nz1|*sBl^4Fow!9Sr{yoy z?r?HAaPG2~MVQ$XhZxy#-%XJM;@+#0mMmI+X4w_Sn^PQ29ZU=IYrk*0KXqjs_al4L z>_fk1pXZgcGU$r>(J=qo{nxGKr|*URIlk-O^ycsDz5Obdd|u@K>AlLgZv`g*Zvp@` C0;o~| literal 0 HcmV?d00001 diff --git a/js/ditto.js b/js/ditto.js index 2123c696f..8ff1dd563 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -75,12 +75,26 @@ function init_sidebar_section() { } function init_searchbar() { - var search = ''; + var search = ''; $(ditto.sidebar_id).find('h2').first().before($(search)); - $('input[name=search]').keydown(searchbar_listener); + // $('input.searchButton').click(searchbar_listener); + // $('input[name=search]').keydown(searchbar_listener); } function searchbar_listener(event) { + // event.preventDefault(); + var q = $('input[name=search]').val(); + if (q !== '') { + var url = 'https://github.com/ruanyf/es6tutorial/search?utf8=✓&q=' + encodeURIComponent(q); + window.open(url, '_blank'); + win.focus(); + } + return false; + /* if (event.which === 13) { var q = $('input[name=search]').val(); if (q !== '') { @@ -88,6 +102,7 @@ function searchbar_listener(event) { location.href = url; } } + */ } From 689081f7d8baec91a097842451d18a8a13953d24 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Fri, 19 Feb 2016 13:47:54 +0800 Subject: [PATCH 0088/1139] =?UTF-8?q?docs(function):=20=E7=AE=AD=E5=A4=B4?= =?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/function.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/function.md b/docs/function.md index efd32073f..bc4856ea0 100644 --- a/docs/function.md +++ b/docs/function.md @@ -839,7 +839,7 @@ foo.call( { id: 42 } ); // id: 42 ``` -上面代码中,`setTimeout`的参数是一个箭头函数,100毫秒后执行。如果是普通函数,执行时`this`应该指向全局对象,但是箭头函数导致`this`总是指向函数所在的对象。 +上面代码中,`setTimeout`的参数是一个箭头函数,100毫秒后执行。如果是普通函数,执行时`this`应该指向全局对象`window`,但是箭头函数导致`this`总是指向函数所在的对象(本例是`{id: 42}`)。 下面是另一个例子。 @@ -858,7 +858,7 @@ var handler = { }; ``` -上面代码的`init`方法中,使用了箭头函数,这导致`this`总是指向`handler`对象。否则,回调函数运行时,`this.doSomething`这一行会报错,因为此时`this`指向全局对象。 +上面代码的`init`方法中,使用了箭头函数,这导致`this`总是指向`handler`对象。否则,回调函数运行时,`this.doSomething`这一行会报错,因为此时`this`指向`document`对象。 ```javascript function Timer () { From 71690edd72fbfabc2126a4f7f23dc6368e908abb Mon Sep 17 00:00:00 2001 From: Xuecheng Albert Date: Fri, 19 Feb 2016 16:52:53 +0800 Subject: [PATCH 0089/1139] =?UTF-8?q?=E6=9B=B4=E6=AD=A3=20babel-core=20?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E4=BB=A3=E7=A0=81=E7=89=87=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit let x = n => n + 1 是 es6的语法,赋给se5Code变量容易误解 --- docs/intro.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index b1dc038de..8c65d7c62 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -320,8 +320,8 @@ babel.transformFromAst(ast, code, options); 下面是一个例子。 ```javascript -var es5Code = 'let x = n => n + 1'; -var es6Code = require('babel-core') +var es6Code = 'let x = n => n + 1'; +var es5Code = require('babel-core') .transform(es5Code, { presets: ['es2015'] }) @@ -329,7 +329,7 @@ var es6Code = require('babel-core') // '"use strict";\n\nvar x = function x(n) {\n return n + 1;\n};' ``` -上面代码中,`transform`方法的第一个参数是一个字符串,表示需要转换的ES5代码,第二个参数是转换的配置对象。 +上面代码中,`transform`方法的第一个参数是一个字符串,表示需要被转换的ES6代码,第二个参数是转换的配置对象。 ### babel-polyfill From 098a3dc830b0b3da7457ffc670c3b6adc2d3dd81 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 24 Feb 2016 18:48:08 +0800 Subject: [PATCH 0090/1139] docs(generator): edit next method --- docs/destructuring.md | 2 +- docs/generator.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index fdf714fcb..cdd034d72 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -599,7 +599,7 @@ var jsonData = { let { id, status, data: number } = jsonData; console.log(id, status, number) -// 42, OK, [867, 5309] +// 42, "OK", [867, 5309] ``` 上面代码可以快速提取JSON数据的值。 diff --git a/docs/generator.md b/docs/generator.md index 5cfce84d3..6bd52e7ed 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -235,7 +235,7 @@ function* foo(x) { var a = foo(5); a.next() // Object{value:6, done:false} a.next() // Object{value:NaN, done:false} -a.next() // Object{value:NaN, done:false} +a.next() // Object{value:NaN, done:true} var b = foo(5); b.next() // { value:6, done:false } @@ -599,7 +599,7 @@ function log(generator) { var v; console.log('starting generator'); try { - v = generator.next(); // { value: undefined, done: true } + v = generator.next(); console.log('第一次运行next方法', v); } catch (err) { console.log('捕捉错误', v); @@ -1129,17 +1129,17 @@ var clock = function() { 上面代码的clock函数一共有两种状态(Tick和Tock),每运行一次,就改变一次状态。这个函数如果用Generator实现,就是下面这样。 ```javascript -var clock = function*(_) { +var clock = function*() { while (true) { - yield _; console.log('Tick!'); - yield _; + yield; console.log('Tock!'); + yield; } }; ``` -上面的Generator实现与ES5实现对比,可以看到少了用来保存状态的外部变量ticking,这样就更简洁,更安全(状态不会被非法篡改)、更符合函数式编程的思想,在写法上也更优雅。Generator之所以可以不用外部变量保存状态,是因为它本身就包含了一个状态信息,即目前是否处于暂停态。 +上面的Generator实现与ES5实现对比,可以看到少了用来保存状态的外部变量`ticking`,这样就更简洁,更安全(状态不会被非法篡改)、更符合函数式编程的思想,在写法上也更优雅。Generator之所以可以不用外部变量保存状态,是因为它本身就包含了一个状态信息,即目前是否处于暂停态。 ### Generator与协程 From 73400107a3140a2fc1fd231a7013ffcbe0f0d0de Mon Sep 17 00:00:00 2001 From: Zheng Guoli <693140560@qq.com> Date: Thu, 25 Feb 2016 16:30:53 +0800 Subject: [PATCH 0091/1139] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=B0=8F=E7=9A=84=E6=8B=BC=E5=86=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结合上下文的关系来看,此处应该是拼写错误。 所以将 PEPL 修改为 REPL 。 --- docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro.md b/docs/intro.md index 8c65d7c62..388edf217 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -230,7 +230,7 @@ $ npm run build `babel-cli`工具自带一个`babel-node`命令,提供一个支持ES6的REPL环境。它支持Node的REPL环境的所有功能,而且可以直接运行ES6代码。 -它不用单独安装,而是随`babel-cli`一起安装。然后,执行`babel-node`就进入PEPL环境。 +它不用单独安装,而是随`babel-cli`一起安装。然后,执行`babel-node`就进入REPL环境。 ```bash $ babel-node From 342fe1da61d50da2fd2891a63f13c3a3e8ac627c Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 27 Feb 2016 19:01:07 +0800 Subject: [PATCH 0092/1139] =?UTF-8?q?docs(regex):=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=90=8E=E8=A1=8C=E6=96=AD=E8=A8=80=E7=9A=84=E4=BB=8B=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/object.md | 22 +++++++++++++++++++--- docs/reference.md | 1 + docs/regex.md | 47 ++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 64 insertions(+), 6 deletions(-) diff --git a/docs/object.md b/docs/object.md index 308181546..22476e02e 100644 --- a/docs/object.md +++ b/docs/object.md @@ -312,7 +312,7 @@ Object.defineProperty(Object, 'is', { ## Object.assign() -`Object.assign`方法用来将源对象(source)的所有可枚举属性,复制到目标对象(target)。它至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。只要有一个参数不是对象,就会抛出TypeError错误。 +`Object.assign`方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。 ```javascript var target = { a: 1 }; @@ -324,6 +324,8 @@ Object.assign(target, source1, source2); target // {a:1, b:2, c:3} ``` +`Object.assign`方法至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。只要有一个参数不是对象,就会抛出TypeError错误。 + 注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。 ```javascript @@ -357,7 +359,19 @@ Object.assign({ a: 'b' }, { [Symbol('c')]: 'd' }) // { a: 'b', Symbol(c): 'd' } ``` -对于嵌套的对象,`Object.assign`的处理方法是替换,而不是添加。 +`Object.assign`方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。 + +```javascript +var obj1 = {a: {b: 1}}; +var obj2 = Object.assign({}, obj1); + +obj1.a.b = 2; +obj2.a.b // 2 +``` + +上面代码中,源对象`obj1`的`a`属性的值是一个对象,`Object.assign`拷贝得到的是这个对象的引用。这个对象的任何变化,都会反映到目标对象上面。 + +对于这种嵌套的对象,一旦遇到同名属性,`Object.assign`的处理方法是替换,而不是添加。 ```javascript var target = { a: { b: 'c', d: 'e' } } @@ -366,7 +380,9 @@ Object.assign(target, source) // { a: { b: 'hello' } } ``` -上面代码中,`target`对象的`a`属性被`source`对象的`a`属性整个替换掉了,而不会得到`{ a: { b: 'hello', d: 'e' } }`的结果。这通常不是开发者想要的,需要特别小心。有一些函数库提供`Object.assign`的定制版本(比如Lodash的`_.defaultsDeep`方法),可以解决深拷贝的问题。 +上面代码中,`target`对象的`a`属性被`source`对象的`a`属性整个替换掉了,而不会得到`{ a: { b: 'hello', d: 'e' } }`的结果。这通常不是开发者想要的,需要特别小心。 + +有一些函数库提供`Object.assign`的定制版本(比如Lodash的`_.defaultsDeep`方法),可以解决浅拷贝的问题,得到深拷贝的合并。 注意,`Object.assign`可以用来处理数组,但是会把数组视为对象。 diff --git a/docs/reference.md b/docs/reference.md index 51422e2b7..2e8150b6b 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -54,6 +54,7 @@ - Mathias Bynens, [Unicode-aware regular expressions in ES6](https://mathiasbynens.be/notes/es6-unicode-regex): 详细介绍正则表达式的u修饰符 - Axel Rauschmayer, [New regular expression features in ECMAScript 6](http://www.2ality.com/2015/07/regexp-es6.html):ES6正则特性的详细介绍 +- Yang Guo, [RegExp lookbehind assertions](http://v8project.blogspot.jp/2016/02/regexp-lookbehind-assertions.html):介绍后行断言 ## 数值 diff --git a/docs/regex.md b/docs/regex.md index c1886f972..28beaa1e6 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -147,12 +147,12 @@ r1.exec(s) // ["aa"] r2.exec(s) // null ``` -上面代码有两个正则表达式,一个使用g修饰符,另一个使用y修饰符。这两个正则表达式各执行了两次,第一次执行的时候,两者行为相同,剩余字符串都是“_aa_a”。由于g修饰没有位置要求,所以第二次执行会返回结果,而y修饰符要求匹配必须从头部开始,所以返回null。 +上面代码有两个正则表达式,一个使用`g`修饰符,另一个使用`y`修饰符。这两个正则表达式各执行了两次,第一次执行的时候,两者行为相同,剩余字符串都是`_aa_a`。由于g修饰没有位置要求,所以第二次执行会返回结果,而y修饰符要求匹配必须从头部开始,所以返回`null`。 -如果改一下正则表达式,保证每次都能头部匹配,y修饰符就会返回结果了。 +如果改一下正则表达式,保证每次都能头部匹配,`y`修饰符就会返回结果了。 ```javascript -var s = "aaa_aa_a"; +var s = 'aaa_aa_a'; var r = /a+_/y; r.exec(s) // ["aaa_"] @@ -346,3 +346,44 @@ escape('hi. how are you?') "hi\\. how are you\\?" ``` +## 后行断言 + +JavaScript语言的正则表达式,只支持先行断言(lookahead)和先行否定断言(negative lookahead),不支持后行断言(lookbehind)和后行否定断言(negative lookbehind)。 + +目前,有一个提案,在ES7加入后行断言。V8引擎4.9版已经支持,Chrome浏览器49版打开”experimental JavaScript features“开关(地址栏键入`about:flags`),就可以使用这项功能。 + +”先行断言“指的是,`x`只有在`y`前面才匹配,必须写成`/x(?=y)/`。比如,只匹配百分号之前的数字,要写成`/\d+(?=%)/`。”先行否定断言“指的是,`x`只有不在`y`前面才匹配,必须写成`x(?!y)`。比如,只匹配不在百分号之前的数字,要写成`/\d+(?!%)/`。 + +```javascript +/\d+(?=%)/.exec("100% of US presidents have been male") // ["100"] +/\d+(?!%)/.exec("that’s all 44 of them") // ["44"] +``` + +上面两个字符串,如果互换正则表达式,就会匹配失败。另外,还可以看到,正则表达式的括号之中的部分,是不计入返回结果的。 + +”后行断言“正好与”先行断言“相反,`x`只有在`y`后面才匹配,必须写成`/(?<=y)x/`。比如,只匹配美元符号之后的数字,要写成`/(?<=\$)\d+/`。”后行否定断言“则与”先行否定断言“相反,`x`只有不在`y`后面才匹配,必须写成`/(? Date: Sat, 27 Feb 2016 19:44:03 +0800 Subject: [PATCH 0093/1139] =?UTF-8?q?docs(regex):=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=90=8E=E8=A1=8C=E6=96=AD=E8=A8=80=E7=9A=84=E4=BB=8B=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/regex.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/regex.md b/docs/regex.md index 28beaa1e6..1103f418a 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -350,7 +350,7 @@ escape('hi. how are you?') JavaScript语言的正则表达式,只支持先行断言(lookahead)和先行否定断言(negative lookahead),不支持后行断言(lookbehind)和后行否定断言(negative lookbehind)。 -目前,有一个提案,在ES7加入后行断言。V8引擎4.9版已经支持,Chrome浏览器49版打开”experimental JavaScript features“开关(地址栏键入`about:flags`),就可以使用这项功能。 +目前,有一个[提案](https://github.com/goyakin/es-regexp-lookbehind),在ES7加入后行断言。V8引擎4.9版已经支持,Chrome浏览器49版打开”experimental JavaScript features“开关(地址栏键入`about:flags`),就可以使用这项功能。 ”先行断言“指的是,`x`只有在`y`前面才匹配,必须写成`/x(?=y)/`。比如,只匹配百分号之前的数字,要写成`/\d+(?=%)/`。”先行否定断言“指的是,`x`只有不在`y`前面才匹配,必须写成`x(?!y)`。比如,只匹配不在百分号之前的数字,要写成`/\d+(?!%)/`。 @@ -370,20 +370,22 @@ JavaScript语言的正则表达式,只支持先行断言(lookahead)和先 上面的例子中,正则表达式的括号之中的部分,也是不计入返回结果。 -但是,如果括号之中还有括号,就会当作组匹配,返回匹配结果。 +”后行断言“的实现,需要先匹配`/(?<=y)x/`的`x`,然后再回到左边,匹配`y`的部分。这种”先右后左“的执行顺序,与所有其他正则操作相反,导致了一些不符合预期的行为。 + +首先,”后行断言“的组匹配,与正常情况下结果是不一样的。 ```javascript -/h(?=(\w)+)/.exec("hodor") // ["h", "r"] -/(?<=(\w)+)r/.exec("hodor") // ["r", "h"] +/(?<=(\d+)(\d+))$/.exec('1053') // ["", "1", "053"] +/^(\d+)(\d+)$/.exec('1053') // ["1053", "105", "3"] ``` -上面代码中,第一个正则表达式是”先行断言“,只匹配后面跟着一个多个任意字符(`\w`)的`h`,这时符合条件的右边最后一个字符,会被括号之中的那个括号捕获返回,上例是`r`。第二个正则表达式是”后行断言“,只匹配前面是一个或多个任意字符(`\w`)的`r`,这时符合条件的左边第一个字符,会被括号之中的那个括号捕获返回,上例是`h`。 +上面代码中,需要捕捉两个组匹配。没有”后行断言“时,第一个括号是贪婪模式,第二个括号只能捕获一个字符,所以结果是`105`和`3`。而”后行断言“时,由于执行顺序是从右到左,第二个括号是贪婪模式,第一个括号只能捕获一个字符,所以结果是`1`和`053`。 -括号之中的那个括号捕获的部分,还可以用反斜杠引用。但是,”后行断言“的反斜杠引用,与通常的顺序相反,必须在对应的那个括号之前。 +其次,”后行断言“的反斜杠引用,也与通常的顺序相反,必须放在对应的那个括号之前。 ```javascript /(?<=(o)d\1)r/.exec("hodor") // null /(?<=\1d(o))r/.exec("hodor") // ["r", "o"] ``` -上面代码中,如果反斜杠引用(`\1`)在括号的后面,就不会得到匹配结果,必须放在前面才可以。 +上面代码中,如果后行断言的反斜杠引用(`\1`)放在括号的后面,就不会得到匹配结果,必须放在前面才可以。 From 74118a5447d2c5a492ec1662d27be2c5ea003e95 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 27 Feb 2016 19:55:46 +0800 Subject: [PATCH 0094/1139] =?UTF-8?q?fix:=20=E6=97=A0=E6=B3=95=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E4=B8=AD=E6=96=87=E7=BC=96=E7=A0=81=E7=9A=84hash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/ditto.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ditto.js b/js/ditto.js index 8ff1dd563..1841abef4 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -329,7 +329,7 @@ function router() { if (sectionId) { $('html, body').animate({ - scrollTop: ($('#' + sectionId).offset().top) + scrollTop: ($('#' + decodeURI(sectionId)).offset().top) }, 300); } else { if (location.hash !== '' || Boolean(perc)) { From c1c4592dda8f1b8f1adb7447537bddfa5cecf19b Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 27 Feb 2016 20:09:13 +0800 Subject: [PATCH 0095/1139] =?UTF-8?q?docs(regex):=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8E=E8=A1=8C=E6=96=AD=E8=A8=80=E7=9A=84=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/regex.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/regex.md b/docs/regex.md index 1103f418a..f8a01c749 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -359,7 +359,7 @@ JavaScript语言的正则表达式,只支持先行断言(lookahead)和先 /\d+(?!%)/.exec("that’s all 44 of them") // ["44"] ``` -上面两个字符串,如果互换正则表达式,就会匹配失败。另外,还可以看到,正则表达式的括号之中的部分,是不计入返回结果的。 +上面两个字符串,如果互换正则表达式,就会匹配失败。另外,还可以看到,”先行断言“括号之中的部分(`/(?=%)/`),是不计入返回结果的。 ”后行断言“正好与”先行断言“相反,`x`只有在`y`后面才匹配,必须写成`/(?<=y)x/`。比如,只匹配美元符号之后的数字,要写成`/(?<=\$)\d+/`。”后行否定断言“则与”先行否定断言“相反,`x`只有不在`y`后面才匹配,必须写成`/(? Date: Sun, 28 Feb 2016 10:12:45 +0800 Subject: [PATCH 0096/1139] fix decorator typo --- docs/decorator.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/decorator.md b/docs/decorator.md index bdcfec57a..aa0ff2ad6 100644 --- a/docs/decorator.md +++ b/docs/decorator.md @@ -121,7 +121,7 @@ class Person { } ``` -上面代码中,修饰器readonly用来修饰”类“的name方法。 +上面代码中,修饰器readonly用来修饰“类”的name方法。 此时,修饰器函数一共可以接受三个参数,第一个参数是所要修饰的目标对象,第二个参数是所要修饰的属性名,第三个参数是该属性的描述对象。 @@ -168,7 +168,7 @@ class Person { } ``` -从上面代码中,我们一眼就能看出,`MyTestableClass`类是可测试的,而`name`方法是只读和不可枚举的。 +从上面代码中,我们一眼就能看出,`Person`类是可测试的,而`name`方法是只读和不可枚举的。 除了注释,修饰器还能用来类型检查。所以,对于类来说,这项功能相当有用。从长期来看,它将是JavaScript代码静态分析的重要工具。 From 834431eceeaa666c15937d70ac09843000354b14 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 29 Feb 2016 18:16:12 +0800 Subject: [PATCH 0097/1139] =?UTF-8?q?docs(class):=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E7=B1=BB=E7=9A=84=E9=9D=99=E6=80=81=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/class.md | 79 +++++++++++++++++++++++++++++++++++++++++++++++---- docs/regex.md | 6 ++-- 2 files changed, 76 insertions(+), 9 deletions(-) diff --git a/docs/class.md b/docs/class.md index d8e1656ca..edb7411d4 100644 --- a/docs/class.md +++ b/docs/class.md @@ -796,7 +796,7 @@ var descriptor = Object.getOwnPropertyDescriptor( ## Class的Generator方法 -如果某个方法之前加上星号(*),就表示该方法是一个Generator函数。 +如果某个方法之前加上星号(`*`),就表示该方法是一个Generator函数。 ```javascript class Foo { @@ -874,7 +874,7 @@ class Bar extends Foo { Bar.classMethod(); ``` -## Class的静态属性 +## Class的静态属性和实例属性 静态属性指的是Class本身的属性,即`Class.propname`,而不是定义在实例对象(`this`)上的属性。 @@ -886,7 +886,7 @@ Foo.prop = 1; Foo.prop // 1 ``` -上面的写法可以读写`Foo`类的静态属性`prop`。 +上面的写法为`Foo`类定义了一个静态属性`prop`。 目前,只有这种写法可行,因为ES6明确规定,Class内部只有静态方法,没有静态属性。 @@ -908,8 +908,11 @@ ES7有一个静态属性的[提案](https://github.com/jeffmo/es-class-propertie 这个提案对实例属性和静态属性,都规定了新的写法。 +(1)类的实例属性 + +类的实例属性可以用等式,写入类的定义之中。 + ```javascript -// 实例属性的新写法 class MyClass { myProp = 42; @@ -917,8 +920,56 @@ class MyClass { console.log(this.myProp); // 42 } } +``` + +上面代码中,`myProp`就是`MyClass`的实例属性。在`MyClass`的实例上,可以读取这个属性。 + +以前,我们定义实例属性,只能写在类的`constructor`方法里面。 + +```javascript +class ReactCounter extends React.Component { + constructor(props) { + super(props); + this.state = { + count: 0 + }; + } +} +``` -// 静态属性的新写法 +上面代码中,构造方法`constructor`里面,定义了`this.state`属性。 + +有了新的写法以后,可以不在`constructor`方法里面定义。 + +```javascript +class ReactCounter extends React.Component { + state = { + count: 0 + }; +} +``` + +这种写法比以前更清晰。 + +为了可读性的目的,对于那些在`constructor`里面已经定义的实例属性,新写法允许直接列出。 + +```javascript +class ReactCounter extends React.Component { + constructor(props) { + super(props); + this.state = { + count: 0 + }; + } + state; +} +``` + +(2)类的静态属性 + +类的静态属性只要在上面的实例属性写法前面,加上`static`关键字就可以了。 + +```javascript class MyClass { static myStaticProp = 42; @@ -928,9 +979,25 @@ class MyClass { } ``` +同样的,这个新写法大大方便了静态属性的表达。 + +```javascript +// 老写法 +class Foo { +} +Foo.prop = 1; + +// 新写法 +class Foo { + static prop = 1; +} +``` + +上面代码中,老写法的静态属性定义在类的外部。整个类生成以后,再生成静态属性。这样让人很容易忽略这个静态属性,也不符合相关代码应该放在一起的代码组织原则。另外,新写法是显式声明(declarative),而不是赋值处理,语义更好。 + ## 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) { diff --git a/docs/regex.md b/docs/regex.md index f8a01c749..e027a364c 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -352,14 +352,14 @@ JavaScript语言的正则表达式,只支持先行断言(lookahead)和先 目前,有一个[提案](https://github.com/goyakin/es-regexp-lookbehind),在ES7加入后行断言。V8引擎4.9版已经支持,Chrome浏览器49版打开”experimental JavaScript features“开关(地址栏键入`about:flags`),就可以使用这项功能。 -”先行断言“指的是,`x`只有在`y`前面才匹配,必须写成`/x(?=y)/`。比如,只匹配百分号之前的数字,要写成`/\d+(?=%)/`。”先行否定断言“指的是,`x`只有不在`y`前面才匹配,必须写成`x(?!y)`。比如,只匹配不在百分号之前的数字,要写成`/\d+(?!%)/`。 +”先行断言“指的是,`x`只有在`y`前面才匹配,必须写成`/x(?=y)/`。比如,只匹配百分号之前的数字,要写成`/\d+(?=%)/`。”先行否定断言“指的是,`x`只有不在`y`前面才匹配,必须写成`/x(?!y)/`。比如,只匹配不在百分号之前的数字,要写成`/\d+(?!%)/`。 ```javascript /\d+(?=%)/.exec("100% of US presidents have been male") // ["100"] /\d+(?!%)/.exec("that’s all 44 of them") // ["44"] ``` -上面两个字符串,如果互换正则表达式,就会匹配失败。另外,还可以看到,”先行断言“括号之中的部分(`/(?=%)/`),是不计入返回结果的。 +上面两个字符串,如果互换正则表达式,就会匹配失败。另外,还可以看到,”先行断言“括号之中的部分(`(?=%)`),是不计入返回结果的。 ”后行断言“正好与”先行断言“相反,`x`只有在`y`后面才匹配,必须写成`/(?<=y)x/`。比如,只匹配美元符号之后的数字,要写成`/(?<=\$)\d+/`。”后行否定断言“则与”先行否定断言“相反,`x`只有不在`y`后面才匹配,必须写成`/(? Date: Mon, 29 Feb 2016 20:28:24 +0800 Subject: [PATCH 0098/1139] fixed Hskell typo, should be Haskell --- docs/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/async.md b/docs/async.md index 054c22f3b..573a5fc5d 100644 --- a/docs/async.md +++ b/docs/async.md @@ -230,7 +230,7 @@ f(x + 5) f(6) ``` -另一种意见是"传名调用"(call by name),即直接将表达式`x + 5`传入函数体,只在用到它的时候求值。Hskell语言采用这种策略。 +另一种意见是"传名调用"(call by name),即直接将表达式`x + 5`传入函数体,只在用到它的时候求值。Haskell语言采用这种策略。 ```javascript f(x + 5) From 9af674d0250db5c89936cfda612a90fd99d882f0 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 3 Mar 2016 16:31:42 +0800 Subject: [PATCH 0099/1139] =?UTF-8?q?docs(function):=20=E7=AE=AD=E5=A4=B4?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E7=9A=84this?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/fp.md | 2 +- docs/function.md | 62 ++++++++++++++++++++++++++++++++++++------------ 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/docs/fp.md b/docs/fp.md index e9f1ac69e..cb8770a3b 100644 --- a/docs/fp.md +++ b/docs/fp.md @@ -188,4 +188,4 @@ f.zipWith = (op, ...xs) => ## 参考链接 -- Mateo Gianolio, [Haskell in ES6: Part 1](http://casualjavascript.com/javascript/es6/haskell/native/implementation/2015/11/12/haskell-in-es6-part-1.html) +- Mateo Gianolio, [Haskell in ES6: Part 1](http://casualjavascript.com/?1) diff --git a/docs/function.md b/docs/function.md index bc4856ea0..ff19a6a1d 100644 --- a/docs/function.md +++ b/docs/function.md @@ -716,7 +716,7 @@ foo.bind({}).name // "bound foo" ### 基本用法 -ES6允许使用“箭头”(=>)定义函数。 +ES6允许使用“箭头”(`=>`)定义函数。 ```javascript var f = v => v; @@ -830,16 +830,18 @@ headAndTail(1, 2, 3, 4, 5) ```javascript function foo() { - setTimeout( () => { - console.log("id:", this.id); - },100); + setTimeout( () => { + console.log("id:", this.id); + },100); } +var id = 21; + foo.call( { id: 42 } ); // id: 42 ``` -上面代码中,`setTimeout`的参数是一个箭头函数,100毫秒后执行。如果是普通函数,执行时`this`应该指向全局对象`window`,但是箭头函数导致`this`总是指向函数所在的对象(本例是`{id: 42}`)。 +上面代码中,`setTimeout`的参数是一个箭头函数,这个箭头函数的定义生效是在`foo`函数生成时,而它的真正执行要等到100毫秒后。如果是普通函数,执行时`this`应该指向全局对象`window`,这时应该输出`21`。但是,箭头函数导致`this`总是指向函数定义生效时所在的对象(本例是`{id: 42}`),所以输出的是`42`。 下面是另一个例子。 @@ -858,7 +860,7 @@ var handler = { }; ``` -上面代码的`init`方法中,使用了箭头函数,这导致`this`总是指向`handler`对象。否则,回调函数运行时,`this.doSomething`这一行会报错,因为此时`this`指向`document`对象。 +上面代码的`init`方法中,使用了箭头函数,这导致这个箭头函数里面的`this`,总是指向`handler`对象。否则,回调函数运行时,`this.doSomething`这一行会报错,因为此时`this`指向`document`对象。 ```javascript function Timer () { @@ -870,28 +872,58 @@ setTimeout(() => console.log(timer.seconds), 3100) // 3 ``` -上面代码中,`Timer`函数内部的`setInterval`调用了`this.seconds`属性,通过箭头函数让`this`总是指向Timer的实例对象。否则,输出结果是0,而不是3。 +上面代码中,`Timer`函数内部的`setInterval`调用了`this.seconds`属性,通过箭头函数让`this`总是指向`Timer`的实例对象。否则,输出结果是0,而不是3。 `this`指向的固定化,并不是因为箭头函数内部有绑定`this`的机制,实际原因是箭头函数根本没有自己的`this`,导致内部的`this`就是外层代码块的`this`。正是因为它没有`this`,所以也就不能用作构造函数。 +所以,箭头函数转成ES5的代码如下。 + +```javascript +// ES6 +function foo() { + setTimeout( () => { + console.log("id:", this.id); + },100); +} + +// ES5 +function foo() { + setTimeout(function () { + console.log("id:", this.id); + }.bind(this), 100); +} + +// 或者 +function foo() { + var _this = this; + + setTimeout(function () { + console.log("id:", _this.id); + }, 100); +} +``` + 请问下面的代码之中有几个`this`? ```javascript function foo() { - return () => { + return () => { + return () => { return () => { - return () => { - console.log("id:", this.id); - }; + console.log("id:", this.id); }; - }; + }; + }; } -foo.call( { id: 42 } )()()(); -// id: 42 +var f = foo.call({id: 1}); + +var t1 = f.call({id: 2})()(); // id: 1 +var t2 = f().call({id: 3})(); // id: 1 +var t3 = f()().call({id: 4}); // id: 1 ``` -上面代码之中,只有一个`this`,就是函数`foo`的`this`。因为所有的内层函数都是箭头函数,都没有自己的`this`,所以它们的`this`其实都是最外层`foo`函数的`this`。 +上面代码之中,只有一个`this`,就是函数`foo`的`this`,所以`t1`、`t2`、`t3`都输出同样的结果。因为所有的内层函数都是箭头函数,都没有自己的`this`,所以它们的`this`其实都是最外层`foo`函数的`this`。 除了`this`,以下三个变量在箭头函数之中也是不存在的,指向外层函数的对应变量:`arguments`、`super`、`new.target`。 From 1ae51bdea5e74474ff2b3b7b84fff57b24dd165e Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 5 Mar 2016 14:35:33 +0800 Subject: [PATCH 0100/1139] =?UTF-8?q?docs(let):=20ES6=E7=9A=84=E5=9D=97?= =?UTF-8?q?=E7=BA=A7=E4=BD=9C=E7=94=A8=E5=9F=9F=E4=BD=BF=E5=BE=97=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=8F=AF=E4=BB=A5=E5=9C=A8=E6=9D=A1=E4=BB=B6=E4=BD=9C?= =?UTF-8?q?=E7=94=A8=E5=9F=9F=E5=86=85=E5=A3=B0=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/function.md | 11 +++-------- docs/let.md | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/docs/function.md b/docs/function.md index ff19a6a1d..a615bb8f9 100644 --- a/docs/function.md +++ b/docs/function.md @@ -887,13 +887,6 @@ function foo() { } // ES5 -function foo() { - setTimeout(function () { - console.log("id:", this.id); - }.bind(this), 100); -} - -// 或者 function foo() { var _this = this; @@ -903,6 +896,8 @@ function foo() { } ``` +上面代码中,箭头函数转成ES5代码时,内部的`this`需要改为引用外部的`this`。 + 请问下面的代码之中有几个`this`? ```javascript @@ -910,7 +905,7 @@ function foo() { return () => { return () => { return () => { - console.log("id:", this.id); + console.log(`id:`, this.id); }; }; }; diff --git a/docs/let.md b/docs/let.md index 00589bb52..21ab33866 100644 --- a/docs/let.md +++ b/docs/let.md @@ -310,7 +310,42 @@ let f; f() // "secret" ``` -需要注意的是,如果在严格模式下,函数只能在顶层作用域和函数内声明,其他情况(比如if代码块、循环代码块)的声明都会报错。 +ES5的严格模式规定,函数只能在顶层作用域和函数内声明,其他情况(比如if代码块、循环代码块)的声明都会报错。 + +```javascript +// ES5 +'use strict'; +if (true) { + function f() {} // 报错 +} +``` + +ES6由于引入了块级作用域,这种情况可以理解成函数在块级作用域内声明,因此不报错,但是构成区块的大括号不能少,否则还是会报错。 + +```javascript +// 不报错 +'use strict'; +if (true) { + function f() {} +} + +// 报错 +'use strict'; +if (true) + function f() {} +``` + +另外,这样声明的函数,在区块外是不可用的。 + +```javascript +'use strict'; +if (true) { + function f() {} +} +f() // ReferenceError: f is not defined +``` + +上面代码中,函数`f`是在块级作用域内部声明的,外部是不可用的。 ## const命令 From c7768ecd19912c0ed526548e99ca03b10c177c3c Mon Sep 17 00:00:00 2001 From: Frezc <504021398@qq.com> Date: Mon, 7 Mar 2016 20:38:04 +0800 Subject: [PATCH 0101/1139] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=B8=A4=E5=A4=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=B9=A6=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/object.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/object.md b/docs/object.md index 22476e02e..fcf96f18e 100644 --- a/docs/object.md +++ b/docs/object.md @@ -748,7 +748,7 @@ Object.values(obj) // [] `Object.values`会过滤属性名为Symbol值的属性。 ```javascript -Object.entries({ [Symbol()]: 123, foo: 'abc' }); +Object.values({ [Symbol()]: 123, foo: 'abc' }); // ['abc'] ``` @@ -886,7 +886,7 @@ o3 // { b: 2 } var o = Object.create({ x: 1, y: 2 }); o.z = 3; -let { x, ...{ y, z } = o; +let { x, ...{ y, z } } = o; x; // 1 y; // undefined z; // 3 From 1e6aba2f3a01a6615bfb571ec3f9e62fbfba3cad Mon Sep 17 00:00:00 2001 From: hisland Date: Tue, 8 Mar 2016 11:33:06 +0800 Subject: [PATCH 0102/1139] 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 55a229085..209fb6eb3 100644 --- a/docs/module.md +++ b/docs/module.md @@ -113,7 +113,7 @@ export { 上面代码使用`as`关键字,重命名了函数`v1`和`v2`的对外接口。重命名后,`v2`可以用不同的名字输出两次。 -最后,`export`命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内,就会报错,下面的`import`命令也是如此。这是因为处于条件代码块之中,就没法做静态优化了,违背了ES6模块的设计初衷。 +最后,`export`命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内,就会报错,下一节的`import`命令也是如此。这是因为处于条件代码块之中,就没法做静态优化了,违背了ES6模块的设计初衷。 ```javascript function foo() { From afd15697edd6b38dae88518ce5793fdcdd77179f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 10 Mar 2016 14:25:46 +0800 Subject: [PATCH 0103/1139] =?UTF-8?q?docs(Object)=EF=BC=9AObject.values()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/object.md | 9 +++++---- docs/reference.md | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/object.md b/docs/object.md index 22476e02e..e4c77b066 100644 --- a/docs/object.md +++ b/docs/object.md @@ -701,18 +701,19 @@ 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 obj = { a: 1, b: 2, c: 3 }; for (let key of keys(obj)) { - // ['a', 'b', 'c'] + console.log(key); // 'a', 'b', 'c' } for (let value of values(obj)) { - // [1, 2, 3] + console.log(value); // 1, 2, 3 } for (let [key, value] of entries(obj)) { - // [['a', 1], ['b', 2], ['c', 3]] + console.log([key, value]); // ['a', 1], ['b', 2], ['c', 3] } ``` @@ -739,7 +740,7 @@ Object.values(obj) `Object.values`只返回对象自身的可遍历属性。 ```javascript -var obj = Object.create({}, {p: 42}); +var obj = Object.create({}, {p: {value: 42}}); Object.values(obj) // [] ``` diff --git a/docs/reference.md b/docs/reference.md index 2e8150b6b..4f4d74690 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -35,6 +35,7 @@ - kangax, [Why typeof is no longer “safe”](http://es-discourse.com/t/why-typeof-is-no-longer-safe/15): 讨论在块级作用域内,let命令的变量声明和赋值的行为 - 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): 块级作用域对严格模式的函数声明的影响 ## 解构赋值 From 240a927a364b737a3ea4336b2a0682dec9c75ae7 Mon Sep 17 00:00:00 2001 From: Willin Wang Date: Thu, 10 Mar 2016 14:40:17 +0800 Subject: [PATCH 0104/1139] =?UTF-8?q?=E5=BC=BA=E8=BF=AB=E7=97=87=E4=BF=AE?= =?UTF-8?q?=E6=94=B9"->'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/module.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/module.md b/docs/module.md index 209fb6eb3..e93ce6d8e 100644 --- a/docs/module.md +++ b/docs/module.md @@ -38,7 +38,7 @@ import { stat, exists, readFile } from 'fs'; ## 严格模式 -ES6的模块自动采用严格模式,不管你有没有在模块头部加上`"use strict"`。 +ES6的模块自动采用严格模式,不管你有没有在模块头部加上`"use strict";`。 严格模式主要有以下限制。 @@ -181,16 +181,16 @@ export default es6; ```javascript // 提案的写法 -export v from "mod"; +export v from 'mod'; // 现行的写法 -export {v} from "mod"; +export {v} from 'mod'; ``` `import`语句会执行所加载的模块,因此可以有下面的写法。 ```javascript -import 'lodash' +import 'lodash'; ``` 上面代码仅仅执行`lodash`模块,但是不输入任何值。 @@ -220,8 +220,8 @@ export function circumference(radius) { import { area, circumference } from './circle'; -console.log("圆面积:" + area(4)); -console.log("圆周长:" + circumference(14)); +console.log('圆面积:' + area(4)); +console.log('圆周长:' + circumference(14)); ``` 上面写法是逐一指定要加载的方法,整体加载的写法如下。 @@ -229,8 +229,8 @@ console.log("圆周长:" + circumference(14)); ```javascript import * as circle from './circle'; -console.log("圆面积:" + circle.area(4)); -console.log("圆周长:" + circle.circumference(14)); +console.log('圆面积:' + circle.area(4)); +console.log('圆周长:' + circle.circumference(14)); ``` ## export default命令 @@ -394,8 +394,8 @@ export { area as circleArea } from 'circle'; ```javascript // main.js -import * as math from "circleplus"; -import exp from "circleplus"; +import * as math from 'circleplus'; +import exp from 'circleplus'; console.log(exp(math.e)); ``` From 814f733c4563a00313f88484eac0a4f05c87bf2d Mon Sep 17 00:00:00 2001 From: Willin Wang Date: Thu, 10 Mar 2016 14:47:45 +0800 Subject: [PATCH 0105/1139] =?UTF-8?q?=E6=8B=BC=E5=86=99=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= 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 e93ce6d8e..bd2338a36 100644 --- a/docs/module.md +++ b/docs/module.md @@ -256,7 +256,7 @@ import customName from './export-default'; customName(); // 'foo' ``` -上面代码的`impor`t命令,可以用任意名称指向`export-default.js`输出的方法,这时就不需要知道原模块输出的函数名。需要注意的是,这时`import`命令后面,不使用大括号。 +上面代码的`import`命令,可以用任意名称指向`export-default.js`输出的方法,这时就不需要知道原模块输出的函数名。需要注意的是,这时`import`命令后面,不使用大括号。 `export default`命令用在非匿名函数前,也是可以的。 From fdb0c2027e1f45b7a9eddd2d43cc140ef0169c14 Mon Sep 17 00:00:00 2001 From: Willin Wang Date: Thu, 10 Mar 2016 15:17:18 +0800 Subject: [PATCH 0106/1139] =?UTF-8?q?=E5=BC=BA=E8=BF=AB=E7=97=87=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E2=80=9C->"?= 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 573a5fc5d..713698665 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 59ed5c3c8e31068a996bbb9da88076ad611e7632 Mon Sep 17 00:00:00 2001 From: Willin Wang Date: Thu, 10 Mar 2016 15:41:35 +0800 Subject: [PATCH 0107/1139] =?UTF-8?q?=E5=BC=BA=E8=BF=AB=E7=97=87=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20"->'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/regex.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/regex.md b/docs/regex.md index e027a364c..6644e83d0 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -5,7 +5,7 @@ 在ES5中,RegExp构造函数只能接受字符串作为参数。 ```javascript -var regex = new RegExp("xyz", "i"); +var regex = new RegExp('xyz', 'i'); // 等价于 var regex = /xyz/i; ``` @@ -54,7 +54,7 @@ ES6对正则表达式添加了`u`修饰符,含义为“Unicode模式”,用 点(.)字符在正则表达式中,含义是除了换行符以外的任意单个字符。对于码点大于`0xFFFF`的Unicode字符,点字符不能识别,必须加上u修饰符。 ```javascript -var s = "𠮷"; +var s = '𠮷'; /^.$/.test(s) // false /^.$/u.test(s) // true @@ -112,7 +112,7 @@ function codePointLength(text) { return result ? result.length : 0; } -var s = "𠮷𠮷"; +var s = '𠮷𠮷'; s.length // 4 codePointLength(s) // 2 @@ -136,7 +136,7 @@ codePointLength(s) // 2 y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于,g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。 ```javascript -var s = "aaa_aa_a"; +var s = 'aaa_aa_a'; var r1 = /a+/g; var r2 = /a+/y; @@ -207,7 +207,7 @@ REGEX.lastIndex // 4 进一步说,`y`修饰符号隐含了头部匹配的标志ˆ。 ```javascript -/b/y.exec("aba") +/b/y.exec('aba') // null ``` @@ -307,7 +307,7 @@ ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符 ```javascript function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); } let str = '/path/to/resource.html?search=query'; @@ -320,13 +320,13 @@ escapeRegExp(str) 已经有[提议](https://esdiscuss.org/topic/regexp-escape)将这个需求标准化,作为RegExp对象的静态方法[RegExp.escape()](https://github.com/benjamingr/RexExp.escape),放入ES7。2015年7月31日,TC39认为,这个方法有安全风险,又不愿这个方法变得过于复杂,没有同意将其列入ES7,但这不失为一个真实的需求。 ```javascript -RegExp.escape("The Quick Brown Fox"); +RegExp.escape('The Quick Brown Fox'); // "The Quick Brown Fox" -RegExp.escape("Buy it. use it. break it. fix it.") +RegExp.escape('Buy it. use it. break it. fix it.'); // "Buy it\. use it\. break it\. fix it\." -RegExp.escape("(*.*)"); +RegExp.escape('(*.*)'); // "\(\*\.\*\)" ``` @@ -342,8 +342,8 @@ assert.equal(String(regex), '/hello\. how are you\?/g'); ```javascript var escape = require('regexp.escape'); -escape('hi. how are you?') -"hi\\. how are you\\?" +escape('hi. how are you?'); +// "hi\\. how are you\\?" ``` ## 后行断言 @@ -355,22 +355,22 @@ JavaScript语言的正则表达式,只支持先行断言(lookahead)和先 ”先行断言“指的是,`x`只有在`y`前面才匹配,必须写成`/x(?=y)/`。比如,只匹配百分号之前的数字,要写成`/\d+(?=%)/`。”先行否定断言“指的是,`x`只有不在`y`前面才匹配,必须写成`/x(?!y)/`。比如,只匹配不在百分号之前的数字,要写成`/\d+(?!%)/`。 ```javascript -/\d+(?=%)/.exec("100% of US presidents have been male") // ["100"] -/\d+(?!%)/.exec("that’s all 44 of them") // ["44"] +/\d+(?=%)/.exec('100% of US presidents have been male') // ["100"] +/\d+(?!%)/.exec('that’s all 44 of them') // ["44"] ``` 上面两个字符串,如果互换正则表达式,就会匹配失败。另外,还可以看到,”先行断言“括号之中的部分(`(?=%)`),是不计入返回结果的。 -”后行断言“正好与”先行断言“相反,`x`只有在`y`后面才匹配,必须写成`/(?<=y)x/`。比如,只匹配美元符号之后的数字,要写成`/(?<=\$)\d+/`。”后行否定断言“则与”先行否定断言“相反,`x`只有不在`y`后面才匹配,必须写成`/(? Date: Sun, 13 Mar 2016 05:51:33 +0800 Subject: [PATCH 0108/1139] =?UTF-8?q?docs(promise):=20catch=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/promise.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/promise.md b/docs/promise.md index 9a1e4c12a..3659ba6d7 100644 --- a/docs/promise.md +++ b/docs/promise.md @@ -225,12 +225,12 @@ getJSON("/post/1.json").then( getJSON("/posts.json").then(function(posts) { // ... }).catch(function(error) { - // 处理前一个回调函数运行时发生的错误 + // 处理 getJSON 和 前一个回调函数运行时发生的错误 console.log('发生错误!', error); }); ``` -上面代码中,`getJSON`方法返回一个Promise对象,如果该对象状态变为`Resolved`,则会调用`then`方法指定的回调函数;如果异步操作抛出错误,状态就会变为`Rejected`,就会调用`catch`方法指定的回调函数,处理这个错误。 +上面代码中,`getJSON`方法返回一个Promise对象,如果该对象状态变为`Resolved`,则会调用`then`方法指定的回调函数;如果异步操作抛出错误,状态就会变为`Rejected`,就会调用`catch`方法指定的回调函数,处理这个错误。另外,`then`方法指定的回调函数,如果运行中抛出错误,也会被`catch`方法捕获。 ```javascript p.then((val) => console.log("fulfilled:", val)) @@ -254,7 +254,7 @@ promise.catch(function(error) { // Error: test ``` -上面代码中,Promise抛出一个错误,就被`catch`方法指定的回调函数捕获。注意,上面的写法与下面两种写法是等价的。 +上面代码中,`promise`抛出一个错误,就被`catch`方法指定的回调函数捕获。注意,上面的写法与下面两种写法是等价的。 ```javascript // 写法一 @@ -284,7 +284,7 @@ promise.catch(function(error) { ```javascript var promise = new Promise(function(resolve, reject) { - resolve("ok"); + resolve('ok'); throw new Error('test'); }); promise @@ -330,9 +330,9 @@ promise }); ``` -上面代码中,第二种写法要好于第一种写法,理由是前者更接近同步的写法(try/catch)。 +上面代码中,第二种写法要好于第一种写法,理由是第二种写法可以捕获前面`then`方法执行中的错误,也更接近同步的写法(`try/catch`)。因此,建议总是使用`catch`方法,而不使用`then`方法的第二个参数。 -跟传统的try/catch代码块不同的是,如果没有使用`catch`方法指定错误处理的回调函数,Promise对象抛出的错误不会传递到外层代码,即不会有任何反应。 +跟传统的`try/catch`代码块不同的是,如果没有使用`catch`方法指定错误处理的回调函数,Promise对象抛出的错误不会传递到外层代码,即不会有任何反应。 ```javascript var someAsyncThing = function() { From 3b58e10991c03a7dfd6f0c3b3f7cdac4ad935c40 Mon Sep 17 00:00:00 2001 From: charlie Date: Mon, 14 Mar 2016 04:10:31 +0800 Subject: [PATCH 0109/1139] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E8=AF=8D?= 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 6bd52e7ed..665ba8ac4 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -10,7 +10,7 @@ Generator函数有多种理解角度。从语法上,首先可以把它理解 执行Generator函数会返回一个遍历器对象,也就是说,Generator函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历Generator函数内部的每一个状态。 -形式上,Generator函数是一个普通函数,但是有两个特征。一是,`function`命令与函数名之间有一个星号;二是,函数体内部使用`yield`语句,定义不同的内部状态(yield语句在英语里的意思就是“产出”)。 +形式上,Generator函数是一个普通函数,但是有两个特征。一是,`function`关键字与函数名之间有一个星号;二是,函数体内部使用`yield`语句,定义不同的内部状态(yield语句在英语里的意思就是“产出”)。 ```javascript function* helloWorldGenerator() { From 29578117960369ee1685785bf2d138210be014e1 Mon Sep 17 00:00:00 2001 From: cntanglijun <869058216@qq.com> Date: Wed, 16 Mar 2016 00:55:46 +0800 Subject: [PATCH 0110/1139] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E9=80=97=E5=8F=B7=20:pray:?= 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 a615bb8f9..11101ce28 100644 --- a/docs/function.md +++ b/docs/function.md @@ -1165,7 +1165,7 @@ function addOne(a){ } ``` -上面的函数不会进行尾调用优化,因为内层函数`inner`用到了,外层函数`addOne`的内部变量`one`。 +上面的函数不会进行尾调用优化,因为内层函数`inner`用到了外层函数`addOne`的内部变量`one`。 ### 尾递归 From d14163cf5d8cf8745037b40dedb79b9c0abfde5a Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 19 Mar 2016 16:40:52 +0800 Subject: [PATCH 0111/1139] docs(intro): fix babel --- docs/function.md | 2 +- docs/intro.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/function.md b/docs/function.md index a615bb8f9..c08520144 100644 --- a/docs/function.md +++ b/docs/function.md @@ -502,7 +502,7 @@ var arr2 = ['c']; var arr3 = ['d', 'e']; // ES5的合并数组 -arr1.concat(arr2, arr3)); +arr1.concat(arr2, arr3); // [ 'a', 'b', 'c', 'd', 'e' ] // ES6的合并数组 diff --git a/docs/intro.md b/docs/intro.md index 388edf217..1bbed87bc 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -322,7 +322,7 @@ babel.transformFromAst(ast, code, options); ```javascript var es6Code = 'let x = n => n + 1'; var es5Code = require('babel-core') - .transform(es5Code, { + .transform(es6Code, { presets: ['es2015'] }) .code; From e0e471bdd48aeaf40275002d759c8bff98d314bb Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 19 Mar 2016 17:41:35 +0800 Subject: [PATCH 0112/1139] docs(destructuring): parentheses --- docs/destructuring.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index cdd034d72..3ca26486f 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -487,12 +487,17 @@ move(); // [0, 0] 以下三种解构赋值不得使用圆括号。 -(1)变量声明语句中,模式不能带有圆括号。 +(1)变量声明语句中,不能带有圆括号。 ```javascript // 全部报错 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 } }; ``` @@ -507,7 +512,7 @@ var { o: ({ p: p }) } = { o: { p: 2 } }; function f([(z)]) { return z; } ``` -(3)不能将整个模式,或嵌套模式中的一层,放在圆括号之中。 +(3)赋值语句中,不能将整个模式,或嵌套模式中的一层,放在圆括号之中。 ```javascript // 全部报错 From d2fca7f2a17c261a884764d661b69d8bac4bc80b Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 23 Mar 2016 13:31:04 +0800 Subject: [PATCH 0113/1139] =?UTF-8?q?docs(regex):=20RegExp=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/regex.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/docs/regex.md b/docs/regex.md index 6644e83d0..d71c4442e 100644 --- a/docs/regex.md +++ b/docs/regex.md @@ -2,7 +2,9 @@ ## RegExp构造函数 -在ES5中,RegExp构造函数只能接受字符串作为参数。 +在ES5中,RegExp构造函数的参数有两种情况。 + +第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。 ```javascript var regex = new RegExp('xyz', 'i'); @@ -10,22 +12,33 @@ var regex = new RegExp('xyz', 'i'); var regex = /xyz/i; ``` -ES6允许RegExp构造函数接受正则表达式作为参数,这时会返回一个原有正则表达式的拷贝。 +第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。 ```javascript var regex = new RegExp(/xyz/i); +// 等价于 +var regex = /xyz/i; +``` + +但是,ES5不允许此时使用第二个参数,添加修饰符,否则会报错。 + +```javascript +var regex = new RegExp(/xyz/, i); +// Uncaught TypeError: Cannot supply flags when constructing one RegExp from another ``` -如果使用RegExp构造函数的第二个参数指定修饰符,则返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。 +ES6改变了这种行为。如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。 ```javascript new RegExp(/abc/ig, 'i').flags // "i" ``` +上面代码中,原有正则对象的修饰符是`ig`,它会被第二个参数`i`覆盖。 + ## 字符串的正则方法 -字符串对象共有4个方法,可以使用正则表达式:match()、replace()、search()和split()。 +字符串对象共有4个方法,可以使用正则表达式:`match()`、`replace()`、`search()`和`split()`。 ES6将这4个方法,在语言内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法,全都定义在RegExp对象上。 From 96c3de7eaa6d642feb0917dcc033b430c9a15830 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 23 Mar 2016 14:29:20 +0800 Subject: [PATCH 0114/1139] =?UTF-8?q?docs(arrayBuffer):=20TypedArray?= =?UTF-8?q?=E6=95=B0=E7=BB=84=E7=9A=84=E6=BA=A2=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/arraybuffer.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index e33054f7f..a1b0e0bff 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -464,9 +464,9 @@ function str2ab(str) { ### 溢出 -不同的视图类型,所能容纳的数值范围是确定的。超出这个范围,就会出现溢出。 +不同的视图类型,所能容纳的数值范围是确定的。超出这个范围,就会出现溢出。比如,8位视图只能容纳一个8位的二进制值,如果放入一个9位的值,就会溢出。 -TypedArray数组对于溢出,采用的处理方法是求余值。正向溢出(overflow)的含义是输入值大于当前数据类型的最大值,最后得到的值就等于当前数据类型的最小值加上余值,再减去1;负向溢出(underflow)等于当前数据类型的最大值减去余值,再加上1。 +TypedArray数组的溢出处理规则,简单来说,就是抛弃溢出的位,然后按照视图类型进行解释。 ```javascript var uint8 = new Uint8Array(1); @@ -478,9 +478,16 @@ uint8[0] = -1; uint8[0] // 255 ``` -上面例子中,8位无符号整数的数值范围是0到255,超出这个范围,就是溢出。256相当于正向溢出1,即余值为1,最后的值等于0(`0 + 1 -1`);-1相当于负向溢出1,余值也为1,最后的值等于255(`255 - 1 + 1`)。 +上面代码中,`uint8`是一个8位视图,而256的二进制形式是一个9位的值`100000000`,这时就会发生溢出。根据规则,只会保留后8位,即`00000000`。`uint8`视图的解释规则是无符号的8位整数,所以`00000000`就是`0`。 -下面是8位带符号整数的例子。 +负数在计算机内部采用“2的补码”表示,也就是说,将对应的正数值进行否运算,然后加`1`。比如,`-1`对应的正值是`1`,进行否运算以后,得到`11111110`,再加上`1`就是补码形式`11111111`。`uint8`按照无符号的8位整数解释`11111111`,返回结果就是`255`。 + +一个简单转换规则,可以这样表示。 + +- 正向溢出(overflow):当输入值大于当前数据类型的最大值,结果等于当前数据类型的最小值加上余值,再减去1。 +- 负向溢出(underflow):当输入值小于当前数据类型的最小值,结果等于当前数据类型的最大值减去余值,再加上1。 + +请看下面的例子。 ```javascript var int8 = new Int8Array(1); @@ -492,9 +499,9 @@ int8[0] = -129; int8[0] // 127 ``` -上面例子中,8位带符号整数的数值范围是-128到127。128相当于正向溢出1,等于-128;-129相当于负向溢出1,等于127。 +上面例子中,`int8`是一个带符号的8位整数视图,它的最大值是127,最小值是-128。输入值为`128`时,相当于正向溢出`1`,根据“最小值加上余值,再减去1”的规则,就会返回`-128`;输入值为`-129`时,相当于负向溢出`1`,根据“最大值减去余值,再加上1”的规则,就会返回`127`。 -`Uint8ClampedArray`视图的溢出,与上面的规则有所不同。负向溢出都等于0,正向溢出都等于255。 +`Uint8ClampedArray`视图的溢出规则,与上面的规则不同。它规定,凡是发生正向溢出,该值一律等于当前数据类型的最大值,即255;如果发生负向溢出,该值一律等于当前数据类型的最小值,即0。 ```javascript var uint8c = new Uint8ClampedArray(1); @@ -506,7 +513,7 @@ uint8c[0] = -1; uint8c[0] // 0 ``` -上面例子中,`Uint8C`类型的数值范围与8位无符号整数相同,都是0到255。正向溢出都等于255,负向溢出都等于0。 +上面例子中,`uint8C`是一个`Uint8ClampedArray`视图,正向溢出时都返回255,负向溢出都返回0。 ### TypedArray.prototype.buffer From 8796fc605f9658c8cec85b1183418efabf8f1162 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 26 Mar 2016 21:00:11 +0800 Subject: [PATCH 0115/1139] =?UTF-8?q?fix(class):=20=E7=BB=A7=E6=89=BFObjec?= =?UTF-8?q?t=E7=9A=84=E5=AD=90=E7=B1=BB=E8=A1=8C=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/class.md | 16 +++++++++++++++- docs/set-map.md | 14 ++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/docs/class.md b/docs/class.md index edb7411d4..53671e66a 100644 --- a/docs/class.md +++ b/docs/class.md @@ -427,7 +427,7 @@ cp instanceof ColorPoint // true cp instanceof Point // true ``` -上面代码中,实例对象cp同时是ColorPoint和Point两个类的实例,这与ES5的行为完全一致。 +上面代码中,实例对象`cp`同时是`ColorPoint`和`Point`两个类的实例,这与ES5的行为完全一致。 ### 类的prototype属性和\_\_proto\_\_属性 @@ -741,6 +741,20 @@ myerror.stack // ... ``` +注意,继承`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关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。 diff --git a/docs/set-map.md b/docs/set-map.md index 64d43e8d2..ba9a63491 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -288,7 +288,7 @@ ws.add(Symbol()) // TypeError: invalid value used in weak set ``` -上面代码试图向WeakSet添加一个数值和`Symbol`值,结果报错。 +上面代码试图向WeakSet添加一个数值和`Symbol`值,结果报错,因为WeakSet只能放置对象。 WeakSet是一个构造函数,可以使用`new`命令,创建WeakSet数据结构。 @@ -303,7 +303,17 @@ var a = [[1,2], [3,4]]; var ws = new WeakSet(a); ``` -上面代码中,a是一个数组,它有两个成员,也都是数组。将a作为WeakSet构造函数的参数,a的成员会自动成为WeakSet的成员。 +上面代码中,`a`是一个数组,它有两个成员,也都是数组。将`a`作为WeakSet构造函数的参数,`a`的成员会自动成为WeakSet的成员。 + +注意,是`a`数组的成员成为WeakSet的成员,而不是`a`数组本身。这意味着,数组的成员只能是对象。 + +```javascript +var b = [3, 4]; +var ws = new WeakSet(b); +// Uncaught TypeError: Invalid value used in weak set(…) +``` + +上面代码中,数组`b`的成员不是对象,加入WeaKSet就会报错。 WeakSet结构有以下三个方法。 From 8c4187a2f74e537456d395667a205142ed2cb0e7 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 27 Mar 2016 11:07:29 +0800 Subject: [PATCH 0116/1139] =?UTF-8?q?docs(class):=20export=20=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E7=9A=84=E6=98=AF=E5=90=8C=E4=B8=80=E4=B8=AA=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/module.md | 109 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 98 insertions(+), 11 deletions(-) diff --git a/docs/module.md b/docs/module.md index bd2338a36..e0f332b28 100644 --- a/docs/module.md +++ b/docs/module.md @@ -73,9 +73,9 @@ export var lastName = 'Jackson'; export var year = 1958; ``` -上面代码是`profile.js`文件,保存了用户信息。ES6将其视为一个模块,里面用export命令对外部输出了三个变量。 +上面代码是`profile.js`文件,保存了用户信息。ES6将其视为一个模块,里面用`export`命令对外部输出了三个变量。 -export的写法,除了像上面这样,还有另外一种。 +`export`的写法,除了像上面这样,还有另外一种。 ```javascript // profile.js @@ -86,7 +86,7 @@ var year = 1958; export {firstName, lastName, year}; ``` -上面代码在`export`命令后面,使用大括号指定所要输出的一组变量。它与前一种写法(直接放置在var语句前)是等价的,但是应该优先考虑使用这种写法。因为这样就可以在脚本尾部,一眼看清楚输出了哪些变量。 +上面代码在`export`命令后面,使用大括号指定所要输出的一组变量。它与前一种写法(直接放置在`var`语句前)是等价的,但是应该优先考虑使用这种写法。因为这样就可以在脚本尾部,一眼看清楚输出了哪些变量。 export命令除了输出变量,还可以输出函数或类(class)。 @@ -113,18 +113,50 @@ export { 上面代码使用`as`关键字,重命名了函数`v1`和`v2`的对外接口。重命名后,`v2`可以用不同的名字输出两次。 -最后,`export`命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内,就会报错,下一节的`import`命令也是如此。这是因为处于条件代码块之中,就没法做静态优化了,违背了ES6模块的设计初衷。 +需要特别注意的是,`export`命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。 ```javascript -function foo() { - export default 'bar' // SyntaxError -} -foo() +// 报错 +export 1; + +// 报错 +var m = 1; +export m; ``` -上面代码中,`export`语句放在函数之中,结果报错。 +上面两种写法都会报错,因为没有提供对外的接口。第一种写法直接输出1,第二种写法通过变量`m`,还是直接输出1。`1`只是一个值,不是接口。正确的写法是下面这样。 + +```javascript +// 写法一 +export var m = 1; + +// 写法二 +var m = 1; +export {m}; + +// 写法三 +var n = 1; +export {n as m}; +``` + +上面三种写法都是正确的,规定了对外的接口`m`。其他脚本可以通过这个接口,取到值`1`。它们的实质是,在接口名与模块内部变量之间,建立了一一对应的关系。 -`export`语句输出的值是动态绑定,绑定其所在的模块。 +同样的,`function`和`class`的输出,也必须遵守这样的写法。 + +```javascript +// 报错 +function f() {} +export f; + +// 正确 +export function f() {}; + +// 正确 +function f() {} +export {f}; +``` + +另外,`export`语句输出的接口,与其对应的值是动态绑定关系,即通过该接口,可以取到模块内部实时的值。 ```javascript export var foo = 'bar'; @@ -133,6 +165,19 @@ setTimeout(() => foo = 'baz', 500); 上面代码输出变量`foo`,值为`bar`,500毫秒之后变成`baz`。 +这一点与CommonJS规范完全不同。CommonJS模块输出的是值的缓存,不存在动态更新,详见下文《ES6模块加载的实质》一节。 + +最后,`export`命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内,就会报错,下一节的`import`命令也是如此。这是因为处于条件代码块之中,就没法做静态优化了,违背了ES6模块的设计初衷。 + +```javascript +function foo() { + export default 'bar' // SyntaxError +} +foo() +``` + +上面代码中,`export`语句放在函数之中,结果报错。 + ## import命令 使用`export`命令定义了模块的对外接口以后,其他JS文件就可以通过`import`命令加载这个模块(文件)。 @@ -365,7 +410,7 @@ let o = new MyClass(); 模块之间也可以继承。 -假设有一个`circleplus`块,继承了`circle`模块。 +假设有一个`circleplus`模块,继承了`circle`模块。 ```javascript // circleplus.js @@ -515,6 +560,48 @@ 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`的同一个实例。 + ## 循环加载 “循环加载”(circular dependency)指的是,`a`脚本的执行依赖`b`脚本,而`b`脚本的执行又依赖`a`脚本。 From 9e4665c305819b0e886ae2daf8e0c402bf409249 Mon Sep 17 00:00:00 2001 From: hardfist Date: Mon, 28 Mar 2016 16:51:51 +0800 Subject: [PATCH 0117/1139] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E2=80=9C()"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit class FooComponent() {} 里的()似乎是错误的,经测试无法运行,故予以删除。 --- docs/decorator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/decorator.md b/docs/decorator.md index aa0ff2ad6..8e523838f 100644 --- a/docs/decorator.md +++ b/docs/decorator.md @@ -381,7 +381,7 @@ export default function publish(topic, channel) { ```javascript import publish from "path/to/decorators/publish"; -class FooComponent () { +class FooComponent { @publish("foo.some.message", "component") someMethod() { return { From 0e991b41bfb7ca06ac90a9220c22f72d53b37d39 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Thu, 31 Mar 2016 20:49:27 +0800 Subject: [PATCH 0118/1139] =?UTF-8?q?docs(decorator):=20=E4=BF=AE=E9=A5=B0?= =?UTF-8?q?=E5=99=A8=E8=A1=A5=E5=85=85=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/decorator.md | 88 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 74 insertions(+), 14 deletions(-) diff --git a/docs/decorator.md b/docs/decorator.md index aa0ff2ad6..9b3a4ada6 100644 --- a/docs/decorator.md +++ b/docs/decorator.md @@ -2,7 +2,7 @@ ## 类的修饰 -修饰器(Decorator)是一个表达式,用来修改类的行为。这是ES7的一个[提案](https://github.com/wycats/javascript-decorators),目前Babel转码器已经支持。 +修饰器(Decorator)是一个函数,用来修改类的行为。这是ES7的一个[提案](https://github.com/wycats/javascript-decorators),目前Babel转码器已经支持。 修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,修饰器能在编译阶段运行代码。 @@ -17,7 +17,7 @@ class MyTestableClass {} console.log(MyTestableClass.isTestable) // true ``` -上面代码中,`@testable`就是一个修饰器。它修改了MyTestableClass这个类的行为,为它加上了静态属性`isTestable`。 +上面代码中,`@testable`就是一个修饰器。它修改了`MyTestableClass`这个类的行为,为它加上了静态属性`isTestable`。 基本上,修饰器的行为就是下面这样。 @@ -31,9 +31,19 @@ class A {} A = decorator(A) || A; ``` -也就是说,修饰器本质上就是能在编译时执行的函数。 +也就是说,修饰器本质就是编译时执行的函数。 -修饰器函数可以接受三个参数,依次是目标函数、属性名和该属性的描述对象。后两个参数可省略。上面代码中,testable函数的参数target,就是所要修饰的对象。如果希望修饰器的行为,能够根据目标对象的不同而不同,就要在外面再封装一层函数。 +修饰器函数的第一个参数,就是所要修饰的目标类。 + +```javascript +function testable(target) { + // ... +} +``` + +上面代码中,`testable`函数的参数`target`,就是会被修饰的类。 + +如果觉得一个参数不够用,可以在修饰器外面再封装一层函数。 ```javascript function testable(isTestable) { @@ -53,7 +63,7 @@ MyClass.isTestable // false 上面代码中,修饰器`testable`可以接受参数,这就等于可以修改修饰器的行为。 -如果想要为类的实例添加方法,可以在修饰器函数中,为目标类的prototype属性添加方法。 +前面的例子是为类添加一个静态属性,如果想添加实例属性,可以通过目标类的`prototype`对象操作。 ```javascript function testable(target) { @@ -67,7 +77,7 @@ let obj = new MyTestableClass(); obj.isTestable // true ``` -上面代码中,修饰器函数`testable`是在目标类的`prototype`属性添加属性,因此就可以在类的实例上调用添加的属性。 +上面代码中,修饰器函数`testable`是在目标类的`prototype`对象上添加属性,因此就可以在实例上调用。 下面是另外一个例子。 @@ -93,9 +103,7 @@ let obj = new MyClass() obj.foo() // 'foo' ``` -上面代码通过修饰器`mixins`,可以为类添加指定的方法。 - -修饰器可以用`Object.assign()`模拟。 +上面代码通过修饰器`mixins`,把`Foo`类的方法添加到了`MyClass`的实例上面。可以用`Object.assign()`模拟这个功能。 ```javascript const Foo = { @@ -121,13 +129,11 @@ class Person { } ``` -上面代码中,修饰器readonly用来修饰“类”的name方法。 +上面代码中,修饰器`readonly`用来修饰“类”的`name`方法。 此时,修饰器函数一共可以接受三个参数,第一个参数是所要修饰的目标对象,第二个参数是所要修饰的属性名,第三个参数是该属性的描述对象。 ```javascript -readonly(Person.prototype, 'name', descriptor); - function readonly(target, name, descriptor){ // descriptor对象原来的值如下 // { @@ -140,10 +146,14 @@ function readonly(target, name, descriptor){ return descriptor; } +readonly(Person.prototype, 'name', descriptor); +// 类似于 Object.defineProperty(Person.prototype, 'name', descriptor); ``` -上面代码说明,修饰器(readonly)会修改属性的描述对象(descriptor),然后被修改的描述对象再用来定义属性。下面是另一个例子。 +上面代码说明,修饰器(readonly)会修改属性的描述对象(descriptor),然后被修改的描述对象再用来定义属性。 + +下面是另一个例子,修改属性描述对象的`enumerable`属性,使得该属性不可遍历。 ```javascript class Person { @@ -157,6 +167,35 @@ function nonenumerable(target, name, descriptor) { } ``` +下面的`@log`修饰器,可以起到输出日志的作用。 + +```bash +class Math { + @log + add(a, b) { + return a + b; + } +} + +function log(target, name, descriptor) { + var oldValue = descriptor.value; + + descriptor.value = function() { + console.log(`Calling "${name}" with`, arguments); + return oldValue.apply(null, arguments); + }; + + return descriptor; +} + +const math = new Math(); + +// passed parameters should get logged now +math.add(2, 4); +``` + +上面代码中,`@log`修饰器的作用就是在执行原始的操作之前,执行一次`console.log`,从而达到输出日志的目的。 + 修饰器有注释的作用。 ```javascript @@ -170,6 +209,27 @@ class Person { 从上面代码中,我们一眼就能看出,`Person`类是可测试的,而`name`方法是只读和不可枚举的。 +如果同一个方法有多个修饰器,会像剥洋葱一样,先从外到内进入,然后由内向外执行。 + +```javascript +function dec(id){ + console.log('evaluated', id); + return (target, property, descriptor) => console.log('executed', id); +} + +class Example { + @dec(1) + @dec(2) + method(){} +} +// evaluated 1 +// evaluated 2 +// executed 2 +// executed 1 +``` + +上面代码中,外层修饰器`@dec(1)`先进入,但是内层修饰器`@dec(2)`先执行。 + 除了注释,修饰器还能用来类型检查。所以,对于类来说,这项功能相当有用。从长期来看,它将是JavaScript代码静态分析的重要工具。 ## 为什么修饰器不能用于函数? @@ -188,7 +248,7 @@ function foo() { } ``` -上面的代码,意图是执行后,counter等于1,但是实际上结果是couter等于0。因为函数提升,使得实际执行的代码是下面这样。 +上面的代码,意图是执行后`counter`等于1,但是实际上结果是`counter`等于0。因为函数提升,使得实际执行的代码是下面这样。 ```javascript var counter; From 797ee7c38aa90083e69afe36feafa0019dcdafbd Mon Sep 17 00:00:00 2001 From: xuexb Date: Sun, 3 Apr 2016 00:43:46 +0800 Subject: [PATCH 0119/1139] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E4=B8=AD=E6=9C=89=E5=8F=8C=E5=B1=82=E9=94=9A=E7=82=B9?= =?UTF-8?q?=E6=97=B6=E4=B8=8A=E4=B8=8B=E4=B8=80=E7=AB=A0=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=AD=BB=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/ditto.js | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/js/ditto.js b/js/ditto.js index 1841abef4..b40793de1 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -18,6 +18,30 @@ var ditto = { run: initialize }; +/** + * 获取当前hash + * + * @param {string} hash 要解析的hash,默认取当前页面的hash,如: nav#类目 => {nav:nav, anchor:类目} + * @description 分导航和页面锚点 + * @return {Object} {nav:导航, anchor:页面锚点} + */ +var getHash = function (hash) { + hash = hash || window.location.hash.substr(1); + + if (!hash) { + return { + nav: '', + anchor: '' + } + } + + hash = hash.split('#'); + return { + nav: hash[0], + anchor: decodeURIComponent(hash[1] || '') + } +}; + var disqusCode = '

      留言

      '; var menu = new Array(); @@ -56,16 +80,18 @@ function init_sidebar_section() { menu.push(this.href.slice(this.href.indexOf('#'))); }); $('#pageup').on('click', function() { + var hash = getHash().nav; for (var i = 0; i < menu.length; i++) { - if (location.hash === '') break; - if (menu[i] === location.hash) break; + if (hash === '') break; + if (menu[i] === '#' + hash) break; } location.hash = menu[i - 1] }); $('#pagedown').on('click', function() { + var hash = getHash().nav; for (var i = 0; i < menu.length; i++) { - if (location.hash === '') break; - if (menu[i] === location.hash) break; + if (hash === '') break; + if (menu[i] === '#' + hash) break; } location.hash = menu[i + 1]; }); @@ -260,7 +286,7 @@ function show_loading() { return loading; } -function router() { +function router() { var path = location.hash.replace(/#([^#]*)(#.*)?/, './$1'); var hashArr = location.hash.split('#'); From 072df734f1fb22e2c2ba9f22d84e848c01bbf0bc Mon Sep 17 00:00:00 2001 From: xuexb Date: Sun, 3 Apr 2016 00:47:15 +0800 Subject: [PATCH 0120/1139] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E4=B8=AD=E6=9C=89=E5=8F=8C=E5=B1=82=E9=94=9A=E7=82=B9?= =?UTF-8?q?=E6=97=B6=E6=9C=80=E5=90=8E=E7=AB=A0=E9=A1=B5=E9=9D=A2=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E6=8C=89=E9=92=AE=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/ditto.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/js/ditto.js b/js/ditto.js index b40793de1..a5b00eb81 100644 --- a/js/ditto.js +++ b/js/ditto.js @@ -373,14 +373,13 @@ function router() { } } } - - if (location.hash === '' || location.hash === menu[0]) { + if (location.hash === '' || '#' + getHash().nav === menu[0]) { $('#pageup').css('display', 'none'); } else { $('#pageup').css('display', 'inline-block'); } - if (location.hash === menu[(menu.length - 1)]) { + if ('#' + getHash().nav === menu[(menu.length - 1)]) { $('#pagedown').css('display', 'none'); } else { $('#pagedown').css('display', 'inline-block'); From ffe44108eaee1e1764033a111026b58dcf558764 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 4 Apr 2016 06:46:08 +0800 Subject: [PATCH 0121/1139] =?UTF-8?q?feat(intro):=20=E9=87=8D=E5=86=99Trac?= =?UTF-8?q?eur=E7=9A=84=E4=BB=8B=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/intro.md | 71 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/docs/intro.md b/docs/intro.md index 1bbed87bc..3b42615a8 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -47,7 +47,7 @@ Node.js是JavaScript语言的服务器运行环境,对ES6的支持度比浏览 安装nvm需要打开命令行窗口,运行下面的命令。 ```bash -$ curl -o https://raw.githubusercontent.com/creationix/nvm//install.sh | bash +$ curl -o- https://raw.githubusercontent.com/creationix/nvm//install.sh | bash ``` 上面命令的`version number`处,需要用版本号替换。本节写作时的版本号是`v0.29.0`。该命令运行后,`nvm`会默认安装在用户主目录的`.nvm`子目录。 @@ -468,20 +468,20 @@ Google公司的[Traceur](https://github.com/google/traceur-compiler)转码器, Traceur允许将ES6代码直接插入网页。首先,必须在网页头部加载Traceur库文件。 -```javascript - - - - - - + + + ``` -接下来,就可以把ES6代码放入上面这些代码的下方。 +上面代码中,一共有4个`script`标签。第一个是加载Traceur的库文件,第二个和第三个是将这个库文件用于浏览器环境,第四个则是加载用户脚本,这个脚本里面可以使用ES6代码。 + +注意,第四个`script`标签的`type`属性的值是`module`,而不是`text/javascript`。这是Traceur编译器识别ES6代码的标志,编译器会自动将所有`type=module`的代码编译为ES5,然后再交给浏览器执行。 + +除了引用外部ES6脚本,也可以直接在网页中放置ES6代码。 ```javascript ``` +上面代码中,首先生成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代码插入网页运行。 @@ -517,13 +536,9 @@ Traceur也提供一个[在线编译器](http://google.github.io/traceur-compiler 上面的例子转为ES5代码运行,就是下面这个样子。 ```javascript - - - + + + + + +

      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 0163/1139] 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 0164/1139] =?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 0165/1139] =?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 0166/1139] =?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 0167/1139] =?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 0168/1139] =?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 0169/1139] =?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 0170/1139] =?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 0171/1139] =?UTF-8?q?=E5=A2=9E=E5=8A=A0fibonacci=20?= =?UTF-8?q?=E5=B0=BE=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 0172/1139] 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 0173/1139] 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 0174/1139] 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 0175/1139] 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 0176/1139] =?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 0177/1139] 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 0178/1139] 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 0179/1139] =?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 0180/1139] 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 0181/1139] 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 0182/1139] 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 0183/1139] =?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 0184/1139] =?UTF-8?q?docs(async):=20async=E5=87=BD?= =?UTF-8?q?=E6=95=B0=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 0185/1139] =?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 0186/1139] 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 0187/1139] =?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 0188/1139] 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 0189/1139] =?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 0190/1139] =?UTF-8?q?fix:=20=E8=AF=AF=E6=B7=BB=E5=8A=A0npm?= =?UTF-8?q?-debug.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 0191/1139] =?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 0192/1139] 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 0193/1139] 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 0194/1139] 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 0195/1139] 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 0196/1139] 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 0197/1139] 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 0198/1139] 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 0199/1139] 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 0200/1139] =?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 0201/1139] 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 0202/1139] 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 0203/1139] 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 0204/1139] 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 0205/1139] 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 0206/1139] 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 0207/1139] 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 0208/1139] 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 0209/1139] 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 0210/1139] 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 0211/1139] 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 0212/1139] 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 0213/1139] 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 0214/1139] 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 0215/1139] 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 0216/1139] 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 0217/1139] 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 0218/1139] 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 0219/1139] 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 0220/1139] =?UTF-8?q?=E5=9B=A0=E4=B8=BAES6=E5=AF=B9?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E6=8F=90=E5=8D=87=E7=9A=84=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=B9=B6=E4=B8=8D=E5=BD=B1=E5=93=8DES5=E7=9A=84=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=AE=9A=E4=B9=89=E3=80=82=E6=89=80=E4=BB=A5=EF=BC=8C?= =?UTF-8?q?=E5=BD=93=E4=BB=A5ES6=E4=B8=BA=E4=B8=BB=E7=9A=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=89=87=E4=B8=AD=EF=BC=8C=E4=BD=BF=E7=94=A8var?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=8F=98=E9=87=8F=EF=BC=8C=E5=88=99=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E6=8F=90=E5=8D=87=E8=BF=98=E6=98=AF=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E7=9A=84=E3=80=82=E6=95=85=E8=80=8C=EF=BC=8C=E6=88=91=E8=AE=A4?= =?UTF-8?q?=E4=B8=BAES6=E5=8F=AA=E6=98=AF=E5=AF=B9=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E5=81=9A=E4=BA=86=E4=B8=80=E4=BA=9B=E4=BF=AE?= =?UTF-8?q?=E8=AE=A2=EF=BC=8C=E5=B9=B6=E4=B8=8D=E6=98=AF=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E3=80=82=E8=8B=A5=E4=B8=BA=E5=8F=96=E6=B6=88=EF=BC=8C=E6=88=91?= =?UTF-8?q?=E8=AE=A4=E4=B8=BA=E5=BA=94=E8=AF=A5=E5=9C=A8ES6=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E4=B8=8B=EF=BC=8C=E8=AE=BE=E5=AE=9Avar=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E7=9A=84=E5=8F=98=E9=87=8F=E4=B9=9F=E4=B8=8D=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=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 0221/1139] =?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 0222/1139] 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 0223/1139] =?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 0224/1139] 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 0225/1139] 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 0226/1139] 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 0227/1139] =?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 0228/1139] 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 0229/1139] 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 0230/1139] 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 0231/1139] 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 0232/1139] =?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 0233/1139] =?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 0234/1139] =?UTF-8?q?240=E8=A1=8C=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BC=BA=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 0235/1139] .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 0236/1139] 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 0237/1139] 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 0238/1139] 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 0239/1139] 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 0240/1139] 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 0241/1139] =?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 0242/1139] 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 0243/1139] 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 0244/1139] 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 0245/1139] 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 0246/1139] 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 0247/1139] 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 0248/1139] 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 0249/1139] =?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 0250/1139] 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 0251/1139] 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 0252/1139] =?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 0253/1139] 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 0254/1139] 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 0255/1139] =?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 0256/1139] 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 0257/1139] 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 0258/1139] 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 0259/1139] =?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 0260/1139] 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 0261/1139] 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 0262/1139] 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 0263/1139] =?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 0264/1139] 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 0265/1139] 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 0266/1139] 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 0267/1139] 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 0268/1139] 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 0269/1139] 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 0270/1139] 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 0271/1139] 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 0272/1139] =?UTF-8?q?docs(proxy):=20add=20proxy=20?= =?UTF-8?q?=E5=AE=9E=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 0273/1139] 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 0274/1139] 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 0275/1139] 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 0276/1139] 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 0277/1139] 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 0278/1139] 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 0279/1139] 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 0280/1139] =?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 0281/1139] 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 0282/1139] 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 0283/1139] 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 0287/1139] 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 0288/1139] 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 0289/1139] 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 0290/1139] 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 0291/1139] 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 0292/1139] 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 0293/1139] 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 0294/1139] 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 0295/1139] 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 0296/1139] 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 0297/1139] 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 0298/1139] 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 0299/1139] 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 0300/1139] 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 0301/1139] 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 0302/1139] 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 0303/1139] 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 0304/1139] 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 0305/1139] 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 0306/1139] 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 0307/1139] 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 0308/1139] =?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 0309/1139] 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 0310/1139] 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 0311/1139] 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 0312/1139] =?UTF-8?q?9.=E5=AF=B9=E8=B1=A1=E7=9A=84?= =?UTF-8?q?=E6=89=A9=E5=B1=95=20=E6=96=B9=E6=B3=95=E7=9A=84name=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=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 0313/1139] =?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 0314/1139] 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 0315/1139] 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 0316/1139] =?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 0317/1139] 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 0318/1139] =?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 0319/1139] =?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 0320/1139] 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 0321/1139] =?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 0322/1139] =?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 0323/1139] =?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 0324/1139] =?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 0325/1139] 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 0326/1139] 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 0327/1139] =?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 0328/1139] 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 0329/1139] =?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 0330/1139] 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 0331/1139] =?UTF-8?q?docs(module):=20add=20Node=20?= =?UTF-8?q?=E5=8A=A0=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 0332/1139] =?UTF-8?q?docs(async):=20=E6=8B=86=E5=88=86=20g?= =?UTF-8?q?enerator=20=E5=87=BD=E6=95=B0=E7=9A=84=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E6=93=8D=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 0333/1139] 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 0334/1139] 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 0335/1139] 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 0336/1139] 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 0337/1139] =?UTF-8?q?docs(let):=20edit=20=E5=9D=97?= =?UTF-8?q?=E7=BA=A7=E4=BD=9C=E7=94=A8=E5=9F=9F=E5=86=85=E7=9A=84=E5=87=BD?= =?UTF-8?q?=E6=95=B0=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 0338/1139] =?UTF-8?q?docs(let):=20edit=20=E5=9D=97?= =?UTF-8?q?=E7=BA=A7=E4=BD=9C=E7=94=A8=E5=9F=9F=E5=86=85=E7=9A=84=E5=87=BD?= =?UTF-8?q?=E6=95=B0=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 0339/1139] 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 0340/1139] 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 0341/1139] =?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 0342/1139] 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 0368/1139] 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 0369/1139] 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 0370/1139] 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 0371/1139] 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 0372/1139] 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 0373/1139] 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 0374/1139] 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 0375/1139] 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 0376/1139] 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 0377/1139] 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 0378/1139] 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 0379/1139] =?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 0380/1139] =?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 0381/1139] 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 0382/1139] 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 0383/1139] =?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 0384/1139] =?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 0385/1139] 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 0386/1139] 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 0387/1139] 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 0388/1139] 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 0389/1139] 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 0390/1139] 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 0391/1139] =?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 0392/1139] 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 0393/1139] 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 0394/1139] 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 0395/1139] 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 0396/1139] 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 0397/1139] 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 0398/1139] 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 0399/1139] 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 0400/1139] 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 0401/1139] 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 0402/1139] 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 0403/1139] 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 0404/1139] 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 0405/1139] 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 0406/1139] =?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 0407/1139] =?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 0408/1139] 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 0409/1139] 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 0410/1139] 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 0411/1139] 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 0412/1139] 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 0413/1139] 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 0414/1139] 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 0415/1139] 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 0416/1139] 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 0417/1139] 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 0418/1139] 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 0419/1139] 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 0420/1139] 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 0421/1139] 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 0422/1139] 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 0423/1139] 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