Skip to content

Commit 7c2651e

Browse files
author
Andrey Fedoseev
committed
Add plugins parameter to Babel compiler.
1 parent f333474 commit 7c2651e

File tree

6 files changed

+40
-19
lines changed

6 files changed

+40
-19
lines changed

CHANGES.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Dev
1212
- Add source maps support for Babel
1313
- Add `Handlebars <http://handlebarsjs.com/>`_ compiler
1414
- Add support for Django 1.9
15+
- Add ``plugins`` parameter to Babel compiler
1516

1617

1718
1.0.1

README.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,13 +194,13 @@ Babel
194194
``sourcemap_enabled``
195195
Boolean. Set to ``True`` to enable source maps. Default: ``False``
196196

197-
``modules``
198-
Babel `modules <https://babeljs.io/docs/usage/modules/>`_ command line option. Default: ``None`` (uses Babel's default option).
197+
``plugins``
198+
Babel `plugins <http://babeljs.io/docs/plugins/>`_ command line option. Default: ``None`` (uses Babel's default option).
199199

200200
Example::
201201

202202
STATIC_PRECOMPILER_COMPILERS = (
203-
('static_precompiler.compilers.Babel', {"executable": "/usr/bin/babel", "sourcemap_enabled": True, "modules": "amd"}),
203+
('static_precompiler.compilers.Babel', {"executable": "/usr/bin/babel", "sourcemap_enabled": True, "plugins": "transform-react-jsx"}),
204204
)
205205

206206

circle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ dependencies:
33
- sudo apt-get install python2.7-dev python3.4-dev
44
- npm install -g coffee-script@1.7.1
55
- npm install -g less@1.7.4
6-
- npm install -g babel@4.3.0
6+
- npm install -g babel@6.2.0
77
- npm install -g stylus@0.50.0
88
- npm install -g handlebars@4.0.2
99
- gem install sass -v 3.4.9

static_precompiler/compilers/babel.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import json
22
import os
33
import posixpath
4+
import warnings
45

56
from static_precompiler import exceptions, utils
67

@@ -17,23 +18,34 @@ class Babel(base.BaseCompiler):
1718
input_extension = "es6"
1819
output_extension = "js"
1920

20-
def __init__(self, executable="babel", sourcemap_enabled=False, modules=None):
21+
def __init__(self, executable="babel", sourcemap_enabled=False, modules=None, plugins=None):
2122
self.executable = executable
2223
self.is_sourcemap_enabled = sourcemap_enabled
24+
if modules:
25+
warnings.warn("'modules' option is removed in Babel 6.0. Use `plugins` instead.", DeprecationWarning)
2326
self.modules = modules
27+
self.plugins = plugins
2428
super(Babel, self).__init__()
2529

30+
def get_extra_args(self):
31+
args = []
32+
33+
if self.modules is not None:
34+
args += ["--modules", self.modules]
35+
36+
if self.plugins is not None:
37+
args += ["--plugins", self.plugins]
38+
39+
return args
40+
2641
def compile_file(self, source_path):
2742
args = [
2843
self.executable,
29-
]
44+
] + self.get_extra_args()
3045

3146
if self.is_sourcemap_enabled:
3247
args.append("-s")
3348

34-
if self.modules is not None:
35-
args.extend(["--modules", self.modules])
36-
3749
full_output_path = self.get_full_output_path(source_path)
3850

3951
full_output_dirname = os.path.dirname(full_output_path)
@@ -66,11 +78,8 @@ def compile_file(self, source_path):
6678

6779
def compile_source(self, source):
6880
args = [
69-
self.executable
70-
]
71-
72-
if self.modules is not None:
73-
args.extend(["--modules", self.modules])
81+
self.executable,
82+
] + self.get_extra_args()
7483

7584
out, errors = utils.run_command(args, source)
7685
if errors:
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log("Hello, World!"

static_precompiler/tests/test_babel.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ def test_compile_file(monkeypatch, tmpdir):
2020
assert os.path.exists(full_output_path)
2121

2222
with open(full_output_path) as compiled:
23-
assert compiled.read() == """"use strict";
23+
assert compiled.read() == """console.log("Hello, World!");\n"""
2424

25-
console.log("Hello, World!");
26-
"""
25+
with pytest.raises(exceptions.StaticCompilationError):
26+
compiler.compile_file("scripts/broken.es6")
2727

2828

2929
def test_sourcemap(monkeypatch, tmpdir):
@@ -46,7 +46,7 @@ def test_compile_source():
4646

4747
assert (
4848
clean_javascript(compiler.compile_source('console.log("Hello, World!");')) ==
49-
""""use strict";\nconsole.log("Hello, World!");"""
49+
"""console.log("Hello, World!");"""
5050
)
5151

5252
with pytest.raises(exceptions.StaticCompilationError):
@@ -55,5 +55,15 @@ def test_compile_source():
5555
# Test non-ascii
5656
assert (
5757
clean_javascript(compiler.compile_source('console.log("Привет, Мир!");')) ==
58-
""""use strict";\nconsole.log("Привет, Мир!");"""
58+
"""console.log("Привет, Мир!");"""
5959
)
60+
61+
62+
def test_get_extra_args():
63+
64+
compiler = compilers.Babel(modules="foo", plugins="bar")
65+
66+
assert compiler.get_extra_args() == [
67+
"--modules", "foo",
68+
"--plugins", "bar",
69+
]

0 commit comments

Comments
 (0)