/* * Copyright (C) SapphireCode - All Rights Reserved * This file is part of Snippeteer which is released under BSD-3-Clause. * See file 'LICENSE' for full license details. * Created by Timo Hocker , April 2020 */ import path from 'path'; import { Input } from 'enquirer'; import { Snippet } from '../../Snippet'; import { apply_template, modify_json, run_command } from '../../Helper'; import eslintrc from './template/eslintrc.asset'; import npmrc from './template/npmrc.asset'; import index from './template/index.asset'; import gitignore from './template/gitignore.asset'; export class Node implements Snippet { public async start (): Promise { const folder = await new Input ( { message: 'project name (leave empty for current folder):' } ) .run (); await apply_template (eslintrc, path.join (folder, '.eslintrc.js')); await apply_template (npmrc, path.join (folder, '.npmrc')); await apply_template (index, path.join (folder, 'index.js')); await apply_template (gitignore, path.join (folder, '.gitignore')); await run_command ('git init', folder); await run_command ('yarn init -y', folder); await run_command ( 'yarn add --dev @scode/eslint-config eslint nyc ava', folder ); await modify_json ((obj) => { obj.scripts = { lint: 'eslint . --ext .js,.jsx,.ts,.tsx,.vue,.mjs', test: 'nyc ava' }; return obj; }, path.join (folder, 'package.json')); } }