|
1 | | -import {readFileSync} from 'fs'; |
2 | 1 | import {pathExists} from 'fs-extra'; |
3 | 2 | import {join} from 'path'; |
4 | | -// import {create, CreateOptions} from 'ts-node'; |
5 | | -import {createContext, runInContext} from 'vm'; |
| 3 | +import * as yargs from 'yargs'; |
6 | 4 | import {ScullyConfig} from '..'; |
7 | | -import {configValidator, registerPlugin} from '../pluginManagement/pluginRepository'; |
8 | 5 | import {angularRoot, scullyConfig} from './config'; |
9 | | -import {routeSplit} from './routeSplit'; |
| 6 | + |
| 7 | +export const {configFile: configFileName} = yargs |
| 8 | + .string('cf') |
| 9 | + .alias('cf', 'configFile') |
| 10 | + .default('cf', 'scully.config.js') |
| 11 | + .describe('cf', 'provide name for config file').argv; |
10 | 12 |
|
11 | 13 | export const compileConfig = async (): Promise<ScullyConfig> => { |
12 | 14 | try { |
13 | | - const filename = 'scully.config.js'; |
14 | | - const path = join(angularRoot, filename); |
| 15 | + const path = join(angularRoot, configFileName); |
15 | 16 | if (!(await pathExists(path))) { |
16 | 17 | /** no ts config, nothing to do. */ |
17 | 18 | return ({} as unknown) as ScullyConfig; |
18 | 19 | } |
19 | | - const runtimeEnvironment = createContext({ |
20 | | - exports: {}, |
21 | | - console, |
22 | | - registerPlugin, |
23 | | - configValidator, |
24 | | - routeSplit, |
25 | | - global, |
26 | | - require: (requirePath: string) => (requirePath.startsWith('@') ? require(requirePath) : require(join(angularRoot, requirePath))), |
27 | | - }); |
28 | | - // const tsCompilerConfig: CreateOptions = { |
29 | | - // logError: true, |
30 | | - // compilerOptions: { |
31 | | - // sourceMap: true, |
32 | | - // target: 'es2018', |
33 | | - // module: 'commonjs', |
34 | | - // lib: ['dom', 'es2018'], |
35 | | - // types: ['../types.d.ts'] |
36 | | - // // typeRoots: ['node', '/scully/bin/utils/routeSplit.d.ts'], |
37 | | - // }, |
38 | | - // }; |
39 | | - // const ts = create(tsCompilerConfig); |
40 | | - const tsCode = readFileSync(path).toString(); |
41 | | - // const jsCode = ts.compile(tsCode, filename, 0); |
42 | | - const jsCode = tsCode; |
43 | | - runInContext(jsCode, runtimeEnvironment, {filename, displayErrors: true}); |
44 | | - return runtimeEnvironment.exports.config; |
| 20 | + const {config} = await import(path); |
| 21 | + return config; |
45 | 22 | } catch (e) { |
46 | 23 | console.error(e); |
47 | 24 | return ({} as unknown) as ScullyConfig; |
|
0 commit comments