Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-27478] Webpack: Use thread-loader in production builds

GitHub Issuen/a
TypeImprovement
PriorityNone
StatusClosed
ResolutionWon't Do
Resolution Date2020-01-24T00:10:24.000+0000
Affected Version/sn/a
Fix Version/sn/a
ComponentsTooling
Labelsn/a
ReporterJan Vennemann
AssigneeJan Vennemann
Created2019-10-17T11:07:22.000+0000
Updated2020-01-24T00:10:24.000+0000

Description

To speed up production builds we should include [thread-loader](https://github.com/webpack-contrib/thread-loader) before other expensive loaders, like babel-loader. The thread-loader is currently having some issues with platform specific files which needs to be investigated. We override Webpack's default compiler input filesystem with [PlatformAwareFilesystem](https://github.com/appcelerator/titanium-webpack-devkit/blob/a6af9bea700d2aeaa776defcbea96fe573047060/packages/webpack-target-titanium/src/plugins/PlatformAwareFileSystemPlugin.js#L12) to easily switch out files based on the current platform. For example, a require to @/components/Platform.vue uses @/components/Platform.ios.vue if available. This works fine in other loaders because they use the internal compiler filesystem. However, therad-loader has no access to that in workers, so it resorts to Node's [fs](https://github.com/webpack-contrib/thread-loader/blob/488300f5ad86c2eb794848de4cbc71c0cc5637da/src/worker.js#L107) module.

Comments

  1. Jan Vennemann 2020-01-24

    There are other issues with with vue-loader and our custom titanium-vue-template-compiler as well. We need to specify our custom vue template compile function, which is not supported by thread loader. Since this will just result in a slight build time improvements i'll close this ticket for now. We can open it again should the need for thread-loader come up again.

JSON Source