less 4.5.1 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/bin/lessc +37 -23
  2. package/dist/less.js +14497 -11745
  3. package/dist/less.min.js +4 -4
  4. package/dist/less.min.js.map +1 -1
  5. package/lib/less/constants.js +5 -7
  6. package/lib/less/contexts.js +71 -55
  7. package/lib/less/data/colors.js +150 -153
  8. package/lib/less/data/index.js +4 -7
  9. package/lib/less/data/unit-conversions.js +2 -5
  10. package/lib/less/default-options.js +36 -26
  11. package/lib/less/deprecation.js +67 -0
  12. package/lib/less/environment/abstract-file-manager.js +62 -50
  13. package/lib/less/environment/abstract-plugin-loader.js +69 -46
  14. package/lib/less/environment/environment-api.ts +21 -0
  15. package/lib/less/environment/environment.js +34 -30
  16. package/lib/less/environment/file-manager-api.ts +77 -0
  17. package/lib/less/functions/boolean.js +13 -13
  18. package/lib/less/functions/color-blending.js +39 -31
  19. package/lib/less/functions/color.js +153 -137
  20. package/lib/less/functions/data-uri.js +73 -64
  21. package/lib/less/functions/default.js +9 -11
  22. package/lib/less/functions/function-caller.js +35 -34
  23. package/lib/less/functions/function-registry.js +16 -17
  24. package/lib/less/functions/index.js +33 -33
  25. package/lib/less/functions/list.js +88 -75
  26. package/lib/less/functions/math-helper.js +8 -11
  27. package/lib/less/functions/math.js +21 -21
  28. package/lib/less/functions/number.js +42 -53
  29. package/lib/less/functions/string.js +18 -22
  30. package/lib/less/functions/style.js +21 -20
  31. package/lib/less/functions/svg.js +83 -82
  32. package/lib/less/functions/types.js +28 -32
  33. package/lib/less/import-manager.js +73 -64
  34. package/lib/less/index.js +65 -65
  35. package/lib/less/less-error.js +63 -45
  36. package/lib/less/logger.js +11 -14
  37. package/lib/less/parse-tree.js +52 -53
  38. package/lib/less/parse.js +44 -44
  39. package/lib/less/parser/parser-input.js +151 -113
  40. package/lib/less/parser/parser.js +864 -658
  41. package/lib/less/plugin-manager.js +57 -46
  42. package/lib/less/render.js +17 -23
  43. package/lib/less/source-map-builder.js +52 -43
  44. package/lib/less/source-map-output.js +56 -43
  45. package/lib/less/transform-tree.js +40 -30
  46. package/lib/less/tree/anonymous.js +52 -28
  47. package/lib/less/tree/assignment.js +44 -27
  48. package/lib/less/tree/atrule-syntax.js +4 -6
  49. package/lib/less/tree/atrule.js +247 -140
  50. package/lib/less/tree/attribute.js +55 -24
  51. package/lib/less/tree/call.js +70 -42
  52. package/lib/less/tree/color.js +194 -145
  53. package/lib/less/tree/combinator.js +31 -21
  54. package/lib/less/tree/comment.js +44 -23
  55. package/lib/less/tree/condition.js +61 -36
  56. package/lib/less/tree/container.js +90 -34
  57. package/lib/less/tree/debug-info.js +28 -15
  58. package/lib/less/tree/declaration.js +97 -52
  59. package/lib/less/tree/detached-ruleset.js +42 -24
  60. package/lib/less/tree/dimension.js +127 -71
  61. package/lib/less/tree/element.js +82 -52
  62. package/lib/less/tree/expression.js +75 -50
  63. package/lib/less/tree/extend.js +71 -42
  64. package/lib/less/tree/import.js +184 -110
  65. package/lib/less/tree/index.js +52 -81
  66. package/lib/less/tree/javascript.js +43 -32
  67. package/lib/less/tree/js-eval-node.js +46 -32
  68. package/lib/less/tree/keyword.js +25 -17
  69. package/lib/less/tree/media.js +77 -35
  70. package/lib/less/tree/merge-rules.js +47 -0
  71. package/lib/less/tree/mixin-call.js +181 -98
  72. package/lib/less/tree/mixin-definition.js +211 -117
  73. package/lib/less/tree/namespace-value.js +63 -44
  74. package/lib/less/tree/negative.js +34 -21
  75. package/lib/less/tree/nested-at-rule.js +149 -66
  76. package/lib/less/tree/node.js +225 -90
  77. package/lib/less/tree/operation.js +59 -34
  78. package/lib/less/tree/paren.js +34 -17
  79. package/lib/less/tree/property.js +66 -35
  80. package/lib/less/tree/query-in-parens.js +52 -60
  81. package/lib/less/tree/quoted.js +93 -44
  82. package/lib/less/tree/ruleset.js +632 -318
  83. package/lib/less/tree/selector.js +151 -77
  84. package/lib/less/tree/unicode-descriptor.js +14 -12
  85. package/lib/less/tree/unit.js +111 -63
  86. package/lib/less/tree/url.js +62 -38
  87. package/lib/less/tree/value.js +50 -34
  88. package/lib/less/tree/variable-call.js +47 -30
  89. package/lib/less/tree/variable.js +53 -31
  90. package/lib/less/utils.js +44 -47
  91. package/lib/less/visitors/extend-visitor.js +233 -172
  92. package/lib/less/visitors/import-sequencer.js +24 -24
  93. package/lib/less/visitors/import-visitor.js +62 -52
  94. package/lib/less/visitors/index.js +14 -17
  95. package/lib/less/visitors/join-selector-visitor.js +40 -37
  96. package/lib/less/visitors/set-tree-visibility-visitor.js +32 -18
  97. package/lib/less/visitors/to-css-visitor.js +135 -128
  98. package/lib/less/visitors/visitor.js +60 -45
  99. package/lib/less-browser/add-default-options.js +23 -13
  100. package/lib/less-browser/bootstrap.js +23 -17
  101. package/lib/less-browser/browser.js +24 -21
  102. package/lib/less-browser/cache.js +17 -19
  103. package/lib/less-browser/error-reporting.js +52 -44
  104. package/lib/less-browser/file-manager.js +52 -42
  105. package/lib/less-browser/image-size.js +12 -12
  106. package/lib/less-browser/index.js +131 -105
  107. package/lib/less-browser/log-listener.js +30 -31
  108. package/lib/less-browser/plugin-loader.js +10 -10
  109. package/lib/less-browser/utils.js +19 -21
  110. package/lib/less-node/environment.js +32 -8
  111. package/lib/less-node/file-manager.js +62 -45
  112. package/lib/less-node/fs.js +11 -8
  113. package/lib/less-node/image-size.js +40 -31
  114. package/lib/less-node/index.js +28 -19
  115. package/lib/less-node/lessc-helper.js +20 -21
  116. package/lib/less-node/plugin-loader.js +35 -27
  117. package/lib/less-node/url-file-manager.js +33 -31
  118. package/package.json +25 -18
  119. package/.eslintignore +0 -6
  120. package/.eslintrc.js +0 -63
  121. package/Gruntfile.js +0 -403
  122. package/bower.json +0 -22
  123. package/lib/less/constants.js.map +0 -1
  124. package/lib/less/contexts.js.map +0 -1
  125. package/lib/less/data/colors.js.map +0 -1
  126. package/lib/less/data/index.js.map +0 -1
  127. package/lib/less/data/unit-conversions.js.map +0 -1
  128. package/lib/less/default-options.js.map +0 -1
  129. package/lib/less/environment/abstract-file-manager.js.map +0 -1
  130. package/lib/less/environment/abstract-plugin-loader.js.map +0 -1
  131. package/lib/less/environment/environment-api.js +0 -3
  132. package/lib/less/environment/environment-api.js.map +0 -1
  133. package/lib/less/environment/environment.js.map +0 -1
  134. package/lib/less/environment/file-manager-api.js +0 -3
  135. package/lib/less/environment/file-manager-api.js.map +0 -1
  136. package/lib/less/functions/boolean.js.map +0 -1
  137. package/lib/less/functions/color-blending.js.map +0 -1
  138. package/lib/less/functions/color.js.map +0 -1
  139. package/lib/less/functions/data-uri.js.map +0 -1
  140. package/lib/less/functions/default.js.map +0 -1
  141. package/lib/less/functions/function-caller.js.map +0 -1
  142. package/lib/less/functions/function-registry.js.map +0 -1
  143. package/lib/less/functions/index.js.map +0 -1
  144. package/lib/less/functions/list.js.map +0 -1
  145. package/lib/less/functions/math-helper.js.map +0 -1
  146. package/lib/less/functions/math.js.map +0 -1
  147. package/lib/less/functions/number.js.map +0 -1
  148. package/lib/less/functions/string.js.map +0 -1
  149. package/lib/less/functions/style.js.map +0 -1
  150. package/lib/less/functions/svg.js.map +0 -1
  151. package/lib/less/functions/types.js.map +0 -1
  152. package/lib/less/import-manager.js.map +0 -1
  153. package/lib/less/index.js.map +0 -1
  154. package/lib/less/less-error.js.map +0 -1
  155. package/lib/less/logger.js.map +0 -1
  156. package/lib/less/parse-tree.js.map +0 -1
  157. package/lib/less/parse.js.map +0 -1
  158. package/lib/less/parser/parser-input.js.map +0 -1
  159. package/lib/less/parser/parser.js.map +0 -1
  160. package/lib/less/plugin-manager.js.map +0 -1
  161. package/lib/less/render.js.map +0 -1
  162. package/lib/less/source-map-builder.js.map +0 -1
  163. package/lib/less/source-map-output.js.map +0 -1
  164. package/lib/less/transform-tree.js.map +0 -1
  165. package/lib/less/tree/anonymous.js.map +0 -1
  166. package/lib/less/tree/assignment.js.map +0 -1
  167. package/lib/less/tree/atrule-syntax.js.map +0 -1
  168. package/lib/less/tree/atrule.js.map +0 -1
  169. package/lib/less/tree/attribute.js.map +0 -1
  170. package/lib/less/tree/call.js.map +0 -1
  171. package/lib/less/tree/color.js.map +0 -1
  172. package/lib/less/tree/combinator.js.map +0 -1
  173. package/lib/less/tree/comment.js.map +0 -1
  174. package/lib/less/tree/condition.js.map +0 -1
  175. package/lib/less/tree/container.js.map +0 -1
  176. package/lib/less/tree/debug-info.js.map +0 -1
  177. package/lib/less/tree/declaration.js.map +0 -1
  178. package/lib/less/tree/detached-ruleset.js.map +0 -1
  179. package/lib/less/tree/dimension.js.map +0 -1
  180. package/lib/less/tree/element.js.map +0 -1
  181. package/lib/less/tree/expression.js.map +0 -1
  182. package/lib/less/tree/extend.js.map +0 -1
  183. package/lib/less/tree/import.js.map +0 -1
  184. package/lib/less/tree/index.js.map +0 -1
  185. package/lib/less/tree/javascript.js.map +0 -1
  186. package/lib/less/tree/js-eval-node.js.map +0 -1
  187. package/lib/less/tree/keyword.js.map +0 -1
  188. package/lib/less/tree/media.js.map +0 -1
  189. package/lib/less/tree/mixin-call.js.map +0 -1
  190. package/lib/less/tree/mixin-definition.js.map +0 -1
  191. package/lib/less/tree/namespace-value.js.map +0 -1
  192. package/lib/less/tree/negative.js.map +0 -1
  193. package/lib/less/tree/nested-at-rule.js.map +0 -1
  194. package/lib/less/tree/node.js.map +0 -1
  195. package/lib/less/tree/operation.js.map +0 -1
  196. package/lib/less/tree/paren.js.map +0 -1
  197. package/lib/less/tree/property.js.map +0 -1
  198. package/lib/less/tree/query-in-parens.js.map +0 -1
  199. package/lib/less/tree/quoted.js.map +0 -1
  200. package/lib/less/tree/ruleset.js.map +0 -1
  201. package/lib/less/tree/selector.js.map +0 -1
  202. package/lib/less/tree/unicode-descriptor.js.map +0 -1
  203. package/lib/less/tree/unit.js.map +0 -1
  204. package/lib/less/tree/url.js.map +0 -1
  205. package/lib/less/tree/value.js.map +0 -1
  206. package/lib/less/tree/variable-call.js.map +0 -1
  207. package/lib/less/tree/variable.js.map +0 -1
  208. package/lib/less/utils.js.map +0 -1
  209. package/lib/less/visitors/extend-visitor.js.map +0 -1
  210. package/lib/less/visitors/import-sequencer.js.map +0 -1
  211. package/lib/less/visitors/import-visitor.js.map +0 -1
  212. package/lib/less/visitors/index.js.map +0 -1
  213. package/lib/less/visitors/join-selector-visitor.js.map +0 -1
  214. package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
  215. package/lib/less/visitors/to-css-visitor.js.map +0 -1
  216. package/lib/less/visitors/visitor.js.map +0 -1
  217. package/lib/less-browser/add-default-options.js.map +0 -1
  218. package/lib/less-browser/bootstrap.js.map +0 -1
  219. package/lib/less-browser/browser.js.map +0 -1
  220. package/lib/less-browser/cache.js.map +0 -1
  221. package/lib/less-browser/error-reporting.js.map +0 -1
  222. package/lib/less-browser/file-manager.js.map +0 -1
  223. package/lib/less-browser/image-size.js.map +0 -1
  224. package/lib/less-browser/index.js.map +0 -1
  225. package/lib/less-browser/log-listener.js.map +0 -1
  226. package/lib/less-browser/plugin-loader.js.map +0 -1
  227. package/lib/less-browser/utils.js.map +0 -1
  228. package/lib/less-node/environment.js.map +0 -1
  229. package/lib/less-node/file-manager.js.map +0 -1
  230. package/lib/less-node/fs.js.map +0 -1
  231. package/lib/less-node/image-size.js.map +0 -1
  232. package/lib/less-node/index.js.map +0 -1
  233. package/lib/less-node/lessc-helper.js.map +0 -1
  234. package/lib/less-node/plugin-loader.js.map +0 -1
  235. package/lib/less-node/url-file-manager.js.map +0 -1
  236. package/scripts/coverage-lines.js +0 -207
  237. package/scripts/coverage-report.js +0 -158
  238. package/scripts/postinstall.js +0 -61
  239. package/test/.eslintrc.json +0 -9
  240. package/test/README.md +0 -3
  241. package/test/browser/common.js +0 -251
  242. package/test/browser/css/global-vars/simple.css +0 -3
  243. package/test/browser/css/modify-vars/simple.css +0 -8
  244. package/test/browser/css/plugin/plugin.css +0 -3
  245. package/test/browser/css/postProcessor/postProcessor.css +0 -4
  246. package/test/browser/css/relative-urls/urls.css +0 -36
  247. package/test/browser/css/rewrite-urls/urls.css +0 -36
  248. package/test/browser/css/rootpath/urls.css +0 -35
  249. package/test/browser/css/rootpath-relative/urls.css +0 -35
  250. package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
  251. package/test/browser/css/urls.css +0 -54
  252. package/test/browser/generator/benchmark.config.js +0 -50
  253. package/test/browser/generator/generate.js +0 -78
  254. package/test/browser/generator/runner.config.js +0 -184
  255. package/test/browser/generator/runner.js +0 -2
  256. package/test/browser/generator/template.js +0 -104
  257. package/test/browser/generator/utils.js +0 -14
  258. package/test/browser/less/console-errors/test-error.less +0 -3
  259. package/test/browser/less/console-errors/test-error.txt +0 -2
  260. package/test/browser/less/errors/image-height-error.less +0 -3
  261. package/test/browser/less/errors/image-height-error.txt +0 -4
  262. package/test/browser/less/errors/image-size-error.less +0 -3
  263. package/test/browser/less/errors/image-size-error.txt +0 -4
  264. package/test/browser/less/errors/image-width-error.less +0 -3
  265. package/test/browser/less/errors/image-width-error.txt +0 -4
  266. package/test/browser/less/global-vars/simple.less +0 -3
  267. package/test/browser/less/imports/urls.less +0 -4
  268. package/test/browser/less/imports/urls2.less +0 -4
  269. package/test/browser/less/modify-vars/imports/simple2.less +0 -4
  270. package/test/browser/less/modify-vars/simple.less +0 -8
  271. package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  272. package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  273. package/test/browser/less/plugin/plugin.js +0 -4
  274. package/test/browser/less/plugin/plugin.less +0 -4
  275. package/test/browser/less/postProcessor/postProcessor.less +0 -4
  276. package/test/browser/less/relative-urls/urls.less +0 -34
  277. package/test/browser/less/rewrite-urls/urls.less +0 -34
  278. package/test/browser/less/rootpath/urls.less +0 -33
  279. package/test/browser/less/rootpath-relative/urls.less +0 -33
  280. package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
  281. package/test/browser/less/urls.less +0 -62
  282. package/test/browser/runner-VisitorPlugin-options.js +0 -3
  283. package/test/browser/runner-VisitorPlugin.js +0 -3
  284. package/test/browser/runner-browser-options.js +0 -51
  285. package/test/browser/runner-browser-spec.js +0 -12
  286. package/test/browser/runner-console-errors.js +0 -5
  287. package/test/browser/runner-errors-options.js +0 -6
  288. package/test/browser/runner-errors-spec.js +0 -3
  289. package/test/browser/runner-filemanagerPlugin-options.js +0 -5
  290. package/test/browser/runner-filemanagerPlugin.js +0 -3
  291. package/test/browser/runner-global-vars-options.js +0 -7
  292. package/test/browser/runner-global-vars-spec.js +0 -3
  293. package/test/browser/runner-main-options.js +0 -17
  294. package/test/browser/runner-main-spec.js +0 -7
  295. package/test/browser/runner-modify-vars-options.js +0 -5
  296. package/test/browser/runner-modify-vars-spec.js +0 -33
  297. package/test/browser/runner-no-js-errors-options.js +0 -4
  298. package/test/browser/runner-no-js-errors-spec.js +0 -3
  299. package/test/browser/runner-postProcessorPlugin-options.js +0 -3
  300. package/test/browser/runner-postProcessorPlugin.js +0 -3
  301. package/test/browser/runner-preProcessorPlugin-options.js +0 -3
  302. package/test/browser/runner-preProcessorPlugin.js +0 -3
  303. package/test/browser/runner-production-options.js +0 -3
  304. package/test/browser/runner-production-spec.js +0 -5
  305. package/test/browser/runner-relative-urls-options.js +0 -3
  306. package/test/browser/runner-relative-urls-spec.js +0 -3
  307. package/test/browser/runner-rewrite-urls-options.js +0 -3
  308. package/test/browser/runner-rewrite-urls-spec.js +0 -3
  309. package/test/browser/runner-rootpath-options.js +0 -3
  310. package/test/browser/runner-rootpath-relative-options.js +0 -4
  311. package/test/browser/runner-rootpath-relative-spec.js +0 -3
  312. package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
  313. package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
  314. package/test/browser/runner-rootpath-spec.js +0 -3
  315. package/test/browser/runner-strict-units-options.js +0 -5
  316. package/test/browser/runner-strict-units-spec.js +0 -3
  317. package/test/index.js +0 -307
  318. package/test/less-test.js +0 -984
  319. package/test/mocha-playwright/runner.js +0 -210
  320. package/test/modify-vars.js +0 -28
  321. package/test/plugins/filemanager/index.js +0 -19
  322. package/test/plugins/postprocess/index.js +0 -14
  323. package/test/plugins/preprocess/index.js +0 -19
  324. package/test/plugins/visitor/index.js +0 -24
  325. package/test/sourcemaps/basic.json +0 -1
  326. package/test/sourcemaps/comprehensive.json +0 -1
  327. package/test/sourcemaps/custom-props.json +0 -1
  328. package/test/sourcemaps/index.html +0 -17
  329. package/test/sourcemaps/sourcemaps-basepath.json +0 -1
  330. package/test/sourcemaps/sourcemaps-include-source.json +0 -1
  331. package/test/sourcemaps/sourcemaps-rootpath.json +0 -1
  332. package/test/sourcemaps/sourcemaps-url.json +0 -1
  333. package/test/sourcemaps-disable-annotation/basic.json +0 -1
  334. package/test/sourcemaps-variable-selector/basic.json +0 -1
  335. package/test/test-es6.ts +0 -17
  336. package/test.less +0 -1
  337. package/tsconfig.build.json +0 -7
  338. package/tsconfig.json +0 -21
package/bin/lessc CHANGED
@@ -2,18 +2,17 @@
2
2
 
3
3
  /* eslint indent: [2, 2, {"SwitchCase": 1}] */
4
4
 
5
- 'use strict';
5
+ import path from 'path';
6
+ import os from 'os';
7
+ import { createRequire } from 'module';
8
+ import fs from '../lib/less-node/fs.js';
9
+ import * as utils from '../lib/less/utils.js';
10
+ import * as Constants from '../lib/less/constants.js';
11
+ import less from '../lib/less-node/index.js';
6
12
 
7
- var path = require('path');
8
- var fs = require('../lib/less-node/fs').default;
9
- var os = require('os');
10
- var utils = require('../lib/less/utils');
11
- var Constants = require('../lib/less/constants');
12
-
13
- var less = require('../lib/less-node').default;
13
+ const require = createRequire(import.meta.url);
14
14
 
15
15
  var errno;
16
- var mkdirp;
17
16
 
18
17
  try {
19
18
  errno = require('errno');
@@ -65,6 +64,7 @@ var parseVariableOption = function parseVariableOption(option, variables) {
65
64
  };
66
65
 
67
66
  var sourceMapFileInline = false;
67
+ var pendingDeprecations = [];
68
68
 
69
69
  function printUsage() {
70
70
  less.lesscHelper.printUsage();
@@ -107,22 +107,22 @@ function render() {
107
107
  }
108
108
 
109
109
  // Handle explicit sourceMapFullFilename (from --source-map=filename)
110
- // Normalization of other options (sourceMapBasepath, sourceMapRootpath, etc.)
110
+ // Normalization of other options (sourceMapBasepath, sourceMapRootpath, etc.)
111
111
  // is handled automatically in parse-tree.js
112
112
  if (sourceMapOptions.sourceMapFullFilename && !sourceMapFileInline) {
113
113
  var mapFilename = path.resolve(process.cwd(), sourceMapOptions.sourceMapFullFilename);
114
114
  var mapDir = path.dirname(mapFilename);
115
-
115
+
116
116
  if (output) {
117
117
  var outputDir = path.dirname(output);
118
118
  // Set sourceMapOutputFilename relative to map directory
119
119
  sourceMapOptions.sourceMapOutputFilename = path.join(
120
- path.relative(mapDir, outputDir),
120
+ path.relative(mapDir, outputDir),
121
121
  path.basename(output)
122
122
  );
123
123
  // Set sourceMapFilename relative to output directory (for sourceMappingURL comment)
124
124
  sourceMapOptions.sourceMapFilename = path.join(
125
- path.relative(outputDir, mapDir),
125
+ path.relative(outputDir, mapDir),
126
126
  path.basename(sourceMapOptions.sourceMapFullFilename)
127
127
  );
128
128
  } else {
@@ -150,6 +150,7 @@ function render() {
150
150
  return;
151
151
  }
152
152
 
153
+ var mkdirp;
153
154
  var ensureDirectory = function ensureDirectory(filepath) {
154
155
  var dir = path.dirname(filepath);
155
156
  var cmd;
@@ -188,7 +189,7 @@ function render() {
188
189
 
189
190
  // To fix https://github.com/less/less.js/issues/3646
190
191
  output = output.toString();
191
-
192
+
192
193
  fs.writeFile(filename, output, 'utf8', function (err) {
193
194
  if (err) {
194
195
  var description = 'Error: ';
@@ -403,11 +404,15 @@ function processPluginQueue() {
403
404
  case 'silent':
404
405
  options.silent = silent = true;
405
406
  break;
406
-
407
+
407
408
  case 'quiet':
408
409
  options.quiet = quiet = true;
409
410
  break;
410
411
 
412
+ case 'quiet-deprecations':
413
+ options.quietDeprecations = true;
414
+ break;
415
+
411
416
  case 'l':
412
417
  case 'lint':
413
418
  options.lint = true;
@@ -453,6 +458,7 @@ function processPluginQueue() {
453
458
 
454
459
  case 'js':
455
460
  options.javascriptEnabled = true;
461
+ pendingDeprecations.push('Warning: Inline JavaScript (--js) is deprecated and will be removed in Less 5.x. Use Less functions or custom plugins instead. (js-eval)');
456
462
  break;
457
463
 
458
464
  case 'no-js':
@@ -476,6 +482,7 @@ function processPluginQueue() {
476
482
  case 'line-numbers':
477
483
  if (checkArgFunc(arg, match[2])) {
478
484
  options.dumpLineNumbers = match[2];
485
+ pendingDeprecations.push('Warning: The --line-numbers option is deprecated and will be removed in Less 5.x. Use source maps instead (--source-map). (dump-line-numbers)');
479
486
  }
480
487
 
481
488
  break;
@@ -532,13 +539,13 @@ function processPluginQueue() {
532
539
  }
533
540
 
534
541
  break;
535
-
542
+
536
543
  case 'ie-compat':
537
- console.warn('The --ie-compat option is deprecated, as it has no effect on compilation.');
544
+ pendingDeprecations.push('Warning: The --ie-compat option is deprecated, as it has no effect on compilation.');
538
545
  break;
539
546
 
540
547
  case 'relative-urls':
541
- console.warn('The --relative-urls option has been deprecated. Use --rewrite-urls=all.');
548
+ pendingDeprecations.push('Warning: The --relative-urls option has been deprecated. Use --rewrite-urls=all.');
542
549
  options.rewriteUrls = Constants.RewriteUrls.ALL;
543
550
  break;
544
551
 
@@ -566,7 +573,7 @@ function processPluginQueue() {
566
573
 
567
574
  case 'sm':
568
575
  case 'strict-math':
569
- console.warn('The --strict-math option has been deprecated. Use --math=strict.');
576
+ pendingDeprecations.push('Warning: The --strict-math option has been deprecated. Use --math=strict.');
570
577
 
571
578
  if (checkArgFunc(arg, match[2])) {
572
579
  if (checkBooleanArg(match[2])) {
@@ -581,14 +588,14 @@ function processPluginQueue() {
581
588
  let m = match[2];
582
589
  if (checkArgFunc(arg, m)) {
583
590
  if (m === 'always') {
584
- console.warn('--math=always is deprecated and will be removed in the future.');
591
+ pendingDeprecations.push('Warning: --math=always is deprecated and will be removed in Less 5.x. Use --math=parens-division (default) or --math=parens. (math-always)');
585
592
  options.math = Constants.Math.ALWAYS;
586
593
  } else if (m === 'parens-division') {
587
594
  options.math = Constants.Math.PARENS_DIVISION;
588
595
  } else if (m === 'parens' || m === 'strict') {
589
596
  options.math = Constants.Math.PARENS;
590
597
  } else if (m === 'strict-legacy') {
591
- console.warn('--math=strict-legacy has been removed. Defaulting to --math=strict');
598
+ pendingDeprecations.push('Warning: --math=strict-legacy has been removed. Defaulting to --math=strict.');
592
599
  options.math = Constants.Math.PARENS;
593
600
  }
594
601
  }
@@ -645,7 +652,7 @@ function processPluginQueue() {
645
652
  case 'disable-plugin-rule':
646
653
  options.disablePluginRule = true;
647
654
  break;
648
-
655
+
649
656
  default:
650
657
  queuePlugins.push({
651
658
  name: arg,
@@ -656,9 +663,16 @@ function processPluginQueue() {
656
663
  }
657
664
  });
658
665
 
666
+ // Flush queued deprecation warnings (respects --silent, --quiet, --quiet-deprecations)
667
+ if (!silent && !quiet && !options.quietDeprecations) {
668
+ pendingDeprecations.forEach(function (msg) {
669
+ console.warn(msg);
670
+ });
671
+ }
672
+
659
673
  if (queuePlugins.length > 0) {
660
674
  processPluginQueue();
661
675
  } else {
662
676
  render();
663
677
  }
664
- })();
678
+ })();