Dpack get data Node : V10
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

119 line
3.4 KiB

  1. 'use strict';
  2. module.exports = function (grunt){
  3. grunt.initConfig({
  4. pkg: grunt.file.readJSON('package.json'),
  5. banner: '/*! <%= pkg.name %> <%= pkg.version %> - <%= pkg.license %> | <%= pkg.repository.url %> */\n',
  6. export: {
  7. src: "src/main.js",
  8. dst: "dist/popupS.js"
  9. },
  10. watch: {
  11. scripts: {
  12. files: ['src/**/*.*', 'css/popupS.css'],
  13. tasks: ['default'],
  14. options: { interrupt: true }
  15. }
  16. },
  17. uglify: {
  18. options: {
  19. banner: '<%= banner %>'
  20. },
  21. dist: {
  22. files: {
  23. 'dist/<%= pkg.name %>.min.js': ['dist/popupS.js']
  24. }
  25. }
  26. },
  27. cssmin: {
  28. options: {
  29. shorthandCompacting: false,
  30. roundingPrecision: -1
  31. },
  32. target: {
  33. files: {
  34. 'css/<%= pkg.name %>.min.css': ['css/popupS.css']
  35. }
  36. }
  37. },
  38. usebanner: {
  39. taskName: {
  40. options: {
  41. position: 'top',
  42. banner: '<%= banner %>',
  43. linebreak: false
  44. },
  45. files: {
  46. src: [
  47. 'css/popupS.min.css'
  48. ]
  49. }
  50. }
  51. },
  52. clean: [
  53. 'css/popupS.min.css'
  54. ]
  55. });
  56. grunt.registerTask('export', 'Export js', function () {
  57. function file(rel, name) {
  58. return rel.split('/').slice(0, -1).concat(name).join('/') + '.js';
  59. }
  60. function parse(src, pad) {
  61. grunt.log.writeln((pad || '') + 'Parse file:', src);
  62. if(src == 'src/main.js'){
  63. return grunt.file.read(src)
  64. .replace(/require\('(.*?)'\);?/g, function (_, name) {
  65. return parse(file(src, name), ' ');
  66. })
  67. .replace(/\/+\s+&import\s+"(.*?)".*?\n/g, function (_, name) {
  68. return parse(file(src, name), ' ');
  69. })
  70. .trim()
  71. ;
  72. } else {
  73. return grunt.file.read(src)
  74. .replace(/module\.exports\s*=\s*([\s\S]+);/, '$1')
  75. .replace(/require\('(.*?)'\);?/g, function (_, name) {
  76. return parse(file(src, name), ' ');
  77. })
  78. .replace(/\/+\s+&import\s+"(.*?)".*?\n/g, function (_, name) {
  79. return parse(file(src, name), ' ');
  80. })
  81. .trim()
  82. ;
  83. }
  84. }
  85. var config = grunt.config(this.name);
  86. var content = parse(config.src).replace(/;;;[^\n]+/g, '');
  87. grunt.log.writeln(new Array(50).join('-'));
  88. grunt.log.oklns('Write file:', config.dst);
  89. grunt.file.write(config.dst, content);
  90. });
  91. grunt.loadNpmTasks('grunt-contrib-cssmin');
  92. grunt.loadNpmTasks('grunt-contrib-uglify');
  93. grunt.loadNpmTasks('grunt-contrib-watch');
  94. grunt.loadNpmTasks('grunt-usebanner');
  95. grunt.loadNpmTasks('grunt-contrib-clean');
  96. grunt.registerTask('js', ['export']);
  97. grunt.registerTask('min', ['uglify']);
  98. grunt.registerTask('css', ['clean', 'cssmin', 'usebanner']);
  99. grunt.registerTask('default', ['js', 'min', 'css']);
  100. };