From 02d2befc8a618f77f327640ee5d8496802d67bc8 Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Sun, 7 Mar 2021 19:33:42 +0100 Subject: [PATCH] refactor: simplify project file lookup --- .../__tests__/configuration/svelte.spec.ts | 7 ++--- packages/webpack5/package.json | 3 +- packages/webpack5/scripts/injectGlobals.ts | 30 ------------------- packages/webpack5/src/bin/index.ts | 2 +- packages/webpack5/src/configuration/svelte.ts | 17 ++++++----- packages/webpack5/src/globals.d.ts | 2 +- packages/webpack5/src/helpers/project.ts | 14 +++++++-- 7 files changed, 26 insertions(+), 49 deletions(-) delete mode 100644 packages/webpack5/scripts/injectGlobals.ts diff --git a/packages/webpack5/__tests__/configuration/svelte.spec.ts b/packages/webpack5/__tests__/configuration/svelte.spec.ts index 3cac8e0df..579135d4a 100644 --- a/packages/webpack5/__tests__/configuration/svelte.spec.ts +++ b/packages/webpack5/__tests__/configuration/svelte.spec.ts @@ -1,11 +1,10 @@ import Config from 'webpack-chain'; import svelte from '../../src/configuration/svelte'; import { init } from '../../src'; -import { mockFile } from '../../scripts/jest.mockFiles'; -mockFile('./svelte.config.js', ''); -// jest.mock('__jest__/svelte.config.js', () => { -// }, { virtual: true }) +jest.mock('__jest__/svelte.config.js', () => { + +}, { virtual: true }) describe('svelte configuration', () => { const platforms = ['ios', 'android']; diff --git a/packages/webpack5/package.json b/packages/webpack5/package.json index 6f26433c5..1c211d8cb 100644 --- a/packages/webpack5/package.json +++ b/packages/webpack5/package.json @@ -11,7 +11,7 @@ }, "license": "Apache-2.0", "scripts": { - "build": "tsc --project tsconfig.build.json && ts-node ./scripts/injectGlobals.ts dist/index.js __TEST__=false", + "build": "tsc --project tsconfig.build.json", "test": "jest", "prepack": "npm run build && cp -R src/stubs dist/stubs && chmod +x dist/bin/index.js" }, @@ -65,7 +65,6 @@ "memfs": "^3.2.0", "nativescript-vue-template-compiler": "^2.8.2", "ts-jest": "^26.5.2", - "ts-node": "^9.1.1", "typescript": "^4.2.2", "unionfs": "^4.4.0" }, diff --git a/packages/webpack5/scripts/injectGlobals.ts b/packages/webpack5/scripts/injectGlobals.ts deleted file mode 100644 index 22c90f341..000000000 --- a/packages/webpack5/scripts/injectGlobals.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { readFileSync, writeFileSync, existsSync } from 'fs'; -import { program } from 'commander'; -import { resolve } from 'path'; - -program - .description('Inject globals into a dist file') - .arguments(' ') - .parse(process.argv); - -const target = resolve(program.args[0]); - -if (!existsSync(target)) { - console.log(`Invalid target: ${program.args[0]}. ${target} does not exist.`); - - process.exit(1); -} - -const globals = program.args.slice(1); -const toInject = globals.map((global) => { - const [name, value] = global.split('='); - return `global.${name} = ${value};`; -}); - -console.log(`Injecting to ${target}:`); -console.log(toInject.join('\n')); - -let fileContents = readFileSync(target).toString(); -fileContents = `${fileContents}\n${toInject.join('\n')}`; - -writeFileSync(target, fileContents); diff --git a/packages/webpack5/src/bin/index.ts b/packages/webpack5/src/bin/index.ts index 7a5f2f65f..a3c29b5c1 100644 --- a/packages/webpack5/src/bin/index.ts +++ b/packages/webpack5/src/bin/index.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env node +#!/bin/env node import { redBright, green, greenBright } from 'chalk'; import { program } from 'commander'; diff --git a/packages/webpack5/src/configuration/svelte.ts b/packages/webpack5/src/configuration/svelte.ts index 6fecf2e7c..5d77c405f 100644 --- a/packages/webpack5/src/configuration/svelte.ts +++ b/packages/webpack5/src/configuration/svelte.ts @@ -1,6 +1,6 @@ import Config from 'webpack-chain'; -import { getProjectRootPath } from '../helpers/project'; +import { getProjectFilePath, getProjectRootPath } from '../helpers/project'; import { getPlatformName } from '../helpers/platform'; import { env as _env, IWebpackEnv } from '../index'; import { error } from '../helpers/log'; @@ -52,15 +52,16 @@ function getSvelteConfigPreprocessor(): any { return config?.preprocess; } -function getSvelteConfig(): { preprocess: any } | undefined { +interface ISvelteConfig { + preprocess: any +} + +function getSvelteConfig(): ISvelteConfig | undefined { try { - const resolvedPath = require.resolve(`./svelte.config.js`, { - paths: [getProjectRootPath()], - }); - return require(resolvedPath); + return require( + getProjectFilePath('svelte.config.js') + ) as ISvelteConfig; } catch (err) { - // todo: remove when jest supports mocking require.resolve - if (__TEST__) return; error('Could not find svelte.config.js.', err); } } diff --git a/packages/webpack5/src/globals.d.ts b/packages/webpack5/src/globals.d.ts index b861b6498..d2209bc77 100644 --- a/packages/webpack5/src/globals.d.ts +++ b/packages/webpack5/src/globals.d.ts @@ -1 +1 @@ -declare var __TEST__: boolean; +// define globals here diff --git a/packages/webpack5/src/helpers/project.ts b/packages/webpack5/src/helpers/project.ts index bdc874b0e..b12b07691 100644 --- a/packages/webpack5/src/helpers/project.ts +++ b/packages/webpack5/src/helpers/project.ts @@ -19,7 +19,15 @@ interface IPackageJson { * Utility function to get the contents of the project package.json */ export function getPackageJson() { - const packageJsonPath = resolve(getProjectRootPath(), 'package.json'); - - return require(packageJsonPath) as IPackageJson; + return require( + getProjectFilePath('package.json') + ) as IPackageJson; +} + +/** + * Utility to get project files relative to the project root. + * @param filePath path to get + */ +export function getProjectFilePath(filePath: string): string { + return resolve(getProjectRootPath(), filePath); }