expansive.es 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. expansive.es - Configuration for exp-less
  3. Transform by less into css. Uses lessc
  4. */
  5. Expansive.load({
  6. services: {
  7. name: 'less',
  8. files: [ '**.less', '!**.css.less' ],
  9. stylesheets: [ 'css/all.css' ],
  10. dependencies: null,
  11. transforms: {
  12. mappings: {
  13. less: [ 'css', 'less' ],
  14. },
  15. init: function(transform) {
  16. let service = transform.service
  17. if (!(service.stylesheets is Array)) {
  18. service.stylesheets = [service.stylesheets]
  19. }
  20. for each (stylesheet in service.stylesheets) {
  21. if (expansive.directories.contents.join(stylesheet + '.less').exists) {
  22. if (!service.dependencies) {
  23. service.dependencies ||= {}
  24. service.dependencies[stylesheet + '.less'] = '**.less'
  25. }
  26. }
  27. blend(expansive.control.dependencies, service.dependencies)
  28. let collections = expansive.control.collections
  29. collections.styles ||= []
  30. collections.styles.push(stylesheet)
  31. }
  32. },
  33. resolve: function(path: Path, transform): Path? {
  34. if (path.glob(transform.service.files)) {
  35. return null
  36. }
  37. return path
  38. },
  39. render: function(contents, meta) {
  40. let less = Cmd.locate('lessc')
  41. if (less) {
  42. contents = Cmd.run(less + ' - ', {dir: meta.source.dirname}, contents)
  43. } else {
  44. trace('Warn', 'Cannot find lessc')
  45. }
  46. return contents
  47. }
  48. }
  49. }
  50. })