standardization

This commit is contained in:
Timo Hocker 2020-05-04 12:23:06 +02:00
parent a7180f9e50
commit 91869b3183
6 changed files with 47 additions and 84 deletions

View File

@ -20,13 +20,8 @@ const pkg = JSON.parse (fs.readFileSync ('package.json', 'utf-8'));
fs.writeFileSync ('package.json', JSON.stringify (pkg, null, 2));
child_process.execSync ('yarn lint', { stdio: 'inherit' });
if (typeof pkg.scripts !== 'undefined' && typeof pkg.scripts.test === 'string')
child_process.execSync ('yarn test', { stdio: 'inherit' });
if (
typeof pkg.scripts !== 'undefined'
&& typeof pkg.scripts.compile === 'string'
)
child_process.execSync ('yarn compile', { stdio: 'inherit' });
child_process.execSync ('yarn test', { stdio: 'inherit' });
child_process.execSync ('yarn compile', { stdio: 'inherit' });
child_process.exec ('git log -1 | grep \'\\[no publish\\]\'')
.addListener ('exit', (code) => {

View File

@ -1,7 +1,9 @@
/* eslint-disable max-len */
import { files } from '@scode/standard';
const general = { jenkinsfile: '' };
const node = { jenkinsfile: '', js: '' };
const node = { jenkinsfile: files.jenkinsfile, js: files.jenkins };
general.jenkinsfile = `pipeline {
agent any
@ -44,62 +46,4 @@ general.jenkinsfile = `pipeline {
}
`;
node.jenkinsfile = `pipeline {
agent any
environment {
VERSION = VersionNumber([
versionNumberString:
'\${BUILDS_ALL_TIME}',
versionPrefix: '1.0.',
worstResultForIncrement: 'SUCCESS'
])
}
stages {
stage('Building') {
steps {
script {
currentBuild.displayName = env.VERSION
}
sh 'yarn ci \${VERSION}'
}
}
}
}
`;
node.js = `/* eslint-disable no-process-exit */
/* eslint-disable no-console */
/* eslint-disable no-sync */
'use strict';
const fs = require ('fs');
const child_process = require ('child_process');
const pkg = JSON.parse (fs.readFileSync ('package.json', 'utf-8'));
[
,, pkg.version
] = process.argv;
fs.writeFileSync ('package.json', JSON.stringify (pkg, null, 2));
child_process.execSync ('yarn lint', { stdio: 'inherit' });
if (typeof pkg.scripts !== 'undefined' && typeof pkg.scripts.test === 'string')
child_process.execSync ('yarn test', { stdio: 'inherit' });
if (
typeof pkg.scripts !== 'undefined'
&& typeof pkg.scripts.compile === 'string'
)
child_process.execSync ('yarn compile', { stdio: 'inherit' });
child_process.exec ('git log -1 | grep \\'\\\\[no publish\\\\]\\'')
.addListener ('exit', (code) => {
if (code === 0) {
console.log ('build not marked for deployment');
process.exit (1);
}
else { child_process.execSync ('yarn publish'); }
});
`;
export { general, node };

View File

@ -59,8 +59,8 @@ const tsconfig = `{
}
`;
const eslintignore_ts = `/dist/
const eslintignore = `/dist/
*.d.ts
`;
export { eslintrc, gitignore, npmrc, tsconfig, eslintrc_ts, eslintignore_ts };
export { eslintrc, gitignore, npmrc, tsconfig, eslintrc_ts, eslintignore };

View File

@ -12,9 +12,37 @@ import { apply_template, modify_json, run_command } from '../../Helper';
import {
eslintrc, gitignore, npmrc,
tsconfig, eslintrc_ts, eslintignore_ts
tsconfig, eslintrc_ts, eslintignore
} from './Assets';
/**
* initialize the package.json
*
* @param {string} folder folder
*/
async function init_package (folder: string): Promise<void> {
await modify_json ((obj: Record<string, unknown>) => {
const scripts
= {
lint: 'eslint . --ext .js,.jsx,.ts,.tsx,.vue,.mjs',
test: 'nyc ava',
compile: 'tsc --allowJs --declaration --emitDeclarationOnly index.js'
};
const files = [ 'LICENSE' ];
if (use_ts) {
scripts.compile = 'tsc';
scripts.test = 'tsc && nyc ava';
files.push ('/dist/');
}
else {
files.push ('*.js', '*.d.ts');
}
obj.scripts = scripts;
obj.files = files;
return obj;
}, path.join (folder, 'package.json'));
}
export default class Node implements Snippet {
public async start (): Promise<void> {
const folder = await new Input (
@ -31,12 +59,12 @@ export default class Node implements Snippet {
await apply_template (eslintrc, path.join (folder, '.eslintrc.js'));
await apply_template (npmrc, path.join (folder, '.npmrc'));
await apply_template (gitignore, path.join (folder, '.gitignore'));
await apply_template (
eslintignore,
path.join (folder, '.eslintignore')
);
if (use_ts) {
await apply_template (tsconfig, path.join (folder, 'tsconfig.json'));
await apply_template (
eslintignore_ts,
path.join (folder, '.eslintignore')
);
await apply_template (
eslintrc_ts,
path.join (folder, 'lib', '.eslintrc.js')
@ -51,16 +79,6 @@ export default class Node implements Snippet {
folder
);
await modify_json ((obj: Record<string, unknown>) => {
obj.scripts = {
lint: 'eslint . --ext .js,.jsx,.ts,.tsx,.vue,.mjs',
test: 'nyc ava'
};
if (use_ts) {
(obj.scripts as Record<string, unknown>).compile = 'tsc';
(obj.scripts as Record<string, unknown>).test = 'tsc && nyc ava';
}
return obj;
}, path.join (folder, 'package.json'));
await init_package (folder);
}
}

View File

@ -30,6 +30,7 @@
"typescript": "^3.8.3"
},
"dependencies": {
"@scode/standard": "^1.0.1",
"enquirer": "^2.3.5",
"fs-extra": "^9.0.0",
"license": "^1.0.3"

View File

@ -54,6 +54,11 @@
eslint-plugin-node "^11.0.0"
eslint-plugin-sort-requires-by-path "^1.0.2"
"@scode/standard@^1.0.1":
version "1.0.3"
resolved "https://npm.scode.ovh/@scode%2fstandard/-/standard-1.0.3.tgz#39147b46e62e222555626302fdfb5f2986c5ffbe"
integrity sha512-cxeuAn8zmqTRa5i9sbQP74lRRdywl2bEg4Nl72rE+MOeAI06VzBPirxwSOiKr2ZUaFNGe/tTk1cIdiI4cYAIiQ==
"@types/color-name@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"