Source code for ievv_opensource.utils.ievvbuildstatic.browserify_babelbuild

import json
import os

from . import browserify_jsbuild


[docs]class Plugin(browserify_jsbuild.Plugin): """ Browserify javascript babel build plugin. Examples: Simple example:: IEVVTASKS_BUILDSTATIC_APPS = ievvbuildstatic.config.Apps( ievvbuildstatic.config.App( appname='demoapp', version='1.0.0', plugins=[ ievvbuildstatic.browserify_babelbuild.Plugin( sourcefile='app.js', destinationfile='app.js', ), ] ) ) Custom source folder example:: IEVVTASKS_BUILDSTATIC_APPS = ievvbuildstatic.config.Apps( ievvbuildstatic.config.App( appname='demoapp', version='1.0.0', plugins=[ ievvbuildstatic.browserify_babelbuild.Plugin( sourcefolder=os.path.join('scripts', 'javascript', 'api'), sourcefile='api.js', destinationfile='api.js', ), ] ) ) """ name = 'browserify_babelbuild' def __init__(self, echmascript_version='es2015', autocreate_babelrc=True, **kwargs): """ Parameters: echmascript_version: The echmascript version to use. Defaults to ``"es2015"``. autocreate_babelrc (bool): **kwargs: Kwargs for :class:`ievv_opensource.utils.ievvbuildstatic.browserify_jsbuild.Plugin`. """ self.echmascript_version = echmascript_version self.autocreate_babelrc = autocreate_babelrc super(Plugin, self).__init__(**kwargs)
[docs] def install(self): """ Installs the ``babelify`` and ``babel-preset-<echmascript_version kwarg>`` NPM packages in addition to the packages installed by :meth:`ievv_opensource.utils.ievvbuildstatic.browserify_jsbuild.Plugin.install`. The packages are installed with no version specified, so you probably want to freeze the versions using the :class:`ievv_opensource.utils.ievvbuildstatic.npminstall.Plugin` plugin. """ super(Plugin, self).install() self.app.get_installer('npm').queue_install( 'babelify') self.app.get_installer('npm').queue_install( 'babel-preset-{}'.format(self.echmascript_version))
[docs] def get_babel_presets(self): """ Get a list of babelify presets. This is the presets that go into ``<HERE>`` in ``babelify -t [ babelify --presets [ <HERE> ] ]``. Defaults to ``["<the echmascript_version kwarg>"]``. """ presets = [self.echmascript_version] return presets
[docs] def get_browserify_extra_args(self): return ['-t', '[', 'babelify', ']']
def get_babelrc_path(self): return self.app.get_source_path('.babelrc') def babelrc_exists(self): return os.path.exists(self.get_babelrc_path()) def make_babelrc_dict(self): return { "presets": self.get_babel_presets() } def create_babelrc(self): open(self.get_babelrc_path(), 'w').write( json.dumps( self.make_babelrc_dict(), indent=2, sort_keys=True ))
[docs] def post_run(self): if self.autocreate_babelrc: self.create_babelrc() elif not self.babelrc_exists(): self.get_logger().command_error( '{babelrc_path} does not exist.' 'When configured with autocreate_babelrc=False, we expect ' 'you to create the .babelrc.'.format(babelrc_path=self.get_babelrc_path())) raise SystemExit()