@jakesidsmith/tsb 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +3 -2
- package/.github/workflows/test.yml +33 -0
- package/.nvmrc +1 -1
- package/.prettierignore +5 -0
- package/README.md +6 -3
- package/dist/cli.js +9 -9
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.js +3 -3
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/serve.js +3 -3
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/watch.js +3 -3
- package/dist/commands/watch.js.map +1 -1
- package/dist/config.js +30 -4
- package/dist/config.js.map +1 -1
- package/dist/logger.js +4 -4
- package/dist/logger.js.map +1 -1
- package/dist/tsconfig.js +10 -5
- package/dist/tsconfig.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +18 -0
- package/dist/utils.js.map +1 -0
- package/dist/webpack-callback.js +5 -1
- package/dist/webpack-callback.js.map +1 -1
- package/dist/webpack-config.js +20 -10
- package/dist/webpack-config.js.map +1 -1
- package/package.json +15 -14
- package/src/config.ts +40 -3
- package/src/tsconfig.ts +2 -1
- package/src/types.ts +4 -0
- package/src/utils.ts +17 -0
- package/src/webpack-callback.ts +29 -30
- package/src/webpack-config.ts +12 -5
package/.eslintrc.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"plugin:prettier/recommended",
|
|
5
5
|
"plugin:@typescript-eslint/eslint-recommended",
|
|
6
6
|
"plugin:@typescript-eslint/recommended",
|
|
7
|
-
"prettier
|
|
7
|
+
"prettier"
|
|
8
8
|
],
|
|
9
9
|
"plugins": ["prettier"],
|
|
10
10
|
"env": {
|
|
@@ -72,7 +72,8 @@
|
|
|
72
72
|
"rules": {
|
|
73
73
|
"no-use-before-define": 0,
|
|
74
74
|
"no-shadow": 0,
|
|
75
|
-
"no-undef": 0
|
|
75
|
+
"no-undef": 0,
|
|
76
|
+
"no-unused-vars": 0
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
79
|
]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- master
|
|
6
|
+
pull_request:
|
|
7
|
+
jobs:
|
|
8
|
+
test:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v3
|
|
12
|
+
- name: Use Node.js
|
|
13
|
+
uses: actions/setup-node@v3
|
|
14
|
+
with:
|
|
15
|
+
node-version-file: '.nvmrc'
|
|
16
|
+
- name: Get npm cache directory
|
|
17
|
+
id: npm-cache-dir
|
|
18
|
+
run: |
|
|
19
|
+
echo "::set-output name=dir::$(npm config get cache)"
|
|
20
|
+
- uses: actions/cache@v3
|
|
21
|
+
id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true'
|
|
22
|
+
with:
|
|
23
|
+
path: ${{ steps.npm-cache-dir.outputs.dir }}
|
|
24
|
+
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
|
25
|
+
restore-keys: |
|
|
26
|
+
${{ runner.os }}-node-
|
|
27
|
+
- run: npm ci
|
|
28
|
+
- run: npm test
|
|
29
|
+
- name: Archive code coverage results
|
|
30
|
+
uses: actions/upload-artifact@v3
|
|
31
|
+
with:
|
|
32
|
+
name: coverage
|
|
33
|
+
path: coverage
|
package/.nvmrc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
16.
|
|
1
|
+
16.14.2
|
package/.prettierignore
CHANGED
package/README.md
CHANGED
|
@@ -26,6 +26,7 @@ Out of the box tsb offers you:
|
|
|
26
26
|
- Dead code elimination
|
|
27
27
|
- Expose [environment variables](#environment-variables) and define defaults (with [webpack environment plugin](https://webpack.js.org/plugins/environment-plugin/))
|
|
28
28
|
- Load environment variables from a `.env` file (with [dotenv](https://github.com/motdotla/dotenv))
|
|
29
|
+
- Reference environment variables in your `index.html` template
|
|
29
30
|
- Hot-loading
|
|
30
31
|
- React hot-loading (with a little [extra setup](#react-hot-loading))
|
|
31
32
|
- Bundle hashing
|
|
@@ -111,16 +112,16 @@ For a more complex project with the following structure:
|
|
|
111
112
|
```
|
|
112
113
|
|
|
113
114
|
```ts
|
|
114
|
-
import { Config } from '
|
|
115
|
+
import { Config } from '@jakesidsmith/tsb';
|
|
115
116
|
|
|
116
117
|
const config: Config = {
|
|
117
|
-
main: 'src/ts/index.tsx,
|
|
118
|
+
main: 'src/ts/index.tsx',
|
|
118
119
|
outDir: 'build',
|
|
119
120
|
mainOutSubDir: 'js',
|
|
120
121
|
indexHTMLPath: 'src/index.html',
|
|
121
122
|
tsconfigPath: 'src/tsconfig.json',
|
|
122
123
|
publicDir: 'public',
|
|
123
|
-
publicPath: '/public/'
|
|
124
|
+
publicPath: '/public/',
|
|
124
125
|
};
|
|
125
126
|
|
|
126
127
|
export default config;
|
|
@@ -182,6 +183,8 @@ interface Config {
|
|
|
182
183
|
tsconfigPath?: string; // Default: tsconfig.json in the root of the project
|
|
183
184
|
// Path to a custom index.html template
|
|
184
185
|
indexHTMLPath?: string;
|
|
186
|
+
// Variables to expose to the index.html template (referenced with <%= example %>)
|
|
187
|
+
indexHTMLEnv?: Record<string, any>;
|
|
185
188
|
// List of commands for which to output index.html to disk
|
|
186
189
|
outputIndexHTMLFor?: readonly ('build' | 'watch' | 'serve')[]; // Default: ['build', 'watch']
|
|
187
190
|
// Whether to add script tag to body, head, or not at all
|
package/dist/cli.js
CHANGED
|
@@ -12,14 +12,14 @@ const build_1 = __importDefault(require("./commands/build"));
|
|
|
12
12
|
const watch_1 = __importDefault(require("./commands/watch"));
|
|
13
13
|
const serve_1 = __importDefault(require("./commands/serve"));
|
|
14
14
|
const COMMON_ARGS = [
|
|
15
|
-
jargs_1.KWArg('config', {
|
|
15
|
+
(0, jargs_1.KWArg)('config', {
|
|
16
16
|
alias: 'c',
|
|
17
17
|
description: `Path to ${constants_1.PROGRAM}.config.ts`,
|
|
18
18
|
}),
|
|
19
19
|
];
|
|
20
|
-
jargs_1.collect(jargs_1.Help('help', {
|
|
20
|
+
(0, jargs_1.collect)((0, jargs_1.Help)('help', {
|
|
21
21
|
description: 'Display help and usage info',
|
|
22
|
-
}, jargs_1.Program(constants_1.PROGRAM, {
|
|
22
|
+
}, (0, jargs_1.Program)(constants_1.PROGRAM, {
|
|
23
23
|
description: constants_1.DESCRIPTION,
|
|
24
24
|
usage: `${constants_1.PROGRAM} <command>`,
|
|
25
25
|
examples: [
|
|
@@ -28,20 +28,20 @@ jargs_1.collect(jargs_1.Help('help', {
|
|
|
28
28
|
`${constants_1.PROGRAM} serve`,
|
|
29
29
|
`${constants_1.PROGRAM} build --config custom/path/to/tsb.config.ts`,
|
|
30
30
|
],
|
|
31
|
-
}, jargs_1.RequireAny(jargs_1.Command('build', {
|
|
31
|
+
}, (0, jargs_1.RequireAny)((0, jargs_1.Command)('build', {
|
|
32
32
|
description: 'Bundle TypeScript files (production)',
|
|
33
33
|
callback: (tree) => {
|
|
34
|
-
build_1.default(tree.kwargs.config);
|
|
34
|
+
(0, build_1.default)(tree.kwargs.config);
|
|
35
35
|
},
|
|
36
|
-
}, ...COMMON_ARGS), jargs_1.Command('watch', {
|
|
36
|
+
}, ...COMMON_ARGS), (0, jargs_1.Command)('watch', {
|
|
37
37
|
description: 'Watch TypeScript files and bundle them when changed (development)',
|
|
38
38
|
callback: (tree) => {
|
|
39
|
-
watch_1.default(tree.kwargs.config);
|
|
39
|
+
(0, watch_1.default)(tree.kwargs.config);
|
|
40
40
|
},
|
|
41
|
-
}, ...COMMON_ARGS), jargs_1.Command('serve', {
|
|
41
|
+
}, ...COMMON_ARGS), (0, jargs_1.Command)('serve', {
|
|
42
42
|
description: 'Run a dev server and update on change (development)',
|
|
43
43
|
callback: (tree) => {
|
|
44
|
-
serve_1.default(tree.kwargs.config);
|
|
44
|
+
(0, serve_1.default)(tree.kwargs.config);
|
|
45
45
|
},
|
|
46
46
|
}, ...COMMON_ARGS)))), process.argv);
|
|
47
47
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,oDAA4B;AAE5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,iCAQe;AAEf,2CAAmD;AACnD,6DAAqC;AACrC,6DAAqC;AACrC,6DAAqC;AAErC,MAAM,WAAW,GAAG;IAClB,aAAK,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,oDAA4B;AAE5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,iCAQe;AAEf,2CAAmD;AACnD,6DAAqC;AACrC,6DAAqC;AACrC,6DAAqC;AAErC,MAAM,WAAW,GAAG;IAClB,IAAA,aAAK,EAAC,QAAQ,EAAE;QACd,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,WAAW,mBAAO,YAAY;KAC5C,CAAC;CACH,CAAC;AASF,IAAA,eAAO,EACL,IAAA,YAAI,EACF,MAAM,EACN;IACE,WAAW,EAAE,6BAA6B;CAC3C,EACD,IAAA,eAAO,EACL,mBAAO,EACP;IACE,WAAW,EAAE,uBAAW;IACxB,KAAK,EAAE,GAAG,mBAAO,YAAY;IAC7B,QAAQ,EAAE;QACR,GAAG,mBAAO,QAAQ;QAClB,GAAG,mBAAO,QAAQ;QAClB,GAAG,mBAAO,QAAQ;QAClB,GAAG,mBAAO,8CAA8C;KACzD;CACF,EACD,IAAA,kBAAU,EACR,IAAA,eAAO,EACL,OAAO,EACP;IACE,WAAW,EAAE,sCAAsC;IACnD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;QACjB,IAAA,eAAK,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,EACD,GAAG,WAAW,CACf,EACD,IAAA,eAAO,EACL,OAAO,EACP;IACE,WAAW,EACT,mEAAmE;IACrE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;QACjB,IAAA,eAAK,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,EACD,GAAG,WAAW,CACf,EACD,IAAA,eAAO,EACL,OAAO,EACP;IACE,WAAW,EAAE,qDAAqD;IAClE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;QACjB,IAAA,eAAK,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,EACD,GAAG,WAAW,CACf,CACF,CACF,CACF,EACD,OAAO,CAAC,IAAI,CACb,CAAC"}
|
package/dist/commands/build.js
CHANGED
|
@@ -7,9 +7,9 @@ const webpack_1 = __importDefault(require("webpack"));
|
|
|
7
7
|
const webpack_config_1 = require("../webpack-config");
|
|
8
8
|
const webpack_callback_1 = require("../webpack-callback");
|
|
9
9
|
const build = (configPath) => {
|
|
10
|
-
const webpackConfig = webpack_config_1.createWebpackConfig(configPath, 'production', 'build');
|
|
11
|
-
const callback = webpack_callback_1.createWebpackCallback(true);
|
|
12
|
-
webpack_1.default(webpackConfig.base).run(callback);
|
|
10
|
+
const webpackConfig = (0, webpack_config_1.createWebpackConfig)(configPath, 'production', 'build');
|
|
11
|
+
const callback = (0, webpack_callback_1.createWebpackCallback)(true);
|
|
12
|
+
(0, webpack_1.default)(webpackConfig.base).run(callback);
|
|
13
13
|
};
|
|
14
14
|
exports.default = build;
|
|
15
15
|
//# sourceMappingURL=build.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,sDAAwD;AACxD,0DAA4D;AAE5D,MAAM,KAAK,GAAG,CAAC,UAA8B,EAAQ,EAAE;IACrD,MAAM,aAAa,GAAG,oCAAmB,
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,sDAAwD;AACxD,0DAA4D;AAE5D,MAAM,KAAK,GAAG,CAAC,UAA8B,EAAQ,EAAE;IACrD,MAAM,aAAa,GAAG,IAAA,oCAAmB,EAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAA,wCAAqB,EAAC,IAAI,CAAC,CAAC;IAE7C,IAAA,iBAAO,EAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,kBAAe,KAAK,CAAC"}
|
package/dist/commands/serve.js
CHANGED
|
@@ -8,10 +8,10 @@ const webpack_dev_server_1 = __importDefault(require("webpack-dev-server"));
|
|
|
8
8
|
const webpack_config_1 = require("../webpack-config");
|
|
9
9
|
const webpack_callback_1 = require("../webpack-callback");
|
|
10
10
|
const serve = (configPath) => {
|
|
11
|
-
const webpackConfig = webpack_config_1.createWebpackConfig(configPath, 'development', 'serve');
|
|
12
|
-
const callback = webpack_callback_1.createWebpackCallback(false);
|
|
11
|
+
const webpackConfig = (0, webpack_config_1.createWebpackConfig)(configPath, 'development', 'serve');
|
|
12
|
+
const callback = (0, webpack_callback_1.createWebpackCallback)(false);
|
|
13
13
|
webpack_dev_server_1.default.addDevServerEntrypoints(webpackConfig.base, webpackConfig.devServer);
|
|
14
|
-
const compiler = webpack_1.default(webpackConfig.base);
|
|
14
|
+
const compiler = (0, webpack_1.default)(webpackConfig.base);
|
|
15
15
|
const server = new webpack_dev_server_1.default(compiler, webpackConfig.devServer);
|
|
16
16
|
server.listen(webpackConfig.devServer.port, webpackConfig.devServer.host, callback);
|
|
17
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,4EAAkD;AAClD,sDAAwD;AACxD,0DAA4D;AAE5D,MAAM,KAAK,GAAG,CAAC,UAA8B,EAAQ,EAAE;IACrD,MAAM,aAAa,GAAG,oCAAmB,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,4EAAkD;AAClD,sDAAwD;AACxD,0DAA4D;AAE5D,MAAM,KAAK,GAAG,CAAC,UAA8B,EAAQ,EAAE;IACrD,MAAM,aAAa,GAAG,IAAA,oCAAmB,EAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,IAAA,wCAAqB,EAAC,KAAK,CAAC,CAAC;IAE9C,4BAAgB,CAAC,uBAAuB,CACtC,aAAa,CAAC,IAAI,EAClB,aAAa,CAAC,SAAS,CACxB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,iBAAO,EAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,4BAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAEvE,MAAM,CAAC,MAAM,CACX,aAAa,CAAC,SAAS,CAAC,IAAI,EAC5B,aAAa,CAAC,SAAS,CAAC,IAAI,EAC5B,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,KAAK,CAAC"}
|
package/dist/commands/watch.js
CHANGED
|
@@ -7,9 +7,9 @@ const webpack_1 = __importDefault(require("webpack"));
|
|
|
7
7
|
const webpack_config_1 = require("../webpack-config");
|
|
8
8
|
const webpack_callback_1 = require("../webpack-callback");
|
|
9
9
|
const build = (configPath) => {
|
|
10
|
-
const webpackConfig = webpack_config_1.createWebpackConfig(configPath, 'development', 'watch');
|
|
11
|
-
const callback = webpack_callback_1.createWebpackCallback(false);
|
|
12
|
-
webpack_1.default(webpackConfig.base).watch({}, callback);
|
|
10
|
+
const webpackConfig = (0, webpack_config_1.createWebpackConfig)(configPath, 'development', 'watch');
|
|
11
|
+
const callback = (0, webpack_callback_1.createWebpackCallback)(false);
|
|
12
|
+
(0, webpack_1.default)(webpackConfig.base).watch({}, callback);
|
|
13
13
|
};
|
|
14
14
|
exports.default = build;
|
|
15
15
|
//# sourceMappingURL=watch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,sDAAwD;AACxD,0DAA4D;AAE5D,MAAM,KAAK,GAAG,CAAC,UAA8B,EAAQ,EAAE;IACrD,MAAM,aAAa,GAAG,oCAAmB,
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,sDAAwD;AACxD,0DAA4D;AAE5D,MAAM,KAAK,GAAG,CAAC,UAA8B,EAAQ,EAAE;IACrD,MAAM,aAAa,GAAG,IAAA,oCAAmB,EAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,IAAA,wCAAqB,EAAC,KAAK,CAAC,CAAC;IAE9C,IAAA,iBAAO,EAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,kBAAe,KAAK,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -27,6 +31,7 @@ const constants_1 = require("./constants");
|
|
|
27
31
|
const yup = __importStar(require("yup"));
|
|
28
32
|
const logger = __importStar(require("./logger"));
|
|
29
33
|
const semver = __importStar(require("semver"));
|
|
34
|
+
const utils_1 = require("./utils");
|
|
30
35
|
const CONFIG_VALIDATOR = yup
|
|
31
36
|
.object()
|
|
32
37
|
.shape({
|
|
@@ -42,6 +47,7 @@ const CONFIG_VALIDATOR = yup
|
|
|
42
47
|
mainBundleName: yup.string().optional(),
|
|
43
48
|
tsconfigPath: yup.string().optional(),
|
|
44
49
|
indexHTMLPath: yup.string().optional(),
|
|
50
|
+
indexHTMLEnv: yup.object().optional(),
|
|
45
51
|
outputIndexHTMLFor: yup
|
|
46
52
|
.array()
|
|
47
53
|
.of(yup.mixed().oneOf(['build', 'watch', 'serve']))
|
|
@@ -141,7 +147,7 @@ const getTsbConfig = (configPath) => {
|
|
|
141
147
|
CONFIG_VALIDATOR.validateSync(tsbConfigExports.default);
|
|
142
148
|
}
|
|
143
149
|
catch (error) {
|
|
144
|
-
logger.error(
|
|
150
|
+
logger.error((0, utils_1.getErrorMessages)(error));
|
|
145
151
|
logger.error(`Invalid ${constants_1.CONFIG_FILE_NAME}`);
|
|
146
152
|
return process.exit(1);
|
|
147
153
|
}
|
|
@@ -154,10 +160,30 @@ const getTsbConfig = (configPath) => {
|
|
|
154
160
|
.filter((key) => key !== null);
|
|
155
161
|
if (missingEnvVars.length) {
|
|
156
162
|
missingEnvVars.forEach((envVar) => {
|
|
157
|
-
logger.error(`Could not get value for environment variable "${envVar}"`);
|
|
163
|
+
logger.error(`Could not get value for environment variable "${envVar}" defined in config.env`);
|
|
164
|
+
});
|
|
165
|
+
return process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
let { indexHTMLEnv } = config;
|
|
169
|
+
if (indexHTMLEnv) {
|
|
170
|
+
const missingEnvVars = Object.entries(indexHTMLEnv)
|
|
171
|
+
.map(([key, value]) => typeof value === 'undefined' && typeof process.env[key] === 'undefined'
|
|
172
|
+
? key
|
|
173
|
+
: null)
|
|
174
|
+
.filter((key) => key !== null);
|
|
175
|
+
if (missingEnvVars.length) {
|
|
176
|
+
missingEnvVars.forEach((envVar) => {
|
|
177
|
+
logger.error(`Could not get value for environment variable "${envVar}" defined in config.indexHTMLEnv`);
|
|
158
178
|
});
|
|
159
179
|
return process.exit(1);
|
|
160
180
|
}
|
|
181
|
+
indexHTMLEnv = Object.entries(indexHTMLEnv).reduce((memo, [key]) => {
|
|
182
|
+
if (typeof process.env[key] !== 'undefined') {
|
|
183
|
+
return Object.assign(Object.assign({}, memo), { [key]: process.env[key] });
|
|
184
|
+
}
|
|
185
|
+
return memo;
|
|
186
|
+
}, indexHTMLEnv);
|
|
161
187
|
}
|
|
162
188
|
if (config.indexHTMLPath) {
|
|
163
189
|
const fullIndexHTMLPath = path.resolve(fullConfigDir, config.indexHTMLPath);
|
|
@@ -215,7 +241,7 @@ const getTsbConfig = (configPath) => {
|
|
|
215
241
|
return process.exit(1);
|
|
216
242
|
}
|
|
217
243
|
}
|
|
218
|
-
return config;
|
|
244
|
+
return Object.assign(Object.assign({}, config), { indexHTMLEnv });
|
|
219
245
|
};
|
|
220
246
|
exports.getTsbConfig = getTsbConfig;
|
|
221
247
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.js
CHANGED
|
@@ -10,7 +10,7 @@ exports.log = log;
|
|
|
10
10
|
const success = (message) => {
|
|
11
11
|
if (typeof message === 'string') {
|
|
12
12
|
// eslint-disable-next-line no-console
|
|
13
|
-
console.log(chalk_1.green(message));
|
|
13
|
+
console.log((0, chalk_1.green)(message));
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
16
16
|
// eslint-disable-next-line no-console
|
|
@@ -21,7 +21,7 @@ exports.success = success;
|
|
|
21
21
|
const info = (message) => {
|
|
22
22
|
if (typeof message === 'string') {
|
|
23
23
|
// eslint-disable-next-line no-console
|
|
24
|
-
console.info(chalk_1.cyan(message));
|
|
24
|
+
console.info((0, chalk_1.cyan)(message));
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
27
27
|
// eslint-disable-next-line no-console
|
|
@@ -32,7 +32,7 @@ exports.info = info;
|
|
|
32
32
|
const warn = (message) => {
|
|
33
33
|
if (typeof message === 'string') {
|
|
34
34
|
// eslint-disable-next-line no-console
|
|
35
|
-
console.warn(chalk_1.yellow(message));
|
|
35
|
+
console.warn((0, chalk_1.yellow)(message));
|
|
36
36
|
}
|
|
37
37
|
else {
|
|
38
38
|
// eslint-disable-next-line no-console
|
|
@@ -43,7 +43,7 @@ exports.warn = warn;
|
|
|
43
43
|
const error = (message) => {
|
|
44
44
|
if (typeof message === 'string') {
|
|
45
45
|
// eslint-disable-next-line no-console
|
|
46
|
-
console.error(chalk_1.red(message));
|
|
46
|
+
console.error((0, chalk_1.red)(message));
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
49
|
// eslint-disable-next-line no-console
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAAA,iCAAiD;AAE1C,MAAM,GAAG,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAC5C,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC;AAHW,QAAA,GAAG,OAGd;AAEK,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAChD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,aAAK,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAAA,iCAAiD;AAE1C,MAAM,GAAG,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAC5C,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC;AAHW,QAAA,GAAG,OAGd;AAEK,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAChD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,IAAA,aAAK,EAAC,OAAO,CAAC,CAAC,CAAC;KAC7B;SAAM;QACL,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACtB;AACH,CAAC,CAAC;AARW,QAAA,OAAO,WAQlB;AAEK,MAAM,IAAI,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,IAAA,YAAI,EAAC,OAAO,CAAC,CAAC,CAAC;KAC7B;SAAM;QACL,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;AACH,CAAC,CAAC;AARW,QAAA,IAAI,QAQf;AAEK,MAAM,IAAI,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC,CAAC;KAC/B;SAAM;QACL,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;AACH,CAAC,CAAC;AARW,QAAA,IAAI,QAQf;AAEK,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAC9C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,IAAA,WAAG,EAAC,OAAO,CAAC,CAAC,CAAC;KAC7B;SAAM;QACL,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACxB;AACH,CAAC,CAAC;AARW,QAAA,KAAK,SAQhB"}
|
package/dist/tsconfig.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -26,6 +30,7 @@ const fs = __importStar(require("fs"));
|
|
|
26
30
|
const ts = __importStar(require("typescript"));
|
|
27
31
|
const logger = __importStar(require("./logger"));
|
|
28
32
|
const constants_1 = require("./constants");
|
|
33
|
+
const utils_1 = require("./utils");
|
|
29
34
|
const TSCONFIG_VALIDATOR = yup
|
|
30
35
|
.object()
|
|
31
36
|
.shape({
|
|
@@ -70,18 +75,18 @@ const resolveTsconfig = (tsconfigPath) => {
|
|
|
70
75
|
TSCONFIG_VALIDATOR.validateSync(validTsconfig);
|
|
71
76
|
}
|
|
72
77
|
catch (error) {
|
|
73
|
-
logger.error(
|
|
78
|
+
logger.error((0, utils_1.getErrorMessages)(error));
|
|
74
79
|
logger.error(`Invalid tsconfig.json at "${tsconfigPath}"`);
|
|
75
80
|
return process.exit(1);
|
|
76
81
|
}
|
|
77
82
|
const extendedPath = validTsconfig.extends
|
|
78
|
-
? exports.resolveTsconfigPath(tsconfigDir, validTsconfig.extends)
|
|
83
|
+
? (0, exports.resolveTsconfigPath)(tsconfigDir, validTsconfig.extends)
|
|
79
84
|
: null;
|
|
80
85
|
if (extendedPath === tsconfigPath) {
|
|
81
86
|
logger.error(`Invalid tsconfig.json at "${tsconfigPath}" - cannot extend itself`);
|
|
82
87
|
return process.exit(1);
|
|
83
88
|
}
|
|
84
|
-
const extended = extendedPath ? exports.resolveTsconfig(extendedPath) : null;
|
|
89
|
+
const extended = extendedPath ? (0, exports.resolveTsconfig)(extendedPath) : null;
|
|
85
90
|
return {
|
|
86
91
|
raw: validTsconfig,
|
|
87
92
|
resolved: Object.assign(Object.assign(Object.assign({}, extended === null || extended === void 0 ? void 0 : extended.raw), validTsconfig), { include: (_b = (_a = validTsconfig.include) === null || _a === void 0 ? void 0 : _a.map((include) => path.resolve(tsconfigDir, include))) !== null && _b !== void 0 ? _b : extended === null || extended === void 0 ? void 0 : extended.resolved.include, compilerOptions: Object.assign(Object.assign({}, extended === null || extended === void 0 ? void 0 : extended.raw.compilerOptions), validTsconfig.compilerOptions) }),
|
|
@@ -90,7 +95,7 @@ const resolveTsconfig = (tsconfigPath) => {
|
|
|
90
95
|
exports.resolveTsconfig = resolveTsconfig;
|
|
91
96
|
const getTsconfig = (configPath) => {
|
|
92
97
|
var _a, _b, _c;
|
|
93
|
-
const { resolved } = exports.resolveTsconfig(configPath);
|
|
98
|
+
const { resolved } = (0, exports.resolveTsconfig)(configPath);
|
|
94
99
|
if (!((_a = resolved.compilerOptions) === null || _a === void 0 ? void 0 : _a.sourceMap)) {
|
|
95
100
|
logger.warn('No sourceMap enabled in tsconfig.json - source maps will not be generated');
|
|
96
101
|
}
|
package/dist/tsconfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../src/tsconfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../src/tsconfig.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -30,6 +30,10 @@ export interface Config {
|
|
|
30
30
|
* @description Path to a custom index.html template
|
|
31
31
|
*/
|
|
32
32
|
indexHTMLPath?: string;
|
|
33
|
+
/**
|
|
34
|
+
* @description Variables to expose to the index.html template (referenced with <%= example %>)
|
|
35
|
+
*/
|
|
36
|
+
indexHTMLEnv?: Env;
|
|
33
37
|
/**
|
|
34
38
|
* @description List of commands for which to output index.html to disk
|
|
35
39
|
*/
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getErrorMessages: (error: unknown) => string;
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getErrorMessages = void 0;
|
|
4
|
+
const yup_1 = require("yup");
|
|
5
|
+
const getErrorMessages = (error) => {
|
|
6
|
+
if (typeof error === 'string') {
|
|
7
|
+
return error;
|
|
8
|
+
}
|
|
9
|
+
if (error instanceof yup_1.ValidationError) {
|
|
10
|
+
return error.errors.join('\n');
|
|
11
|
+
}
|
|
12
|
+
if (error instanceof Error) {
|
|
13
|
+
return error.message;
|
|
14
|
+
}
|
|
15
|
+
return 'Unknown error';
|
|
16
|
+
};
|
|
17
|
+
exports.getErrorMessages = getErrorMessages;
|
|
18
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,6BAAsC;AAE/B,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAU,EAAE;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,KAAK,YAAY,qBAAe,EAAE;QACpC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC,OAAO,CAAC;KACtB;IAED,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAdW,QAAA,gBAAgB,oBAc3B"}
|
package/dist/webpack-callback.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webpack-callback.js","sourceRoot":"","sources":["../src/webpack-callback.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webpack-callback.js","sourceRoot":"","sources":["../src/webpack-callback.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iDAAmC;AAI5B,MAAM,qBAAqB,GAChC,CAAC,IAAa,EAAmB,EAAE,CACnC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACf,IAAI,KAAK,EAAE;QACT,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACrB;SAAM,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE;QAC3C,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE;YACpD,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;KACJ;IAED,IAAI,KAAK,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAA,EAAE;QAC7C,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAElC,IAAI,IAAI,EAAE;YACR,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;KACF;IAED,IACE,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,KAAK,WAAW;QACrC,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAA,KAAK,WAAW,EACvC;QACA,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEnE,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,UAAU,CAAC,CAAC;KAC/C;IAED,IAAI,IAAI,EAAE;QACR,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACxB;IAED,OAAO;AACT,CAAC,CAAC;AAlCS,QAAA,qBAAqB,yBAkC9B"}
|
package/dist/webpack-config.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -42,19 +46,23 @@ const createWebpackConfig = (configPath = constants_1.CONFIG_FILE_NAME, mode, co
|
|
|
42
46
|
// Required
|
|
43
47
|
main, outDir,
|
|
44
48
|
// Base options
|
|
45
|
-
clearOutDirBefore = [], mainOutSubDir, mainBundleName = 'bundle', tsconfigPath = path.resolve(process.cwd(), 'tsconfig.json'), indexHTMLPath, outputIndexHTMLFor = ['build', 'watch'], insertScriptTag = 'body', reactHotLoading = false, hashFilesFor = ['build', 'watch'], additionalFilesToParse = [], env,
|
|
49
|
+
clearOutDirBefore = [], mainOutSubDir, mainBundleName = 'bundle', tsconfigPath = path.resolve(process.cwd(), 'tsconfig.json'), indexHTMLPath, indexHTMLEnv = {}, outputIndexHTMLFor = ['build', 'watch'], insertScriptTag = 'body', reactHotLoading = false, hashFilesFor = ['build', 'watch'], additionalFilesToParse = [], env,
|
|
46
50
|
// Dev server options
|
|
47
|
-
hotLoading = true, host = '0.0.0.0', port = 8080, publicDir, publicPath, singlePageApp = true, headers, extendBabelPresets, extendBabelPlugins, extendWebpackPlugins, extendWebpackModuleRules, } = config_1.getTsbConfig(fullConfigPath);
|
|
48
|
-
const fullTsconfigPath = tsconfig_1.resolveTsconfigPath(fullConfigDir, tsconfigPath);
|
|
51
|
+
hotLoading = true, host = '0.0.0.0', port = 8080, publicDir, publicPath, singlePageApp = true, headers, extendBabelPresets, extendBabelPlugins, extendWebpackPlugins, extendWebpackModuleRules, } = (0, config_1.getTsbConfig)(fullConfigPath);
|
|
52
|
+
const fullTsconfigPath = (0, tsconfig_1.resolveTsconfigPath)(fullConfigDir, tsconfigPath);
|
|
49
53
|
const fullOutDir = path.resolve(fullConfigDir, outDir);
|
|
50
54
|
const bundleOutSubDirRelative = path.relative(fullOutDir, mainOutSubDir ? path.resolve(fullOutDir, mainOutSubDir) : fullOutDir);
|
|
51
|
-
const tsconfig = tsconfig_1.getTsconfig(fullTsconfigPath);
|
|
55
|
+
const tsconfig = (0, tsconfig_1.getTsconfig)(fullTsconfigPath);
|
|
52
56
|
const isReactAppDev = reactHotLoading && mode === 'development';
|
|
53
|
-
const additionalEntries = isReactAppDev
|
|
54
|
-
|
|
57
|
+
const additionalEntries = isReactAppDev
|
|
58
|
+
? [require.resolve('react-hot-loader/patch')]
|
|
59
|
+
: [];
|
|
60
|
+
const babelPlugins = isReactAppDev
|
|
61
|
+
? [require.resolve('react-hot-loader/babel')]
|
|
62
|
+
: [];
|
|
55
63
|
const babelPresets = [
|
|
56
64
|
[
|
|
57
|
-
'@babel/preset-env',
|
|
65
|
+
require.resolve('@babel/preset-env'),
|
|
58
66
|
{
|
|
59
67
|
modules: false,
|
|
60
68
|
useBuiltIns: 'usage',
|
|
@@ -77,6 +85,7 @@ const createWebpackConfig = (configPath = constants_1.CONFIG_FILE_NAME, mode, co
|
|
|
77
85
|
filename: path.resolve(fullOutDir, 'index.html'),
|
|
78
86
|
alwaysWriteToDisk: shouldOutputHTML,
|
|
79
87
|
inject: insertScriptTag,
|
|
88
|
+
templateParameters: indexHTMLEnv,
|
|
80
89
|
}
|
|
81
90
|
: {
|
|
82
91
|
alwaysWriteToDisk: shouldOutputHTML,
|
|
@@ -84,6 +93,7 @@ const createWebpackConfig = (configPath = constants_1.CONFIG_FILE_NAME, mode, co
|
|
|
84
93
|
meta: {
|
|
85
94
|
viewport: 'width=device-width, initial-scale=1',
|
|
86
95
|
},
|
|
96
|
+
templateParameters: indexHTMLEnv,
|
|
87
97
|
}),
|
|
88
98
|
new html_webpack_harddisk_plugin_1.default(),
|
|
89
99
|
]
|
|
@@ -101,7 +111,7 @@ const createWebpackConfig = (configPath = constants_1.CONFIG_FILE_NAME, mode, co
|
|
|
101
111
|
include: [...tsconfigInclude, ...additionalInclude],
|
|
102
112
|
use: [
|
|
103
113
|
{
|
|
104
|
-
loader: 'babel-loader',
|
|
114
|
+
loader: require.resolve('babel-loader'),
|
|
105
115
|
options: {
|
|
106
116
|
babelrc: false,
|
|
107
117
|
presets: extendBabelPresets
|
|
@@ -113,7 +123,7 @@ const createWebpackConfig = (configPath = constants_1.CONFIG_FILE_NAME, mode, co
|
|
|
113
123
|
},
|
|
114
124
|
},
|
|
115
125
|
{
|
|
116
|
-
loader: 'ts-loader',
|
|
126
|
+
loader: require.resolve('ts-loader'),
|
|
117
127
|
options: {
|
|
118
128
|
transpileOnly: true,
|
|
119
129
|
configFile: fullTsconfigPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webpack-config.js","sourceRoot":"","sources":["../src/webpack-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webpack-config.js","sourceRoot":"","sources":["../src/webpack-config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jakesidsmith/tsb",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "Dead simple TypeScript bundler, watcher, dev server, transpiler, and polyfiller",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -10,12 +10,13 @@
|
|
|
10
10
|
"tsb": "dist/cli.js"
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
|
-
"
|
|
14
|
-
"test-
|
|
15
|
-
"test-
|
|
13
|
+
"create-dotenv": "echo 'TEST=test' > .env",
|
|
14
|
+
"test-build": "npm run create-dotenv && rm -rf dist && npm run dist && ./dist/cli.js build --config test-files/tsb.config.ts",
|
|
15
|
+
"test-watch": "npm run create-dotenv && rm -rf dist && npm run dist && ./dist/cli.js watch --config test-files/tsb.config.ts",
|
|
16
|
+
"test-serve": "npm run create-dotenv && rm -rf dist && npm run dist && ./dist/cli.js serve --config test-files/tsb.config.ts",
|
|
16
17
|
"dist": "rm -rf dist && tsc --project tsconfig.dist.json && chmod +x dist/cli.js",
|
|
17
|
-
"prettier": "prettier --write
|
|
18
|
-
"lint": "prettier --check
|
|
18
|
+
"prettier": "prettier --write .",
|
|
19
|
+
"lint": "prettier --check . && eslint '**/*.{js,jsx,ts,tsx}'",
|
|
19
20
|
"typecheck": "tsc --noEmit && tsc --noEmit --project test-files/tsconfig.json",
|
|
20
21
|
"test": "npm run typecheck && npm run lint",
|
|
21
22
|
"prepublishOnly": "npm test && npm run dist"
|
|
@@ -66,18 +67,18 @@
|
|
|
66
67
|
"yup": "^0.30.0"
|
|
67
68
|
},
|
|
68
69
|
"devDependencies": {
|
|
69
|
-
"@pmmmwh/react-refresh-webpack-plugin": "^0.
|
|
70
|
-
"@types/node": "^
|
|
70
|
+
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.8",
|
|
71
|
+
"@types/node": "^16.11.66",
|
|
71
72
|
"@types/react": "^17.0.5",
|
|
72
73
|
"@types/react-dom": "^17.0.3",
|
|
73
74
|
"@types/rimraf": "^3.0.0",
|
|
74
75
|
"@types/yup": "^0.29.9",
|
|
75
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
76
|
-
"@typescript-eslint/parser": "^
|
|
77
|
-
"eslint": "^
|
|
78
|
-
"eslint-config-prettier": "^
|
|
79
|
-
"eslint-plugin-prettier": "^
|
|
80
|
-
"prettier": "^2.
|
|
76
|
+
"@typescript-eslint/eslint-plugin": "^5.40.0",
|
|
77
|
+
"@typescript-eslint/parser": "^5.40.0",
|
|
78
|
+
"eslint": "^8.25.0",
|
|
79
|
+
"eslint-config-prettier": "^8.5.0",
|
|
80
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
81
|
+
"prettier": "^2.7.1",
|
|
81
82
|
"react": "^17.0.2",
|
|
82
83
|
"react-dom": "^17.0.2",
|
|
83
84
|
"react-svg-loader": "^3.0.3"
|
package/src/config.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { Command, Config, InsertScriptTag } from './types';
|
|
|
6
6
|
import * as yup from 'yup';
|
|
7
7
|
import * as logger from './logger';
|
|
8
8
|
import * as semver from 'semver';
|
|
9
|
+
import { getErrorMessages } from './utils';
|
|
9
10
|
|
|
10
11
|
const CONFIG_VALIDATOR = yup
|
|
11
12
|
.object()
|
|
@@ -22,6 +23,7 @@ const CONFIG_VALIDATOR = yup
|
|
|
22
23
|
mainBundleName: yup.string().optional(),
|
|
23
24
|
tsconfigPath: yup.string().optional(),
|
|
24
25
|
indexHTMLPath: yup.string().optional(),
|
|
26
|
+
indexHTMLEnv: yup.object<Record<string, unknown>>().optional(),
|
|
25
27
|
outputIndexHTMLFor: yup
|
|
26
28
|
.array()
|
|
27
29
|
.of<Command>(yup.mixed<Command>().oneOf(['build', 'watch', 'serve']))
|
|
@@ -160,7 +162,7 @@ export const getTsbConfig = (configPath: string): Config => {
|
|
|
160
162
|
try {
|
|
161
163
|
CONFIG_VALIDATOR.validateSync(tsbConfigExports.default);
|
|
162
164
|
} catch (error) {
|
|
163
|
-
logger.error(error
|
|
165
|
+
logger.error(getErrorMessages(error));
|
|
164
166
|
|
|
165
167
|
logger.error(`Invalid ${CONFIG_FILE_NAME}`);
|
|
166
168
|
return process.exit(1);
|
|
@@ -180,13 +182,45 @@ export const getTsbConfig = (configPath: string): Config => {
|
|
|
180
182
|
if (missingEnvVars.length) {
|
|
181
183
|
missingEnvVars.forEach((envVar) => {
|
|
182
184
|
logger.error(
|
|
183
|
-
`Could not get value for environment variable "${envVar}"`
|
|
185
|
+
`Could not get value for environment variable "${envVar}" defined in config.env`
|
|
184
186
|
);
|
|
185
187
|
});
|
|
186
188
|
return process.exit(1);
|
|
187
189
|
}
|
|
188
190
|
}
|
|
189
191
|
|
|
192
|
+
let { indexHTMLEnv } = config;
|
|
193
|
+
|
|
194
|
+
if (indexHTMLEnv) {
|
|
195
|
+
const missingEnvVars = Object.entries(indexHTMLEnv)
|
|
196
|
+
.map(([key, value]) =>
|
|
197
|
+
typeof value === 'undefined' && typeof process.env[key] === 'undefined'
|
|
198
|
+
? key
|
|
199
|
+
: null
|
|
200
|
+
)
|
|
201
|
+
.filter((key) => key !== null);
|
|
202
|
+
|
|
203
|
+
if (missingEnvVars.length) {
|
|
204
|
+
missingEnvVars.forEach((envVar) => {
|
|
205
|
+
logger.error(
|
|
206
|
+
`Could not get value for environment variable "${envVar}" defined in config.indexHTMLEnv`
|
|
207
|
+
);
|
|
208
|
+
});
|
|
209
|
+
return process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
indexHTMLEnv = Object.entries(indexHTMLEnv).reduce((memo, [key]) => {
|
|
213
|
+
if (typeof process.env[key] !== 'undefined') {
|
|
214
|
+
return {
|
|
215
|
+
...memo,
|
|
216
|
+
[key]: process.env[key],
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return memo;
|
|
221
|
+
}, indexHTMLEnv);
|
|
222
|
+
}
|
|
223
|
+
|
|
190
224
|
if (config.indexHTMLPath) {
|
|
191
225
|
const fullIndexHTMLPath = path.resolve(fullConfigDir, config.indexHTMLPath);
|
|
192
226
|
|
|
@@ -266,5 +300,8 @@ export const getTsbConfig = (configPath: string): Config => {
|
|
|
266
300
|
}
|
|
267
301
|
}
|
|
268
302
|
|
|
269
|
-
return
|
|
303
|
+
return {
|
|
304
|
+
...config,
|
|
305
|
+
indexHTMLEnv,
|
|
306
|
+
};
|
|
270
307
|
};
|
package/src/tsconfig.ts
CHANGED
|
@@ -5,6 +5,7 @@ import * as ts from 'typescript';
|
|
|
5
5
|
import * as logger from './logger';
|
|
6
6
|
import { Tsconfig } from './types';
|
|
7
7
|
import { VALID_JSX_OPTIONS } from './constants';
|
|
8
|
+
import { getErrorMessages } from './utils';
|
|
8
9
|
|
|
9
10
|
const TSCONFIG_VALIDATOR = yup
|
|
10
11
|
.object()
|
|
@@ -64,7 +65,7 @@ export const resolveTsconfig = (
|
|
|
64
65
|
try {
|
|
65
66
|
TSCONFIG_VALIDATOR.validateSync(validTsconfig);
|
|
66
67
|
} catch (error) {
|
|
67
|
-
logger.error(error
|
|
68
|
+
logger.error(getErrorMessages(error));
|
|
68
69
|
logger.error(`Invalid tsconfig.json at "${tsconfigPath}"`);
|
|
69
70
|
return process.exit(1);
|
|
70
71
|
}
|
package/src/types.ts
CHANGED
|
@@ -37,6 +37,10 @@ export interface Config {
|
|
|
37
37
|
* @description Path to a custom index.html template
|
|
38
38
|
*/
|
|
39
39
|
indexHTMLPath?: string;
|
|
40
|
+
/**
|
|
41
|
+
* @description Variables to expose to the index.html template (referenced with <%= example %>)
|
|
42
|
+
*/
|
|
43
|
+
indexHTMLEnv?: Env;
|
|
40
44
|
/**
|
|
41
45
|
* @description List of commands for which to output index.html to disk
|
|
42
46
|
*/
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ValidationError } from 'yup';
|
|
2
|
+
|
|
3
|
+
export const getErrorMessages = (error: unknown): string => {
|
|
4
|
+
if (typeof error === 'string') {
|
|
5
|
+
return error;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (error instanceof ValidationError) {
|
|
9
|
+
return error.errors.join('\n');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (error instanceof Error) {
|
|
13
|
+
return error.message;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return 'Unknown error';
|
|
17
|
+
};
|
package/src/webpack-callback.ts
CHANGED
|
@@ -3,39 +3,38 @@ import * as logger from './logger';
|
|
|
3
3
|
|
|
4
4
|
type WebpackCallback = (error?: Error, stats?: Stats) => void;
|
|
5
5
|
|
|
6
|
-
export const createWebpackCallback =
|
|
7
|
-
|
|
8
|
-
stats
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (error || stats?.compilation.errors.length) {
|
|
20
|
-
logger.error('Failed to compile');
|
|
6
|
+
export const createWebpackCallback =
|
|
7
|
+
(exit: boolean): WebpackCallback =>
|
|
8
|
+
(error, stats) => {
|
|
9
|
+
if (error) {
|
|
10
|
+
logger.error(error);
|
|
11
|
+
} else if (stats?.compilation.errors.length) {
|
|
12
|
+
stats.compilation.errors.forEach((compilationError) => {
|
|
13
|
+
logger.error(compilationError.message);
|
|
14
|
+
logger.error(compilationError.file);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
21
17
|
|
|
22
|
-
if (
|
|
23
|
-
|
|
18
|
+
if (error || stats?.compilation.errors.length) {
|
|
19
|
+
logger.error('Failed to compile');
|
|
20
|
+
|
|
21
|
+
if (exit) {
|
|
22
|
+
return process.exit(1);
|
|
23
|
+
}
|
|
24
24
|
}
|
|
25
|
-
}
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
if (
|
|
27
|
+
typeof stats?.endTime !== 'undefined' &&
|
|
28
|
+
typeof stats?.startTime !== 'undefined'
|
|
29
|
+
) {
|
|
30
|
+
const time = ((stats.endTime - stats.startTime) / 1000).toFixed(2);
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
logger.success(`Compiled in ${time} seconds`);
|
|
33
|
+
}
|
|
35
34
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
if (exit) {
|
|
36
|
+
return process.exit(0);
|
|
37
|
+
}
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
};
|
|
39
|
+
return;
|
|
40
|
+
};
|
package/src/webpack-config.ts
CHANGED
|
@@ -34,6 +34,7 @@ export const createWebpackConfig = (
|
|
|
34
34
|
mainBundleName = 'bundle',
|
|
35
35
|
tsconfigPath = path.resolve(process.cwd(), 'tsconfig.json'),
|
|
36
36
|
indexHTMLPath,
|
|
37
|
+
indexHTMLEnv = {},
|
|
37
38
|
outputIndexHTMLFor = ['build', 'watch'],
|
|
38
39
|
insertScriptTag = 'body',
|
|
39
40
|
reactHotLoading = false,
|
|
@@ -65,11 +66,15 @@ export const createWebpackConfig = (
|
|
|
65
66
|
|
|
66
67
|
const isReactAppDev = reactHotLoading && mode === 'development';
|
|
67
68
|
|
|
68
|
-
const additionalEntries = isReactAppDev
|
|
69
|
-
|
|
69
|
+
const additionalEntries = isReactAppDev
|
|
70
|
+
? [require.resolve('react-hot-loader/patch')]
|
|
71
|
+
: [];
|
|
72
|
+
const babelPlugins = isReactAppDev
|
|
73
|
+
? [require.resolve('react-hot-loader/babel')]
|
|
74
|
+
: [];
|
|
70
75
|
const babelPresets = [
|
|
71
76
|
[
|
|
72
|
-
'@babel/preset-env',
|
|
77
|
+
require.resolve('@babel/preset-env'),
|
|
73
78
|
{
|
|
74
79
|
modules: false,
|
|
75
80
|
useBuiltIns: 'usage',
|
|
@@ -96,6 +101,7 @@ export const createWebpackConfig = (
|
|
|
96
101
|
filename: path.resolve(fullOutDir, 'index.html'),
|
|
97
102
|
alwaysWriteToDisk: shouldOutputHTML,
|
|
98
103
|
inject: insertScriptTag,
|
|
104
|
+
templateParameters: indexHTMLEnv,
|
|
99
105
|
}
|
|
100
106
|
: {
|
|
101
107
|
alwaysWriteToDisk: shouldOutputHTML,
|
|
@@ -103,6 +109,7 @@ export const createWebpackConfig = (
|
|
|
103
109
|
meta: {
|
|
104
110
|
viewport: 'width=device-width, initial-scale=1',
|
|
105
111
|
},
|
|
112
|
+
templateParameters: indexHTMLEnv,
|
|
106
113
|
}
|
|
107
114
|
),
|
|
108
115
|
new HtmlWebpackHarddiskPlugin(),
|
|
@@ -129,7 +136,7 @@ export const createWebpackConfig = (
|
|
|
129
136
|
include: [...tsconfigInclude, ...additionalInclude],
|
|
130
137
|
use: [
|
|
131
138
|
{
|
|
132
|
-
loader: 'babel-loader',
|
|
139
|
+
loader: require.resolve('babel-loader'),
|
|
133
140
|
options: {
|
|
134
141
|
babelrc: false,
|
|
135
142
|
presets: extendBabelPresets
|
|
@@ -141,7 +148,7 @@ export const createWebpackConfig = (
|
|
|
141
148
|
},
|
|
142
149
|
},
|
|
143
150
|
{
|
|
144
|
-
loader: 'ts-loader',
|
|
151
|
+
loader: require.resolve('ts-loader'),
|
|
145
152
|
options: {
|
|
146
153
|
transpileOnly: true,
|
|
147
154
|
configFile: fullTsconfigPath,
|