Related to: #1229
Problem:
When adding custom extension config, resulting code require statements have *.extension ending. Lua does not know how to handle custom extensions in this case and tries to load *.extension modules instead. Causes runtime exception.
In my case I just used post-build step with file renaming (*.lua -> *.script), but since project compile time started taking more time I wanted to use --watch flag which requires correctly working 'extension' field.
- I have noted that
lualib_bundle file has correct .script extension and imported in a correct way (without .script part)
- I assume that it may be related to
compilerOptions.paths aliasing config in tsconfig.json
Providing alias config part just in case:
{
"compilerOptions": {
"paths": {
"#/*": ["../../cli/*"],
"@/*": ["../*"]
}
}
}
Details
- Add extension to the config file (tsconfig.json)
{
"tstl": {
"extension": ".script"
}
}
- Write some import statements
import { XR_object_factory } from "xray16";
import { LuaLogger } from "@/mod/scripts/utils/logging";
const logger: LuaLogger = new LuaLogger("register");
register_classes = (object_factory) => {
logger.info("Register classes:");
const { registerGameClasses } = require("@/mod/scripts/registering/class_registrator");
registerGameClasses(object_factory);
};
- Build it and get result:
local ____lualib = require("lualib_bundle")
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____logging = require("scripts.utils.logging.script")
local LuaLogger = ____logging.LuaLogger
local logger = __TS__New(LuaLogger, "register")
register_classes = function(object_factory)
logger:info("Register classes:")
local ____require_result_0 = require("scripts.registering.class_registrator.script")
local registerGameClasses = ____require_result_0.registerGameClasses
registerGameClasses(object_factory)
end
Expected result / result without extension config field usage:
If I build without extension config, I get following result:
local ____lualib = require("lualib_bundle")
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____logging = require("scripts.utils.logging")
local LuaLogger = ____logging.LuaLogger
local logger = __TS__New(LuaLogger, "register")
register_classes = function(object_factory)
logger:info("Register classes:")
local ____require_result_0 = require("scripts.registering.class_registrator")
local registerGameClasses = ____require_result_0.registerGameClasses
registerGameClasses(object_factory)
end
Related to: #1229
Problem:
When adding custom extension config, resulting code require statements have
*.extensionending. Lua does not know how to handle custom extensions in this case and tries to load*.extensionmodules instead. Causes runtime exception.In my case I just used post-build step with file renaming
(*.lua -> *.script), but since project compile time started taking more time I wanted to use --watch flag which requires correctly working 'extension' field.lualib_bundlefile has correct .script extension and imported in a correct way (without .script part)compilerOptions.pathsaliasing config intsconfig.jsonProviding alias config part just in case:
{ "compilerOptions": { "paths": { "#/*": ["../../cli/*"], "@/*": ["../*"] } } }Details
{ "tstl": { "extension": ".script" } }Expected result / result without extension config field usage:
If I build without extension config, I get following result: