From a8dcde5b0797073d7135342561dbcbc9156afe35 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Wed, 8 Sep 2021 15:33:57 +0300 Subject: [PATCH 1/2] fix: do not use ideal image plugin in dev env --- .../docusaurus-plugin-ideal-image/.npmignore | 2 -- .../copyUntypedFiles.js | 20 ------------------- .../package.json | 5 +++-- .../src/index.ts | 9 +++++---- .../src/plugin-ideal-image.d.ts | 18 +++++++++++++++++ .../theme/{IdealImage.js => IdealImage.tsx} | 10 +++++++++- .../tsconfig.json | 3 ++- 7 files changed, 37 insertions(+), 30 deletions(-) delete mode 100644 packages/docusaurus-plugin-ideal-image/.npmignore delete mode 100644 packages/docusaurus-plugin-ideal-image/copyUntypedFiles.js create mode 100644 packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts rename packages/docusaurus-plugin-ideal-image/src/theme/{IdealImage.js => IdealImage.tsx} (72%) diff --git a/packages/docusaurus-plugin-ideal-image/.npmignore b/packages/docusaurus-plugin-ideal-image/.npmignore deleted file mode 100644 index 4978437c5d30..000000000000 --- a/packages/docusaurus-plugin-ideal-image/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -src -copyUntypedFiles.js \ No newline at end of file diff --git a/packages/docusaurus-plugin-ideal-image/copyUntypedFiles.js b/packages/docusaurus-plugin-ideal-image/copyUntypedFiles.js deleted file mode 100644 index 3f814cf0990d..000000000000 --- a/packages/docusaurus-plugin-ideal-image/copyUntypedFiles.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -const path = require('path'); -const fs = require('fs-extra'); - -/** - * Copy all untyped and static assets files to lib. - */ -const srcDir = path.resolve(__dirname, 'src'); -const libDir = path.resolve(__dirname, 'lib'); -fs.copySync(srcDir, libDir, { - filter(filepath) { - return !/__tests__/.test(filepath) && !/\.ts$/.test(filepath); - }, -}); diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index 5fb7eb7443fc..b57c1db965bd 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -3,9 +3,10 @@ "version": "2.0.0-beta.6", "description": "Docusaurus Plugin to generate an almost ideal image (responsive, lazy-loading, and low quality placeholder).", "main": "lib/index.js", + "types": "src/plugin-ideal-image.d.ts", "scripts": { - "build": "tsc && node copyUntypedFiles.js", - "watch": "node copyUntypedFiles.js && tsc --watch" + "build": "tsc", + "watch": "tsc --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-ideal-image/src/index.ts b/packages/docusaurus-plugin-ideal-image/src/index.ts index 2f3b91beff4d..aa63532a3bd8 100644 --- a/packages/docusaurus-plugin-ideal-image/src/index.ts +++ b/packages/docusaurus-plugin-ideal-image/src/index.ts @@ -14,16 +14,18 @@ export default function ( _context: LoadContext, options: PluginOptions, ): Plugin { - const isProd = process.env.NODE_ENV === 'production'; - return { name: 'docusaurus-plugin-ideal-image', getThemePath() { - return path.resolve(__dirname, './theme'); + return path.resolve(__dirname, '../lib/theme'); }, configureWebpack(_config: Configuration, isServer: boolean) { + if (process.env.NODE_ENV !== 'production') { + return {}; + } + return { mergeStrategy: { 'module.rules': 'prepend', @@ -38,7 +40,6 @@ export default function ( loader: require.resolve('@docusaurus/responsive-loader'), options: { emitFile: !isServer, // don't emit for server-side rendering - disable: !isProd, // eslint-disable-next-line global-require adapter: require('@docusaurus/responsive-loader/sharp'), name: 'assets/ideal-img/[name].[hash:hex:7].[width].[ext]', diff --git a/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts b/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts new file mode 100644 index 000000000000..a97e4fb25459 --- /dev/null +++ b/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +declare module '@endiliey/react-ideal-image'; + +declare module '@theme/IdealImage' { + export type Props = { + alt?: string; + className?: string; + img?: any; + }; + + export default function IdealImage(props: Props): JSX.Element; +} diff --git a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.tsx similarity index 72% rename from packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js rename to packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.tsx index 0046177cd996..a49e7baa07a8 100644 --- a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js +++ b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.tsx @@ -4,11 +4,19 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ + import React from 'react'; import IdealImage from '@endiliey/react-ideal-image'; +import type {Props} from '@theme/IdealImage'; -function Image(props) { +function Image(props: Props): JSX.Element { const {alt, className, img} = props; + + // In dev env just use regular img with original file + if (img.default) { + return {alt}; + } + return ( Date: Wed, 22 Sep 2021 22:50:06 +0300 Subject: [PATCH 2/2] Back to JS --- .../docusaurus-plugin-ideal-image/.npmignore | 2 ++ .../copyUntypedFiles.js | 20 +++++++++++++++++++ .../package.json | 5 ++--- .../src/index.ts | 2 +- .../src/plugin-ideal-image.d.ts | 18 ----------------- .../theme/{IdealImage.tsx => IdealImage.js} | 3 +-- .../tsconfig.json | 3 +-- 7 files changed, 27 insertions(+), 26 deletions(-) create mode 100644 packages/docusaurus-plugin-ideal-image/.npmignore create mode 100644 packages/docusaurus-plugin-ideal-image/copyUntypedFiles.js delete mode 100644 packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts rename packages/docusaurus-plugin-ideal-image/src/theme/{IdealImage.tsx => IdealImage.js} (90%) diff --git a/packages/docusaurus-plugin-ideal-image/.npmignore b/packages/docusaurus-plugin-ideal-image/.npmignore new file mode 100644 index 000000000000..4978437c5d30 --- /dev/null +++ b/packages/docusaurus-plugin-ideal-image/.npmignore @@ -0,0 +1,2 @@ +src +copyUntypedFiles.js \ No newline at end of file diff --git a/packages/docusaurus-plugin-ideal-image/copyUntypedFiles.js b/packages/docusaurus-plugin-ideal-image/copyUntypedFiles.js new file mode 100644 index 000000000000..3f814cf0990d --- /dev/null +++ b/packages/docusaurus-plugin-ideal-image/copyUntypedFiles.js @@ -0,0 +1,20 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +const path = require('path'); +const fs = require('fs-extra'); + +/** + * Copy all untyped and static assets files to lib. + */ +const srcDir = path.resolve(__dirname, 'src'); +const libDir = path.resolve(__dirname, 'lib'); +fs.copySync(srcDir, libDir, { + filter(filepath) { + return !/__tests__/.test(filepath) && !/\.ts$/.test(filepath); + }, +}); diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index b57c1db965bd..5fb7eb7443fc 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -3,10 +3,9 @@ "version": "2.0.0-beta.6", "description": "Docusaurus Plugin to generate an almost ideal image (responsive, lazy-loading, and low quality placeholder).", "main": "lib/index.js", - "types": "src/plugin-ideal-image.d.ts", "scripts": { - "build": "tsc", - "watch": "tsc --watch" + "build": "tsc && node copyUntypedFiles.js", + "watch": "node copyUntypedFiles.js && tsc --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-ideal-image/src/index.ts b/packages/docusaurus-plugin-ideal-image/src/index.ts index aa63532a3bd8..70d3a6631eff 100644 --- a/packages/docusaurus-plugin-ideal-image/src/index.ts +++ b/packages/docusaurus-plugin-ideal-image/src/index.ts @@ -18,7 +18,7 @@ export default function ( name: 'docusaurus-plugin-ideal-image', getThemePath() { - return path.resolve(__dirname, '../lib/theme'); + return path.resolve(__dirname, './theme'); }, configureWebpack(_config: Configuration, isServer: boolean) { diff --git a/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts b/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts deleted file mode 100644 index a97e4fb25459..000000000000 --- a/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -declare module '@endiliey/react-ideal-image'; - -declare module '@theme/IdealImage' { - export type Props = { - alt?: string; - className?: string; - img?: any; - }; - - export default function IdealImage(props: Props): JSX.Element; -} diff --git a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.tsx b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js similarity index 90% rename from packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.tsx rename to packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js index a49e7baa07a8..7679f53bb2ed 100644 --- a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.tsx +++ b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js @@ -7,9 +7,8 @@ import React from 'react'; import IdealImage from '@endiliey/react-ideal-image'; -import type {Props} from '@theme/IdealImage'; -function Image(props: Props): JSX.Element { +function Image(props) { const {alt, className, img} = props; // In dev env just use regular img with original file diff --git a/packages/docusaurus-plugin-ideal-image/tsconfig.json b/packages/docusaurus-plugin-ideal-image/tsconfig.json index 347e18c67e6e..f5902ba1089b 100644 --- a/packages/docusaurus-plugin-ideal-image/tsconfig.json +++ b/packages/docusaurus-plugin-ideal-image/tsconfig.json @@ -4,7 +4,6 @@ "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "rootDir": "src", - "outDir": "lib", - "noImplicitAny": false + "outDir": "lib" } }