PageRenderTime 49ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/packages/preview-plus/node_modules/less/Gruntfile.js

https://gitlab.com/xxtxx/atom-settings
JavaScript | 409 lines | 120 code | 11 blank | 278 comment | 0 complexity | e7d4483f9a6b1ae39b2409563fec4de5 MD5 | raw file
  1. 'use strict';
  2. var fs = require('fs');
  3. module.exports = function (grunt) {
  4. // Report the elapsed execution time of tasks.
  5. require('time-grunt')(grunt);
  6. var COMPRESS_FOR_TESTS = true;
  7. // Project configuration.
  8. grunt.initConfig({
  9. // Metadata required for build.
  10. build: grunt.file.readYAML('build/build.yml'),
  11. pkg: grunt.file.readJSON('package.json'),
  12. meta: {
  13. license: '<%= _.pluck(pkg.licenses, "type").join(", ") %>',
  14. copyright: 'Copyright (c) 2009-<%= grunt.template.today("yyyy") %>',
  15. banner: '/*!\n' +
  16. ' * Less - <%= pkg.description %> v<%= pkg.version %>\n' +
  17. ' * http://lesscss.org\n' +
  18. ' *\n' +
  19. ' * <%= meta.copyright %>, <%= pkg.author.name %> <<%= pkg.author.email %>>\n' +
  20. ' * Licensed under the <%= meta.license %> License.\n' +
  21. ' *\n' +
  22. ' */\n\n' +
  23. ' /**' +
  24. ' * @license <%= meta.license %>\n' +
  25. ' */\n\n'
  26. },
  27. shell: {
  28. options: {stdout: true, failOnError: true},
  29. test: {
  30. command: 'node test'
  31. },
  32. benchmark: {
  33. command: 'node benchmark/less-benchmark.js'
  34. },
  35. "sourcemap-test": {
  36. command: [
  37. 'node bin/lessc --source-map=test/sourcemaps/maps/import-map.map test/less/import.less test/sourcemaps/import.css',
  38. 'node bin/lessc --source-map test/less/sourcemaps/basic.less test/sourcemaps/basic.css'
  39. ].join('&&')
  40. }
  41. },
  42. browserify: {
  43. browser: {
  44. src: ['./lib/less-browser/bootstrap.js'],
  45. options: {
  46. exclude: ["promise"],
  47. require: ["promise/polyfill.js"],
  48. browserifyOptions: {
  49. standalone: 'less'
  50. }
  51. },
  52. dest: 'tmp/less.js'
  53. }
  54. },
  55. concat: {
  56. options: {
  57. stripBanners: 'all',
  58. banner: '<%= meta.banner %>'
  59. },
  60. browsertest: {
  61. src: COMPRESS_FOR_TESTS ? '<%= uglify.test.dest %>' : '<%= browserify.browser.dest %>',
  62. dest: 'test/browser/less.js'
  63. },
  64. dist: {
  65. src: '<%= browserify.browser.dest %>',
  66. dest: 'dist/less.js'
  67. },
  68. // Rhino
  69. rhino: {
  70. options: {
  71. banner: '/* Less.js v<%= pkg.version %> RHINO | <%= meta.copyright %>, <%= pkg.author.name %> <<%= pkg.author.email %>> */\n\n',
  72. footer: '' // override task-level footer
  73. },
  74. src: ['<%= build.rhino %>'],
  75. dest: 'dist/less-rhino.js'
  76. },
  77. // lessc for Rhino
  78. rhinolessc: {
  79. options: {
  80. banner: '/* Less.js v<%= pkg.version %> RHINO | <%= meta.copyright %>, <%= pkg.author.name %> <<%= pkg.author.email %>> */\n\n',
  81. footer: '' // override task-level footer
  82. },
  83. src: ['<%= build.rhinolessc %>'],
  84. dest: 'dist/lessc-rhino.js'
  85. }
  86. },
  87. uglify: {
  88. options: {
  89. banner: '<%= meta.banner %>',
  90. mangle: true,
  91. compress: {
  92. pure_getters: true
  93. }
  94. },
  95. dist: {
  96. src: ['<%= concat.dist.dest %>'],
  97. dest: 'dist/less.min.js'
  98. },
  99. test: {
  100. src: '<%= browserify.browser.dest %>',
  101. dest: 'tmp/less.min.js'
  102. }
  103. },
  104. jshint: {
  105. options: {jshintrc: '.jshintrc'},
  106. files: {
  107. src: [
  108. 'Gruntfile.js',
  109. 'lib/less/**/*.js',
  110. 'lib/less-node/**/*.js',
  111. 'lib/less-browser/**/*.js',
  112. 'lib/less-rhino/**/*.js',
  113. 'bin/lessc'
  114. ]
  115. }
  116. },
  117. connect: {
  118. server: {
  119. options: {
  120. port: 8081
  121. }
  122. }
  123. },
  124. jasmine: {
  125. options: {
  126. keepRunner: true,
  127. host: 'http://localhost:8081/',
  128. vendor: ['test/browser/jasmine-jsreporter.js', 'test/browser/common.js', 'test/browser/less.js'],
  129. template: 'test/browser/test-runner-template.tmpl'
  130. },
  131. main: {
  132. // src is used to build list of less files to compile
  133. src: ['test/less/*.less', '!test/less/javascript.less', '!test/less/urls.less', '!test/less/empty.less'],
  134. options: {
  135. helpers: 'test/browser/runner-main-options.js',
  136. specs: 'test/browser/runner-main-spec.js',
  137. outfile: 'tmp/browser/test-runner-main.html'
  138. }
  139. },
  140. legacy: {
  141. src: ['test/less/legacy/*.less'],
  142. options: {
  143. helpers: 'test/browser/runner-legacy-options.js',
  144. specs: 'test/browser/runner-legacy-spec.js',
  145. outfile: 'tmp/browser/test-runner-legacy.html'
  146. }
  147. },
  148. strictUnits: {
  149. src: ['test/less/strict-units/*.less'],
  150. options: {
  151. helpers: 'test/browser/runner-strict-units-options.js',
  152. specs: 'test/browser/runner-strict-units-spec.js',
  153. outfile: 'tmp/browser/test-runner-strict-units.html'
  154. }
  155. },
  156. errors: {
  157. src: ['test/less/errors/*.less', '!test/less/errors/javascript-error.less'],
  158. options: {
  159. timeout: 20000,
  160. helpers: 'test/browser/runner-errors-options.js',
  161. specs: 'test/browser/runner-errors-spec.js',
  162. outfile: 'tmp/browser/test-runner-errors.html'
  163. }
  164. },
  165. noJsErrors: {
  166. src: ['test/less/no-js-errors/*.less'],
  167. options: {
  168. helpers: 'test/browser/runner-no-js-errors-options.js',
  169. specs: 'test/browser/runner-no-js-errors-spec.js',
  170. outfile: 'tmp/browser/test-runner-no-js-errors.html'
  171. }
  172. },
  173. browser: {
  174. src: ['test/browser/less/*.less'],
  175. options: {
  176. helpers: 'test/browser/runner-browser-options.js',
  177. specs: 'test/browser/runner-browser-spec.js',
  178. outfile: 'tmp/browser/test-runner-browser.html'
  179. }
  180. },
  181. relativeUrls: {
  182. src: ['test/browser/less/relative-urls/*.less'],
  183. options: {
  184. helpers: 'test/browser/runner-relative-urls-options.js',
  185. specs: 'test/browser/runner-relative-urls-spec.js',
  186. outfile: 'tmp/browser/test-runner-relative-urls.html'
  187. }
  188. },
  189. rootpath: {
  190. src: ['test/browser/less/rootpath/*.less'],
  191. options: {
  192. helpers: 'test/browser/runner-rootpath-options.js',
  193. specs: 'test/browser/runner-rootpath-spec.js',
  194. outfile: 'tmp/browser/test-runner-rootpath.html'
  195. }
  196. },
  197. rootpathRelative: {
  198. src: ['test/browser/less/rootpath-relative/*.less'],
  199. options: {
  200. helpers: 'test/browser/runner-rootpath-relative-options.js',
  201. specs: 'test/browser/runner-rootpath-relative-spec.js',
  202. outfile: 'tmp/browser/test-runner-rootpath-relative.html'
  203. }
  204. },
  205. production: {
  206. src: ['test/browser/less/production/*.less'],
  207. options: {
  208. helpers: 'test/browser/runner-production-options.js',
  209. specs: 'test/browser/runner-production-spec.js',
  210. outfile: 'tmp/browser/test-runner-production.html'
  211. }
  212. },
  213. modifyVars: {
  214. src: ['test/browser/less/modify-vars/*.less'],
  215. options: {
  216. helpers: 'test/browser/runner-modify-vars-options.js',
  217. specs: 'test/browser/runner-modify-vars-spec.js',
  218. outfile: 'tmp/browser/test-runner-modify-vars.html'
  219. }
  220. },
  221. globalVars: {
  222. src: ['test/browser/less/global-vars/*.less'],
  223. options: {
  224. helpers: 'test/browser/runner-global-vars-options.js',
  225. specs: 'test/browser/runner-global-vars-spec.js',
  226. outfile: 'tmp/browser/test-runner-global-vars.html'
  227. }
  228. },
  229. postProcessor: {
  230. src: ['test/browser/less/postProcessor/*.less'],
  231. options: {
  232. helpers: 'test/browser/runner-postProcessor-options.js',
  233. specs: 'test/browser/runner-postProcessor.js',
  234. outfile: 'tmp/browser/test-runner-post-processor.html'
  235. }
  236. }
  237. },
  238. 'saucelabs-jasmine': {
  239. all: {
  240. options: {
  241. urls: ["post-processor", "global-vars", "modify-vars", "production", "rootpath-relative",
  242. "rootpath", "relative-urls", "browser", "no-js-errors", "legacy", "strict-units"
  243. ].map(function(testName) {
  244. return "http://localhost:8081/tmp/browser/test-runner-" + testName + ".html";
  245. }),
  246. testname: 'Sauce Unit Test for less.js',
  247. browsers: [{
  248. browserName: "chrome",
  249. version: '',
  250. platform: 'Windows 8'
  251. },
  252. {
  253. browserName: "firefox",
  254. version: '33',
  255. platform: 'Linux'
  256. },
  257. {
  258. browserName: "iPad",
  259. version: '8.0',
  260. platform: 'OS X 10.9',
  261. 'device-orientation': 'portrait'
  262. },
  263. {
  264. browserName: "internet explorer",
  265. version: '8',
  266. platform: 'Windows XP'
  267. },
  268. {
  269. browserName: "internet explorer",
  270. version: '9',
  271. platform: 'Windows 7'
  272. },
  273. {
  274. browserName: "internet explorer",
  275. version: '10',
  276. platform: 'Windows 7'
  277. },
  278. {
  279. browserName: "internet explorer",
  280. version: '11',
  281. platform: 'Windows 8.1'
  282. }],
  283. sauceConfig: {
  284. 'record-video': process.env.TRAVIS_BRANCH !== "master",
  285. 'record-screenshots': process.env.TRAVIS_BRANCH !== "master",
  286. 'idle-timeout': 100, 'max-duration': 120,
  287. build: process.env.TRAVIS_BRANCH === "master" ? process.env.TRAVIS_JOB_ID : undefined,
  288. tags: [process.env.TRAVIS_BUILD_NUMBER, process.env.TRAVIS_PULL_REQUEST, process.env.TRAVIS_BRANCH]
  289. },
  290. throttled: 3
  291. }
  292. }
  293. },
  294. // Clean the version of less built for the tests
  295. clean: {
  296. test: ['test/browser/less.js', 'tmp'],
  297. "sourcemap-test": ['test/sourcemaps/*.css', 'test/sourcemaps/*.map'],
  298. sauce_log: ["sc_*.log"]
  299. }
  300. });
  301. // Load these plugins to provide the necessary tasks
  302. require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
  303. // Actually load this plugin's task(s).
  304. grunt.loadTasks('build/tasks');
  305. // by default, run tests
  306. grunt.registerTask('default', [
  307. 'test'
  308. ]);
  309. grunt.registerTask('updateBowerJson', function () {
  310. var bowerJson = require('./bower.json');
  311. bowerJson.version = grunt.config('pkg.version');
  312. fs.writeFileSync('./bower.json', JSON.stringify(bowerJson, null, 2));
  313. });
  314. // Release
  315. grunt.registerTask('dist', [
  316. 'browserify:browser',
  317. 'concat:dist',
  318. 'uglify:dist',
  319. 'updateBowerJson'
  320. ]);
  321. // Release Rhino Version
  322. grunt.registerTask('rhino', [
  323. 'browserify:rhino',
  324. 'concat:rhino',
  325. 'concat:rhinolessc'
  326. ]);
  327. // Create the browser version of less.js
  328. grunt.registerTask('browsertest-lessjs', [
  329. 'browserify:browser',
  330. 'uglify:test',
  331. 'concat:browsertest'
  332. ]);
  333. // Run all browser tests
  334. grunt.registerTask('browsertest', [
  335. 'browsertest-lessjs',
  336. 'connect',
  337. 'jasmine'
  338. ]);
  339. // setup a web server to run the browser tests in a browser rather than phantom
  340. grunt.registerTask('browsertest-server', [
  341. 'browsertest-lessjs',
  342. 'jasmine::build',
  343. 'connect::keepalive'
  344. ]);
  345. grunt.registerTask('sauce', [
  346. 'browsertest-lessjs',
  347. 'jasmine::build',
  348. 'connect',
  349. 'sauce-after-setup'
  350. ]);
  351. // setup a web server to run the browser tests in a browser rather than phantom
  352. grunt.registerTask('sauce-after-setup', [
  353. 'saucelabs-jasmine',
  354. 'clean:sauce_log'
  355. ]);
  356. var testTasks = [
  357. 'clean',
  358. 'jshint',
  359. 'shell:test',
  360. 'browsertest'
  361. ];
  362. if (isNaN(Number(process.env.TRAVIS_PULL_REQUEST, 10)) &&
  363. Number(process.env.TRAVIS_NODE_VERSION) === 0.11 &&
  364. (process.env.TRAVIS_BRANCH === "master" || process.env.TRAVIS_BRANCH === "sauce")) {
  365. testTasks.push("sauce-after-setup");
  366. }
  367. // Run all tests
  368. grunt.registerTask('test', testTasks);
  369. // generate a good test environment for testing sourcemaps
  370. grunt.registerTask('sourcemap-test', [
  371. 'clean:sourcemap-test',
  372. 'shell:sourcemap-test',
  373. 'connect::keepalive'
  374. ]);
  375. // Run benchmark
  376. grunt.registerTask('benchmark', [
  377. 'shell:benchmark'
  378. ]);
  379. };