UNPKG

5.35 kBPlain TextView Raw
1import { js_beautify as format } from 'js-beautify';
2import createFile from 'vamtiger-create-file';
3import Args from 'vamtiger-argv/build/main';
4import {
5 CommandlineArgument,
6 ShortCommandlineArgument
7} from './types';
8
9const args = new Args();
10const webComponent = args.has(CommandlineArgument.webComponent)
11 args.has(ShortCommandlineArgument.webComponent);
12const jsonLd = args.has(CommandlineArgument.jsonLd)
13 || args.has(ShortCommandlineArgument.jsonLd);
14
15export 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
70export interface Params {
71 projectPackage: string;
72}
73
74interface Project {
75 name: 'string';
76 main: string;
77 types: string;
78 scripts: Scripts;
79}
80
81interface Scripts {
82 [key: string]: string;
83}