Skip to content

Commit

Permalink
chore: Don't publish .ts or testing files
Browse files Browse the repository at this point in the history
Before this change, we publish .ts source files to the same directory as the .js/.d.ts files to npm.

That means when a consumer imports a @material/web module with TypeScript, TypeScript prefers the .ts file over the .d.ts file when to load that module's types.

That in turn means the consumer's TypeScript type-checks the entire @material/web .ts file, including its private implementation details (private fields, etc.). If the consumer's tsconfig.json is configured more strictly than @material/web's was (e.g. if noUnusedParameters is true), or if some additional ambient types are loaded (e.g. @types/node is installed, which changes the signature of setTimeout), they would get a compile error.

This change stops publishing .ts files to npm to solve that problem for consumers.

This also includes some related changes:

- Sets inlineSources to true. This puts the .ts file contents directly inside the .js.map file, instead of linking to the .ts path. Otherwise sourcemaps would not work.

- Sets declarationMap to false. This removes the .d.ts.map files, which are not useful without the .ts paths, because there is no equivalent to inlineSources for declarationMap (see microsoft/TypeScript#38966).

- Replaces .npmignore blocklist with package.json files allowlist (which I find to be a bit safer), and adds new omissions for testing files, which don't need to be published.

Note that this doesn't solve the problem when using "npm link" for local cross-package development, because in that case the .ts files will still be present. So a better solution to this problem would be to have a separate src/ directory for .ts source files. That will require a Copybara transform to move the files. We can discuss this separately and do it as a followup if agreed.

PiperOrigin-RevId: 469833263
  • Loading branch information
aomarks authored and copybara-github committed Aug 24, 2022
1 parent a171c8f commit 96805fe
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 3 deletions.
2 changes: 0 additions & 2 deletions .npmignore

This file was deleted.

10 changes: 10 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,16 @@
"prebuild:ts": "find . -name '*.css' -type f | xargs node css-to-ts.js",
"build:ts": "tsc"
},
"files": [
"**/*.js",
"**/*.js.map",
"**/*.d.ts",
"**/*.scss",
"!css-to-ts.js",
"!**/test/**",
"!**/testing/**",
"!**/*_test.*"
],
"dependencies": {
"lit": "^2.3.0",
"tslib": "^2.4.0"
Expand Down
3 changes: 2 additions & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"allowUnreachableCode": false,
"baseUrl": ".",
"declaration": true,
"declarationMap": true,
"declarationMap": false,
"downlevelIteration": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
Expand All @@ -22,6 +22,7 @@
},
"skipLibCheck": true,
"sourceMap": true,
"inlineSources": true,
"strict": true,
"strictNullChecks": false,
"target": "es2020"
Expand Down

0 comments on commit 96805fe

Please sign in to comment.