From 01f92a12aaf8920979d264156bbb0c32b93d7d23 Mon Sep 17 00:00:00 2001 From: Bret Comnes Date: Fri, 2 Oct 2026 10:27:26 -0700 Subject: [PATCH 1/2] chore: migrate generated projects to neostandard --- generate-plugin.js | 7 +++---- generate.js | 16 +++++++++++++--- package.json | 1 - templates/plugin/README.md | 2 +- templates/plugin/eslint.config.js | 3 +++ test/generate-esm.test.js | 9 +++++---- test/generate-plugin.test.js | 6 +++--- test/generate.test.js | 9 +++++---- 8 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 templates/plugin/eslint.config.js diff --git a/generate-plugin.js b/generate-plugin.js index 813c6162..57aa6809 100755 --- a/generate-plugin.js +++ b/generate-plugin.js @@ -19,8 +19,7 @@ const pluginTemplate = { main: 'index.js', types: 'index.d.ts', scripts: { - lint: 'standard && npm run lint:typescript', - 'lint:typescript': 'ts-standard', + lint: 'eslint', test: 'npm run lint && npm run unit && npm run test:typescript', 'test:typescript': 'tstyche', unit: 'node --test' @@ -32,8 +31,8 @@ const pluginTemplate = { '@types/node': cliPkg.devDependencies['@types/node'], fastify: cliPkg.devDependencies.fastify, 'fastify-tsconfig': cliPkg.devDependencies['fastify-tsconfig'], - standard: cliPkg.devDependencies.standard, - 'ts-standard': cliPkg.devDependencies['ts-standard'], + eslint: cliPkg.devDependencies.eslint, + neostandard: cliPkg.devDependencies.neostandard, tstyche: cliPkg.devDependencies.tstyche, typescript: cliPkg.devDependencies.typescript }, diff --git a/generate.js b/generate.js index 535a13c3..ff22dcaa 100755 --- a/generate.js +++ b/generate.js @@ -3,6 +3,7 @@ const { readFile, writeFile, + writeFileSync, existsSync } = require('node:fs') const path = require('node:path') @@ -96,6 +97,10 @@ function generate (dir, template) { } process.chdir(dir) + if (template.lintConfig) { + const configFile = template.type === 'module' ? 'eslint.config.mjs' : 'eslint.config.js' + writeFileSync(configFile, template.lintConfig) + } try { execSync('npm init -y') } catch (err) { @@ -192,14 +197,19 @@ function cli (args) { if (opts.standardlint) { template.scripts = { ...template.scripts, - pretest: 'standard', - lint: 'standard --fix' + pretest: 'eslint', + lint: 'eslint --fix' } template.devDependencies = { ...template.devDependencies, - standard: cliPkg.devDependencies.standard + eslint: cliPkg.devDependencies.eslint, + neostandard: cliPkg.devDependencies.neostandard } + + template.lintConfig = template.type === 'module' + ? 'import neostandard from \'neostandard\'\n\nexport default neostandard()' + : '\'use strict\'\n\nmodule.exports = require(\'neostandard\')()' } } diff --git a/package.json b/package.json index d40d5833..3df55272 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,6 @@ "sinon": "^22.0.0", "strip-ansi": "^6.0.1", "ts-node": "^10.4.0", - "ts-standard": "^12.0.1", "tstyche": "^7.0.0", "typescript": "~6.0.2", "walker": "^1.0.8" diff --git a/templates/plugin/README.md b/templates/plugin/README.md index 1913d7cf..5ea682c3 100644 --- a/templates/plugin/README.md +++ b/templates/plugin/README.md @@ -1,6 +1,6 @@ # __MY_PLUGIN__ -[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://standardjs.com/) ![CI workflow](__MY_PLUGIN_URL__ +[![neostandard javascript style](https://img.shields.io/badge/code%20style-neostandard-brightgreen?style=flat)](https://github.com/neostandard/neostandard) ![CI workflow](__MY_PLUGIN_URL__ /workflows/CI%20workflow/badge.svg) Supports Fastify versions `4.x` diff --git a/templates/plugin/eslint.config.js b/templates/plugin/eslint.config.js new file mode 100644 index 00000000..6a568076 --- /dev/null +++ b/templates/plugin/eslint.config.js @@ -0,0 +1,3 @@ +'use strict' + +module.exports = require('neostandard')({ ts: true }) diff --git a/test/generate-esm.test.js b/test/generate-esm.test.js index fee4c199..d49882f6 100644 --- a/test/generate-esm.test.js +++ b/test/generate-esm.test.js @@ -137,7 +137,7 @@ function define (t) { } }) - test('--standardlint option will add standard lint dependencies and scripts to javascript template', async (t) => { + test('--standardlint option will add neostandard lint dependencies and scripts to javascript template', async (t) => { const dir = path.join(__dirname, 'workdir-with-lint') const cwd = path.join(dir, '..') const bin = path.join('..', 'generate') @@ -148,9 +148,10 @@ function define (t) { const data = await fsPromises.readFile(path.join(dir, 'package.json')) const pkg = JSON.parse(data) - t.assert.strictEqual(pkg.scripts.pretest, 'standard') - t.assert.strictEqual(pkg.scripts.lint, 'standard --fix') - t.assert.strictEqual(pkg.devDependencies.standard, cliPkg.devDependencies.standard) + t.assert.strictEqual(pkg.scripts.pretest, 'eslint') + t.assert.strictEqual(pkg.scripts.lint, 'eslint --fix') + t.assert.strictEqual(pkg.devDependencies.eslint, cliPkg.devDependencies.eslint) + t.assert.strictEqual(pkg.devDependencies.neostandard, cliPkg.devDependencies.neostandard) }) function verifyPkg (t, dir = workdir, pkgName = 'workdir') { diff --git a/test/generate-plugin.test.js b/test/generate-plugin.test.js index cbe17282..253b346f 100644 --- a/test/generate-plugin.test.js +++ b/test/generate-plugin.test.js @@ -144,15 +144,15 @@ function define (t) { t.assert.strictEqual(pkg.version, initVersion) t.assert.strictEqual(pkg.description, '') t.assert.ok(pkg.license === 'MIT') - t.assert.strictEqual(pkg.scripts.lint, 'standard && npm run lint:typescript') - t.assert.strictEqual(pkg.scripts['lint:typescript'], 'ts-standard') + t.assert.strictEqual(pkg.scripts.lint, 'eslint') t.assert.strictEqual(pkg.scripts.test, 'npm run lint && npm run unit && npm run test:typescript') t.assert.strictEqual(pkg.scripts['test:typescript'], 'tstyche') t.assert.strictEqual(pkg.scripts.unit, 'node --test') t.assert.strictEqual(pkg.dependencies['fastify-plugin'], cliPkg.dependencies['fastify-plugin']) t.assert.strictEqual(pkg.devDependencies['@types/node'], cliPkg.devDependencies['@types/node']) t.assert.strictEqual(pkg.devDependencies.fastify, cliPkg.devDependencies.fastify) - t.assert.strictEqual(pkg.devDependencies.standard, cliPkg.devDependencies.standard) + t.assert.strictEqual(pkg.devDependencies.eslint, cliPkg.devDependencies.eslint) + t.assert.strictEqual(pkg.devDependencies.neostandard, cliPkg.devDependencies.neostandard) t.assert.strictEqual(pkg.devDependencies.tstyche, cliPkg.devDependencies.tstyche) t.assert.strictEqual(pkg.devDependencies.typescript, cliPkg.devDependencies.typescript) t.assert.deepStrictEqual(pkg.tstyche, pluginTemplate.tstyche) diff --git a/test/generate.test.js b/test/generate.test.js index e9cd3843..d6c86bd2 100644 --- a/test/generate.test.js +++ b/test/generate.test.js @@ -132,7 +132,7 @@ function define (t) { } }) - test('--standardlint option will add standard lint dependencies and scripts to javascript template', async (t) => { + test('--standardlint option will add neostandard lint dependencies and scripts to javascript template', async (t) => { const dir = path.join(__dirname, 'workdir-with-lint') const cwd = path.join(dir, '..') const bin = path.join('..', 'generate') @@ -143,9 +143,10 @@ function define (t) { const data = await fsPromises.readFile(path.join(dir, 'package.json')) const pkg = JSON.parse(data) - t.assert.strictEqual(pkg.scripts.pretest, 'standard') - t.assert.strictEqual(pkg.scripts.lint, 'standard --fix') - t.assert.strictEqual(pkg.devDependencies.standard, cliPkg.devDependencies.standard) + t.assert.strictEqual(pkg.scripts.pretest, 'eslint') + t.assert.strictEqual(pkg.scripts.lint, 'eslint --fix') + t.assert.strictEqual(pkg.devDependencies.eslint, cliPkg.devDependencies.eslint) + t.assert.strictEqual(pkg.devDependencies.neostandard, cliPkg.devDependencies.neostandard) }) function verifyPkg (t, dir = workdir, pkgName = 'workdir') { From 46a525ffe11a8d17c208b420d2565bc1a780b4f7 Mon Sep 17 00:00:00 2001 From: Bret Comnes Date: Fri, 2 Oct 2026 10:30:09 -0700 Subject: [PATCH 2/2] chore: respect gitignore in plugin lint config --- templates/plugin/eslint.config.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/templates/plugin/eslint.config.js b/templates/plugin/eslint.config.js index 6a568076..45541665 100644 --- a/templates/plugin/eslint.config.js +++ b/templates/plugin/eslint.config.js @@ -1,3 +1,8 @@ 'use strict' -module.exports = require('neostandard')({ ts: true }) +const neostandard = require('neostandard') + +module.exports = neostandard({ + ts: true, + ignores: neostandard.resolveIgnoresFromGitignore() +})