From 9dcd287c6112992a98e82cddb8cb6615dbef8e8e Mon Sep 17 00:00:00 2001 From: Alexey Date: Fri, 6 Oct 2023 11:13:58 +0200 Subject: [PATCH] fix: double build (#2045) --- webapp/packages/core-blocks/package.json | 1 + .../core-cli/configs/webpack.config.js | 49 ++++++++++--------- .../configs/webpack.product.config.js | 4 +- .../configs/webpack.product.dev.config.js | 4 +- .../core-cli/configs/webpack.product.utils.js | 2 +- ...rceResolver.js => SourceAssetsResolver.js} | 12 ++--- webapp/tsconfig.base.json | 2 +- 7 files changed, 39 insertions(+), 35 deletions(-) rename webapp/packages/core-cli/utils/{CSSSourceResolver.js => SourceAssetsResolver.js} (87%) diff --git a/webapp/packages/core-blocks/package.json b/webapp/packages/core-blocks/package.json index d4d441f042..a06b67d354 100644 --- a/webapp/packages/core-blocks/package.json +++ b/webapp/packages/core-blocks/package.json @@ -3,6 +3,7 @@ "sideEffects": [ "src/**/*.css", "src/**/*.scss", + "public/**", "public/**/*" ], "version": "0.1.0", diff --git a/webapp/packages/core-cli/configs/webpack.config.js b/webapp/packages/core-cli/configs/webpack.config.js index 3f6650ac86..1d3d55133c 100644 --- a/webapp/packages/core-cli/configs/webpack.config.js +++ b/webapp/packages/core-cli/configs/webpack.config.js @@ -1,11 +1,10 @@ const { resolve } = require('path'); const PnpWebpackPlugin = require('pnp-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const { CSSSourceResolver } = require('../utils/CSSSourceResolver.js'); +const { SourceAssetsResolver } = require('../utils/SourceAssetsResolver.js'); const { IgnoreNotFoundExportPlugin } = require('../utils/IgnoreNotFoundExportPlugin.js'); const excludedFromVendor = require('./excludedFromVendor.js'); - -const supportedStyles = /\.(css|s[ac]ss)$/; +const webpack = require('webpack'); const nodeModules = [ resolve('node_modules'), // product @@ -154,7 +153,7 @@ module.exports = (env, argv) => { resolve: { extensions: ['.ts', '.tsx', '.wasm', '.mjs', '.js', '.jsx', '.json'], modules: nodeModules, - plugins: [PnpWebpackPlugin, new CSSSourceResolver(supportedStyles)], + plugins: [PnpWebpackPlugin, new SourceAssetsResolver(['.json5', '.css', '.scss'])], }, resolveLoader: { modules: nodeModules, @@ -162,33 +161,18 @@ module.exports = (env, argv) => { }, module: { rules: [ - devMode && { - test: /\.jsx?$/, - enforce: 'pre', - exclude: /node_modules/, - use: ['source-map-loader'], - }, - { - test: /\.json5$/i, - loader: 'json5-loader', - type: 'javascript/auto', - }, - { - test: /\.jsx?$/, - exclude: /node_modules/, - use: ['thread-loader', babelLoader], - }, { test: /\.tsx?$/, exclude: /node_modules/, use: [ - // 'thread-loader', - babelLoader, { loader: 'ts-loader', options: { // happyPackMode: true, // transpileOnly: true, + compilerOptions: { + sourceMap: devMode, + }, projectReferences: true, ignoreDiagnostics: [6059, 2307], }, @@ -196,7 +180,23 @@ module.exports = (env, argv) => { ], }, { - test: supportedStyles, + test: /\.json5$/i, + loader: 'json5-loader', + type: 'javascript/auto', + }, + devMode && { + test: /\.jsx?$/, + enforce: 'pre', + exclude: /node_modules/, + use: ['source-map-loader'], + }, + { + test: /\.jsx?$/, + exclude: /node_modules/, + use: ['thread-loader', babelLoader], + }, + { + test: /\.(css|s[ac]ss)$/, exclude: /node_modules/, oneOf: [ { @@ -260,6 +260,9 @@ module.exports = (env, argv) => { // }, // }, // }), + // new webpack.WatchIgnorePlugin({ + // paths: [/\.jsx?$/, /\.d\.[cm]ts$/], + // }), new IgnoreNotFoundExportPlugin(), new MiniCssExtractPlugin({ filename: devMode ? 'styles/[name].css' : 'styles/[name].[contenthash].css', diff --git a/webapp/packages/core-cli/configs/webpack.product.config.js b/webapp/packages/core-cli/configs/webpack.product.config.js index b2dcb5fa61..2a9c1f7814 100644 --- a/webapp/packages/core-cli/configs/webpack.product.config.js +++ b/webapp/packages/core-cli/configs/webpack.product.config.js @@ -10,8 +10,8 @@ const commonConfig = require('./webpack.config.js'); const { getAssets, withTimestamp } = require('./webpack.product.utils'); const HtmlInjectWebpackPlugin = require('../utils/HtmlInjectWebpackPlugin.js'); -const main = resolve('src/index.ts'); -const sso = require.resolve('@cloudbeaver/plugin-sso/src/index.ts'); +const main = resolve('dist/index.js'); +const sso = require.resolve('@cloudbeaver/plugin-sso/dist/index.js'); const ssoHtmlTemplate = require.resolve('@cloudbeaver/plugin-sso/src/index.html.ejs'); const outputDir = resolve('lib'); const package = require(resolve('package.json')); diff --git a/webapp/packages/core-cli/configs/webpack.product.dev.config.js b/webapp/packages/core-cli/configs/webpack.product.dev.config.js index e6d89a05a8..c6cafab724 100644 --- a/webapp/packages/core-cli/configs/webpack.product.dev.config.js +++ b/webapp/packages/core-cli/configs/webpack.product.dev.config.js @@ -6,8 +6,8 @@ const fs = require('fs'); const { URL } = require('url'); const commonConfig = require('./webpack.config.js'); -const index = resolve('src/index.ts'); -const sso = require.resolve('@cloudbeaver/plugin-sso/src/index.ts'); +const index = resolve('dist/index.js'); +const sso = require.resolve('@cloudbeaver/plugin-sso/dist/index.js'); const ssoHtmlTemplate = require.resolve('@cloudbeaver/plugin-sso/src/index.html.ejs'); const { getAssets } = require('./webpack.product.utils'); diff --git a/webapp/packages/core-cli/configs/webpack.product.utils.js b/webapp/packages/core-cli/configs/webpack.product.utils.js index 1cb255e675..c24839982c 100644 --- a/webapp/packages/core-cli/configs/webpack.product.utils.js +++ b/webapp/packages/core-cli/configs/webpack.product.utils.js @@ -3,7 +3,7 @@ const { resolve } = require('path'); const { getCloudBeaverDeps } = require('../utils/getCloudBeaverDeps'); function getServiceWorkerSource() { - return require.resolve('@cloudbeaver/core-browser/src/service-worker.ts'); + return require.resolve('@cloudbeaver/core-browser/dist/service-worker.js'); } function withTimestamp(version) { diff --git a/webapp/packages/core-cli/utils/CSSSourceResolver.js b/webapp/packages/core-cli/utils/SourceAssetsResolver.js similarity index 87% rename from webapp/packages/core-cli/utils/CSSSourceResolver.js rename to webapp/packages/core-cli/utils/SourceAssetsResolver.js index 9a8fdd1086..6f9862b1cf 100644 --- a/webapp/packages/core-cli/utils/CSSSourceResolver.js +++ b/webapp/packages/core-cli/utils/SourceAssetsResolver.js @@ -6,22 +6,22 @@ * you may not use this file except in compliance with the License. */ -class CSSSourceResolver { +class SourceAssetsResolver { // https://github.com/webpack/enhanced-resolve/ - constructor(supportedStyles) { + constructor(extensions) { this.source = 'after-normal-resolve'; this.target = 'relative'; - this.supportedStyles = supportedStyles; + this.extensions = extensions; } apply(resolver) { const target = resolver.ensureHook(this.target); - resolver.getHook(this.source).tapAsync('CSSSourceResolver', (request, resolveContext, callback) => { + resolver.getHook(this.source).tapAsync('SourceAssetsResolver', (request, resolveContext, callback) => { const descriptionFileRoot = /** @type {string} */ (request.descriptionFileRoot); let relativePath = /** @type {string} */ (request.relativePath); const requestRequest = /** @type {string | undefined} */ (request.request); - if (this.supportedStyles.test(requestRequest) && relativePath.startsWith('./dist')) { + if (relativePath?.startsWith('./dist') && this.extensions.some(ext => requestRequest?.endsWith(ext))) { relativePath = './' + resolver.join(relativePath.replace('./dist', './src'), requestRequest); const path = resolver.join(descriptionFileRoot, relativePath); const obj = { @@ -40,7 +40,7 @@ class CSSSourceResolver { } module.exports = { - CSSSourceResolver, + SourceAssetsResolver, }; // class CSSSourceResolver { diff --git a/webapp/tsconfig.base.json b/webapp/tsconfig.base.json index 177fc7f34b..7b315a44e2 100644 --- a/webapp/tsconfig.base.json +++ b/webapp/tsconfig.base.json @@ -3,7 +3,7 @@ "baseUrl": ".", "allowUnreachableCode": false, "allowSyntheticDefaultImports": true, - "allowJs": true, + "allowJs": false, "lib": ["dom", "ES2019", "ES2022.Error"], "experimentalDecorators": true, "emitDecoratorMetadata": true,