Skip to content

Commit d691048

Browse files
committed
Configure TypeScript
1 parent 65513c7 commit d691048

File tree

9 files changed

+11477
-59
lines changed

9 files changed

+11477
-59
lines changed

.eslintrc.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const baseConfiguration = require('@wordpress/scripts/config/.eslintrc.js');
2+
3+
module.exports = {
4+
...baseConfiguration,
5+
settings: {
6+
'import/resolver': {
7+
typescript: {},
8+
},
9+
},
10+
};

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33
/coverage
44
/vendor/
55
/node_modules/
6+
7+
composer.lock

.prettierrc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const prettierConfig = require('@wordpress/scripts/config/.prettierrc.js')
2+
3+
module.exports = prettierConfig

.prettierrc.json

Lines changed: 0 additions & 28 deletions
This file was deleted.

jest.config.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/** @type {import('ts-jest').JestConfigWithTsJest} */
22
module.exports = {
3-
preset: 'ts-jest',
4-
testEnvironment: 'node',
5-
moduleDirectories: ['node_modules'],
6-
}
3+
preset: 'ts-jest',
4+
testEnvironment: 'jsdom',
5+
moduleDirectories: ['node_modules'],
6+
};

package.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,19 @@
66
"main": "./sources/js/src/index.ts",
77
"types": "./sources/js/src/@types/index.d.ts",
88
"license": "GPL-2.0-or-later",
9+
"engines": {
10+
"node": "16"
11+
},
912
"devDependencies": {
1013
"@faker-js/faker": "^7.6.0",
1114
"@jest/globals": "^29.4.3",
1215
"@total-typescript/shoehorn": "^0.1.0",
1316
"@trivago/prettier-plugin-sort-imports": "^4.0.0",
1417
"@wordpress/dependency-extraction-webpack-plugin": "^4.8.0",
1518
"@wordpress/env": "^5.9.0",
19+
"@wordpress/eslint-plugin": "^14.8.0",
1620
"@wordpress/scripts": "^25.1.0",
21+
"eslint-import-resolver-typescript": "^3.5.5",
1722
"jest": "^29.4.3",
1823
"prettier": "^2.8.1",
1924
"ts-jest": "^29.0.5",
@@ -36,6 +41,8 @@
3641
"build": "wp-scripts build --webpack-src-dir=./sources/js/src",
3742
"build:dev": "wp-scripts build --mode=development --webpack-src-dir=./sources/js/src",
3843
"cs:fix": "wp-scripts format ./sources/js",
44+
"lint:js": "wp-scripts lint-js",
45+
"lint:js:fix": "wp-scripts lint-js --fix",
3946
"test": "jest"
4047
}
4148
}

tsconfig.json

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,36 @@
11
{
22
"compilerOptions": {
3+
"alwaysStrict": true,
4+
"exactOptionalPropertyTypes": true,
5+
"noFallthroughCasesInSwitch": true,
6+
"noImplicitAny": true,
7+
"noImplicitOverride": true,
8+
"noImplicitReturns": true,
9+
"noImplicitThis": true,
10+
"noPropertyAccessFromIndexSignature": true,
11+
"noUncheckedIndexedAccess": true,
12+
"noUnusedLocals": true,
13+
"noUnusedParameters": true,
14+
"strict": true,
15+
"useUnknownInCatchVariables": true,
316
"resolveJsonModule": true,
417
"sourceMap": true,
518
"jsx": "react",
6-
"noImplicitThis": true,
7-
"strictNullChecks": true,
8-
"alwaysStrict": true,
919
"skipLibCheck": true,
1020
"esModuleInterop": true,
1121
"baseUrl": ".",
1222
"paths": {
13-
"@types": [
23+
"@entities-search-types": [
1424
"./sources/js/src/@types"
1525
],
1626
"@entities-search": [
1727
"./sources/js/src"
18-
],
28+
]
1929
},
2030
},
2131
"include": [
22-
"./sources/js/**/*",
23-
"./tests/js/**/*"
32+
"sources/js/**/*",
33+
"tests/js/**/*"
2434
],
2535
"exclude": [
2636
"node_modules"

webpack.config.js

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,26 @@
1-
const path = require('path')
2-
const baseConfiguration = require('@wordpress/scripts/config/webpack.config')
3-
const DependencyExtractionWebpackPlugin = require('@wordpress/dependency-extraction-webpack-plugin')
1+
const path = require('path');
2+
const baseConfiguration = require('@wordpress/scripts/config/webpack.config');
3+
const DependencyExtractionWebpackPlugin = require('@wordpress/dependency-extraction-webpack-plugin');
44

55
module.exports = {
6-
...baseConfiguration,
7-
plugins: [
8-
...baseConfiguration.plugins.filter(
9-
plugin => plugin.constructor.name !== 'DependencyExtractionWebpackPlugin'
10-
),
11-
new DependencyExtractionWebpackPlugin({
12-
outputFormat: 'json',
13-
}),
14-
],
15-
resolve: {
16-
extensions: ['.ts', '.tsx'],
17-
alias: {
18-
'@entities-search': path.resolve(__dirname, 'sources/js/src'),
19-
'@types': path.resolve(__dirname, 'sources/js/src/@types'),
20-
},
21-
},
22-
}
6+
...baseConfiguration,
7+
plugins: [
8+
...baseConfiguration.plugins.filter(
9+
(plugin) =>
10+
plugin.constructor.name !== 'DependencyExtractionWebpackPlugin'
11+
),
12+
new DependencyExtractionWebpackPlugin({
13+
outputFormat: 'json',
14+
}),
15+
],
16+
resolve: {
17+
extensions: ['.ts', '.tsx'],
18+
alias: {
19+
'@entities-search': path.resolve(__dirname, 'sources/js/src'),
20+
'@entities-search-types': path.resolve(
21+
__dirname,
22+
'sources/js/src/@types'
23+
),
24+
},
25+
},
26+
};

0 commit comments

Comments
 (0)