diff options
author | lutangar <johan.dufour@gmail.com> | 2021-11-09 13:49:08 +0100 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2021-12-16 10:08:43 +0100 |
commit | b8fa3e8c734a46918118afe7976f248cc883f675 (patch) | |
tree | 0ebf8fd10b1c690602da14d4dd626cd04a9ff748 /types/generate-package.ts | |
parent | 8b03e2ce1a2098261de2f729f660b1ae2a320b65 (diff) | |
download | PeerTube-b8fa3e8c734a46918118afe7976f248cc883f675.tar.gz PeerTube-b8fa3e8c734a46918118afe7976f248cc883f675.tar.zst PeerTube-b8fa3e8c734a46918118afe7976f248cc883f675.zip |
refactor(types): create dedicated folder for types package src
fix guide examples and add types package readme
refactor(tsconfig): move back base tsconfig to base directory
Diffstat (limited to 'types/generate-package.ts')
-rw-r--r-- | types/generate-package.ts | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/types/generate-package.ts b/types/generate-package.ts new file mode 100644 index 000000000..e0bdd721a --- /dev/null +++ b/types/generate-package.ts | |||
@@ -0,0 +1,75 @@ | |||
1 | import { copyFile, readJson, writeFile, writeJSON } from 'fs-extra' | ||
2 | import { resolve } from 'path' | ||
3 | import { cwd } from 'process' | ||
4 | import { execSync } from 'child_process' | ||
5 | import depcheck, { PackageDependencies } from 'depcheck' | ||
6 | |||
7 | run() | ||
8 | .then(() => process.exit(0)) | ||
9 | .catch(err => { | ||
10 | console.error(err) | ||
11 | process.exit(-1) | ||
12 | }) | ||
13 | |||
14 | async function run () { | ||
15 | execSync('npm run build:types', { stdio: 'inherit' }) | ||
16 | const typesPath = resolve(cwd(), './types/') | ||
17 | const typesDistPath = resolve(cwd(), typesPath, './dist/') | ||
18 | const typesDistPackageJsonPath = resolve(typesDistPath, './package.json') | ||
19 | const typesDistGitIgnorePath = resolve(typesDistPath, './.gitignore') | ||
20 | const mainPackageJson = await readJson(resolve(cwd(), './package.json')) | ||
21 | const distTsConfigPath = resolve(cwd(), typesPath, './tsconfig.dist.json') | ||
22 | const distTsConfig = await readJson(distTsConfigPath) | ||
23 | const clientPackageJson = await readJson(resolve(cwd(), './client/package.json')) | ||
24 | |||
25 | const allDependencies = Object.assign( | ||
26 | mainPackageJson.dependencies, | ||
27 | mainPackageJson.devDepencies, | ||
28 | clientPackageJson.dependencies | ||
29 | ) as PackageDependencies | ||
30 | |||
31 | // https://github.com/depcheck/depcheck#api | ||
32 | const depcheckOptions = { | ||
33 | parsers: { '**/*.ts': depcheck.parser.typescript }, | ||
34 | detectors: [ | ||
35 | depcheck.detector.requireCallExpression, | ||
36 | depcheck.detector.importDeclaration | ||
37 | ], | ||
38 | ignoreMatches: Object.keys(distTsConfig?.compilerOptions?.paths || []), | ||
39 | package: { dependencies: allDependencies } | ||
40 | } | ||
41 | |||
42 | const { dependencies: unusedDependencies } = await depcheck(resolve(cwd(), './types/'), depcheckOptions) | ||
43 | console.log(`Removing ${Object.keys(unusedDependencies).length} unused dependencies.`) | ||
44 | const dependencies = Object | ||
45 | .keys(allDependencies) | ||
46 | .filter(dependencyName => !unusedDependencies.includes(dependencyName)) | ||
47 | .reduce((dependencies, dependencyName) => { | ||
48 | dependencies[dependencyName] = allDependencies[dependencyName] | ||
49 | return dependencies | ||
50 | }, {}) | ||
51 | |||
52 | const { description, version, licence, engines, author, repository } = mainPackageJson | ||
53 | const typesPackageJson = { | ||
54 | name: '@peertube/peertube-types', | ||
55 | description, | ||
56 | version, | ||
57 | private: false, | ||
58 | license: licence, | ||
59 | engines, | ||
60 | author, | ||
61 | repository, | ||
62 | dependencies | ||
63 | } | ||
64 | console.log(`Writing package.json to ${typesDistPackageJsonPath}`) | ||
65 | await writeJSON(typesDistPackageJsonPath, typesPackageJson, { spaces: 2 }) | ||
66 | |||
67 | console.log(`Writing git ignore to ${typesDistGitIgnorePath}`) | ||
68 | await writeFile(typesDistGitIgnorePath, '*.tsbuildinfo') | ||
69 | |||
70 | console.log('Copying tsconfig files') | ||
71 | await copyFile(distTsConfigPath, resolve(typesDistPath, './tsconfig.json')) | ||
72 | await copyFile(resolve(cwd(), './tsconfig.base.json'), resolve(typesDistPath, './tsconfig.base.json')) | ||
73 | |||
74 | await copyFile(resolve(typesPath, './README.md'), resolve(typesDistPath, './README.md')) | ||
75 | } | ||