14 Commits

Author SHA1 Message Date
Dan Poltawski
8b02e2d98c
MDL-56519 behat: Lint gherkin files 2017-01-03 09:12:54 +08:00
Dan Poltawski
5c8445b5cd MDL-56423 stylelint: bump to v7.4.1
Fixes a false positive with  declaration-block-no-ignored-properties and
display: inline.
2016-10-13 10:01:30 +01:00
Dan Poltawski
00c714f05c MDL-55835 eslint: bump to v3.7.1
1) Bump eslint verson in npm
2) Enable tabs rule introduced in 3.2.0
3) With rules deprecated in 3.3.0 to their replacements
   http://eslint.org/blog/2016/08/eslint-v3.3.0-released
4) Deprecate the use of M.str (fixes MDLSITE-3646) with new
   no-restricted-properties introduced in 3.5.0
5) Fixup no-unused-vars - remove argsIgnorePattern which shouldn't have allowed
   partial matches and turns out to be uncesssary
   (detected because of https://github.com/eslint/eslint/issues/7250 in 3.6.0)
2016-10-07 10:00:26 +01:00
Dan Poltawski
d2c7175a34 MDL-55856 grunt: fail gracefully when node version too old
Unfortunately the engine requirement in packages.json is not a fatal
error, so you can get unhelpful errors with grunt if using an
unsupported version.
2016-09-15 15:32:32 +01:00
Dan Poltawski
091a1f9290 MDL-55167 npm: add stylelint-checkstyle-formatter
Useful for automations (like the Moodle prechecker)
2016-08-02 18:52:41 +01:00
Dan Poltawski
855fc5d853 MDL-55167 grunt: add stylelint css linting 2016-07-30 13:07:52 +01:00
Dan Poltawski
2ce9109088 MDL-55048 grunt/npm: Update dependencies
* We bump our minimum node version up to >=4. Although this isn't yet
  necessarily *required* it was spurred on because grunt dropped support
  for very early node versions and so it's likely some devs will have to
  upgrade their npm.

  We do it now which gives us more flexibility for tools going forward
  (especially for things like new theme/testing). And node has matured
  the ecosystem (especially supporting properly semver) so should result
  in less edge cases.

* We make the minimum node version explicit in package.json. Though it
  doesn't help much for older versions of node because npm doesn't
  have the functionality to warn about it.. ;-)

* Left async dependency as it was, because it's only on an RC: 2.0.0-rc.6
2016-07-11 15:53:10 +01:00
Dan Poltawski
037de71996 MDL-54944 eslint: Add rules from Policy decision
Also bump eslint to v2.13.1 and make the version explicit in
package.json
2016-07-07 12:10:49 +01:00
Dan Poltawski
5f4d957c21 MDL-54889 jshint: stop using for everything but shifter
Now jshint has been replaced by eslint.
2016-06-30 09:14:57 +01:00
Dan Poltawski
30db70abdc MDL-52127 grunt: be aware of third party paths
1) Parse thirdpartylibs.xml and generate an array of third party
file paths to use in grunt tasks
2) In the lint tasks, we filter third party files from being linted
3) We add a new task to generate ignore files - currently for eslint,
but will be potentially useful for other things in the future
4) Remove .eslintignore from source control

Why have the ability to generate a .eslintignore file? For tooling
integration - by having the eslintignore file people can use other
eslint tools without having to just use grunt (e.g. editor
integrations).
2016-06-14 00:37:29 +01:00
Dan Poltawski
3adb62b727 MDL-52127 js: check amd files with eslint grunt task
I have spent quite a lot of time working through the current list of
eslint options and configuring them for Moodle style and I think this is
a very good basis to start us at (as well as taking some of out jshint
options out with https://www.npmjs.com/package/polyjuice ). Thanks to
Andrew Nicols, Mark Johnson and Frédéric Massart for some refinements.

With this configuration the grunt build will fail if errors are present
in the js (though you can of course tell jshint to ignore some errors,
as I have done in admin/tool/lp/amd/src/competency_rule_points.js and
defining the Y global in lib/amd/src/yui.js ).

The grunt task will not report warnings by default, but a new
--show-lint-warnings flag will help achieve that. Editor
integrations/stanadalone eslint tool will surely be a better way of
getting eslint errors rather than using the grunt task.
2016-06-11 10:14:35 +01:00
Dan Poltawski
1aa454eda4 MDL-49817 grunt: handle multiple watched files changed at once
Includes multiple changes to the shifter task to simplify and
support this:
* Use grunt.file for shifter yui 'module' detection rather than our own
  70 line function
* Use grunt.util.spawn rather than our own exec for shifter
* Improve behaviour on various yui subdirectories

We have to add the 'async' depndency to npm because we are running
multiple async operations in the single task. We use async.eachSeries to
run each shifter job sequentally (else the output would be unreadable
when running async).

We also run shifter in non-recursive mode on the module directory so its
not building everything (thanks to Ryan for pointing this out!)
2016-01-28 08:30:04 +00:00
Dan Poltawski
8efbb7b1a1 MDL-49817 grunt: add watch task
This allows files to be watched and automatically build when changed.

Thanks to David Monllaó for the initial basis for this patch.
2016-01-28 08:27:31 +00:00
Dan Poltawski
f8de8c7147 MDL-52250 npm: shrinkwrap to lock down dependencies
We've tried various approaches to lock down our dependencies and they
have been flawed because dependencies in our included packages may not
be locked down and previous attempts to do that have not been correct.

With npm shrinkwrap we lock down versions so that any npm install will
always install the exact same versions for all developers - see:
https://docs.npmjs.com/cli/shrinkwrap

(This is a lot like composer.lock for those more fluent with composer)
2015-12-04 15:10:59 +00:00