diff --git a/README.md b/README.md index 916e9a6..485cb0c 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,7 @@ Many variables have default values and are therefore optional. | `comment-prefix` | `.` | The character which follows `//` to signify documentation to transcribe. | | `opening-delimiter` | `` ```javascript `` | The opening delimiter of doctest blocks in the source files. | | `closing-delimiter` | `` ``` `` | The closing delimiter of doctest blocks in the source files. | +| `module-type` | `commonjs` | The type of module doctest should use. One of `commonjs`, `amd`, or `esm`. | | `version-tag-prefix` | `v` | The prefix of annotated version tags (`version-tag-prefix =` for no prefix). | ### Custom scripts @@ -122,7 +123,7 @@ Runs [`doctest`↗︎][] with suitable `--module`, `--prefix`, `--opening-delimiter`, and `--closing-delimiter` values. Configurable via [variables][] (`source-files`, `comment-prefix`, -`opening-delimiter`, `closing-delimiter`). +`opening-delimiter`, `closing-delimiter`, `module-type`). ### `generate-readme` @@ -190,7 +191,8 @@ undefined link references or unused link definitions. Uses [`eslint`↗︎][] and [`eslint-plugin-markdown`↗︎][] to assert that the readme, when built, will not contain examples which violate the project's style guide. -Configurable via [variables][] (`opening-delimiter`, `closing-delimiter`). +Configurable via [variables][] (`opening-delimiter`, `closing-delimiter` +`module-type`). ### `prepublish` diff --git a/bin/doctest b/bin/doctest index e4d2168..8bd4eb1 100755 --- a/bin/doctest +++ b/bin/doctest @@ -14,9 +14,10 @@ set -f ; shopt -u nullglob prefix="$(get comment-prefix)" opening="$(get opening-delimiter)" closing="$(get closing-delimiter)" +module="$(get module-type)" node_modules/.bin/doctest \ - --module commonjs \ + --module "$module" \ --prefix "$prefix" \ --opening-delimiter "$opening" \ --closing-delimiter "$closing" \ diff --git a/bin/lint-readme b/bin/lint-readme index 861a8c3..3e7ac01 100755 --- a/bin/lint-readme +++ b/bin/lint-readme @@ -15,6 +15,7 @@ fi opening="$(get opening-delimiter)" closing="$(get closing-delimiter)" +module="$(get module-type)" # https://github.com/davidchambers/doctest/blob/0.16.0/lib/doctest.js#L173-L209 # displays the algorithm upon which this function is based. Differences: @@ -68,4 +69,12 @@ node_modules/.bin/remark \ cp README.md README.md.temp rewrite README.md -node_modules/.bin/eslint -- README.md +if [[ $module == esm ]] ; then + source=module +else + source=script +fi + +node_modules/.bin/eslint \ + --parser-options "sourceType:$source" \ + -- README.md diff --git a/functions b/functions index f8902a8..c39be0a 100644 --- a/functions +++ b/functions @@ -32,6 +32,7 @@ get() { printf '```javascript' ;; closing-delimiter) # shellcheck disable=SC2016 printf '```' ;; + module-type) printf 'commonjs' ;; version-tag-prefix) printf 'v' ;; *) echo "'$1' not defined in $config" >&2 diff --git a/package.json b/package.json index 6bcc1f0..7264f28 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "npm": ">=3.0.0" }, "dependencies": { - "doctest": "0.16.x", + "doctest": "github:Avaq/doctest#avaq/esm", "eslint": "5.15.x", "eslint-plugin-markdown": "1.0.x", "mocha": "5.x.x",