diff --git a/helpers/shared-types/index.d.ts b/helpers/shared-types/index.d.ts new file mode 100644 index 0000000..1c5cbdc --- /dev/null +++ b/helpers/shared-types/index.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/types/debug.d.ts b/helpers/shared-types/lib/debug.d.ts similarity index 100% rename from types/debug.d.ts rename to helpers/shared-types/lib/debug.d.ts diff --git a/types/webpack.d.ts b/helpers/shared-types/lib/webpack.d.ts similarity index 100% rename from types/webpack.d.ts rename to helpers/shared-types/lib/webpack.d.ts diff --git a/helpers/shared-types/package.json b/helpers/shared-types/package.json new file mode 100644 index 0000000..39b185d --- /dev/null +++ b/helpers/shared-types/package.json @@ -0,0 +1,10 @@ +{ + "name": "@types/shared-types", + "version": "1.0.0", + "private": true, + "types": "index.d.ts", + "description": "Shared Types for Project", + "keywords": [], + "author": "Hellcom", + "license": "ISC" +} diff --git a/helpers/webpack-config/lib/base.ts b/helpers/webpack-config/lib/base.ts index 7b239c3..01acea0 100644 --- a/helpers/webpack-config/lib/base.ts +++ b/helpers/webpack-config/lib/base.ts @@ -22,7 +22,7 @@ export default class BaseDefaultConfig { }; } - static getEnvProxy(_env): Record { + static getEnvProxy(_env: any): Record { return new Proxy(BaseDefaultConfig.env, { get(target, key, receiver) { if (_env[key] != null) return _env[key]; @@ -31,7 +31,7 @@ export default class BaseDefaultConfig { }); } - static getArgvProxy(_argv): Record { + static getArgvProxy(_argv: any): Record { return new Proxy(BaseDefaultConfig.argv, { get(target, key, receiver) { if (_argv[key] != null) return _argv[key]; @@ -46,7 +46,7 @@ export default class BaseDefaultConfig { protected readonly _projectName: string; protected readonly _lastCompiled: string; - constructor(_env = Object.create(null), _argv = Object.create(null), projectName = null) { + constructor(_env = Object.create(null), _argv = Object.create(null), projectName: string = null) { this._envProxy = BaseDefaultConfig.getEnvProxy(_env); this._argvProxy = BaseDefaultConfig.getArgvProxy(_argv); this._manifest = JSON.parse(fs.readFileSync(path.resolve(process.cwd(), 'package.json'), { encoding: 'utf8' })); diff --git a/package.json b/package.json index a90dbc5..7a9b75c 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "husky:commit-msg": "commitlint --edit ${1}", "test": "pnpm run eslint && pnpm run tscheck", "eslint": "eslint '**/*.{js,jsx,ts,tsx}' --quiet", - "tscheck": "tsc --noEmit" + "tscheck": "pnpm -r --parallel exec tsc --noEmit", + "tscheck:whole": "tsc --noEmit" }, "repository": { "type": "git", @@ -34,63 +35,60 @@ }, "devDependencies": { "@apex/webpack-config": "workspace:*", - "@babel/cli": "7.21.0", - "@babel/core": "7.21.4", - "@babel/preset-env": "7.21.4", - "@babel/runtime": "7.21.0", - "@changesets/cli": "2.26.1", - "@commitlint/cli": "17.6.1", - "@commitlint/config-conventional": "17.6.1", + "@babel/cli": "7.22.10", + "@babel/core": "7.22.10", + "@babel/preset-env": "7.22.10", + "@babel/runtime": "7.22.10", + "@changesets/cli": "2.26.2", + "@commitlint/cli": "17.7.0", + "@commitlint/config-conventional": "17.7.0", "@types/event-hooks-webpack-plugin": "2.2.2", - "@types/events": "3.0.0", "@types/git-rev-sync": "2.0.0", - "@types/node": "18.15.11", - "@types/react": "18.0.37", - "@types/react-dom": "18.0.11", + "@types/node": "20.4.9", "@types/rimraf": "3.0.2", + "@types/shared-types": "workspace:*", "@types/terser-webpack-plugin": "5.0.4", "@types/webpack-bundle-analyzer": "4.6.0", - "@typescript-eslint/eslint-plugin": "5.59.0", - "@typescript-eslint/parser": "5.59.0", + "@typescript-eslint/eslint-plugin": "6.3.0", + "@typescript-eslint/parser": "6.3.0", "autoprefixer": "10.4.14", - "babel-loader": "9.1.2", + "babel-loader": "9.1.3", "ci-info": "3.8.0", "cross-env": "7.0.3", - "css-loader": "6.7.3", - "cssnano": "6.0.0", - "dotenv": "16.0.3", - "esbuild-loader": "3.0.1", - "eslint": "8.38.0", - "eslint-config-prettier": "8.8.0", + "css-loader": "6.8.1", + "cssnano": "6.0.1", + "dotenv": "16.3.1", + "esbuild-loader": "4.0.0", + "eslint": "8.46.0", + "eslint-config-prettier": "9.0.0", "event-hooks-webpack-plugin": "2.3.0", "git-rev-sync": "3.0.2", "husky": "8.0.3", - "less": "4.1.3", - "less-loader": "11.1.0", - "moment": "2.29.4", - "npm-check-updates": "16.10.8", - "postcss": "8.4.22", - "postcss-custom-properties": "13.1.5", - "postcss-loader": "7.2.4", - "postcss-preset-env": "8.3.2", - "prettier": "2.8.7", + "less": "4.2.0", + "less-loader": "11.1.3", + "npm-check-updates": "16.10.18", + "postcss": "8.4.27", + "postcss-custom-properties": "13.3.0", + "postcss-loader": "7.3.3", + "postcss-preset-env": "9.1.1", + "prettier": "3.0.1", "pretty-quick": "3.1.3", - "rimraf": "5.0.0", - "semver": "7.5.0", - "style-loader": "3.3.2", + "rimraf": "5.0.1", + "semver": "7.5.4", + "style-loader": "3.3.3", "svg-inline-loader": "0.8.2", "svgo": "3.0.2", "svgo-loader": "4.0.0", - "terser-webpack-plugin": "5.3.7", - "ts-loader": "9.4.2", + "terser-webpack-plugin": "5.3.9", + "ts-loader": "9.4.4", "ts-node": "10.9.1", - "tslib": "2.5.0", - "typescript": "5.0.4", - "webpack": "5.79.0", - "webpack-bundle-analyzer": "4.8.0", - "webpack-cli": "5.0.1", - "webpack-dev-server": "4.13.3", - "webpack-merge": "5.8.0", + "tslib": "2.6.1", + "typescript": "5.1.6", + "webpack": "5.88.2", + "webpack-bundle-analyzer": "4.9.0", + "webpack-cli": "5.1.4", + "webpack-dev-server": "4.15.1", + "webpack-merge": "5.9.0", "webpack-retry-chunk-load-plugin": "3.1.1", "webpackbar": "5.0.2" } diff --git a/packages/js-project/index.js b/packages/js-project/index.js new file mode 100644 index 0000000..177804c --- /dev/null +++ b/packages/js-project/index.js @@ -0,0 +1 @@ +export function noop() {} diff --git a/packages/js-project/package.json b/packages/js-project/package.json new file mode 100644 index 0000000..f5d2a7f --- /dev/null +++ b/packages/js-project/package.json @@ -0,0 +1,9 @@ +{ + "name": "@apex/js-project", + "version": "1.0.0", + "description": "Fake JavaScript Project without Types", + "main": "index.js", + "keywords": [], + "author": "Hellcom", + "license": "ISC" +} diff --git a/packages/react-demo/package.json b/packages/react-demo/package.json index a0e03dd..058e634 100644 --- a/packages/react-demo/package.json +++ b/packages/react-demo/package.json @@ -15,5 +15,9 @@ "mobx-react-lite": "3.4.3", "react": "18.2.0", "react-dom": "18.2.0" + }, + "devDependencies": { + "@types/react": "18.2.20", + "@types/react-dom": "18.2.7" } } diff --git a/packages/react-demo/types.d.ts b/packages/react-demo/types.d.ts deleted file mode 100644 index d7705c6..0000000 --- a/packages/react-demo/types.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module '*.svg' { - export default string; -} diff --git a/packages/vue-demo/types.d.ts b/packages/vue-demo/types.d.ts index ae8937c..f1d2dd1 100644 --- a/packages/vue-demo/types.d.ts +++ b/packages/vue-demo/types.d.ts @@ -1,7 +1,3 @@ -declare module '*.svg' { - export default string; -} - declare module '*.vue' { import { DefineComponent } from 'vue'; const component: DefineComponent; diff --git a/packages/vue-demo/webpack.config.ts b/packages/vue-demo/webpack.config.ts index 9b86a61..e1b47e4 100644 --- a/packages/vue-demo/webpack.config.ts +++ b/packages/vue-demo/webpack.config.ts @@ -52,7 +52,7 @@ export default getWebpackConfig('vue-demo', function (env, argv, config) { plugins: [basePlugin.webpackBar, basePlugin.bannerPlugin, basePlugin.definePlugin, new VueLoaderPlugin()], output: { // @see https://github.com/vuejs/vue-cli/issues/2978#issuecomment-1204992527 - devtoolModuleFilenameTemplate: (info) => { + devtoolModuleFilenameTemplate: (info: any) => { const resPath = info.resourcePath.split(path.sep).join('/'); const isVue = resPath.match(/\.vue$/); const isGenerated = info.allLoaders; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5986110..1c35344 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,24 +31,18 @@ importers: '@types/event-hooks-webpack-plugin': specifier: 2.2.2 version: 2.2.2 - '@types/events': - specifier: 3.0.0 - version: 3.0.0 '@types/git-rev-sync': specifier: 2.0.0 version: 2.0.0 '@types/node': specifier: 18.15.11 version: 18.15.11 - '@types/react': - specifier: 18.0.37 - version: 18.0.37 - '@types/react-dom': - specifier: 18.0.11 - version: 18.0.11 '@types/rimraf': specifier: 3.0.2 version: 3.0.2 + '@types/shared-types': + specifier: workspace:* + version: link:helpers/shared-types '@types/terser-webpack-plugin': specifier: 5.0.4 version: 5.0.4(webpack-cli@5.0.1) @@ -185,6 +179,8 @@ importers: specifier: 5.0.2 version: 5.0.2(webpack@5.79.0) + helpers/shared-types: {} + helpers/webpack-config: {} packages/react-demo: @@ -201,6 +197,13 @@ importers: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + devDependencies: + '@types/react': + specifier: 18.2.20 + version: 18.2.20 + '@types/react-dom': + specifier: 18.2.7 + version: 18.2.7 packages/vue-demo: dependencies: @@ -2682,10 +2685,6 @@ packages: '@types/webpack': 4.41.33 dev: true - /@types/events@3.0.0: - resolution: {integrity: sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==} - dev: true - /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: @@ -2766,18 +2765,18 @@ packages: /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - /@types/react-dom@18.0.11: - resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.0.37 + '@types/react': 18.2.20 dev: true - /@types/react@18.0.37: - resolution: {integrity: sha512-4yaZZtkRN3ZIQD3KSEwkfcik8s0SWV+82dlJot1AbGYHCzJkWP3ENBY6wYeDRmKZ6HkrgoGAmR2HqdwYGp6OEw==} + /@types/react@18.2.20: + resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==} dependencies: '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.2 - csstype: 3.1.1 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 dev: true /@types/retry@0.12.0: @@ -2790,8 +2789,8 @@ packages: '@types/node': 18.15.11 dev: true - /@types/scheduler@0.16.2: - resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true /@types/semver@6.2.3: @@ -4298,8 +4297,8 @@ packages: resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} dev: false - /csstype@3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true /csv-generate@3.4.3: diff --git a/tsconfig.base.json b/tsconfig.base.json index fdd5583..2f93857 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -13,19 +13,12 @@ "sourceMap": true, "skipLibCheck": true, "importHelpers": true, + "noImplicitAny": true, "esModuleInterop": true, "resolveJsonModule": true, "downlevelIteration": true, "target": "es5", "module": "esnext", "moduleResolution": "node" - }, - "files": [ - "types/debug.d.ts", - "types/webpack.d.ts" - ], - "exclude": [ - "**/dist/**/*", - "**/node_modules/**/*" - ] + } } diff --git a/tsconfig.json b/tsconfig.json index 71c5d44..ebb85fc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,6 +7,5 @@ "esnext", "scripthost" ] - }, - "include": ["**/*"] + } }