Skip to content

Instantly share code, notes, and snippets.

@legend80s
Created October 13, 2016 08:26
Show Gist options
  • Save legend80s/5c0d509422ee74e71315d7f1c365fdc9 to your computer and use it in GitHub Desktop.
Save legend80s/5c0d509422ee74e71315d7f1c365fdc9 to your computer and use it in GitHub Desktop.
Transform form JavaScript's ES6 `import` to `require`.
import re
def to_require(import_str):
''' Transform form JavaScript's ES6 `import` to `require`.
>>> to_require("import webpack from 'webpack'")
"const webpack = require('webpack')"
>>> to_require('import webpack from "webpack"')
'const webpack = require("webpack")'
>>> to_require("import webpack from 'webpack';")
"const webpack = require('webpack');"
>>> to_require("import webpack from 'webpack'")
"const webpack = require('webpack')"
>>> to_require("import webpack from 'webpack'")
"const webpack = require('webpack')"
>>> to_require("import webpack from 'webpack'")
"const webpack = require('webpack')"
>>> to_require("import webpack from 'webpack' ")
"const webpack = require('webpack') "
>>> to_require("import ProgressBarPlugin from 'progress-bar-webpack-plugin';")
"const ProgressBarPlugin = require('progress-bar-webpack-plugin');"
'''
return re.sub(r'import\s+(\w+)\s+from\s+([\'"])([\w-]+)[\'"]', r'const \1 = require(\2\3\2)', import_str)
# require_str = import_str.replace('import ', 'const ').replace('from ', '= require(')
# semicolon = re.sub(r';$', ');', require_str);
# return re.sub(r'([\'"])$', r'\1)', semicolon)
if __name__ == '__main__':
import doctest
doctest.testmod()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment