mirror of
https://github.com/material-components/material-web.git
synced 2026-03-09 00:09:23 +08:00
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 https://github.com/microsoft/TypeScript/issues/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
46 lines
1.4 KiB
JSON
46 lines
1.4 KiB
JSON
{
|
|
"name": "@material/web",
|
|
"version": "0.27.0",
|
|
"description": "Material web components",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/material-components/material-web.git"
|
|
},
|
|
"license": "Apache-2.0",
|
|
"bugs": {
|
|
"url": "https://github.com/material-components/material-web/issues"
|
|
},
|
|
"homepage": "https://github.com/material-components/material-web#readme",
|
|
"scripts": {
|
|
"clean": "npm run clean:sass && npm run clean:ts",
|
|
"clean:sass": "find . -name '*.css*' -type f -delete",
|
|
"clean:ts": "tsc --build --clean",
|
|
"build": "npm run build:sass && npm run build:ts",
|
|
"prebuild:sass": "[ -d node_modules/@material/web ] || (mkdir -p node_modules/@material && ln -s ../../ node_modules/@material/web)",
|
|
"build:sass": "sass --style=compressed --load-path=node_modules --load-path=node_modules/sass-true/sass $(ls -d */ | grep -v node_modules)",
|
|
"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"
|
|
},
|
|
"devDependencies": {
|
|
"@types/jasmine": "^4.0.3",
|
|
"jasmine": "^4.2.0",
|
|
"sass": "^1.52.3",
|
|
"sass-true": "^6.1.0",
|
|
"typescript": "^4.7.3"
|
|
}
|
|
}
|