Skip to content

Commit 760f0d6

Browse files
committed
feat: Introduce presets
1 parent 8b85b48 commit 760f0d6

File tree

3 files changed

+28
-7
lines changed

3 files changed

+28
-7
lines changed

packages/cli/createTsLib.js

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,20 @@ const packageJson = require('./package.json');
1212

1313
let projectName;
1414

15+
const PRESETS = {
16+
default: ['typescript_universal', 'webpack', 'karma_jasmine'],
17+
server: ['typescript_server']
18+
};
19+
1520
const program = new commander.Command(packageJson.name)
1621
.version(packageJson.version)
22+
.option(
23+
'-p, --preset [name]',
24+
`[ default | server ]
25+
* default: Typescript, Webpack, Karma, Jasmine
26+
* server: Typescript, ts-node, nodemon`,
27+
'default'
28+
)
1729
.arguments('<project-directory>')
1830
.usage(`${chalk.green('<project-directory>')}`)
1931
.action(name => {
@@ -36,9 +48,9 @@ if (typeof projectName === 'undefined') {
3648
process.exit(1);
3749
}
3850

39-
createApp(projectName);
51+
createApp(projectName, program.preset);
4052

41-
function createApp(name) {
53+
function createApp(name, preset) {
4254
const root = path.resolve(name);
4355
const appName = path.basename(root);
4456

@@ -51,7 +63,6 @@ function createApp(name) {
5163
console.log(`Creating a new TypeScript library in ${chalk.green(root)}.`);
5264
console.log();
5365

54-
const originalDirectory = process.cwd();
5566
process.chdir(root);
5667

5768
if (!semver.satisfies(process.version, '>=6.0.0')) {
@@ -74,23 +85,23 @@ function createApp(name) {
7485
);
7586
}
7687
}
77-
run(root, appName, originalDirectory);
88+
run(root, appName, preset);
7889
}
7990

80-
async function run(root, appName, originalDirectory) {
91+
async function run(root, appName, preset) {
8192
function installTemplate(templateName) {
8293
try {
8394
console.log(`loading ${templateName} template in ${path.resolve(__dirname)}`);
8495
const res = require('child_process')
85-
.execSync(`npm install ${templateName}`, { cwd: path.resolve(__dirname) })
96+
.execSync(`npm install -D ${templateName}`, { cwd: path.resolve(__dirname) })
8697
.toString()
8798
.trim();
8899
console.log(`${templateName} loaded successfully`);
89100
} catch (e) {
90101
console.log(`${templateName} err`);
91102
}
92103
}
93-
const templateName = '@nobrainr/typescript_universal-webpack-karma_jasmine';
104+
const templateName = getTemplateNameFromPreset(PRESETS[preset]);
94105
const templatePath = path.resolve(__dirname, 'node_modules', templateName);
95106
if (!fs.existsSync(templatePath)) {
96107
try {
@@ -113,6 +124,10 @@ async function run(root, appName, originalDirectory) {
113124
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
114125
console.log('Installing packages. This might take a couple of minutes.');
115126
return await install();
127+
128+
function getTemplateNameFromPreset(preset) {
129+
return `@nobrainr/${preset.join('-')}`;
130+
}
116131
}
117132

118133
function install() {

packages/cli/package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/cli/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
"create-ts-lib": "./index.js"
4242
},
4343
"dependencies": {
44+
"@nobrainr/typescript_server": "^1.0.0",
4445
"chalk": "^2.4.1",
4546
"commander": "^2.17.1",
4647
"cross-spawn": "^6.0.5",

0 commit comments

Comments
 (0)