diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index f134436405..c5881179f8 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -3,7 +3,6 @@ <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> - - [Getting started](#getting-started) - [Useful Commands](#useful-commands) - [Workflow](#workflow) @@ -153,10 +152,7 @@ These changes are required to setup internal tooling and package publishing. - "files": [ - "lib" - ], -+ "jsnext:main": "dist/es/index.js", -+ "main": "dist/commonjs/index.js", -+ "module": "dist/es/index.js", -+ "types": "dist/es/index.d.ts", ++ "main": "src/index.ts", + "sideEffects": false, + "files": [ + "dist" @@ -174,6 +170,8 @@ These changes are required to setup internal tooling and package publishing. You can also use `gulp bundle:package` to bundle your package with UMD. +The `main` field is locally set to point to the source to help project references work. It will be updated before publish to point to `dist/commonjs/index.js`. `module` and `jsnext:main` (`dist/es/index.js`) and `types` (`dist/es/index.d.ts`) will also be added. See `scripts/tasks/publishPrepareTask.ts` for details. (Having `types` present earlier with its final value causes problems resolving project references.) + #### Create `tsconfig.json` If your package uses TypeScript, please also create a new `tsconfig.json` and place it in `packages/__DIRECTORY_NAME__`. An example config: diff --git a/build/tsconfig.common.json b/build/tsconfig.common.json index b19551ccc6..af762b0def 100644 --- a/build/tsconfig.common.json +++ b/build/tsconfig.common.json @@ -3,14 +3,6 @@ "module": "commonjs", "target": "es5", "lib": ["es2015", "dom"], - "baseUrl": "../", - "paths": { - "@fluentui/docs": ["docs"], - "@fluentui/e2e": ["e2e"], - "@fluentui/internal-tooling": ["build"], - "@fluentui/perf": ["perf"], - "@fluentui/*": ["packages/*/src"] - }, "types": ["node", "jest"], "typeRoots": ["../types", "../node_modules/@types"], "jsx": "react", diff --git a/build/tsconfig.docs.json b/build/tsconfig.docs.json index 93fc104626..aec2c150cd 100644 --- a/build/tsconfig.docs.json +++ b/build/tsconfig.docs.json @@ -1,13 +1,24 @@ { "extends": "./tsconfig.common.json", "compilerOptions": { + // "composite": true, "module": "esnext", + "baseUrl": "../", "paths": { - "@fluentui/*": ["packages/*/src"], "docs/*": ["docs/*"], "src/*": ["packages/react/src/*"], "test/*": ["packages/react/test/*"] } }, - "include": ["../docs/src", "../packages/react/src", "../types"] + "include": ["../docs/src", "../types"] + // "references": [ + // { "path": "../packages/ability-attributes" }, + // { "path": "../packages/accessibility" }, + // { "path": "../packages/code-sandbox" }, + // { "path": "../packages/docs-components" }, + // { "path": "../packages/react" }, + // { "path": "../packages/react-component-event-listener" }, + // { "path": "../packages/react-component-ref" }, + // { "path": "../packages/styles" } + // ] } diff --git a/build/tsconfig.e2e.json b/build/tsconfig.e2e.json index d344c4a473..c4d43b8db3 100644 --- a/build/tsconfig.e2e.json +++ b/build/tsconfig.e2e.json @@ -1,7 +1,8 @@ { "extends": "./tsconfig.common.json", "compilerOptions": { - "module": "esnext" + "module": "esnext", + "allowSyntheticDefaultImports": true }, - "include": ["../packages/react/src", "../e2e", "../types"] + "include": ["../e2e", "../types"] } diff --git a/build/tsconfig.test.json b/build/tsconfig.test.json deleted file mode 100644 index 89985ae7f9..0000000000 --- a/build/tsconfig.test.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.common.json", - "compilerOptions": { - "module": "esnext" - }, - "include": ["../packages", "../docs/src", "../types"] -} diff --git a/docs/package.json b/docs/package.json index 4a6d0b9394..69f32e011c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -4,6 +4,14 @@ "private": true, "license": "MIT", "dependencies": { + "@fluentui/ability-attributes": "^0.43.0", + "@fluentui/accessibility": "^0.43.0", + "@fluentui/code-sandbox": "^0.43.0", + "@fluentui/docs-components": "^0.43.0", + "@fluentui/react": "^0.43.0", + "@fluentui/react-component-event-listener": "^0.43.0", + "@fluentui/react-component-ref": "^0.43.0", + "@fluentui/styles": "^0.43.0", "color": "^3.1.0", "copy-to-clipboard": "^3.2.0", "faker": "^4.1.0", diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json index 280fa8b251..db26086b63 100644 --- a/e2e/tsconfig.json +++ b/e2e/tsconfig.json @@ -1,8 +1,3 @@ { - "extends": "../build/tsconfig.common.json", - "compilerOptions": { - "module": "esnext", - "allowSyntheticDefaultImports": true - }, - "include": ["../packages/react/src", "../e2e", "../types"] + "extends": "../build/tsconfig.e2e.json" } diff --git a/just.config.ts b/just.config.ts new file mode 100644 index 0000000000..4b0d014079 --- /dev/null +++ b/just.config.ts @@ -0,0 +1,4 @@ +import { task } from 'just-scripts' +import { publishPrepareTask } from './scripts/tasks/publishPrepareTask' + +task('publish:prepare', publishPrepareTask) diff --git a/package.json b/package.json index 2b58901b95..922159810f 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "prettier:fix": "prettier --write \"**/*.{ts,tsx}\"", "precommit": "lint-staged", "postcommit": "git update-index --again", - "prerelease": "yarn ci && cross-env NODE_ENV=production yarn build", + "prerelease": "yarn ci && cross-env NODE_ENV=production yarn build && just-scripts publish:prepare", "postrelease": "yarn deploy:docs", "release:major": "yarn prerelease && lerna publish major && yarn postrelease", "release:minor": "yarn prerelease && lerna publish minor && yarn postrelease", diff --git a/packages/ability-attributes/package.json b/packages/ability-attributes/package.json index 2b73a20d93..0bf9b4eb68 100644 --- a/packages/ability-attributes/package.json +++ b/packages/ability-attributes/package.json @@ -14,10 +14,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/ability-attributes", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "publishConfig": { "access": "public" }, @@ -27,6 +25,5 @@ "clean": "gulp bundle:package:clean", "schema": "allyschema -c \"process.env.NODE_ENV !== 'production'\" schema.json > ./src/schema.ts" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/accessibility/package.json b/packages/accessibility/package.json index 738605ea76..af69dc6bf1 100644 --- a/packages/accessibility/package.json +++ b/packages/accessibility/package.json @@ -17,10 +17,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/accessibility", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "publishConfig": { "access": "public" }, @@ -31,6 +29,5 @@ "test": "gulp test", "test:watch": "gulp test:watch" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/code-sandbox/package.json b/packages/code-sandbox/package.json index 9b93d5e637..de26c87893 100644 --- a/packages/code-sandbox/package.json +++ b/packages/code-sandbox/package.json @@ -14,10 +14,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/code-sandbox", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "peerDependencies": { "@fluentui/react": "*", "react": "^16.8.0", @@ -31,6 +29,5 @@ "build": "gulp bundle:package:no-umd", "clean": "gulp bundle:package:clean" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/digest/package.json b/packages/digest/package.json index d12998a7f3..6c54d487e3 100644 --- a/packages/digest/package.json +++ b/packages/digest/package.json @@ -2,7 +2,7 @@ "name": "@fluentui/digest", "version": "0.43.0", "private": true, - "main": "lib/digest.js", + "main": "src/digest.ts", "module": "lib/digest.js", "license": "MIT", "bin": { diff --git a/packages/digest/tsconfig.json b/packages/digest/tsconfig.json index e76052b460..896142caf0 100644 --- a/packages/digest/tsconfig.json +++ b/packages/digest/tsconfig.json @@ -1,12 +1,13 @@ { "compilerOptions": { + "composite": true, "outDir": "lib", "lib": ["es2015", "dom"], "jsx": "react", "moduleResolution": "node", "declaration": true, "skipLibCheck": true, - "types": ["node", "react"], + "types": ["node"], "baseUrl": ".", "allowSyntheticDefaultImports": true, "paths": { diff --git a/packages/docs-components/package.json b/packages/docs-components/package.json index d5e29d4e0e..29aac52a5a 100644 --- a/packages/docs-components/package.json +++ b/packages/docs-components/package.json @@ -15,10 +15,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/docs-components", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "peerDependencies": { "prettier": "^1.19.1", "react": "^16.8.0", @@ -32,6 +30,5 @@ "build": "gulp bundle:package:no-umd", "clean": "gulp bundle:package:clean" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/perf-test/tsconfig.json b/packages/perf-test/tsconfig.json index 6b7b72dc5a..5cef9c265f 100644 --- a/packages/perf-test/tsconfig.json +++ b/packages/perf-test/tsconfig.json @@ -1,10 +1,11 @@ { "extends": "../../build/tsconfig.docs.json", "compilerOptions": { + "composite": true, "rootDir": "src", "outDir": "lib", "types": ["node", "jest", "expect-puppeteer", "jest-environment-puppeteer"] }, "include": ["src"], - "references": [] + "references": [{ "path": "../digest" }] } diff --git a/packages/react-bindings/package.json b/packages/react-bindings/package.json index 2a2e24cdef..b2ea6ae2fd 100644 --- a/packages/react-bindings/package.json +++ b/packages/react-bindings/package.json @@ -21,10 +21,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/react-bindings", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "peerDependencies": { "react": "^16.8.0", "react-dom": "^16.8.0" @@ -39,6 +37,5 @@ "test": "gulp test", "test:watch": "gulp test:watch" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/react-bindings/tsconfig.json b/packages/react-bindings/tsconfig.json index fb067461e1..9f61f4b4b5 100644 --- a/packages/react-bindings/tsconfig.json +++ b/packages/react-bindings/tsconfig.json @@ -10,11 +10,5 @@ "strictNullChecks": true }, "include": ["src", "test"], - "references": [ - { "path": "../accessibility" }, - { "path": "../state" }, - { "path": "../styles" }, - { "path": "../react-component-event-listener" }, - { "path": "../react-component-ref" } - ] + "references": [{ "path": "../accessibility" }, { "path": "../state" }, { "path": "../styles" }] } diff --git a/packages/react-component-event-listener/package.json b/packages/react-component-event-listener/package.json index 8098f24e28..01d69fb681 100644 --- a/packages/react-component-event-listener/package.json +++ b/packages/react-component-event-listener/package.json @@ -16,10 +16,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/react-component-event-listener", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "peerDependencies": { "react": "^16.8.0", "react-dom": "^16.8.0" @@ -34,6 +32,5 @@ "test": "gulp test", "test:watch": "gulp test:watch" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/react-component-nesting-registry/package.json b/packages/react-component-nesting-registry/package.json index 9bf2d562e1..710b3c4869 100644 --- a/packages/react-component-nesting-registry/package.json +++ b/packages/react-component-nesting-registry/package.json @@ -16,10 +16,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/react-component-nesting-registry", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "peerDependencies": { "react": "^16.8.0", "react-dom": "^16.8.0" @@ -34,6 +32,5 @@ "test": "gulp test", "test:watch": "gulp test:watch" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/react-component-ref/package.json b/packages/react-component-ref/package.json index f236c65c19..c757623f37 100644 --- a/packages/react-component-ref/package.json +++ b/packages/react-component-ref/package.json @@ -18,10 +18,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/react-component-ref", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "peerDependencies": { "react": "^16.8.0", "react-dom": "^16.8.0" @@ -36,6 +34,5 @@ "test": "gulp test", "test:watch": "gulp test:watch" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/react-proptypes/package.json b/packages/react-proptypes/package.json index b2c198db68..2d745710a7 100644 --- a/packages/react-proptypes/package.json +++ b/packages/react-proptypes/package.json @@ -17,10 +17,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/react-proptypes", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "publishConfig": { "access": "public" }, @@ -31,6 +29,5 @@ "test": "gulp test", "test:watch": "gulp test:watch" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/react/package.json b/packages/react/package.json index 4dc17aeb2a..693b145074 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -39,10 +39,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react#readme", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "peerDependencies": { "react": "^16.8.0", "react-dom": "^16.8.0" @@ -57,6 +55,5 @@ "test": "gulp test", "test:watch": "gulp test:watch" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json index 61bd5687e9..e9a03cf5c8 100644 --- a/packages/react/tsconfig.json +++ b/packages/react/tsconfig.json @@ -3,20 +3,21 @@ "compilerOptions": { "composite": true, "outDir": "dist/dts", + "baseUrl": ".", "paths": { - "docs/*": ["docs/*"], - "src/*": ["packages/react/src/*"], - "test/*": ["packages/react/test/*"] + "docs/*": ["../..docs/*"], + "src/*": ["./src/*"], + "test/*": ["./test/*"] } }, "include": ["src", "test"], "references": [ { "path": "../accessibility" }, - { "path": "../styles" }, { "path": "../react-bindings" }, { "path": "../react-component-event-listener" }, { "path": "../react-component-nesting-registry" }, { "path": "../react-component-ref" }, - { "path": "../react-proptypes" } + { "path": "../react-proptypes" }, + { "path": "../styles" } ] } diff --git a/packages/state/package.json b/packages/state/package.json index dc070e337d..7f2a7cfa31 100644 --- a/packages/state/package.json +++ b/packages/state/package.json @@ -15,10 +15,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/state", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "publishConfig": { "access": "public" }, @@ -27,6 +25,5 @@ "build": "gulp bundle:package:no-umd", "clean": "gulp bundle:package:clean" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/packages/styles/package.json b/packages/styles/package.json index 51ad1d7e8a..e6eb04db44 100644 --- a/packages/styles/package.json +++ b/packages/styles/package.json @@ -17,10 +17,8 @@ "dist" ], "homepage": "https://github.com/microsoft/fluent-ui-react/tree/master/packages/styles", - "jsnext:main": "dist/es/index.js", "license": "MIT", - "main": "dist/commonjs/index.js", - "module": "dist/es/index.js", + "main": "src/index.ts", "publishConfig": { "access": "public" }, @@ -31,6 +29,5 @@ "test": "gulp test", "test:watch": "gulp test:watch" }, - "sideEffects": false, - "types": "dist/es/index.d.ts" + "sideEffects": false } diff --git a/scripts/config/typescript/tsconfig.stardust-ui.json b/scripts/config/typescript/tsconfig.stardust-ui.json deleted file mode 100644 index 45145e52ca..0000000000 --- a/scripts/config/typescript/tsconfig.stardust-ui.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "target": "es5", - "lib": ["es2015", "dom"], - "types": ["node", "jest"], - "jsx": "react", - "importHelpers": true, - "moduleResolution": "node", - "sourceMap": true, - "allowJs": false, - "noImplicitReturns": true, - "noImplicitThis": false, - "noImplicitAny": false, - "strictNullChecks": false, - "noUnusedLocals": true, - "esModuleInterop": true - } -} diff --git a/scripts/tasks/publishPrepareTask.ts b/scripts/tasks/publishPrepareTask.ts index fcddc8f199..4c52213c5b 100644 --- a/scripts/tasks/publishPrepareTask.ts +++ b/scripts/tasks/publishPrepareTask.ts @@ -8,11 +8,23 @@ export function publishPrepareTask() { const allInfo = getAllPackageInfo() for (const info of Object.values(allInfo)) { - if (info.packageJson.main && info.packageJson.main.startsWith('src/index')) { + if (info.packageJson.main && info.packageJson.main.startsWith('src/')) { const newPackageJson = { ...info.packageJson, - main: info.packageJson.main.replace('src/', 'lib/').replace(/\.tsx?/, '.js'), } + + if (fs.existsSync(path.join(info.packagePath, 'just.config.ts'))) { + newPackageJson.main = info.packageJson.main.replace('src/', 'lib/').replace(/\.tsx?/, '.js') + } else { + const entry = info.packageJson.main.replace('src/', 'dist/es/').replace(/\.tsx?/, '.js') + Object.assign(newPackageJson, { + main: entry.replace('/es/', '/commonjs/'), + module: entry, + 'jsnext:main': entry, + types: entry.replace('.js', '.d.ts'), + }) + } + fs.writeFileSync( path.join(root, info.packagePath, 'package.json'), `${JSON.stringify(newPackageJson, null, 2)}\n`, diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 0000000000..d46dcba57f --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./config/typescript/tsconfig.common.json" +}