8
0

remove-use-strict.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. 'use strict';
  6. const gulp = require( 'gulp' );
  7. const path = require( 'path' );
  8. const replace = require( 'gulp-replace' );
  9. const filterGitignore = require( '../utils/filtergitignore' );
  10. const tools = require( '../../../utils/tools' );
  11. const jshintrcDirs = [
  12. '/',
  13. 'dev/',
  14. 'tests/'
  15. ];
  16. /**
  17. * Removes lines with `'use strict';` directive.
  18. *
  19. * Example:
  20. *
  21. * gulp exec --task remove-use-strict
  22. *
  23. * @param {String} workdir
  24. * @returns {Stream}
  25. */
  26. module.exports = function executeRemoveUseStrict( workdir ) {
  27. updateJshintrc( workdir );
  28. return removeUseStrict( workdir );
  29. };
  30. // Updates .jshintrc file's `strict` option with `implied` value.
  31. //
  32. // @param {String} workdir Path of directory to be processed.
  33. function updateJshintrc( workdir ) {
  34. jshintrcDirs.forEach(
  35. dir => {
  36. const jshintrcPath = path.join( workdir, dir, '.jshintrc' );
  37. tools.updateJSONFile( jshintrcPath, json => {
  38. json.strict = 'implied';
  39. return json;
  40. } );
  41. }
  42. );
  43. }
  44. // Removes `'use strict';` directive from project's source files. Omits files listed in `.gitignore`.
  45. //
  46. // @param {String} workdir Path of directory to be processed.
  47. // @returns {Stream}
  48. function removeUseStrict( workdir ) {
  49. const glob = path.join( workdir, '**/*.js' );
  50. const useStrictRegex = /^\s*'use strict';\s*$/gm;
  51. return gulp.src( glob )
  52. .pipe( filterGitignore() )
  53. .pipe( replace(
  54. useStrictRegex,
  55. '',
  56. { skipBinary: true }
  57. ) )
  58. .pipe( gulp.dest( workdir ) );
  59. }