A collection of commands and ES6 focused snippets for optimizing modern Javascript development productivity. It aims to be compliant with AirBnB's mostly reasonable approach to Javascript.
Note: this is a fork of turbo-javascript that uses arrow functions by default and adds a few more snippets for chai and classes for convenience.
Version 1.0.0
If you need double quotes please downgrade apm install es6-javascript@0.7.0
Use the following keymaps to speed up your development. You can quickly terminate lines with semicolons or manipulate blocks of code with ease.
CTRL-;
Terminates the current line with a semicolon.
CTRL-,
Terminates the current line with a comma (great for object literals).
CTRL-ENTER
Terminates the current line with a colon or semicolon, followed with a new line. A comma is inserted when the cursor is inside an object literal, otherwise a semicolon is inserted.
CTRL-B
Creates a statement block { ... }
with the selected text placed inside and properly indented. If the selection is already wrapped with a block, the block is removed and its content is unindented.
Snippets are optimized to be short and easy to remember. Some snippets are "chainable" and render differently when preceded by a ".".
For example, .fe
renders a chain-friendly version of the forEach snippet, while fe
renders a full code block.
v⇥
var statementvar ${1:name};
ve⇥
var assignmentvar ${1:name} = ${2:value};
l⇥
let statementlet ${1:name};
le⇥
let assignmentlet ${1:name} = ${2:value};
co⇥
const statementconst ${1:name};
coe⇥
const assignmentconst ${1:name} = ${2:value};
cos⇥
const symbolconst ${1:name} = Symbol('${1:name}');
if⇥
if statementif (${1:condition}) {${0}}
el⇥
else statementelse {${0}}
ife⇥
else statementif (${1:condition}) {${2}} else {${3}}
ei⇥
else if statementelse if (${1:condition}) {${0}}
fl⇥
for loopfor (let ${1:i} = 0; ${1:i} < ${2:iterable}${3:.length}; ${1:i}++) {${4}}
fi⇥
for in loopfor (let ${1:key} in ${2:source}) {if (${2:source}.hasOwnProperty(${1:key})) {${0}}}
fo⇥
for of loop (ES6)for (let ${1:key} of ${2:source}) {${0}}
wl⇥
while loopwhile (${1:condition}) {${0}}
tc⇥
try/catchtry {${1}} catch (${2:err}) {${3}}
tf⇥
try/finallytry {${1}} finally {${2}}
tcf⇥
try/catch/finallytry {${1}} catch (${2:err}) {${3}} finally {${4}}
f⇥
anonymous functionfunction (${1:arguments}) {${0}}
fn⇥
named functionfunction ${1:name}(${2:arguments}) {${0}}
iife⇥
immediately-invoked function expression (IIFE)((${1:arguments}) => {${0}})(${2});
fa⇥
function apply${1:fn}.apply(${2:this}, ${3:arguments})
fc⇥
function call${1:fn}.call(${2:this}, ${3:arguments})
fb⇥
function bind${1:fn}.bind(${2:this}, ${3:arguments})
af⇥
arrow function (ES6)${1:(arguments)} => ${2:statement}
afb⇥
arrow function with body (ES6)${1:(arguments)} => {\t${0}}
gf⇥
generator function (ES6)function* (${1:arguments}) {${0}}
gfn⇥
named generator function (ES6)function* ${1:name}(${1:arguments}) {${0}}
fe⇥
forEach loop (chainable)${1:iterable}.forEach((${2:item}) => {${0}});
map⇥
map function (chainable)${1:iterable}.map((${2:item}) => {${0}});
reduce⇥
reduce function (chainable)${1:iterable}.reduce((${2:previous}, ${3:current}) => {${0}}${4:, initial});
filter⇥
filter function (chainable)${1:iterable}.filter((${2:item}) => {${0}});
find⇥
ES6 find function (chainable)${1:iterable}.find((${2:item}) => {${0}});
c⇥
class (ES6)class ${1:name} {constructor(${2:arguments}) {${0}}}
cex⇥
child class (ES6)class ${1:name} extends ${2:base} {constructor(${2:arguments}) {super(${2:arguments})${0}}}
cf⇥
class function (ES6){$1:name}({$2:arguments}) {${0}}
kv⇥
key/value pairJavascript:
${1:key}: ${2:'value'}
m⇥
method (ES6 syntax)${1:method}(${2:arguments}) {${0}}
get⇥
getter (ES6 syntax)get ${1:property}() {${0}}
set⇥
setter (ES6 syntax)set ${1:property}(${2:value}) {${0}}
gs⇥
getter and setter (ES6 syntax)get ${1:property}() {${0}}set ${1:property}(${2:value}) {}
proto⇥
prototype method (chainable)${1:Class}.prototype.${2:methodName} = function (${3:arguments}) {${0}};
r⇥
returnreturn ${0};
rth⇥
return thisreturn this;
rn⇥
return nullreturn null;
rt⇥
return truereturn true;
rf⇥
return falsereturn false;
r0⇥
return 0return 0;
r-1⇥
return -1return -1;
rp⇥
return Promise (ES6)return new Promise((resolve, reject) => {${0}});
S⇥
StringN⇥
NumberO⇥
ObjectA⇥
ArrayD⇥
DateRx⇥
RegExptof⇥
typeof comparisontypeof ${1:source} === '${2:undefined}'
iof⇥
instanceof comparison${1:source} instanceof ${2:Object}
p⇥
new Promise (ES6)new Promise((resolve, reject) => {${0}})
then⇥
Promise.then (chainable)${1:promise}.then((${2:value}) => {${0}});
catch⇥
Promise.catch (chainable)${1:promise}.catch((${2:err}) => {${0}});
ex⇥
module exportexport ${1:member};
im⇥
module importimport ${1:*} from '${2:module}';
ima⇥
module import asimport ${1:*} as ${2:name} from '${3:module}';
imn⇥
named module importimport \{ ${1:name} \} from '${2:module}';
desc⇥
describedescribe('${1:description}', () => {${0}});
its⇥
synchronous "it"it('${1:description}', () => {${0}});
ita⇥
asynchronous "it"it('${1:description}', (done) => {${0}});
bef⇥
beforebefore(() => {${0}});
befe⇥
beforeEachbeforeEach(() => {${0}});
aft⇥
afterafter(() => {${0}});
afte⇥
afterEachafterEach(() => {${0}});
cl⇥
console.logconsole.log('${1:title}', ${2:$1}$0);
cll⇥
console.log (text only)console.log(${0});
ce⇥
console.errorconsole.error(${0});
cw⇥
console.warnconsole.warn(${0});
st⇥
setTimeoutsetTimeout(() => {${0}}, ${1:delay});
si⇥
setIntervalsetTimeout(() => {${0}}, ${1:delay});
sim⇥
setIntervalsetImmediate(() => {${0}});
ae⇥
addEventListener${1:document}.addEventListener('${2:event}', function (e) {${0}});
gi⇥
getElementById${1:document}.getElementById('${2:id}')
gc⇥
getElementsByClassNameArray.from(${1:document}.getElementsByClassName('${2:class}'))
Array.from
polyfill required for ES5
gt⇥
getElementsByTagNameArray.from(${1:document}.getElementsByTagName('${2:tag}'))
Array.from
polyfill required for ES5
qs⇥
querySelector${1:document}.querySelector('${2:selector}')
qsa⇥
querySelectorAllArray.from(${1:document}.querySelectorAll('${2:selector}'))
Array.from
polyfill required for ES5
cb⇥
Node.js style callback(err${1:, value}) => {${0}}
re⇥
require a modulerequire('${1:module}');
em⇥
export memberexports.${1:name} = ${2:value};
me⇥
module.exportsmodule.exports = ${1:name};
on⇥
attach an event handler (chainable)${1:emitter}.on('${2:event}', (${3:arguments}) => {${0}});
us⇥
use strict'use strict';
The MIT License (MIT)
Good catch. Let us know what about this package looks wrong to you, and we'll investigate right away.