Comparing version 1.1.11 to 2.0.0
25
debug.js
@@ -1,23 +0,6 @@ | ||
/*var alp = require('./index.js'); | ||
var _ = alp._; | ||
alp.config.merge({ | ||
base: process.cwd(), | ||
word: 'require', | ||
optimizer:true, | ||
readcss:false | ||
}); | ||
console.time(''); | ||
require('/Users/gml/github/testJS/alp-conf.js'); | ||
var result = alp.parse({ | ||
src: '/Users/gml/github/testJS/d.js' | ||
}); | ||
var alp = require('./index.js'); | ||
for (var i in result) { | ||
console.dir(alp.processor({ | ||
src: '/Users/gml/github/testJS/index.html' | ||
})); | ||
_.write(_.path.resolve(alp.config.get('base'), 'output3', i), result[i].content, 'utf-8'); | ||
} | ||
console.timeEnd('');*/ | ||
var test = require('./test.js'); | ||
console.dir(test); |
24
index.js
var alp = module.exports = {}; | ||
if (!global.alp) { | ||
Object.defineProperty(global, 'alp', { | ||
enumerable: true, | ||
writable: false, | ||
value: alp | ||
}); | ||
Object.defineProperty(global, 'alp', { | ||
enumerable: true, | ||
writable: false, | ||
value: alp | ||
}); | ||
} | ||
alp._ = require('./lib/unit.js'); | ||
alp.log = require('./lib/log.js'); | ||
alp.jsParse = require('./lib/jsParse.js'); | ||
alp._ = require('./lib/util.js'); | ||
alp.txtParse = require('./lib/txtParse.js'); | ||
alp.storage = alp.storage || {}; | ||
alp.config = require('./lib/config.js'); | ||
alp.config = alp.conf || require('./lib/config.js'); | ||
alp.parse = require('./lib/parse.js'); | ||
alp.File = require('./lib/file.js'); | ||
alp.processor = require('./lib/processor.js'); | ||
var CONFIG = { | ||
ns: "alp", | ||
exclude: [],//排除一些已存在的使用require关键字的文件,比如用webpack或browerify打包的文件。 | ||
txtType: [],//扩展已有的文本类型['txt','js'] | ||
cssMap:['scss','sass','less','styl'], | ||
excludeType:[], | ||
isJswrapperInHtml:true, | ||
main: { //命令行时,指定的入口文件 | ||
include: [], | ||
exclude: [] | ||
}, | ||
optimizer: true, //是否压缩文件 | ||
base: process.cwd(), //指定项目的根路径 | ||
useBaseInJsFile:false, //js文件中的出现require()的路径是否是基于base的(主要是对于FIS) | ||
word: 'require', | ||
readcss: true, //出现在js中的css是否读取内容。 | ||
readcssInHtml:false,//出现在html中的script标签中的css是否可读 | ||
settings: { | ||
optimizer: { | ||
css: { | ||
processImport: false, | ||
keepSpecialComments: '*' //只对‘/*!我是注市有效*/’ | ||
}, | ||
js: { | ||
fromString: true | ||
} | ||
} | ||
} | ||
} | ||
// 生成闭包的命名空间 | ||
ns: 'ns', | ||
// 项目的根目录 | ||
root: process.cwd(), | ||
// 排除一些已存在的使用require关键字的文件,比如用webpack或browerify打包的文件。 | ||
exclude: [], | ||
// 排除一些文本类型 | ||
excludeTxtType: [], | ||
// 扩展已有的文本类型['txt','js'] | ||
txtType: [], | ||
// 分析的文件是否是被压缩过的文件 | ||
isOptimizer: false, | ||
// js文件中的出现require()的路径是否是基于root的(主要用于应对使用构建工具生成的文件,路径会被编译为基于项目root的相对路径,如fis) | ||
fileBasedRoot: false, | ||
// 分析依赖时所识别的关键字 | ||
word: 'require', | ||
// 是否对html中的js代码添加闭包代码, 如果代码中的require参与运算的话,就忽略该值,为代码加上闭包。 | ||
wrapJsInHtml: false, | ||
readable: { | ||
// 使用requrie('../xx.css')时,是否是读取css的内容 | ||
css: false, | ||
// 在HTML文件的script标签使用require('../xx.css')是,是否读取css的内容 | ||
cssInHTML: false | ||
}, | ||
tmpl: { | ||
js: '<script type="text/javascript" src="{0}"></script>', | ||
css: '<link rel="stylesheet" type="text/css" href="{0}">' | ||
} | ||
}; | ||
function merge(source, target) { | ||
if (typeof source === 'object' && typeof target === 'object') { | ||
for (var key in target) { | ||
if (target.hasOwnProperty(key)) { | ||
source[key] = merge(source[key], target[key]); | ||
} | ||
} | ||
} else { | ||
source = target; | ||
} | ||
return source; | ||
if (typeof source === 'object' && typeof target === 'object') { | ||
for (var key in target) { | ||
if (target.hasOwnProperty(key)) { | ||
source[key] = merge(source[key], target[key]); | ||
} | ||
} | ||
} else { | ||
source = target; | ||
} | ||
return source; | ||
} | ||
function Config(config) { | ||
this.config = merge(config, CONFIG); | ||
if(Config.instance instanceof Config) { | ||
return Config.instance; | ||
} | ||
this.config = merge(config, CONFIG); | ||
Config.instance = this; | ||
} | ||
Config.prototype = { | ||
set: function(key, value) { | ||
if (typeof value !== 'undefined') { | ||
set: function(key, value) { | ||
if (typeof value !== 'undefined') { | ||
key = String(key || '').trim(); | ||
if (key) { | ||
var paths = key.split('.'), | ||
last = paths.pop(), | ||
data = this.config || {}; | ||
paths.forEach(function(key) { | ||
var type = typeof data[key]; | ||
if (type === 'object') { | ||
data = data[key]; | ||
} else if (type === 'undefined') { | ||
data = data[key] = {}; | ||
} else { | ||
alp.log.error('forbidden to set property[' + key + '] of [' + type + '] data'); | ||
} | ||
}); | ||
data[last] = value; | ||
} | ||
} | ||
}, | ||
get: function(keyPath) { | ||
var keys = keyPath.split('.'), | ||
key, | ||
config = this.config; | ||
for (var i = 0, len = keys.length; i < len; i++) { | ||
key = keys[i]; | ||
if (i == len - 1) { | ||
return config[key]; | ||
} else if (key in config) { | ||
config = config[key]; | ||
} else { | ||
return; | ||
} | ||
} | ||
}, | ||
merge: function(config) { | ||
this.config = merge(this.config, config); | ||
} | ||
key = String(key || '').trim(); | ||
if (key) { | ||
var paths = key.split('.'), | ||
last = paths.pop(), | ||
data = this.config || {}; | ||
paths.forEach(function (key) { | ||
var type = typeof data[key]; | ||
if (type === 'object') { | ||
data = data[key]; | ||
} else if (type === 'undefined') { | ||
data = data[key] = {}; | ||
} else { | ||
alp.log.error('forbidden to set property[' + key + '] of [' + type + '] data'); | ||
} | ||
}); | ||
data[last] = value; | ||
} | ||
} | ||
}, | ||
get: function(keyPath) { | ||
var keys = keyPath.split('.'), | ||
key, | ||
config = this.config; | ||
for (var i = 0, len = keys.length; i < len; i++) { | ||
key = keys[i]; | ||
if (i == len - 1) { | ||
return config[key]; | ||
} else if (key in config) { | ||
config = config[key]; | ||
} else { | ||
return; | ||
} | ||
} | ||
}, | ||
merge: function(config) { | ||
this.config = merge(this.config, config); | ||
} | ||
} | ||
@@ -91,0 +108,0 @@ |
@@ -6,6 +6,6 @@ var colors = require('colors'); | ||
function log(type, msg) { | ||
if (type) { | ||
type = '\n[' + type.toLocaleUpperCase() + '] '; | ||
} | ||
process.stdout.write(type + msg + '\n'); | ||
if (type) { | ||
type = '\n[' + type.toLocaleUpperCase() + '] '; | ||
} | ||
process.stdout.write(type + msg + ' this is in "alpaca" module'.red + '\n'); | ||
} | ||
@@ -15,20 +15,20 @@ | ||
ep.error = function(err) { | ||
if (!(err instanceof Error)) { | ||
err = new Error(err.message || err); | ||
} | ||
if (!(err instanceof Error)) { | ||
err = new Error(err.message || err); | ||
} | ||
log('error', err.message.red); | ||
process.exit(1); | ||
log('error', err.message.red); | ||
process.exit(1); | ||
} | ||
ep.warning = function(msg) { | ||
log('waring', msg.yellow); | ||
log('waring', msg.yellow); | ||
} | ||
ep.info = function(msg) { | ||
log('', msg.green); | ||
log('', msg.green); | ||
} | ||
ep.debug = function(msg){ | ||
log('debug',msg.blue); | ||
log('debug',msg.blue); | ||
} |
{ | ||
"name": "alpaca-sm", | ||
"version": "1.1.11", | ||
"version": "2.0.0", | ||
"description": "分析Html文件依赖的js文件和css文件", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "supervisor --debug-brk ./debug.js", | ||
"start": "supervisor bin/alp" | ||
"test": "supervisor --debug-brk ./debug.js" | ||
}, | ||
"bin": { | ||
"alp": "bin/alp" | ||
}, | ||
"repository": { | ||
@@ -21,6 +17,3 @@ "type": "git", | ||
], | ||
"author": { | ||
"name": "guomilo", | ||
"email": "guomilo@gmail.com" | ||
}, | ||
"author": "guomilo <guomilo@gmail.com>", | ||
"engines": { | ||
@@ -34,3 +27,2 @@ "node": ">0.10.0" | ||
"dependencies": { | ||
"clean-css": "^3.4.6", | ||
"colors": "^1.1.2", | ||
@@ -41,6 +33,27 @@ "commander": "*", | ||
"estraverse": "4.1.0", | ||
"iconv-lite": "^0.4.13", | ||
"tap": "^2.1.1", | ||
"uglify-js": "^2.5.0" | ||
} | ||
"iconv-lite": "^0.4.13" | ||
}, | ||
"_shasum": "a14cfd4a4e3e5c58ced1507aa033b99d53ca678f", | ||
"_from": "alpaca-sm@^1.1.0", | ||
"_npmVersion": "3.3.9", | ||
"_nodeVersion": "0.12.7", | ||
"_npmUser": { | ||
"name": "guomilo", | ||
"email": "guomilo@gmail.com" | ||
}, | ||
"dist": { | ||
"shasum": "a14cfd4a4e3e5c58ced1507aa033b99d53ca678f", | ||
"size": 12627, | ||
"noattachment": false, | ||
"tarball": "http://registry.npm.taobao.org/alpaca-sm/download/alpaca-sm-1.1.9.tgz" | ||
}, | ||
"maintainers": [ | ||
"guomilo <guomilo@gmail.com>" | ||
], | ||
"directories": {}, | ||
"publish_time": 1449141934910, | ||
"_cnpm_publish_time": 1449141934910, | ||
"_resolved": "http://registry.npm.taobao.org/alpaca-sm/download/alpaca-sm-1.1.9.tgz", | ||
"devDependencies": {}, | ||
"license": "MIT" | ||
} |
142
README.md
# alpaca-sm | ||
针对sm公司业务定制的用于模块化解析的工具。 | ||
因公司前端业务框架的原因,前端开发不能使用市面上的模块化类库,如seajs,requireJs,modJs等。 | ||
>针对sm公司业务定制的用于模块化解析的工具。 | ||
>因公司前端业务框架的原因,前端开发不能使用市面上的模块化类库,如seajs,requireJs,modJs等。 | ||
此工具是在编译阶段,将采用commonJS规范的模块化代码,转译成闭包形式的代码。 | ||
@@ -11,59 +9,82 @@ | ||
### 安装 | ||
### example | ||
a-object.js | ||
```js | ||
module.exports = { | ||
sayName: function(name) { | ||
console.log(name);;; | ||
var tt = '6'; | ||
} | ||
} | ||
```bash | ||
npm install alpaca-sm -g | ||
``` | ||
b-function.js | ||
```js | ||
var aobj = require('./a-object.js'); | ||
module.exports = function(word) { | ||
aobj.sayName(word + 'test'); | ||
} | ||
### API说明 | ||
``` | ||
#### 命令行 | ||
####config | ||
+ 解释:管理配置项 | ||
+ 用法: | ||
```js | ||
alp.config.get('ns'); | ||
alp.config.get('readable.css'); | ||
alp.config.set('ns'); | ||
``` | ||
``` | ||
alp release -d ./output | ||
####processor | ||
+ 解释:分析文件的依赖项 | ||
+ 参数: | ||
src: 文件的绝对路径,重要的事说三遍,绝对路径!绝对路径!绝对路径! | ||
contentProcessor: 文件内容处理器,返回处理过后的文件内容。 | ||
+ 用法: | ||
```js | ||
alp.processor({ | ||
src: file.realpath, | ||
contentProcessor: function (file) { | ||
var retObj; | ||
``` | ||
retObj = ret.src['/' + file.subpath]; | ||
if (retObj) { | ||
return retObj.rawContent || retObj.getContent(); | ||
} else { | ||
return file.getContent(); | ||
} | ||
} | ||
}); | ||
#### output | ||
``` | ||
a-object.js | ||
### 配置说明 | ||
``` | ||
window.sm = window.sm || {}; | ||
(function (sm) { | ||
sm.a_object_js = { | ||
sayName: function (name) { | ||
console.log(name);; | ||
var tt = '6'; | ||
} | ||
}; | ||
}(sm)); | ||
``` | ||
b-function.js | ||
```js | ||
window.sm = window.sm || {}; | ||
(function (sm, a_object_js) { | ||
var aobj = a_object_js; | ||
sm.b_function_js = function (word) { | ||
aobj.sayName(word + 'test'); | ||
}; | ||
}(sm, sm.a_object_js)); | ||
``` | ||
### config说明 | ||
####ns | ||
解释:生成闭包后,所使用的命名空间 | ||
类型: string | ||
默认值:'ns' | ||
####root | ||
解释:项目的根目录 | ||
类型:string | ||
默认值:当前目录 | ||
说明:注意配置项fileBasedRoot对他的影响 | ||
####fileBasedRoot | ||
解释:js文件中使用require的路径是否是基于root的。 | ||
类型:boolean | ||
默认值:false | ||
说明:主要用于应对使用构建工具生成的文件,路径会被编译为基于项目root的相对路径,如fis | ||
####exclude | ||
解释:排除一些已存在的使用require关键字的文件,比如用webpack或browerify打包的文件。 | ||
类型:array | string | RegExp | ||
默认值:[] | ||
####isOptimizer | ||
解释:分析的文件是否是被压缩过的文件 | ||
类型:boolean | ||
默认值:false | ||
说明:压缩过的文件和没压缩过的文件,代码结构不同,不能使用同一种处理方法。 | ||
####wrapJsInHtml | ||
解释:是否对html中的js代码添加闭包代码 | ||
类型:boolean | ||
默认值:false | ||
说明:如果代码中的require参与运算的话,就忽略该值,为代码加上闭包。 | ||
####readable.css | ||
解释:在js中出现requrie('../xx.css')时,是否读取css文件的内容 | ||
类型:boolean | ||
默认值:false | ||
####readable.cssInHtml | ||
解释:在HTML文件的script标签使用require('../xx.css')是,是否读取css的内容 | ||
类型:boolean | ||
默认值:false | ||
####tmpl | ||
解释:css和js的引入模板 | ||
@@ -74,18 +95,1 @@ | ||
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
49578
6
94
1
12
1270
1
- Removedclean-css@^3.4.6
- Removedtap@^2.1.1
- Removeduglify-js@^2.5.0
- Removedabbrev@1.0.9(transitive)
- Removedalign-text@0.1.4(transitive)
- Removedamdefine@1.0.1(transitive)
- Removedansi-regex@2.1.1(transitive)
- Removedansi-styles@2.2.1(transitive)
- Removedargparse@1.0.10(transitive)
- Removedasn1@0.1.110.2.6(transitive)
- Removedassert-plus@0.1.50.2.01.0.0(transitive)
- Removedasync@0.9.21.5.2(transitive)
- Removedasynckit@0.4.0(transitive)
- Removedaws-sign2@0.5.00.6.0(transitive)
- Removedaws4@1.13.2(transitive)
- Removedbalanced-match@1.0.2(transitive)
- Removedbcrypt-pbkdf@1.0.2(transitive)
- Removedbl@0.9.5(transitive)
- Removedboom@0.4.22.10.1(transitive)
- Removedbrace-expansion@1.1.11(transitive)
- Removedcamelcase@1.2.12.1.1(transitive)
- Removedcaseless@0.11.00.6.0(transitive)
- Removedcenter-align@0.1.3(transitive)
- Removedchalk@1.1.3(transitive)
- Removedclean-css@3.4.28(transitive)
- Removedcliui@2.1.03.2.0(transitive)
- Removedcode-point-at@1.1.0(transitive)
- Removedcodecov.io@0.1.6(transitive)
- Removedcolor-support@1.1.3(transitive)
- Removedcombined-stream@0.0.71.0.8(transitive)
- Removedcommander@2.20.32.8.1(transitive)
- Removedconcat-map@0.0.1(transitive)
- Removedcore-util-is@1.0.21.0.3(transitive)
- Removedcoveralls@2.13.3(transitive)
- Removedcross-spawn@4.0.2(transitive)
- Removedcryptiles@0.2.22.0.5(transitive)
- Removedctype@0.5.3(transitive)
- Removeddashdash@1.14.1(transitive)
- Removeddebug@2.6.9(transitive)
- Removeddecamelize@1.2.0(transitive)
- Removeddeep-equal@0.1.2(transitive)
- Removeddeep-is@0.1.4(transitive)
- Removeddeeper@2.1.0(transitive)
- Removeddefined@0.0.0(transitive)
- Removeddelayed-stream@0.0.51.0.0(transitive)
- Removeddiff@1.4.0(transitive)
- Removedduplexer@0.1.2(transitive)
- Removedecc-jsbn@0.1.2(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedescodegen@1.7.1(transitive)
- Removedesprima@1.2.52.5.02.7.3(transitive)
- Removedestraverse@1.9.3(transitive)
- Removedevents-to-array@1.1.2(transitive)
- Removedextend@3.0.2(transitive)
- Removedextsprintf@1.3.0(transitive)
- Removedfast-levenshtein@1.0.7(transitive)
- Removedfileset@0.2.1(transitive)
- Removedforeground-child@1.5.6(transitive)
- Removedforever-agent@0.5.20.6.1(transitive)
- Removedform-data@0.1.42.1.4(transitive)
- Removedfs.realpath@1.0.0(transitive)
- Removedgenerate-function@2.3.1(transitive)
- Removedgenerate-object-property@1.2.0(transitive)
- Removedgetpass@0.1.7(transitive)
- Removedglob@5.0.156.0.47.2.3(transitive)
- Removedgraceful-readlink@1.0.1(transitive)
- Removedhandlebars@4.7.8(transitive)
- Removedhar-validator@2.0.6(transitive)
- Removedhas-ansi@2.0.0(transitive)
- Removedhas-flag@1.0.0(transitive)
- Removedhawk@1.1.13.1.3(transitive)
- Removedhoek@0.9.12.16.3(transitive)
- Removedhttp-signature@0.10.11.1.1(transitive)
- Removedinflight@1.0.6(transitive)
- Removedinherits@2.0.4(transitive)
- Removedinvert-kv@1.0.0(transitive)
- Removedis-buffer@1.1.6(transitive)
- Removedis-fullwidth-code-point@1.0.0(transitive)
- Removedis-my-ip-valid@1.0.1(transitive)
- Removedis-my-json-valid@2.20.6(transitive)
- Removedis-property@1.0.2(transitive)
- Removedis-typedarray@1.0.0(transitive)
- Removedis-utf8@0.2.1(transitive)
- Removedisarray@0.0.11.0.0(transitive)
- Removedisexe@2.0.0(transitive)
- Removedisstream@0.1.2(transitive)
- Removedistanbul@0.3.22(transitive)
- Removedjs-yaml@3.14.13.6.1(transitive)
- Removedjsbn@0.1.1(transitive)
- Removedjson-schema@0.4.0(transitive)
- Removedjson-stringify-safe@5.0.1(transitive)
- Removedjsonify@0.0.1(transitive)
- Removedjsonpointer@5.0.1(transitive)
- Removedjsprim@1.4.2(transitive)
- Removedkind-of@3.2.2(transitive)
- Removedlazy-cache@1.0.4(transitive)
- Removedlcid@1.0.0(transitive)
- Removedlcov-parse@0.0.10(transitive)
- Removedlevn@0.2.5(transitive)
- Removedlodash@3.10.1(transitive)
- Removedlog-driver@1.2.5(transitive)
- Removedlongest@1.0.1(transitive)
- Removedlru-cache@4.1.5(transitive)
- Removedmime@1.2.11(transitive)
- Removedmime-db@1.52.0(transitive)
- Removedmime-types@1.0.22.1.35(transitive)
- Removedminimatch@2.0.103.1.2(transitive)
- Removedminimist@1.2.01.2.8(transitive)
- Removedmkdirp@0.5.6(transitive)
- Removedms@2.0.0(transitive)
- Removedneo-async@2.6.2(transitive)
- Removednode-uuid@1.4.8(transitive)
- Removednopt@3.0.6(transitive)
- Removednumber-is-nan@1.0.1(transitive)
- Removednyc@3.2.2(transitive)
- Removedoauth-sign@0.4.00.8.2(transitive)
- Removedonce@1.4.0(transitive)
- Removedonly-shallow@1.2.0(transitive)
- Removedopener@1.5.2(transitive)
- Removedoptionator@0.5.0(transitive)
- Removedos-locale@1.4.0(transitive)
- Removedpath-is-absolute@1.0.1(transitive)
- Removedpinkie@2.0.4(transitive)
- Removedpinkie-promise@2.0.1(transitive)
- Removedprelude-ls@1.1.2(transitive)
- Removedprocess-nextick-args@2.0.1(transitive)
- Removedpseudomap@1.0.2(transitive)
- Removedpunycode@1.4.1(transitive)
- Removedqs@1.2.26.3.3(transitive)
- Removedreadable-stream@1.0.341.1.142.3.8(transitive)
- Removedrepeat-string@1.6.1(transitive)
- Removedrequest@2.42.02.79.0(transitive)
- Removedresolve@1.1.7(transitive)
- Removedresumer@0.0.0(transitive)
- Removedright-align@0.1.3(transitive)
- Removedrimraf@2.7.1(transitive)
- Removedsafe-buffer@5.1.2(transitive)
- Removedsignal-exit@2.1.23.0.7(transitive)
- Removedsntp@0.2.41.0.9(transitive)
- Removedsource-map@0.2.00.4.40.5.7(transitive)
- Removedsplit@0.2.10(transitive)
- Removedsprintf-js@1.0.3(transitive)
- Removedsshpk@1.18.0(transitive)
- Removedstream-combiner@0.0.4(transitive)
- Removedstring-width@1.0.2(transitive)
- Removedstring_decoder@0.10.311.1.1(transitive)
- Removedstringstream@0.0.6(transitive)
- Removedstrip-ansi@3.0.1(transitive)
- Removedstrip-bom@2.0.0(transitive)
- Removedsupports-color@1.3.12.0.03.2.3(transitive)
- Removedtap@2.3.4(transitive)
- Removedtap-mocha-reporter@0.0.27(transitive)
- Removedtap-parser@1.3.2(transitive)
- Removedtape@2.3.0(transitive)
- Removedthrough@2.3.8(transitive)
- Removedtmatch@1.0.2(transitive)
- Removedtough-cookie@2.3.4(transitive)
- Removedtunnel-agent@0.4.3(transitive)
- Removedtweetnacl@0.14.5(transitive)
- Removedtype-check@0.3.2(transitive)
- Removeduglify-js@2.8.293.19.3(transitive)
- Removeduglify-to-browserify@1.0.2(transitive)
- Removedunicode-length@1.0.3(transitive)
- Removedurlgrey@0.4.0(transitive)
- Removedutil-deprecate@1.0.2(transitive)
- Removeduuid@3.4.0(transitive)
- Removedverror@1.10.0(transitive)
- Removedwhich@1.3.1(transitive)
- Removedwindow-size@0.1.00.1.4(transitive)
- Removedwordwrap@0.0.20.0.31.0.0(transitive)
- Removedwrap-ansi@2.1.0(transitive)
- Removedwrappy@1.0.2(transitive)
- Removedxtend@4.0.2(transitive)
- Removedy18n@3.2.2(transitive)
- Removedyallist@2.1.2(transitive)
- Removedyargs@3.10.03.32.0(transitive)