Advertisement
Guest User

Untitled

a guest
Aug 29th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.30 KB | None | 0 0
  1. /// <binding ProjectOpened='watch' />
  2.  
  3. const
  4. gulp = require("gulp"),
  5. file = require('gulp-file'),
  6. concat = require("gulp-concat"),
  7. uglify = require("gulp-uglify"),
  8. sass = require('gulp-sass'),
  9. sourcemaps = require('gulp-sourcemaps'),
  10. tsc = require('gulp-typescript'),
  11. embedTemplates = require('gulp-angular2-embed-templates'),
  12. embedSass = require('gulp-angular2-embed-sass'),
  13. rimraf = require("rimraf"),
  14. project = require("./package.json"),
  15. ext_replace = require('gulp-ext-replace')
  16.  
  17.  
  18.  
  19. if (!String.prototype.endsWith) {
  20. String.prototype.endsWith = function (searchString, position) {
  21. var subjectString = this.toString();
  22. if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {
  23. position = subjectString.length;
  24. }
  25. position -= searchString.length;
  26. var lastIndex = subjectString.indexOf(searchString, position);
  27. return lastIndex !== -1 && lastIndex === position;
  28. };
  29. }
  30.  
  31.  
  32. var CompanyName = 'AltaSoft'
  33.  
  34. var config = {
  35. source: {
  36. tsbase: './src',
  37.  
  38. ts: './src/**/*.ts',
  39. dts: './typings/**/*.d.ts',
  40. html: './src/**/*.html',
  41. sass: './src/**/*.ts.scss',
  42. common_sass: './Common/Styles/**/*.scss',
  43. lang: './Localization/**/*.json',
  44. modules: './src/barrels/*.ts'
  45. },
  46. compiled: {
  47. js: './wwwroot/js/',
  48. jslib: './wwwroot/js/lib/',
  49. css: './wwwroot/css/',
  50. dts: './wwwroot/js/',
  51. lang: './wwwroot/lang/',
  52. modules: './node_modules/' + CompanyName + '/'
  53. },
  54. ignore: ['!node_modules/**', '!bin/**']
  55. }
  56.  
  57.  
  58.  
  59.  
  60. gulp.task("clean", function (cb) {
  61. rimraf(config.compiled.lang, cb);
  62. });
  63.  
  64. gulp.task('compile-ts', function () {
  65.  
  66. var embedConfig = {
  67. sourceType: 'ts',
  68. minimize: {
  69. empty: true, // KEEP empty attributes
  70. ssi: true, // KEEP Server Side Includes
  71. conditionals: true, // KEEP conditional internet explorer comments
  72. spare: false, // KEEP redundant attributes
  73. quotes: true, // KEEP arbitrary quotes
  74. }
  75. }
  76.  
  77.  
  78. var tsResult = gulp.src([config.source.ts, config.source.dts].concat(config.ignore), { base: config.source.tsbase })
  79. .pipe(embedSass())
  80. .pipe(embedTemplates(embedConfig))
  81. .pipe(sourcemaps.init())
  82. .pipe(tsc({
  83. "typescript": require('typescript'),
  84. "target": "es5",
  85. "module": "system",
  86. "moduleResolution": "node",
  87. "sourceMap": true,
  88. "emitDecoratorMetadata": true,
  89. "experimentalDecorators": true,
  90. "removeComments": true,
  91. "noImplicitAny": false,
  92. "outFile": "app.js"
  93. }));
  94.  
  95.  
  96. tsResult.dts.pipe(gulp.dest(config.compiled.dts));
  97.  
  98. return tsResult.js
  99. .pipe(sourcemaps.write('../js/', { sourceRoot: '/Source', debug: true }))
  100. .pipe(gulp.dest(config.compiled.js));
  101. });
  102.  
  103. gulp.task('compile-modules', function () {
  104.  
  105. gulp.src([config.source.modules])
  106. .pipe(ext_replace('.d.ts'))
  107. .pipe(gulp.dest(config.compiled.modules));
  108.  
  109. });
  110.  
  111. gulp.task('compile-sass', function () {
  112.  
  113. gulp.src([config.source.common_sass].concat(config.ignore))
  114. .pipe(sass())
  115. .pipe(gulp.dest(config.compiled.css))
  116.  
  117. });
  118.  
  119. gulp.task('compile-json', function () {
  120. gulp.src([config.source.lang].concat(config.ignore)).pipe(gulp.dest(config.compiled.lang));
  121. });
  122.  
  123. gulp.task('compile-lib', function () {
  124.  
  125. if (project.prepublish && project.prepublish.bundles && project.prepublish.bundles.length) {
  126.  
  127. project.prepublish.bundles.forEach(function (bundle) {
  128. gulp.src(bundle.source)
  129. .pipe(gulp.dest(bundle.destination))
  130. })
  131. }
  132.  
  133.  
  134. if (!project.prepublish ||
  135. !project.prepublish.libs ||
  136. !project.prepublish.libs.length ||
  137. !project.prepublish.destination ||
  138. !project.prepublish.destination.js ||
  139. !project.prepublish.destination.css) return
  140.  
  141.  
  142. var jsFiles = project.prepublish.libs.filter(function (item) {
  143. return item.endsWith('.js') || item.endsWith('.js.map') || item.endsWith('.map')
  144. })
  145.  
  146. var cssFiles = project.prepublish.libs.filter(function (item) {
  147. return item.endsWith('.css') || item.endsWith('css.map')
  148. })
  149.  
  150. gulp.src(jsFiles)
  151. .pipe(gulp.dest(project.prepublish.destination.js))
  152.  
  153. gulp.src(cssFiles)
  154. .pipe(gulp.dest(project.prepublish.destination.css))
  155. })
  156.  
  157. gulp.task('compile', ['compile-modules', 'compile-ts', 'compile-sass', 'compile-json', 'compile-lib']);
  158.  
  159.  
  160. gulp.task('watch', ['compile'], function () {
  161. gulp.watch([config.source.ts], ['compile-ts']);
  162. gulp.watch([config.source.html], ['compile-ts']);
  163. gulp.watch([config.source.sass], ['compile-ts']);
  164. gulp.watch([config.source.lang], ['compile-json']);
  165. gulp.watch([config.source.common_sass], ['compile-sass']);
  166. gulp.watch([config.source.modules], ['compile-modules']);
  167. gulp.watch(['./project.json'], ['compile-lib']);
  168. });
  169.  
  170.  
  171. gulp.task('version-generator', function () {
  172.  
  173. var content = 'window.ClientVersion=' + Date.now()
  174.  
  175. file('version.js', content)
  176. .pipe(gulp.dest(config.compiled.js))
  177. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement