From c3efab3abce42e64bde97132c056d3aba9d5143b Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Sat, 2 Jan 2021 16:27:00 +0100 Subject: [PATCH] refactor: simplify copy handling --- packages/webpack5/package.json | 1 - packages/webpack5/src/configuration/base.ts | 20 +++++++------ packages/webpack5/src/configuration/svelte.ts | 3 +- packages/webpack5/src/helpers/copyRules.ts | 29 ++++++++++++++----- 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/packages/webpack5/package.json b/packages/webpack5/package.json index 5b8023983..9ed0e6d97 100644 --- a/packages/webpack5/package.json +++ b/packages/webpack5/package.json @@ -39,7 +39,6 @@ "sass-loader": "^10.1.0", "sax": "^1.2.4", "source-map": "^0.7.3", - "svelte-native-preprocessor": "^0.2.0", "terser-webpack-plugin": "^5.0.3", "ts-dedent": "^2.0.0", "ts-loader": "^8.0.11", diff --git a/packages/webpack5/src/configuration/base.ts b/packages/webpack5/src/configuration/base.ts index e4dd6b2ca..93f5c9ff8 100644 --- a/packages/webpack5/src/configuration/base.ts +++ b/packages/webpack5/src/configuration/base.ts @@ -1,5 +1,6 @@ import { DefinePlugin, HotModuleReplacementPlugin } from 'webpack'; import Config from 'webpack-chain'; +import { resolve } from 'path'; import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; @@ -10,6 +11,7 @@ import TerserPlugin from 'terser-webpack-plugin'; import { PlatformSuffixPlugin } from '../plugins/PlatformSuffixPlugin'; import { addCopyRule, applyCopyRules } from '../helpers/copyRules'; import { WatchStatePlugin } from '../plugins/WatchStatePlugin'; +import { getProjectRootPath } from '../helpers/project'; import { hasDependency } from '../helpers/dependencies'; import { IWebpackEnv } from '../index'; import { @@ -18,8 +20,6 @@ import { getEntryDirPath, getEntryPath, } from '../helpers/platform'; -import { getProjectRootPath } from '../helpers/project'; -import { resolve } from 'path'; export default function (config: Config, env: IWebpackEnv): Config { const entryPath = getEntryPath(); @@ -269,13 +269,15 @@ export default function (config: Config, env: IWebpackEnv): Config { config.when(env.report, (config) => { const projectRoot = getProjectRootPath(); - config.plugin('BundleAnalyzerPlugin').use(BundleAnalyzerPlugin, [{ - analyzerMode: 'static', - generateStatsFile: true, - openAnalyzer: false, - reportFilename: resolve(projectRoot, 'report', 'report.html'), - statsFilename: resolve(projectRoot, 'report', 'stats.json'), - }]); + config.plugin('BundleAnalyzerPlugin').use(BundleAnalyzerPlugin, [ + { + analyzerMode: 'static', + generateStatsFile: true, + openAnalyzer: false, + reportFilename: resolve(projectRoot, 'report', 'report.html'), + statsFilename: resolve(projectRoot, 'report', 'stats.json'), + }, + ]); }); return config; diff --git a/packages/webpack5/src/configuration/svelte.ts b/packages/webpack5/src/configuration/svelte.ts index 2e6528df5..6fecf2e7c 100644 --- a/packages/webpack5/src/configuration/svelte.ts +++ b/packages/webpack5/src/configuration/svelte.ts @@ -1,9 +1,8 @@ -import svelteNativePreprocessor from 'svelte-native-preprocessor'; import Config from 'webpack-chain'; import { getProjectRootPath } from '../helpers/project'; -import { env as _env, IWebpackEnv } from '../index'; import { getPlatformName } from '../helpers/platform'; +import { env as _env, IWebpackEnv } from '../index'; import { error } from '../helpers/log'; import base from './base'; diff --git a/packages/webpack5/src/helpers/copyRules.ts b/packages/webpack5/src/helpers/copyRules.ts index d425e96d1..a7cbdd242 100644 --- a/packages/webpack5/src/helpers/copyRules.ts +++ b/packages/webpack5/src/helpers/copyRules.ts @@ -1,8 +1,10 @@ import CopyWebpackPlugin from 'copy-webpack-plugin'; import { relative, resolve } from 'path'; -import { env } from '..'; -import { getEntryDirPath } from './platform'; +import Config from 'webpack-chain'; + import { getProjectRootPath } from './project'; +import { getEntryDirPath } from './platform'; +import { env } from '..'; /** * @internal @@ -37,17 +39,28 @@ export function removeCopyRule(glob: string) { /** * @internal */ -export function applyCopyRules(config) { +export function applyCopyRules(config: Config) { + const entryDir = getEntryDirPath(); + // todo: handle empty appResourcesPath? + // (the CLI should always pass the path - maybe not required) + const appResourcesFullPath = resolve( + getProjectRootPath(), + env.appResourcesPath + ); + + const globOptions = { + dot: false, + ignore: [ + // ignore everything in App_Resources (regardless where they are located) + `${relative(entryDir, appResourcesFullPath)}/**`, + ], + }; - const context = getEntryDirPath(); - const projectRoot = getProjectRootPath(); - const appResourcesFullPath = resolve(projectRoot, env.appResourcesPath); - const globOptions = { dot: false, ignore: [`**/${relative(context, appResourcesFullPath)}/**`] }; config.plugin('CopyWebpackPlugin').use(CopyWebpackPlugin, [ { patterns: Array.from(copyRules).map((glob) => ({ from: glob, - context, + context: entryDir, noErrorOnMissing: true, globOptions, })),