1 | import { js_beautify as format } from 'js-beautify';
|
2 | import createFile from 'vamtiger-create-file';
|
3 | import Args from 'vamtiger-argv/build/main';
|
4 | import {
|
5 | CommandlineArgument,
|
6 | ShortCommandlineArgument
|
7 | } from './types';
|
8 |
|
9 | const args = new Args();
|
10 | const webComponent = args.has(CommandlineArgument.webComponent)
|
11 | args.has(ShortCommandlineArgument.webComponent);
|
12 | const jsonLd = args.has(CommandlineArgument.jsonLd)
|
13 | || args.has(ShortCommandlineArgument.jsonLd);
|
14 |
|
15 | export default async (params: Params) => {
|
16 | const projectPackage = params.projectPackage;
|
17 | const currentPackage = require(projectPackage) as Project;
|
18 | const { name } = currentPackage
|
19 |
|
20 | let updatedPackage: string;
|
21 |
|
22 | currentPackage.main = 'build';
|
23 | currentPackage.types = 'build/index.d.ts';
|
24 |
|
25 | currentPackage.scripts.test = 'npm run build && npm run mocha';
|
26 | currentPackage.scripts.mocha = 'mocha build/test --recursive';
|
27 | currentPackage.scripts.build = 'tsc';
|
28 | currentPackage.scripts.commit = 'vamtigerNodeTypescriptCommit --push --publish';
|
29 | currentPackage.scripts['clean-bundle'] = `vamtiger-remove -d build -p "(${name})\.(js(\.map)?|d\.ts)"`;
|
30 |
|
31 | if (args.has('bundle')) {
|
32 | currentPackage.scripts.commit = 'npm run bundle && vamtiger-node-typescript-commit --push --publish --buildScript bundle';
|
33 | currentPackage.scripts.clean = 'rm -rf build/*';
|
34 | currentPackage.scripts['clean-bundle'] = 'vamtiger-remove -d build -p \"(index|bin).(js(.map)?|d.ts)\"'.replace('.', '\\\\.');
|
35 | currentPackage.scripts['bundle-source'] = 'vamtiger-bundle-typescript --relativePath --entryFilePath source/index.ts --bundleFilePath build/index.js --format cjs --sourcemap true --copySourceMap --minify';
|
36 | currentPackage.scripts.bundle = 'npm test && npm run clean && npm run build && npm run bundle-source && npm run clean-bundle';
|
37 | currentPackage.scripts.watch = 'npm run bundle -- --watch';
|
38 | } else if (webComponent || jsonLd) {
|
39 | currentPackage.scripts.test = 'npm run clean && npm run build && npm run bundle-node-test && npm run bundle-browser-test && npm run mocha && npm run bundle-source';
|
40 | currentPackage.scripts.mocha = 'mocha build/test/node --recursive';
|
41 | currentPackage.scripts.build = 'tsc';
|
42 | currentPackage.scripts.commit = 'npm run bundle && vamtiger-node-typescript-commit --push --publish --buildScript bundle';
|
43 | currentPackage.scripts.clean = 'rm -rf build/*';
|
44 | currentPackage.scripts['clean-install'] = 'rm -rf package-lock.json node_modules && npm i';
|
45 | currentPackage.scripts['clean-bundle'] = `vamtiger-remove -d build -p "(${name})\.(js(\.map)?|d\.ts)"`;
|
46 | currentPackage.scripts['bundle-source'] = `vamtiger-bundle-typescript --relativePath --entryFilePath source/${name}.ts --bundleFilePath build/${name}.js --format iife --sourcemap true --copySourceMap --minify`;
|
47 | currentPackage.scripts['bundle-node-test'] = 'vamtiger-bundle-typescript --relativePath --entryFilePath source/test/node.ts --bundleFilePath build/test/node.js --format cjs --sourcemap true --copySourceMap --minify';
|
48 | currentPackage.scripts['bundle-browser-test'] = 'vamtiger-bundle-typescript --relativePath --entryFilePath source/test/browser.ts --bundleFilePath build/test/browser.js --format iife --sourcemap true --copySourceMap --minify';
|
49 | currentPackage.scripts['bundle'] = 'npm test && npm run bundle-source && npm run clean-bundle';
|
50 | currentPackage.scripts['bundle-html'] = 'vamtiger-bundle-html --relativePath --entryFolder source/html --bundleFilePath --bundleFilePath source/html/index.ts';
|
51 | currentPackage.scripts['bundle-css'] = 'npm run bundle-shadow-css && npm run bundle-document-css';
|
52 | currentPackage.scripts['bundle-shadow-css'] = 'vamtiger-bundle-css-next --relativePath --entryFilePath source/css/index.css --bundleFilePath source/css/index.ts --sourcemap inline';
|
53 | currentPackage.scripts['bundle-document-css'] = 'vamtiger-bundle-css-next --relativePath --entryFilePath source/css/document-index.css --bundleFilePath source/css/document-index.ts --sourcemap inline';
|
54 | currentPackage.scripts['watch-source'] = 'npm run bundle-source -- --watch';
|
55 | currentPackage.scripts['watch-node-test'] = 'npm run bundle-node-test -- --watch';
|
56 | currentPackage.scripts['watch-browser-test'] = 'npm run bundle-browser-test -- --watch';
|
57 | currentPackage.scripts['watch-html'] = 'npm run bundle-html -- --watch';
|
58 | currentPackage.scripts['watch-css'] = 'npm run bundle-css -- --watch';
|
59 | currentPackage.scripts.watch = webComponent && 'vamtiger-watch --folder source --extension ts --script test --extension html --script bundle-html --extension css --script bundle-css'
|
60 | || 'vamtiger-watch --folder source --extension ts --script test';
|
61 | currentPackage.scripts.serve = 'npm run test && cd build && python -m SimpleHTTPServer';
|
62 | currentPackage.scripts['install-source'] = 'npm i --save-dev vamtiger-browser-method@source';
|
63 | }
|
64 |
|
65 | updatedPackage = format(JSON.stringify(currentPackage));
|
66 |
|
67 | await createFile(projectPackage, updatedPackage);
|
68 | };
|
69 |
|
70 | export interface Params {
|
71 | projectPackage: string;
|
72 | }
|
73 |
|
74 | interface Project {
|
75 | name: 'string';
|
76 | main: string;
|
77 | types: string;
|
78 | scripts: Scripts;
|
79 | }
|
80 |
|
81 | interface Scripts {
|
82 | [key: string]: string;
|
83 | }
|