Skip to content

Commit 19d5e00

Browse files
test release of create-ts-web-app
0 parents  commit 19d5e00

File tree

13 files changed

+276
-0
lines changed

13 files changed

+276
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

bin/index.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env node
2+
const { program } = require('commander');
3+
const fs = require('fs-extra');
4+
const path = require('path');
5+
const { spawnSync } = require('child_process');
6+
7+
const templatePackageJson = require('../template/package.json');
8+
const packageJson = require('../package.json');
9+
10+
let projectName;
11+
12+
program
13+
.version(packageJson.version)
14+
.arguments('<project-directory>')
15+
.action(name => {
16+
projectName = name;
17+
})
18+
.parse(process.arg);
19+
20+
createApp({ name: projectName });
21+
22+
23+
function createApp({ name }) {
24+
console.log('Installing...');
25+
26+
const root = path.resolve(name);
27+
const templateDirPath = path.resolve(__dirname, '../', 'template');
28+
fs.ensureDirSync(root);
29+
fs.copySync(templateDirPath, root);
30+
fs.writeFileSync(
31+
path.join(root, 'package.json'),
32+
updatePackageJson()
33+
);
34+
install({ cwd: root });
35+
}
36+
37+
function updatePackageJson() {
38+
const updateTemplatePackageJson = { ...templatePackageJson };
39+
updateTemplatePackageJson.name = projectName;
40+
41+
return JSON.stringify(updateTemplatePackageJson, null, 2);
42+
}
43+
44+
function install({ cwd }) {
45+
spawnSync('npm', ['install'], { cwd });
46+
}

package-lock.json

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

package.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "create-ts-web-app",
3+
"version": "0.0.1",
4+
"description": "Create base template for ts web app",
5+
"license": "MIT",
6+
"bin": {
7+
"create-ts-web-app": "./bin/index.js"
8+
},
9+
"author": "Aleksandr Voloshchenko <[email protected]>",
10+
"dependencies": {
11+
"commander": "^5.0.0",
12+
"fs-extra": "^9.0.0"
13+
}
14+
}

template/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules
2+
/build

template/package.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"name": "create-ts-web-app",
3+
"version": "1.0.0",
4+
"description": "",
5+
"private": true,
6+
"scripts": {
7+
"build": "webpack --config webpack.prod.config.js",
8+
"start": "webpack-dev-server --open"
9+
},
10+
"keywords": [],
11+
"author": "",
12+
"license": "ISC",
13+
"devDependencies": {
14+
"clean-webpack-plugin": "^3.0.0",
15+
"css-loader": "^3.5.2",
16+
"html-webpack-plugin": "^4.2.0",
17+
"mini-css-extract-plugin": "^0.9.0",
18+
"sass": "^1.26.3",
19+
"sass-loader": "^8.0.2",
20+
"style-loader": "^1.1.3",
21+
"ts-loader": "^7.0.0",
22+
"typescript": "^3.8.3",
23+
"webpack": "^4.42.1",
24+
"webpack-cli": "^3.3.11",
25+
"webpack-dev-server": "^3.10.3"
26+
}
27+
}

template/public/index.html

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Create ts web app</title>
7+
</head>
8+
<body>
9+
10+
</body>
11+
</html>

template/src/app.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export const initApp = () => {
2+
document.addEventListener('DOMContentLoaded', () => {
3+
const h1 = document.createElement('h1');
4+
h1.innerText = 'Hello world!';
5+
document.body.appendChild(h1);
6+
});
7+
}

template/src/index.scss

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
html {
2+
height: 100%;
3+
}
4+
5+
body {
6+
margin: 0;
7+
padding: 0;
8+
line-height: 1.6;
9+
font-size: 16px;
10+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
11+
display: flex;
12+
justify-content: center;
13+
align-items: center;
14+
height: 100%;
15+
}

template/src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { initApp } from './app';
2+
import './index.scss';
3+
4+
initApp();

0 commit comments

Comments
 (0)