spinjs
Version:
[](https://gitter.im/sysgears/spinjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [ • 1.3 kB
text/typescript
// tslint:disable-next-line
import { Configuration } from 'webpack';
import * as merge from 'webpack-merge';
import { Builder } from './Builder';
export default class Spin {
public dev: boolean;
public test: boolean;
public watch: boolean;
public cmd: string;
public cwd: string;
public options: any;
constructor(cwd, cmd) {
this.cmd = cmd;
this.cwd = cwd;
this.dev = ['watch', 'start', 'test'].indexOf(this.cmd) >= 0;
this.test = this.cmd === 'test';
this.watch = ['watch', 'start'].indexOf(this.cmd) >= 0;
}
public createConfig(builder: Builder, tool: string, config): Configuration {
const { merge: mergeStrategy, ...configOverrides } = builder[tool + 'Config'] || { merge: {} };
return this.mergeWithStrategy(mergeStrategy, config, configOverrides);
}
public merge(config: any, overrides: any): Configuration {
return merge.smart(config, overrides);
}
public mergeWithInStrategy(config: any, overrides: any): any {
const { merge: mergeStrategy, ...configOverrides } = overrides || { merge: {} };
return this.mergeWithStrategy(mergeStrategy, config, configOverrides);
}
public mergeWithStrategy(strategy: any, config: any, overrides: any): Configuration {
return merge.smartStrategy(strategy)(config, overrides);
}
}