RTVision / esbuild-dynamic-import

Plugin for transform dynamic imports in esbuild
17 stars 5 forks source link

Transforming string concatenations to template strings #10

Open julian-schneider opened 1 year ago

julian-schneider commented 1 year ago

Addresses #8.

Draft PR with hacky code that transforms any line containing import(...) to a template string as a preprocessing step, but without checking the original content. If the original line was not even a string concatenation, but e.g. part of a regex as happening here, it breaks the regex.

If the user is aware of this risk, the code can be used in combination with the filter option, as to not break other module code. But it would be nicer to be able to prevent the issue entirely:

Normally, this line does a final check if the import statement contains a template string. But since the new code has transformed destinationFile to a template string already, the check is now useless. If this condition was changed to effectively check whether the original line was either a template string, or a valid import statement containing simple string concatenation, this code should work fine. But I did not find a robust way to check that.

An alternative to using this code would be to let ESLint do the job: The prefer-template rule can be enforced via the --fix option, which might be a robust preprocessing step for string concatenation.