Merge pull request #78 from tatianamac/feature/eslint-ava

🏡 Install ESLint && Ava
This commit is contained in:
Tatiana Mac 2020-02-19 18:34:30 +11:00 committed by GitHub
commit b78dd4a334
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 2645 additions and 12 deletions

View File

@ -1,16 +1,15 @@
const makeItemLink = (slug) => `#${slug}`; const findExistingDefinition = require('./11ty/filters/helpers/findExistingDefinition');
const findExistingDefinition = (word, collection) => const definitionPermalink = require('./11ty/filters/definitionPermalink');
collection.find((item) => item.data.title === word);
module.exports = function(config) { module.exports = function(config) {
// Add a filter using the Config API // Add a filter using the Config API
config.addFilter('linkTarget', makeItemLink); config.addFilter('linkTarget', definitionPermalink);
config.addFilter('linkIfExistsInCollection', (word, collection) => { config.addFilter('linkIfExistsInCollection', (word, collection) => {
const existingDefinition = findExistingDefinition(word, collection); const existingDefinition = findExistingDefinition(word, collection);
if (existingDefinition) { if (existingDefinition) {
return `<a href="${makeItemLink( return `<a href="${definitionPermalink(
existingDefinition.data.slug existingDefinition.data.slug
)}">${word}</a>`; )}">${word}</a>`;
} }
@ -25,7 +24,7 @@ module.exports = function(config) {
); );
if (existingDefinition) { if (existingDefinition) {
return `<a href="${makeItemLink( return `<a href="${definitionPermalink(
existingDefinition.data.slug existingDefinition.data.slug
)}" aria-label="${subTermData.full_title}">${subTermData.text}</a>`; )}" aria-label="${subTermData.full_title}">${subTermData.text}</a>`;
} }

12
.eslintrc.json Normal file
View File

@ -0,0 +1,12 @@
{
"extends": ["eslint:recommended", "plugin:prettier/recommended"],
"ignorePatterns": ["node_modules/"],
"env": {
"browser": true,
"es2020": true,
"node": true
},
"parserOptions": {
"sourceType": "module"
}
}

View File

@ -0,0 +1,7 @@
import test from 'ava';
import definitionPermalink from '../definitionPermalink';
test('constructs correct detail link', (t) => {
t.is(definitionPermalink('test-slug'), '/#test-slug');
});

View File

@ -0,0 +1,3 @@
module.exports = function(slug) {
return `/#${slug}`;
};

View File

@ -0,0 +1,2 @@
module.exports = (word, collection) =>
collection.find((item) => item.data.title === word);

5
ava.config.js Normal file
View File

@ -0,0 +1,5 @@
export default {
files: ['./**/*.spec.js'],
require: ['esm'],
verbose: true
};

2598
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -5,15 +5,17 @@
"description": "A modern dictionary about us.", "description": "A modern dictionary about us.",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"build": "npm run build:css && npm run build:site",
"build:site": "eleventy",
"build:css": "parcel build assets/css/base.scss --out-dir dist/assets/css/", "build:css": "parcel build assets/css/base.scss --out-dir dist/assets/css/",
"watch": "eleventy --watch", "build:site": "eleventy",
"build": "npm run build:css && npm run build:site",
"create-definitions": "bin/create-definitions",
"lint": "npm run lint:js",
"lint:js": "eslint \"11ty/**/*.js\"",
"serve": "concurrently \"npm run serve:site\" \"npm run watch:css\"", "serve": "concurrently \"npm run serve:site\" \"npm run watch:css\"",
"watch:css": "parcel watch assets/css/base.scss --out-dir dist/assets/css/",
"serve:site": "eleventy --serve", "serve:site": "eleventy --serve",
"test": "echo \"Error: no test specified\" && exit 1", "test": "ava",
"create-definitions": "bin/create-definitions" "watch": "eleventy --watch",
"watch:css": "parcel watch assets/css/base.scss --out-dir dist/assets/css/"
}, },
"bin": { "bin": {
"create-definitions": "bin/create-definitions" "create-definitions": "bin/create-definitions"
@ -38,9 +40,14 @@
"prism-themes": "^1.3.0" "prism-themes": "^1.3.0"
}, },
"devDependencies": { "devDependencies": {
"ava": "^3.3.0",
"concurrently": "^5.0.0", "concurrently": "^5.0.0",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.10.0",
"eslint-plugin-prettier": "^3.1.2",
"esm": "^3.2.25", "esm": "^3.2.25",
"parcel-bundler": "^1.12.4", "parcel-bundler": "^1.12.4",
"prettier": "^1.19.1",
"sass": "^1.23.7", "sass": "^1.23.7",
"slugify": "^1.3.6" "slugify": "^1.3.6"
} }