Skip to content

Commit 44208b6

Browse files
authored
Merge pull request #35 from nobrainr/feat/template-as-npm-package
Feat/template as npm package
2 parents 3c480dc + cfef19c commit 44208b6

File tree

18 files changed

+15241
-6673
lines changed

18 files changed

+15241
-6673
lines changed

lerna.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
"ignoreChanges": ["*.npmrc"]
55
}
66
},
7-
"packages": ["packages/*"],
8-
"version": "0.3.1"
7+
"packages": ["packages/cli", "packages/e2e", "packages/templates/*"],
8+
"version": "independent"
99
}

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
{
22
"name": "typescript-webpack-starter",
33
"version": "0.2.0",
4-
"description": "A damn simple starter for Typescript and Webpack",
4+
"description": "",
5+
"private": true,
56
"main": "src/index.ts",
67
"scripts": {
78
"build": "lerna bootstrap",
8-
"update-cli-in-e2e": "lerna add create-ts-lib packages/e2e",
9+
"update-cli-in-e2e": "lerna add create-ts-lib --scope=e2e --dev --exact",
910
"test": "cd packages/e2e && npm test",
1011
"publish": "lerna run publish-cli"
1112
},

packages/cli/createTsLib.js

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -77,22 +77,42 @@ function createApp(name) {
7777
run(root, appName, originalDirectory);
7878
}
7979

80-
function run(root, appName, originalDirectory) {
81-
const templatePath = path.resolve(__dirname, 'template');
82-
if (fs.existsSync(templatePath)) {
83-
fs.copySync(templatePath, root);
84-
let packageJsonPath = path.join(root, 'package.json');
85-
let packageJson = require(packageJsonPath);
86-
packageJson.name = appName;
87-
packageJson.version = '0.0.1';
88-
89-
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
90-
console.log('Installing packages. This might take a couple of minutes.');
91-
return install();
92-
} else {
93-
console.error(`Could not locate supplied template: ${chalk.green(templatePath)}`);
94-
return;
80+
async function run(root, appName, originalDirectory) {
81+
function installTemplate(templateName) {
82+
try {
83+
console.log('loading template', templateName);
84+
const res = require('child_process')
85+
.execSync(`npm install ${templateName}`)
86+
.toString()
87+
.trim();
88+
console.log(`${templateName} loaded successfully`);
89+
} catch (e) {
90+
console.log(`${templateName} err`);
91+
}
92+
}
93+
const templateName = '@nobrainr/typescript_universal-webpack-karma_jasmine';
94+
const templatePath = path.resolve(__dirname, 'node_modules', templateName);
95+
if (!fs.existsSync(templatePath)) {
96+
try {
97+
installTemplate(templateName);
98+
} catch (e) {
99+
console.log(e);
100+
}
95101
}
102+
fs.copySync(templatePath, root, {
103+
dereference: true,
104+
filter: function(path) {
105+
return path.indexOf(`${templateName}/node_modules`) === -1;
106+
}
107+
});
108+
let packageJsonPath = path.join(root, 'package.json');
109+
let packageJson = require(packageJsonPath);
110+
packageJson.name = appName;
111+
packageJson.version = '0.0.1';
112+
113+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
114+
console.log('Installing packages. This might take a couple of minutes.');
115+
return await install();
96116
}
97117

98118
function install() {

0 commit comments

Comments
 (0)