Skip to content

Commit 124b7a2

Browse files
committed
feat: build ESM successfully with tsc
Currently only working after a successful run of 'npm run clean && npm install && npm run build' but if you remove the dist folder and then try to build again, tsc -b doesn't build deps in order. seems similar to microsoft/TypeScript#25864
1 parent 7c16907 commit 124b7a2

File tree

7 files changed

+96
-53
lines changed

7 files changed

+96
-53
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
node_modules
22
typings
33
dist
4-
dist.generated
54
build
65
coverage
76
node_modules

generated/fetch/.openapi-generator/FILES

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
{
22
"name": "@ipfs-shipyard/pinning-service-client",
33
"version": "0.0.1",
4-
"type": "module",
54
"description": "A lightweight client generated from the ipfs-pinning-service-spec defined at https://raw.githubusercontent.com/ipfs/pinning-services-api-spec/main/ipfs-pinning-service.yaml",
65
"author": "Russell Dempsey <[email protected]>",
76
"license": "Apache-2.0 OR MIT",
@@ -24,8 +23,28 @@
2423
"node": ">=16.0.0",
2524
"npm": ">=7.0.0"
2625
},
27-
"main": "src/index.ts",
28-
"types": "dist/src/index.d.ts",
26+
"type": "module",
27+
"types": "./dist/src/index.d.ts",
28+
"files": [
29+
"src",
30+
"dist",
31+
"!**/*.tsbuildinfo"
32+
],
33+
"exports": {
34+
".": {
35+
"import": "./dist/src/index.js"
36+
}
37+
},
38+
"eslintConfig": {
39+
"extends": "ipfs",
40+
"ignorePatterns": ["dist"],
41+
"root": true,
42+
"parserOptions": {
43+
"project": ["./src/tsconfig.json"],
44+
"sourceType": "module",
45+
"ecmaVersion": 2020
46+
}
47+
},
2948
"typesVersions": {
3049
"*": {
3150
"*": [
@@ -40,17 +59,6 @@
4059
]
4160
}
4261
},
43-
"files": [
44-
"src",
45-
"dist",
46-
"dist.generated"
47-
],
48-
"eslintConfig": {
49-
"extends": "ipfs",
50-
"parserOptions": {
51-
"sourceType": "module"
52-
}
53-
},
5462
"release": {
5563
"branches": [
5664
"main"
@@ -133,33 +141,42 @@
133141
]
134142
},
135143
"scripts": {
136-
"clean": "npx rimraf dist generated node_modules .swc",
144+
"clean": "npx rimraf .swc *.tsbuildinfo .nyc_output dist docs generated node_modules",
137145
"ci:test": "run-s test:*",
138-
"dep-check": "aegir dep-check src/**/*.ts test/**/*.ts generated/**/*.ts",
146+
"dep-check-old": "aegir dep-check src/**/*.ts test/**/*.ts generated/**/*.ts",
139147
"fix": "run-s fix:*",
140148
"fix:lint": "aegir lint --fix",
141-
"lint": "run-s lint:*",
149+
"lint-old": "run-s lint:*",
142150
"lint:main": "aegir lint",
143151
"lint:ts": "aegir ts -p check",
144152
"lint-TODO:project": "check-aegir-project # currently broken due to corrupting the repoUrl",
145-
"release": "aegir release",
153+
"release-old": "aegir release",
146154
"postinstall": "run-s gen",
147-
"build": "run-s build:* && cp-cli dist.generated dist/dist.generated && ipjs build",
155+
"build-old": "run-s build:*",
148156
"build-todo:docs": "aegir docs -p false",
149157
"build:deps": "run-s gen",
150158
"build:main": "aegir ts",
151159
"build:types": "aegir ts -p types",
152-
"test": "run-s test:*",
160+
"test-old": "run-s test:*",
153161
"test:browser": "aegir test --target browser",
154162
"test:webworker": "aegir test --target webworker",
155163
"test:electron": "aegir test --target electron-main",
156-
"test:node": "aegir test --target node --cov && npx nyc report",
164+
"test:node-old": "aegir test --target node --cov && npx nyc report",
157165
"pregen": "openapi-generator-cli validate -i https://raw.githubusercontent.com/ipfs/pinning-services-api-spec/v1.0.0/ipfs-pinning-service.yaml",
158166
"gen": "run-p gen:fetch",
159-
"postgen": "tsc-silent -p tsconfig.generated.json --suppress 6133@generated 6192@generated --stats",
167+
"postgen": "tsc -b tsconfig.generated.json",
160168
"gen:fetch": "openapi-generator-cli generate --generator-key fetch",
161169
"gen:node": "openapi-generator-cli generate --generator-key node",
162-
"gen:ts": "openapi-generator-cli generate --generator-key ts"
170+
"gen:ts": "openapi-generator-cli generate --generator-key ts",
171+
"lint": "aegir lint",
172+
"dep-check": "aegir dep-check dist/src/**/*.js dist/test/**/*.js",
173+
"prebuild-old": "tsc-silent -p tsconfig.generated.json --suppress 6133@generated 6192@generated --stats",
174+
"build": "tsc -b",
175+
"pretest": "npm run build",
176+
"test": "aegir test -f ./dist/test/*.js -f ./dist/test/**/*.js",
177+
"test:node": "npm run test -- -t node --cov",
178+
"test:electron-main": "npm run test -- -t electron-main",
179+
"release": "semantic-release"
163180
},
164181
"dependencies": {
165182
"fetch-ponyfill": "^7.1.0"
@@ -188,10 +205,5 @@
188205
"ts-node": "^10.7.0",
189206
"tsc-silent": "^1.2.1",
190207
"winston": "^3.6.0"
191-
},
192-
"exports": {
193-
".": {
194-
"import": "./dist/src/index.js"
195-
}
196208
}
197209
}

src/index.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import fetchPonyfill from 'fetch-ponyfill'
22

3-
import { Configuration as GeneratedConfiguration } from '../dist.generated/index.js'
3+
import { Configuration as GeneratedConfiguration } from 'generated/index.js'
44
// eslint-disable-next-line import/no-duplicates
5-
import { ConfigurationParameters as GeneratedConfigurationParameters } from '../dist.generated/index.js'
6-
import { PinsApi as RemotePinningServiceClient } from '../dist.generated/apis/index.js'
5+
import type { ConfigurationParameters as GeneratedConfigurationParameters } from 'generated/index.js'
6+
import { PinsApi as RemotePinningServiceClient } from 'generated/apis/index.js'
77

88
interface ConfigurationParameters extends Omit<GeneratedConfigurationParameters, 'basePath'>{
99
endpointUrl?: string
@@ -33,7 +33,7 @@ class Configuration extends GeneratedConfiguration {
3333
*/
3434
export type {
3535
PinsApiInterface as RemotePinningServiceClientInterface
36-
} from '../dist.generated/apis'
36+
} from 'generated/apis'
3737

3838
export {
3939
Configuration,
@@ -50,9 +50,9 @@ export type {
5050
PinsRequestidDeleteRequest,
5151
PinsRequestidGetRequest,
5252
PinsRequestidPostRequest
53-
} from '../dist.generated/apis'
53+
} from 'generated/apis'
5454

55-
export * from '../dist.generated/models'
55+
export * from 'generated/models'
5656

5757
export {
5858
BASE_PATH,
@@ -68,7 +68,7 @@ export {
6868
exists,
6969
mapValues,
7070
querystring
71-
} from '../dist.generated/runtime'
71+
} from 'generated/runtime'
7272

7373
export type {
7474
FetchParams,
@@ -79,4 +79,4 @@ export type {
7979
Middleware,
8080
ApiResponse,
8181
ResponseTransformer
82-
} from '../dist.generated/runtime'
82+
} from 'generated/runtime'

src/tsconfig.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"extends": "aegir/src/config/tsconfig.aegir.json",
3+
"compilerOptions": {
4+
"baseUrl": ".",
5+
"incremental": true,
6+
"composite": true,
7+
"sourceRoot": "./",
8+
"outDir": "../dist",
9+
"emitDeclarationOnly": false,
10+
"module": "ES2020",
11+
"target": "ES2020",
12+
"paths": {
13+
"generated": ["../generated/fetch/src/index.ts"],
14+
"generated/*": ["../generated/fetch/src/*"],
15+
}
16+
},
17+
"references": [
18+
{
19+
"path": "../tsconfig.generated.json",
20+
},
21+
],
22+
"include": [
23+
"./index.ts",
24+
]
25+
}

tsconfig.generated.json

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
{
22
"compilerOptions": {
3-
"sourceRoot": "generated/fetch/src",
4-
"outDir": "dist.generated",
3+
"composite": true,
4+
"incremental": true,
5+
"sourceRoot": "./generated/fetch/src",
6+
"outDir": "./dist/generated",
57
"emitDeclarationOnly": false,
68
"module": "ES2020",
79
"target": "ES2020",
@@ -15,16 +17,16 @@
1517
"noUnusedLocals": false,
1618
"noUnusedParameters": false,
1719
"isolatedModules": false,
18-
"rootDir": "generated/fetch/src",
20+
"rootDir": "./generated/fetch/src",
1921
"sourceMap": true,
2022
"moduleResolution":"Node"
2123

2224
},
2325
"include": [
24-
"generated/fetch/src",
25-
"types/global.d.ts",
26+
"./generated/fetch/src",
27+
"./types/global.d.ts",
2628
],
2729
"exclude": [
28-
"./generated/fetch/dist"
30+
"./src"
2931
]
3032
}

tsconfig.json

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,35 @@
11
{
22
"extends": "aegir/src/config/tsconfig.aegir.json",
33
"compilerOptions": {
4-
"outDir": "dist",
4+
"incremental": true,
55
"emitDeclarationOnly": false,
66
"module": "ES2020",
77
"target": "ES2020",
88
"typeRoots": [
99
"./types",
1010
"./node_modules/@types",
11-
"dist/dist.generated"
1211
],
1312
"importsNotUsedAsValues": "remove",
1413
"noEmitOnError": true,
1514
"esModuleInterop": true,
1615
"noUnusedLocals": false,
1716
"noUnusedParameters": false
1817
},
19-
"include": [
20-
"src",
21-
"test",
22-
"test/**/*.ts",
23-
"types/**/*.d.ts",
24-
"MockServer.ts",
25-
"dist/dist.generated"
18+
"references": [
19+
{
20+
"path": "./src",
21+
},
22+
// {
23+
// "path": "./test",
24+
// },
25+
// {
26+
// "path": "./tsconfig.generated.json",
27+
// },
2628
],
29+
"include": ["src"],
2730
"exclude": [
28-
"generated"
31+
"generated",
32+
"src"
2933
],
3034
"ts-node": {
3135
"transpileOnly": true,

0 commit comments

Comments
 (0)