file.js 924 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. var path = require('path')
  2. var fs = require('graceful-fs')
  3. var mkdir = require('../mkdirs')
  4. function createFile (file, callback) {
  5. function makeFile () {
  6. fs.writeFile(file, '', function (err) {
  7. if (err) return callback(err)
  8. callback()
  9. })
  10. }
  11. fs.exists(file, function (fileExists) {
  12. if (fileExists) return callback()
  13. var dir = path.dirname(file)
  14. fs.exists(dir, function (dirExists) {
  15. if (dirExists) return makeFile()
  16. mkdir.mkdirs(dir, function (err) {
  17. if (err) return callback(err)
  18. makeFile()
  19. })
  20. })
  21. })
  22. }
  23. function createFileSync (file) {
  24. if (fs.existsSync(file)) return
  25. var dir = path.dirname(file)
  26. if (!fs.existsSync(dir)) {
  27. mkdir.mkdirsSync(dir)
  28. }
  29. fs.writeFileSync(file, '')
  30. }
  31. module.exports = {
  32. createFile: createFile,
  33. createFileSync: createFileSync,
  34. // alias
  35. ensureFile: createFile,
  36. ensureFileSync: createFileSync
  37. }