From 40b5b73bee018fdab9f87f62fd27fd36df4039ae Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Sat, 27 May 2023 23:34:50 +0800 Subject: [PATCH] fix: fix #412 --- .github/workflows/ci.yml | 7 +++++ core/package.json | 2 +- core/src/scripts/build.ts | 2 ++ core/src/scripts/start.ts | 2 ++ packages/resolve-fallback/README.md | 21 +++++++++++++++ packages/resolve-fallback/package.json | 34 +++++++++++++++++++++++++ packages/resolve-fallback/src/index.ts | 23 +++++++++++++++++ packages/resolve-fallback/tsconfig.json | 16 ++++++++++++ 8 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 packages/resolve-fallback/README.md create mode 100644 packages/resolve-fallback/package.json create mode 100644 packages/resolve-fallback/src/index.ts create mode 100644 packages/resolve-fallback/tsconfig.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 91cf30c5f..acba94afe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -282,6 +282,13 @@ jobs: env: NODE_AUTH_TOKEN: '${{ secrets.NPM_TOKEN }}' + - name: 📦 @kkt/resolve-fallback publish to NPM + run: npm publish --access public + working-directory: packages/resolve-fallback + continue-on-error: true + env: + NODE_AUTH_TOKEN: '${{ secrets.NPM_TOKEN }}' + - name: Compress uiw Example. working-directory: zip run: | diff --git a/core/package.json b/core/package.json index 5e1b7227f..ee421c37b 100644 --- a/core/package.json +++ b/core/package.json @@ -42,6 +42,7 @@ }, "dependencies": { "@babel/register": "~7.17.7", + "@kkt/resolve-fallback": "^7.4.10", "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^13.0.0", "@testing-library/user-event": "^14.0.0", @@ -55,7 +56,6 @@ "fs-extra": "~10.1.0", "minimist": "~1.2.6", "mocker-api": "~2.9.5", - "path-browserify": "^1.0.1", "postcss": "^8.4.4", "postcss-flexbugs-fixes": "^5.0.2", "postcss-loader": "^6.2.1", diff --git a/core/src/scripts/build.ts b/core/src/scripts/build.ts index 96975ff8a..b6b0a1287 100644 --- a/core/src/scripts/build.ts +++ b/core/src/scripts/build.ts @@ -1,6 +1,7 @@ process.env.NODE_ENV = 'production'; import { Configuration } from 'webpack'; +import resolveFallback from '@kkt/resolve-fallback'; import { KKTRC, WebpackConfiguration, loaderConf } from '../utils/loaderConf'; import { reactScripts, isWebpackFactory, getConfPath } from '../utils/path'; import { overridePaths } from '../overrides/paths'; @@ -30,6 +31,7 @@ export default async function build(argvs: BuildArgs) { }; let defaultWepack: WebpackConfiguration = createWebpackConfig('production'); defaultWepack = loadSourceMapWarnning(defaultWepack); + defaultWepack = resolveFallback(defaultWepack); defaultWepack = miniCssExtractPlugin(defaultWepack, 'production'); defaultWepack = argvs.overridesWebpack ? argvs.overridesWebpack(defaultWepack, 'production', overrideOption) diff --git a/core/src/scripts/start.ts b/core/src/scripts/start.ts index 4aaf6c0e3..f09f86274 100644 --- a/core/src/scripts/start.ts +++ b/core/src/scripts/start.ts @@ -6,6 +6,7 @@ import WebpackDevServer from 'webpack-dev-server'; import evalSourceMapMiddleware from 'react-dev-utils/evalSourceMapMiddleware'; import redirectServedPath from 'react-dev-utils/redirectServedPathMiddleware'; import clearConsole from 'react-dev-utils/clearConsole'; +import resolveFallback from '@kkt/resolve-fallback'; import noopServiceWorkerMiddleware from 'react-dev-utils/noopServiceWorkerMiddleware'; import { KKTRC, DevServerConfigFunction, WebpackConfiguration, loaderConf } from '../utils/loaderConf'; import { reactScripts, isWebpackFactory, proxySetup, getConfPath } from '../utils/path'; @@ -60,6 +61,7 @@ export default async function start(argvs: StartArgs) { : webpackConf; webpackConf = loadSourceMapWarnning(webpackConf); webpackConf = miniCssExtractPlugin(webpackConf, 'development'); + webpackConf = resolveFallback(webpackConf); if (overridesHandle && typeof overridesHandle === 'function') { const overrideWebpackConf = kktrc.default ? await overridesHandle(webpackConf, 'development', overrideOption) diff --git a/packages/resolve-fallback/README.md b/packages/resolve-fallback/README.md new file mode 100644 index 000000000..c9f3343f2 --- /dev/null +++ b/packages/resolve-fallback/README.md @@ -0,0 +1,21 @@ +

+ + KKT LOGO + +

+ +

+

@kkt/resolve-fallback

+

+ +

+ + npm version + +

+ +fix: https://github.com/kktjs/kkt/issues/412 + +### License + +Licensed under the MIT License \ No newline at end of file diff --git a/packages/resolve-fallback/package.json b/packages/resolve-fallback/package.json new file mode 100644 index 000000000..8d2d48c46 --- /dev/null +++ b/packages/resolve-fallback/package.json @@ -0,0 +1,34 @@ +{ + "name": "@kkt/resolve-fallback", + "version": "7.4.10", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "description": "This will modify the CRA ModuleScopePlugin plugin that prevents to import modules from outside the `src` directory.", + "author": "Kenny Wong (https://github.com/jaywcjlove)", + "repository": "https://github.com/kktjs/kkt.git", + "keywords": [ + "kkt", + "react", + "framework" + ], + "license": "MIT", + "files": [ + "lib", + "src" + ], + "scripts": { + "watch": "tsbb watch --no-esm" + }, + "devDependencies": { + "kkt": "^7.4.10" + }, + "dependencies": { + "assert": "^2.0.0", + "crypto-browserify": "^3.12.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "url": "^0.11.0" + } +} diff --git a/packages/resolve-fallback/src/index.ts b/packages/resolve-fallback/src/index.ts new file mode 100644 index 000000000..e98ca305c --- /dev/null +++ b/packages/resolve-fallback/src/index.ts @@ -0,0 +1,23 @@ +import webpack, { Configuration } from 'webpack'; + +export default function resolveFallback(conf: Configuration): Configuration { + if (!conf) { + throw Error('KKT:@kkt/resolve-fallback: there is no config found'); + } + conf.resolve.fallback = Object.assign(conf.resolve.fallback || {}, { + crypto: require.resolve('crypto-browserify'), + stream: require.resolve('stream-browserify'), + assert: require.resolve('assert'), + http: require.resolve('stream-http'), + https: require.resolve('https-browserify'), + os: require.resolve('os-browserify'), + url: require.resolve('url'), + }); + conf.plugins = (conf.plugins || []).concat([ + new webpack.ProvidePlugin({ + process: 'process/browser', + Buffer: ['buffer', 'Buffer'], + }), + ]); + return conf; +} diff --git a/packages/resolve-fallback/tsconfig.json b/packages/resolve-fallback/tsconfig.json new file mode 100644 index 000000000..18c78a07e --- /dev/null +++ b/packages/resolve-fallback/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "commonjs", + "esModuleInterop": true, + "skipLibCheck": true, + "declaration": true, + "target": "es2017", + "noImplicitAny": true, + "resolveJsonModule": true, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "lib", + "baseUrl": "./" + }, + "include": ["src"] +}