diff --git a/README.md b/README.md index 03b1ec5494..0fb09a4b85 100644 --- a/README.md +++ b/README.md @@ -59,9 +59,13 @@ OpenLayers appreciates contributions of all kinds. We especially want to thank See our [GitHub sponsors page](https://github.com/sponsors/openlayers) or [Open Collective](https://opencollective.com/openlayers/contribute/sponsors-214/checkout) if you too are interested in becoming a regular sponsor. -## IntelliSense support and type checking for VS Code +## Building ES6 -The ol package contains a src/ folder with JSDoc annotated sources. TypeScript can get type definitions from these sources with a [`jsconfig.json`](https://gist.github.com/ahocevar/9a7253cb4712e8bf38d75d8ac898e36c#file-jsconfig-json) (when authoring in JavaScript) or [`tsconfig.json`](https://gist.github.com/ahocevar/ad7b52a2fa0f6c5495193cd695ab3780#file-tsconfig-json) (when authoring in TypeScript) config file in the project root: +The `ol` package contains a `src/` folder with the sources, authored in ES6. To use these untranspiled sources, either import modules from `ol/src` instead of `ol`, or configure your bundler with an alias pointing to `ol/src` for the `ol` package. + +## IntelliSense (VS Code) support + +The untranspiled sources in the `src/` are JSDoc type annotated. For applications authored in JavaScript, VS Code can get type definitions from these sources with a properly configured `jsconfig.json` in the project root:
jsconfig.json @@ -84,33 +88,22 @@ The ol package contains a src/ folder with JSDoc annotated sources. TypeScript c } } ``` -
-
tsconfig.json -```json +## TypeScript support + +When authoring in TypeScript, we recommend you try out the types that are included in the `ol` package. To use these types, make sure you have the following entry for `@types/ol` in your `package.json`'s `devDependencies` section: +``` { - "compilerOptions": { - "allowJs": true, - "baseUrl": "./", - "paths": { - "ol": ["node_modules/ol/src"], - "ol/*": ["node_modules/ol/src/*"] - } - }, - "include": [ - "**/*.ts", - "node_modules/ol/**/*" - ], - "typeAcquisition": { - "exclude": ["ol"] + ... + "devDependencies": { + ... + "@types/ol": "file:node_modules/ol/types", + ... } } ``` - -
- -TypeScript users may want to use a [third-party types package](https://github.com/hanreev/types-ol) instead. +These are auto-generated with the TypeScript compiler, and will be the default in future versions. Alternatively, you can use third-party types from [Definitely Typed](https://definitelytyped.org) (`npm install @types/ol`). ## Supported Browsers diff --git a/config/tsconfig-build.json b/config/tsconfig-build.json index 56de194321..f5a8720329 100644 --- a/config/tsconfig-build.json +++ b/config/tsconfig-build.json @@ -7,8 +7,8 @@ "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./", /* Concatenate and emit output to single file. */ "outDir": "../build/ol", /* Redirect output structure to the directory. */ diff --git a/package.json b/package.json index 5b6b5bca6b..14aff3ba93 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,12 @@ "start": "npm run serve-examples", "serve-examples": "webpack serve --config examples/webpack/config.js --mode development", "build-examples": "webpack --config examples/webpack/config.js --mode production", - "build-package": "npm run transpile && npm run copy-css && node tasks/prepare-package.js", + "build-package": "npm run transpile && npm run copy-css && npm run move-types && node tasks/prepare-package.js", "build-index": "shx rm -f build/index.js && npm run build-package && node tasks/generate-index.js", "build-legacy": "shx rm -rf build/legacy && npm run build-index && webpack --config config/webpack-config-legacy-build.js && cleancss --source-map src/ol/ol.css -o build/legacy/ol.css", "build-site": "npm run build-examples && npm run apidoc && mkdir -p build/site && cp site/index.html build/site && mv build/apidoc build/site/apidoc && mv build/examples build/site/examples", "copy-css": "shx cp src/ol/ol.css build/ol/ol.css", + "move-types": "shx rm -rf build/types && shx mkdir -p build/types && shx cp -Rf build/ol/* build/types/ && shx rm 'build/ol/**/*.d.ts*' && shx rm 'build/types/**/*.js*' && shx mv build/types build/ol/", "transpile": "shx rm -rf build/ol && shx mkdir -p build/ol && shx cp -rf src/ol build/ol/src && node tasks/serialize-workers.cjs && tsc --project config/tsconfig-build.json", "typecheck": "tsc --pretty", "apidoc-debug": "shx rm -rf build/apidoc && node --inspect-brk=9229 ./node_modules/jsdoc/jsdoc.js -R config/jsdoc/api/index.md -c config/jsdoc/api/conf.json -P package.json -d build/apidoc",