node-app-root-path icon indicating copy to clipboard operation
node-app-root-path copied to clipboard

[fix] add support for esbuild

Open dhorkin opened this issue 3 years ago • 1 comments

This may be related to #49 , but given the original ticket was not about esbuild, this is more related to one of the replies there.

I'm using serverless-esbuild / serverless-offline to run my code.

  • the resolved variable in app-root-path's resolve.js is resolving to '/my/path/to/project/.esbuild/.build/src'
  • the appRootPath is being returned as '/my/path/to/project/node_modules/serverless-offline/src/lambda/handler-runner/worker-thread-runner'
    • looks like appRootPath is being set for me in the else at the bottom: appRootPath = path.dirname(process.argv[1]);
  • and what I want would be /my/path/to/project/

By changing getFirstPartFromNodeModules to getFirstPart and having it look for either node_modules or esbuild, it seems to solve this issue for me.

I thought about doing something like the following, if it would be preferred:

const getFirstPart = function (resolved) {
	const foldersToSplitOn = [
		'node_modules',
		'.esbuild'
	].map(folder => sep + folder);

	const dirRegEx = new RegExp(foldersToSplitOn.join('|'));

	if (foldersToSplitOn.some(folder => -1 !== resolved.indexOf(folder))) {
		const parts = resolved.split(dirRegEx);
		if (parts.length) {
			return parts[0];
		}
	}

    return null;
};

dhorkin avatar Nov 01 '22 23:11 dhorkin

@inxilpro I know the readme says " Expect long stretches of zero updates—that does not mean that the module is outdated," but I believe this PR is still needed. It's been hanging out over 6 months now with no response, and it isn't long.

dhorkin avatar May 17 '23 01:05 dhorkin