Skip to content

Commit a7c44ae

Browse files
authored
Merge pull request #37 from nobrainr/feat/add-template-typescript-server
feat: base scaffolding of typescript server module
2 parents 12e0798 + 2e64e7e commit a7c44ae

File tree

13 files changed

+2839
-10
lines changed

13 files changed

+2839
-10
lines changed

.circleci/config.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,25 @@ jobs:
2323
- run: npm run build
2424
- run: npm test
2525

26+
test-preset-node8:
27+
docker:
28+
- image: circleci/node:10-browsers
29+
working_directory: ~/repo
30+
steps:
31+
- checkout
32+
- run: npm install
33+
- run: npm run build
34+
- run: cd packages/e2e && npm run test:preset
35+
test-preset-node10:
36+
docker:
37+
- image: circleci/node:10-browsers
38+
working_directory: ~/repo
39+
steps:
40+
- checkout
41+
- run: npm install
42+
- run: npm run build
43+
- run: cd packages/e2e && npm run test:preset
44+
2645
publish-job:
2746
docker:
2847
- image: circleci/node:10
@@ -41,12 +60,17 @@ workflows:
4160
test:
4261
jobs:
4362
- test-job-8
63+
- test-preset-node8
4464
- test-job-10
65+
- test-preset-node10
66+
4567
- publish-job:
4668
filters:
4769
branches:
4870
only:
4971
- master
5072
requires:
5173
- test-job-8
74+
- test-preset-node8
5275
- test-job-10
76+
- test-preset-node10

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",

packages/e2e/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
"private": true,
66
"main": "index.js",
77
"scripts": {
8-
"pretest": "rimraf app",
9-
"test": "create-ts-lib app && cd app && npm run build && npm run test"
8+
"clean": "rimraf app",
9+
"test": "npm run clean && create-ts-lib app && cd app && npm run build && npm run test",
10+
"test:preset": "npm run clean && create-ts-lib --preset server app && cd app && npm run build && ls -l ./dist"
1011
},
1112
"dependencies": {
1213
"create-ts-lib": "^0.4.0",
@@ -16,6 +17,6 @@
1617
"author": "",
1718
"license": "ISC",
1819
"devDependencies": {
19-
"create-ts-lib": "0.4.0"
20+
"create-ts-lib": "^0.4.0"
2021
}
2122
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Build results
2+
dist/
3+
typings/**/*
4+
5+
# Others
6+
~$*
7+
*~
8+
node_modules/
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"watch": ["src/**/*.ts"],
3+
"execMap": {
4+
"ts": "ts-node --compilerOptions '{\"module\":\"commonjs\"}'",
5+
"js": "node"
6+
}
7+
}

0 commit comments

Comments
 (0)