Skip to content
This repository has been archived by the owner on Apr 6, 2020. It is now read-only.

Commit

Permalink
feat(ES2015): ES2015 build with pre-compiled versions
Browse files Browse the repository at this point in the history
BREAKING CHANGE: new build process & compile output
  • Loading branch information
Ahmad Nassri committed Aug 19, 2016
1 parent 5709ace commit 3dc6d2a
Show file tree
Hide file tree
Showing 8 changed files with 124 additions and 47 deletions.
24 changes: 24 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"env": {
"test": {
"presets": ["es2015"],
"plugins": []
},
"es2015": {
"presets": ["es2015"],
"plugins": ["babel-plugin-add-module-exports", "transform-runtime"]
},
"node4": {
"presets": ["es2015-node4"],
"plugins": ["babel-plugin-add-module-exports"]
},
"node5": {
"presets": ["es2015-node5"],
"plugins": ["babel-plugin-add-module-exports"]
},
"node6": {
"presets": ["es2015-node5"],
"plugins": ["babel-plugin-add-module-exports"]
}
}
}
17 changes: 17 additions & 0 deletions .codeclimate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
engines:
fixme:
enabled: true

duplication:
enabled: true
config:
languages:
- javascript

eslint:
enabled: true

ratings:
paths:
- src/**
- test/**
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
*.log
/lib
/node_modules
/.nyc_output
15 changes: 8 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,24 @@ sudo: false
language: node_js

node_js:
- 4
- 5
- 6
- 6
- 5
- 4

cache:
directories:
- node_modules

before_script:
- npm prune

after_success:
- curl -Lo travis_after_all.py https://git.io/travis_after_all
- python travis_after_all.py
- export $(cat .to_export_back)
- export $(cat .to_export_back) > /dev/null
- npm run coverage
- npm run codeclimate
- BABEL_ENV=es2015 npm run compile -- -d lib
- BABEL_ENV=node4 npm run compile -- -d lib/node4
- BABEL_ENV=node5 npm run compile -- -d lib/node5
- BABEL_ENV=node6 npm run compile -- -d lib/node6
- npm run semantic-release

branches:
Expand Down
35 changes: 34 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,40 @@
## Install

```bash
npm install --save mkdirp-promise
npm install --production --save mkdirp-promise
```

## Usage

I reccomend using an optimized build matching your Node.js environment version, otherwise, the standard `require` would work just fine.

```js
/*
* Node 6
* Built using `babel-preset-es2015-node6`
*/
const mkdirp-promise = require('mkdirp-promise/lib/node6')

/*
* Node 5
* Built using `babel-preset-es2015-node5`
*/
const mkdirp-promise = require('mkdirp-promise/lib/node5')

/*
* Node 4
* Built using `babel-preset-es2015-node4`
*/
const mkdirp-promise = require('mkdirp-promise/lib/node4')

