tmpl-cli
api
docs
env
git
hbs
html
husky
jest
lintstaged
lisp
node
Summarynode initnode init -t
prettier
python
react
readme
schema
style
util
vue
web

$ tmpl node init -t

Initialize a node project.

Force Typescript

Files

project
└─src
└──index.ts
└─package.json
└─tsconfig.json
└─webpack.config.js

index.ts

const main = () => {
console.log("Node Working");
};
if (require.main === module) {
main();
}

package.json

{
"name": "project",
"version": "0.0.0",
"description": "",
"scripts": {
"start": "ts-node ./src/index.ts"
},
"keywords": [],
"author": "developer<developer@developer.dev>",
"license": "ISC",
"dependencies": {},
"devDependencies": {
"@types/node": "^14.14.22",
"ts-loader": "^8.0.14",
"ts-node": "^9.1.1",
"tsconfig-paths-webpack-plugin": "^3.3.0",
"typescript": "^4.1.3",
"webpack-cli": "^3.3.12",
"webpack": "^4.44.2"
}
}

tsconfig.json

{
"compilerOptions": {
"target": "ES5", // WCs need ES2015 or better
"module": "commonjs",
"lib": [
"dom",
"es5",
"es2015",
"es2015.collection",
"es2015.iterable"
],
"outDir": "./dist",
"allowSyntheticDefaultImports": true,
"importHelpers": true,
"downlevelIteration": true,
"strict": true,
"moduleResolution": "node",
"baseUrl": ".",
"paths": {
"@modules/*": ["./node_modules/*"],
"@env/*": ["./env/*"],
"@api/*": ["./src/api/*"],
"@assets/*": ["./src/assets/*"],
"@components/*": ["./src/components/*"],
"@stores/*" : ["./src/stores/*"],
"@styles/*" : ["./src/styles/*"],
"@utils/*": ["./src/utils/*"]
},
"esModuleInterop": true,
"experimentalDecorators": true,
"resolveJsonModule": true
},
"include": [
"./src/**/*",
"./types/**/*"
],
"exclude": [
"node_modules"
]
}

webpack.config.js

// Tools
const path = require("path");
// Plugins
const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
// Variables - Directory Target
const dir = path.resolve(__dirname);
const srcDir = path.join(dir, "src");
const distDir = path.join(dir, "dist");
const nodeModulesDir = path.join(dir, "node_modules");
// Variables - File Targets
const srcIndex = "index.ts";
// Variables - Environment
const webpackMode = process.env.NODE_ENV === "production" ? "production" : "development";
const isProduction = webpackMode === "production";
// Main Webpack Config
module.exports = {
target: "node",
mode: webpackMode,
entry: path.join(srcDir, srcIndex),
output: {
path: path.resolve(distDir),
filename: "[name].js"
},
resolve: {
alias: [],
extensions: [".js", ".ts", ".json"],
mainFields: ["main", "module"],
plugins: [new TsconfigPathsPlugin({ configFile: path.join(dir, "tsconfig.json") })]
},
module: {
rules: [
{
test: /.(ts|tsx)$/,
use: "ts-loader",
include: dir,
exclude: [nodeModulesDir, /.test.tsx?$/]
}
]
},
plugins: []
};