--- /dev/null
+var path = require('path')
+var fs = require('graceful-fs')
+var mkdir = require('../mkdirs')
+
+function createFile (file, callback) {
+ function makeFile () {
+ fs.writeFile(file, '', function (err) {
+ if (err) return callback(err)
+ callback()
+ })
+ }
+
+ fs.exists(file, function (fileExists) {
+ if (fileExists) return callback()
+ var dir = path.dirname(file)
+ fs.exists(dir, function (dirExists) {
+ if (dirExists) return makeFile()
+ mkdir.mkdirs(dir, function (err) {
+ if (err) return callback(err)
+ makeFile()
+ })
+ })
+ })
+}
+
+function createFileSync (file) {
+ if (fs.existsSync(file)) return
+
+ var dir = path.dirname(file)
+ if (!fs.existsSync(dir)) {
+ mkdir.mkdirsSync(dir)
+ }
+
+ fs.writeFileSync(file, '')
+}
+
+module.exports = {
+ createFile: createFile,
+ createFileSync: createFileSync,
+ // alias
+ ensureFile: createFile,
+ ensureFileSync: createFileSync
+}