/*
* Node >=0.10 <=0.12
* Built using `babel-preset-es2015`
* Note:
* - additional package is required: `babel-runtime`
* - npm install --production --save babel-runtime
*/
var mkdirp-promise = require('mkdirp-promise')
```

## API
Expand Down
32 changes: 19 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
"url": "https://github.com/ahmadnassri/mkdirp-promise.git"
},
"license": "ISC",
"main": "lib/index",
"main": "lib/index.js",
"keywords": [
"mkdirp",
"promise"
],
"engines": {
"node": ">=4"
"node": ">=0.10"
},
"files": [
"lib",
Expand All @@ -24,9 +24,10 @@
"url": "https://github.com/ahmadnassri/mkdirp-promise/issues"
},
"scripts": {
"test": "tap test/*.js | tap-mocha-reporter spec",
"compile": "babel -q src",
"test": "BABEL_ENV=test tap test/*.js --node-arg=--require --node-arg=babel-register | tap-mocha-reporter spec",
"pretest": "standard && echint",
"coverage": "tap test/*.js --coverage",
"coverage": "BABEL_ENV=test tap test/*.js --coverage --nyc-arg=--require --nyc-arg=babel-register",
"codeclimate": "nyc report --reporter=text-lcov | codeclimate-test-reporter",
"semantic-release": "semantic-release pre && npm publish && semantic-release post"
},
Expand All @@ -49,15 +50,20 @@
"mkdirp": ">=0.5.0"
},
"devDependencies": {
"codeclimate-test-reporter": "^0.3.1",
"cz-conventional-changelog": "^1.1.6",
"babel-cli": "^6.11.4",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-transform-runtime": "^6.12.0",
"babel-preset-es2015": "^6.13.2",
"babel-preset-es2015-node4": "^2.1.0",
"babel-preset-es2015-node5": "^1.2.0",
"babel-preset-es2015-node6": "^0.3.0",
"babel-register": "^6.11.6",
"codeclimate-test-reporter": "^0.3.3",
"cz-conventional-changelog": "^1.2.0",
"echint": "^1.5.3",
"nyc": "^7.0.0",
"rimraf": "^2.5.2",
"semantic-release": "^4.3.5",
"standard": "^7.0.1",
"tap": "^6.2.0",
"tap-mocha-reporter": "0.0.27"
},
"version": "2.0.0"
"standard": "^7.1.2",
"tap": "^6.3.2",
"tap-mocha-reporter": "^2.0.0"
}
}
6 changes: 2 additions & 4 deletions lib/index.js → src/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
'use strict'
import mkdirp from 'mkdirp'

var mkdirp = require('mkdirp')

module.exports = function (dir, opts) {
export default function (dir, opts) {
return new Promise((resolve, reject) => {
mkdirp(dir, opts, (err, made) => err === null ? resolve(made) : reject(err))
})
Expand Down
41 changes: 19 additions & 22 deletions test/index.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,32 @@
'use strict'

const mkdir = require('mkdirp')
const mkdirp = require('../lib/index')
const path = require('path')
const rimraf = require('rimraf')
const tap = require('tap')
import mkdir from 'mkdirp'
import mkdirp from '../src/index'
import path from 'path'
import rimraf from 'rimraf'
import { test } from 'tap'

let base = path.join('test', 'tmp')

tap.test('mkdirp-promise', (t) => {
t.beforeEach((done) => mkdir(base, done))

t.afterEach((done) => rimraf(base, done))
test('mkdirp-promise', tap => {
tap.beforeEach(done => mkdir(base, done))
tap.afterEach(done => rimraf(base, done))

t.plan(3)
tap.plan(3)

t.test('should successfully create a directory tree', (assert) => {
var x = Math.floor(Math.random() * Math.pow(16, 4)).toString(16)
var y = Math.floor(Math.random() * Math.pow(16, 4)).toString(16)
var z = Math.floor(Math.random() * Math.pow(16, 4)).toString(16)
tap.test('should successfully create a directory tree', assert => {
let x = Math.floor(Math.random() * Math.pow(16, 4)).toString(16)
let y = Math.floor(Math.random() * Math.pow(16, 4)).toString(16)
let z = Math.floor(Math.random() * Math.pow(16, 4)).toString(16)

var file = path.join(base, path.join.apply(null, [x, y, z]))
let file = path.join(base, path.join.apply(null, [x, y, z]))

return mkdirp(file).then((made) => assert.equal(made, path.resolve(path.join(base, x))))
return mkdirp(file).then(made => assert.equal(made, path.resolve(path.join(base, x))))
})

t.test('should catch thrown errors', (assert) => {
return mkdirp(true).catch((err) => assert.match(err, /^TypeError/))
tap.test('should catch thrown errors', assert => {
return mkdirp(true).catch(err => assert.match(err, /^TypeError/))
})

t.test('should catch errors', (assert) => {
return mkdirp(path.join('test', 'index.js', 'foo')).catch((err) => assert.equal(err.code, 'ENOTDIR'))
tap.test('should catch errors', assert => {
return mkdirp(path.join('test', 'index.js', 'foo')).catch(err => assert.equal(err.code, 'ENOTDIR'))
})
})

0 comments on commit 3dc6d2a

Please sign in to comment.