babel preset for our projects
$ npm install @gaincompliance/babel-preset --save-dev
.babelrc
for internal development purposesThis will target the current version of node and transpile my preferred upcoming features.
{
"presets": ["@gaincompliance"]
}
This will target the current node version, but will also transpile React features
{
"presets": [["@gaincompliance", {"react": true}]]
}
Optionally, also transpile immutable.js functionality
{
"presets": [["@gaincompliance", {"react": true, "immutable": true}]]
}
Rollup
can optimize properlyIn the rollup.config.js
:
export default {
...
plugins: [
babel({
babelrc: false,
exclude: ['./node_modules/**'],
presets: [['@gaincompliance', {targets: {node: 8}, modules: false}]],
}),
...
],
...
};
export default {
...
plugins: [
babel({
babelrc: false,
exclude: ['./node_modules/**'],
presets: [['@gaincompliance', {targets: {node: 8, browser: true}, modules: false}]],
}),
...
],
...
};
export default {
...
plugins: [
babel({
babelrc: false,
exclude: ['./node_modules/**'],
presets: [['@gaincompliance', {
targets: {node: 8, browser: true},
react: true,
modules: false
}]],
}),
...
],
...
};
Optionally, also transform immutable.js functionality
export default {
...
plugins: [
babel({
babelrc: false,
exclude: ['./node_modules/**'],
presets: [['@gaincompliance', {
targets: {node: 8, browser: true},
react: true,
immutable: true,
modules: false
}]],
}),
...
],
...
};
Optionally, disable transpilation of emotion
(for unit testing, for example)
export default {
...
plugins: [
babel({
babelrc: false,
exclude: ['./node_modules/**'],
presets: [['@gaincompliance', {
targets: {node: 8, browser: true},
react: true,
emotion: false,
modules: false
}]],
}),
...
],
...
};
$ nvm install
$ npm install
$ npm test