api
docs
env
git
hbs
html
husky
jest
lintstaged
lisp
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
// Toolsconst path = require("path");// Pluginsconst TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");// Variables - Directory Targetconst 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 Targetsconst srcIndex = "index.ts";// Variables - Environmentconst webpackMode = process.env.NODE_ENV === "production" ? "production" : "development";const isProduction = webpackMode === "production";// Main Webpack Configmodule.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: []};