I have created a small CLI tool in typescript and have achieved to create a .exe out of it with nexe. A new use case is to write out some files that are bundled within the application: Let's say my CLI tool provides the user with empty template files that the user can then fill out.
A sample command would be: myapp.exe --action export-templates --outdir path/to/some/dir
What shall happen now is that the CLI tool will export the template files that it contains to this location.
I have bundled the files already, see an excerpt of my package.json:
"scripts": {
"build": "npm run compile && nexe compiled/index.js --target windows-x64-10.16.0 --resource \"resources/**/*\""
}
I tried to access the files with:
const fileBuffer = fs.readFileSync(path.join('__dirname', `/templates/mytemplate.doc`));
However, I come up with an exception:
Error: ENOENT: no such file or directory, open 'C:\Users\Tom\compiled\templates\mytemplate.doc'
Can anyone tell me how to properly access the files inside my bundled .exe with fs?
okay, too bad I needed to find this out by myself, the documentation is really not great on this...
After stumbling upon some issues from 2016 an 2017 (mainly https://github.com/nexe/nexe/pull/93) I thought the solution would be to use
nexeres. Well, turns out this maybe used to work, but sure does not any more. When added arequire('nexeres')in my app it will run into anError: Cannot find module 'nexeres'error.So again I was searching issues and finally found the solution in https://github.com/nexe/nexe/issues/291: Simply use
fs.readFileorfs.readFileSyncwith a relative path. My final code looks like this: