@jakesidsmith/tsb 1.0.1 → 3.0.0

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/.nvmrc CHANGED
@@ -1 +1 @@
1
- 16.14.2
1
+ 16.17.0
package/README.md CHANGED
@@ -189,6 +189,8 @@ interface Config {
189
189
  outputIndexHTMLFor?: readonly ('build' | 'watch' | 'serve')[]; // Default: ['build', 'watch']
190
190
  // Whether to add script tag to body, head, or not at all
191
191
  insertScriptTag?: 'body' | 'head' | false; // Default: 'body'
192
+ // Whether add "defer" attribute to script tag.
193
+ scriptLoading?: 'blocking' | 'defer' | 'module'; // default 'blocking'
192
194
  // Whether React hot-loading is enabled
193
195
  reactHotLoading?: boolean; // Default: false
194
196
  // List of commands for which output bundles are hashed
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Configuration, Plugin as WebpackPlugin, RuleSetRule as WebpackModuleRule } from 'webpack';
1
+ import { Configuration, WebpackPluginInstance, RuleSetRule as WebpackModuleRule } from 'webpack';
2
2
  import { Configuration as DevServerConfiguration } from 'webpack-dev-server';
3
3
  import { PluginItem as BabelPluginItem } from '@babel/core';
4
4
  export interface Config {
@@ -42,6 +42,10 @@ export interface Config {
42
42
  * @description Whether to add script tag to body, head, or not at all
43
43
  */
44
44
  insertScriptTag?: InsertScriptTag;
45
+ /**
46
+ * @description Whether add "defer" attribute to script tag.
47
+ */
48
+ scriptLoading?: 'blocking' | 'defer' | 'module';
45
49
  /**
46
50
  * @description Whether React hot-loading is enabled
47
51
  */
@@ -101,7 +105,7 @@ export interface Config {
101
105
  /**
102
106
  * @description Extend the webpack plugins
103
107
  */
104
- extendWebpackPlugins?: (plugins: WebpackPlugin[], mode: Mode, command: Command) => WebpackPlugin[];
108
+ extendWebpackPlugins?: (plugins: WebpackPluginInstance[], mode: Mode, command: Command) => WebpackPluginInstance[];
105
109
  /**
106
110
  * @description Extend the webpack module.rules
107
111
  */
@@ -1,4 +1,4 @@
1
1
  import { Stats } from 'webpack';
2
- type WebpackCallback = (error?: Error, stats?: Stats) => void;
2
+ type WebpackCallback = (error?: Error | null, stats?: Stats) => void;
3
3
  export declare const createWebpackCallback: (exit: boolean) => WebpackCallback;
4
4
  export {};
@@ -46,7 +46,7 @@ const createWebpackConfig = (configPath = constants_1.CONFIG_FILE_NAME, mode, co
46
46
  // Required
47
47
  main, outDir,
48
48
  // Base options
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,
49
+ clearOutDirBefore = [], mainOutSubDir, mainBundleName = 'bundle', tsconfigPath = path.resolve(process.cwd(), 'tsconfig.json'), indexHTMLPath, indexHTMLEnv = {}, outputIndexHTMLFor = ['build', 'watch'], insertScriptTag = 'body', scriptLoading = 'blocking', reactHotLoading = false, hashFilesFor = ['build', 'watch'], additionalFilesToParse = [], env,
50
50
  // Dev server options
51
51
  hotLoading = true, host = '0.0.0.0', port = 8080, publicDir, publicPath, singlePageApp = true, headers, https, extendBabelPresets, extendBabelPlugins, extendWebpackPlugins, extendWebpackModuleRules, } = (0, config_1.getTsbConfig)(fullConfigPath);
52
52
  const fullTsconfigPath = (0, tsconfig_1.resolveTsconfigPath)(fullConfigDir, tsconfigPath);
@@ -85,11 +85,13 @@ const createWebpackConfig = (configPath = constants_1.CONFIG_FILE_NAME, mode, co
85
85
  filename: path.resolve(fullOutDir, 'index.html'),
86
86
  alwaysWriteToDisk: shouldOutputHTML,
87
87
  inject: insertScriptTag,
88
+ scriptLoading,
88
89
  templateParameters: indexHTMLEnv,
89
90
  }
90
91
  : {
91
92
  alwaysWriteToDisk: shouldOutputHTML,
92
93
  inject: insertScriptTag,
94
+ scriptLoading,
93
95
  meta: {
94
96
  viewport: 'width=device-width, initial-scale=1',
95
97
  },
@@ -1 +1 @@
1
- {"version":3,"file":"webpack-config.js","sourceRoot":"","sources":["../src/webpack-config.ts"],"names":[],"mappings":"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"}
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": "1.0.1",
3
+ "version": "3.0.0",
4
4
  "description": "Dead simple TypeScript bundler, watcher, dev server, transpiler, and polyfiller",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -49,21 +49,21 @@
49
49
  "@types/babel__core": "^7.1.14",
50
50
  "@types/semver": "^7.3.4",
51
51
  "@types/webpack-dev-server": "^3.11.1",
52
- "babel-loader": "^8.2.1",
52
+ "babel-loader": "^9.1.2",
53
53
  "chalk": "^4.1.0",
54
54
  "core-js": "^3.7.0",
55
55
  "dotenv": "^8.2.0",
56
56
  "fork-ts-checker-webpack-plugin": "^6.0.3",
57
- "html-webpack-harddisk-plugin": "^1.0.2",
58
- "html-webpack-plugin": "^4.5.0",
57
+ "html-webpack-harddisk-plugin": "^2.0.0",
58
+ "html-webpack-plugin": "^5.5.3",
59
59
  "jargs": "^0.4.7",
60
60
  "rimraf": "^3.0.2",
61
61
  "semver": "^7.3.2",
62
- "ts-loader": "^8.0.11",
63
- "tsconfig-paths-webpack-plugin": "^3.3.0",
62
+ "ts-loader": "^9.4.4",
63
+ "tsconfig-paths-webpack-plugin": "^4.0.1",
64
64
  "typescript": "^5.0.2",
65
- "webpack": "^4.44.2",
66
- "webpack-dev-server": "^3.11.0",
65
+ "webpack": "^5.88.1",
66
+ "webpack-dev-server": "^3.11.3",
67
67
  "yup": "^0.30.0"
68
68
  },
69
69
  "devDependencies": {
package/src/types.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Configuration,
3
- Plugin as WebpackPlugin,
3
+ WebpackPluginInstance,
4
4
  RuleSetRule as WebpackModuleRule,
5
5
  } from 'webpack';
6
6
  import { Configuration as DevServerConfiguration } from 'webpack-dev-server';
@@ -49,6 +49,10 @@ export interface Config {
49
49
  * @description Whether to add script tag to body, head, or not at all
50
50
  */
51
51
  insertScriptTag?: InsertScriptTag;
52
+ /**
53
+ * @description Whether add "defer" attribute to script tag.
54
+ */
55
+ scriptLoading?: 'blocking' | 'defer' | 'module';
52
56
  /**
53
57
  * @description Whether React hot-loading is enabled
54
58
  */
@@ -118,10 +122,10 @@ export interface Config {
118
122
  * @description Extend the webpack plugins
119
123
  */
120
124
  extendWebpackPlugins?: (
121
- plugins: WebpackPlugin[],
125
+ plugins: WebpackPluginInstance[],
122
126
  mode: Mode,
123
127
  command: Command
124
- ) => WebpackPlugin[];
128
+ ) => WebpackPluginInstance[];
125
129
  /**
126
130
  * @description Extend the webpack module.rules
127
131
  */
@@ -1,7 +1,7 @@
1
1
  import { Stats } from 'webpack';
2
2
  import * as logger from './logger';
3
3
 
4
- type WebpackCallback = (error?: Error, stats?: Stats) => void;
4
+ type WebpackCallback = (error?: Error | null, stats?: Stats) => void;
5
5
 
6
6
  export const createWebpackCallback =
7
7
  (exit: boolean): WebpackCallback =>
@@ -37,6 +37,7 @@ export const createWebpackConfig = (
37
37
  indexHTMLEnv = {},
38
38
  outputIndexHTMLFor = ['build', 'watch'],
39
39
  insertScriptTag = 'body',
40
+ scriptLoading = 'blocking',
40
41
  reactHotLoading = false,
41
42
  hashFilesFor = ['build', 'watch'],
42
43
  additionalFilesToParse = [],
@@ -102,11 +103,13 @@ export const createWebpackConfig = (
102
103
  filename: path.resolve(fullOutDir, 'index.html'),
103
104
  alwaysWriteToDisk: shouldOutputHTML,
104
105
  inject: insertScriptTag,
106
+ scriptLoading,
105
107
  templateParameters: indexHTMLEnv,
106
108
  }
107
109
  : {
108
110
  alwaysWriteToDisk: shouldOutputHTML,
109
111
  inject: insertScriptTag,
112
+ scriptLoading,
110
113
  meta: {
111
114
  viewport: 'width=device-width, initial-scale=1',
112
115
  },