index.js 926 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*!
  2. * output-file-sync | MIT (c) Shinnosuke Watanabe
  3. * https://github.com/shinnn/output-file-sync
  4. */
  5. 'use strict';
  6. var dirname = require('path').dirname;
  7. var writeFileSync = require('fs').writeFileSync;
  8. var xtend = require('xtend');
  9. var mkdirpSync = require('mkdirp').sync;
  10. module.exports = function outputFileSync(filePath, data, options) {
  11. options = options || {};
  12. var mkdirpOptions;
  13. if (typeof options === 'string') {
  14. mkdirpOptions = null;
  15. } else {
  16. if (options.dirMode) {
  17. mkdirpOptions = xtend(options, {mode: options.dirMode});
  18. } else {
  19. mkdirpOptions = options;
  20. }
  21. }
  22. var writeFileOptions;
  23. if (options.fileMode) {
  24. writeFileOptions = xtend(options, {mode: options.fileMode});
  25. } else {
  26. writeFileOptions = options;
  27. }
  28. var createdDirPath = mkdirpSync(dirname(filePath), mkdirpOptions);
  29. writeFileSync(filePath, data, writeFileOptions);
  30. return createdDirPath;
  31. };