Bundle all files to single JavaScript file, add development mode
This commit is contained in:
parent
820a49efd8
commit
3239a7c611
15
Makefile
15
Makefile
|
@ -1,9 +1,10 @@
|
|||
.PHONY: help build clean update-npmjs-readme release publish
|
||||
.PHONY: help prod dev clean update-npmjs-readme release publish
|
||||
|
||||
help:
|
||||
@echo "Available targets:"
|
||||
@echo " - help: Show this help message"
|
||||
@echo " - build: Build the project"
|
||||
@echo " - prod: Build the project in production mode"
|
||||
@echo " - dev: Build the project in development mode"
|
||||
@echo " - clean: Remove build artifacts"
|
||||
@echo " - release: Create a new release version"
|
||||
@echo " - publish: Publish the new version created with the release target"
|
||||
|
@ -11,13 +12,17 @@ help:
|
|||
node_modules:
|
||||
npm install
|
||||
|
||||
build: node_modules
|
||||
npm run build
|
||||
prod: node_modules
|
||||
npm run prod
|
||||
|
||||
dev: node_modules
|
||||
npm run dev
|
||||
chmod +x dist/wtc-dev.mjs
|
||||
|
||||
clean:
|
||||
rm -r dist node_modules
|
||||
|
||||
release: build
|
||||
release: prod
|
||||
@read -p "Enter version bump (patch, minor, major): " bump && \
|
||||
version=$$(npm version $$bump | grep -oP "(?<=v)[^']+") && \
|
||||
echo "Version $$version created. Run 'make publish' to push the changes and publish the package."
|
||||
|
|
2
bin/wtc
2
bin/wtc
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
DIR="$(dirname "$(readlink -f "$0")")"
|
||||
node "$DIR/../dist/wtc.js" "$@"
|
||||
node "$DIR/../dist/wtc.mjs" "$@"
|
||||
|
|
147
package-lock.json
generated
147
package-lock.json
generated
|
@ -9,9 +9,9 @@
|
|||
"version": "1.0.2",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@iarna/toml": "^2.2.5",
|
||||
"chalk": "^5.3.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"iarna-toml-esm": "^3.0.5",
|
||||
"xdg-basedir": "^5.1.0",
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
|
@ -19,6 +19,7 @@
|
|||
"wtc": "bin/wtc"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||
"@rollup/plugin-terser": "^0.4.4",
|
||||
"@rollup/plugin-typescript": "^11.1.5",
|
||||
"@types/node": "^20.9.0",
|
||||
|
@ -26,6 +27,7 @@
|
|||
"@typescript-eslint/eslint-plugin": "^6.10.0",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"rollup": "^4.5.1",
|
||||
"rollup-plugin-add-shebang": "^0.3.1",
|
||||
"tslib": "^2.6.2"
|
||||
}
|
||||
},
|
||||
|
@ -133,11 +135,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@iarna/toml": {
|
||||
"version": "2.2.5",
|
||||
"resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
|
||||
"integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
|
||||
},
|
||||
"node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
|
||||
|
@ -231,6 +228,31 @@
|
|||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/plugin-node-resolve": {
|
||||
"version": "15.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
|
||||
"integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@rollup/pluginutils": "^5.0.1",
|
||||
"@types/resolve": "1.20.2",
|
||||
"deepmerge": "^4.2.2",
|
||||
"is-builtin-module": "^3.2.1",
|
||||
"is-module": "^1.0.0",
|
||||
"resolve": "^1.22.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"rollup": "^2.78.0||^3.0.0||^4.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"rollup": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/plugin-terser": {
|
||||
"version": "0.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
|
||||
|
@ -478,6 +500,12 @@
|
|||
"undici-types": "~5.26.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/resolve": {
|
||||
"version": "1.20.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
|
||||
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/semver": {
|
||||
"version": "7.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.5.tgz",
|
||||
|
@ -809,6 +837,18 @@
|
|||
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/builtin-modules": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
|
||||
"integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/callsites": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
||||
|
@ -916,6 +956,15 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/deepmerge": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
|
||||
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/dir-glob": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
|
||||
|
@ -941,6 +990,14 @@
|
|||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/emitter-component": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.2.tgz",
|
||||
"integrity": "sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
|
@ -1429,6 +1486,14 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/iarna-toml-esm": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/iarna-toml-esm/-/iarna-toml-esm-3.0.5.tgz",
|
||||
"integrity": "sha512-CgeDbPohnFG827UoRaCqKxJ8idiIDZDWlcHf5hUReQnZ8jHnNnhN4QJFiY12fKvr0LvuDuKAimqQfrmQnacbtw==",
|
||||
"dependencies": {
|
||||
"stream": "^0.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/ignore": {
|
||||
"version": "5.2.4",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
|
||||
|
@ -1483,6 +1548,21 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/is-builtin-module": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
|
||||
"integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"builtin-modules": "^3.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/is-core-module": {
|
||||
"version": "2.13.1",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
|
||||
|
@ -1524,6 +1604,12 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-module": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
|
||||
"integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
|
@ -1643,6 +1729,15 @@
|
|||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.25.9",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
|
||||
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"sourcemap-codec": "^1.4.8"
|
||||
}
|
||||
},
|
||||
"node_modules/merge2": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
||||
|
@ -1958,6 +2053,31 @@
|
|||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-add-shebang": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup-plugin-add-shebang/-/rollup-plugin-add-shebang-0.3.1.tgz",
|
||||
"integrity": "sha512-tKONSgKoVw9Om1cp1CnAlPQ9nsHBzu8fInKObX3zT5KZVoAJtslD1aBL84lJuKLeh+L28dB26CBBeYT+doTMLg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"magic-string": "^0.25.3",
|
||||
"rollup-pluginutils": "^2.8.1"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-pluginutils": {
|
||||
"version": "2.8.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
|
||||
"integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"estree-walker": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-pluginutils/node_modules/estree-walker": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
|
||||
"integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/run-parallel": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
|
@ -2082,6 +2202,21 @@
|
|||
"source-map": "^0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/sourcemap-codec": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
|
||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
||||
"deprecated": "Please use @jridgewell/sourcemap-codec instead",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/stream": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz",
|
||||
"integrity": "sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==",
|
||||
"dependencies": {
|
||||
"emitter-component": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
|
|
|
@ -16,9 +16,10 @@
|
|||
"bin": {
|
||||
"wtc": "bin/wtc"
|
||||
},
|
||||
"main": "dist/wtc.js",
|
||||
"main": "dist/wtc.mjs",
|
||||
"scripts": {
|
||||
"build": "rollup -c"
|
||||
"prod": "rollup -c ./rollup.prod.config.js",
|
||||
"dev": "rollup -c ./rollup.dev.config.js"
|
||||
},
|
||||
"keywords": [
|
||||
"work",
|
||||
|
@ -27,6 +28,7 @@
|
|||
],
|
||||
"author": "Marko Korhonen <marko@korhonen.cc>",
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||
"@rollup/plugin-terser": "^0.4.4",
|
||||
"@rollup/plugin-typescript": "^11.1.5",
|
||||
"@types/node": "^20.9.0",
|
||||
|
@ -34,12 +36,13 @@
|
|||
"@typescript-eslint/eslint-plugin": "^6.10.0",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"rollup": "^4.5.1",
|
||||
"rollup-plugin-add-shebang": "^0.3.1",
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@iarna/toml": "^2.2.5",
|
||||
"chalk": "^5.3.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"iarna-toml-esm": "^3.0.5",
|
||||
"xdg-basedir": "^5.1.0",
|
||||
"yargs": "^17.7.2"
|
||||
}
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
import typescript from '@rollup/plugin-typescript';
|
||||
import terser from '@rollup/plugin-terser';
|
||||
|
||||
/** @type {import('rollup').RollupOptions} */
|
||||
const config = {
|
||||
input: 'src/main.ts',
|
||||
output: {
|
||||
format: 'esm',
|
||||
file: 'dist/wtc.js',
|
||||
},
|
||||
plugins: [typescript(), terser()],
|
||||
external: [
|
||||
'@iarna/toml',
|
||||
'chalk',
|
||||
'dayjs',
|
||||
'dayjs/plugin/customParseFormat.js',
|
||||
'dayjs/plugin/duration.js',
|
||||
'fs',
|
||||
'path',
|
||||
'readline/promises',
|
||||
'xdg-basedir',
|
||||
'yargs',
|
||||
'yargs/helpers',
|
||||
],
|
||||
};
|
||||
|
||||
export default config;
|
15
rollup.dev.config.js
Normal file
15
rollup.dev.config.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
import typescript from '@rollup/plugin-typescript';
|
||||
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
||||
import shebang from 'rollup-plugin-add-shebang';
|
||||
|
||||
/** @type {import('rollup').RollupOptions} */
|
||||
const config = {
|
||||
input: 'src/main.ts',
|
||||
output: {
|
||||
format: 'esm',
|
||||
file: 'dist/wtc-dev.mjs',
|
||||
},
|
||||
plugins: [typescript(), nodeResolve({ exportConditions: ['node'] }), shebang({ include: 'dist/wtc-dev.mjs' })],
|
||||
};
|
||||
|
||||
export default config;
|
15
rollup.prod.config.js
Normal file
15
rollup.prod.config.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
import typescript from '@rollup/plugin-typescript';
|
||||
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
||||
import terser from '@rollup/plugin-terser';
|
||||
|
||||
/** @type {import('rollup').RollupOptions} */
|
||||
const config = {
|
||||
input: 'src/main.ts',
|
||||
output: {
|
||||
format: 'esm',
|
||||
file: 'dist/wtc.mjs',
|
||||
},
|
||||
plugins: [typescript(), nodeResolve({ exportConditions: ['node'] }), terser()],
|
||||
};
|
||||
|
||||
export default config;
|
|
@ -1,7 +1,7 @@
|
|||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { xdgConfig } from 'xdg-basedir';
|
||||
import toml from '@iarna/toml';
|
||||
import {parse} from 'iarna-toml-esm';
|
||||
import { parseDuration, parseTimestamp } from './parse.js';
|
||||
import WtcConfig from './types/WtcConfig.js';
|
||||
import Language from './types/Language.js';
|
||||
|
@ -36,11 +36,11 @@ const defaultConfig: RawConfig = {
|
|||
|
||||
const getConfig = (): WtcConfig => {
|
||||
const configDir = xdgConfig || path.join(process.env.HOME ?? './', '.config');
|
||||
let configFilePath = path.join(configDir, 'wtc', 'config.toml');
|
||||
const configFilePath = path.join(configDir, 'wtc', 'config.toml');
|
||||
|
||||
let configData: Partial<RawConfig>;
|
||||
if (fs.existsSync(configFilePath)) {
|
||||
configData = toml.parse(fs.readFileSync(configFilePath, 'utf8')) as unknown as RawConfig;
|
||||
configData = parse(fs.readFileSync(configFilePath, 'utf8')) as unknown as RawConfig;
|
||||
} else {
|
||||
configData = defaultConfig;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import dayjs, {Dayjs} from 'dayjs';
|
||||
import duration, {Duration} from 'dayjs/plugin/duration.js';
|
||||
import customParseFormat from 'dayjs/plugin/customParseFormat.js';
|
||||
import dayjs, {Dayjs} from 'dayjs/esm';
|
||||
import duration, {Duration} from 'dayjs/esm/plugin/duration';
|
||||
import customParseFormat from 'dayjs/esm/plugin/customParseFormat';
|
||||
|
||||
dayjs.extend(duration);
|
||||
dayjs.extend(customParseFormat);
|
||||
|
|
Loading…
Reference in a new issue