Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

Commit

Permalink
Remove reliance on babel environments, make babel options merging con…
Browse files Browse the repository at this point in the history
…sistent (#548)
  • Loading branch information
eliperelman committed Dec 6, 2017
1 parent 6e458b4 commit 16396d2
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 78 deletions.
15 changes: 5 additions & 10 deletions docs/packages/compile-loader/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,22 +132,17 @@ const { merge } = require('@neutrinojs/compile-loader');
// Decorators generally need to be enabled *before* other
// syntax which exists in both normal plugins, and
// development environment plugins.
const decorators = require.resolve('babel-plugin-transform-decorators-legacy');
const classes = require.resolve('babel-plugin-transform-class-properties');

// Now tap into the existing Babel options and merge our
// Tap into the existing Babel options and merge our
// decorator options *before* the rest of the existing
// Babel options
config.module
.rule('compile')
.use('babel')
.tap(options => merge({
plugins: [decorators, classes],
env: {
development: {
plugins: [decorators, classes]
}
}
plugins: [
require.resolve('babel-plugin-transform-decorators-legacy'),
require.resolve('babel-plugin-transform-class-properties')
]
}, options));
```

Expand Down
15 changes: 5 additions & 10 deletions packages/compile-loader/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,22 +132,17 @@ const { merge } = require('@neutrinojs/compile-loader');
// Decorators generally need to be enabled *before* other
// syntax which exists in both normal plugins, and
// development environment plugins.
const decorators = require.resolve('babel-plugin-transform-decorators-legacy');
const classes = require.resolve('babel-plugin-transform-class-properties');

// Now tap into the existing Babel options and merge our
// Tap into the existing Babel options and merge our
// decorator options *before* the rest of the existing
// Babel options
config.module
.rule('compile')
.use('babel')
.tap(options => merge({
plugins: [decorators, classes],
env: {
development: {
plugins: [decorators, classes]
}
}
plugins: [
require.resolve('babel-plugin-transform-decorators-legacy'),
require.resolve('babel-plugin-transform-class-properties')
]
}, options));
```

Expand Down
15 changes: 5 additions & 10 deletions packages/library/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,9 @@ module.exports = (neutrino, opts = {}) => {
);
}

try {
const pkg = neutrino.options.packageJson;
const hasSourceMap = (pkg.dependencies && 'source-map-support' in pkg.dependencies) ||
(pkg.devDependencies && 'source-map-support' in pkg.devDependencies);

if (hasSourceMap) {
neutrino.use(banner);
}
} catch (ex) {} // eslint-disable-line
const pkg = neutrino.options.packageJson;
const hasSourceMap = (pkg.dependencies && 'source-map-support' in pkg.dependencies) ||
(pkg.devDependencies && 'source-map-support' in pkg.devDependencies);

neutrino.use(compileLoader, {
include: [
Expand All @@ -85,9 +79,10 @@ module.exports = (neutrino, opts = {}) => {
.forEach(key => neutrino.config.entry(key).add(neutrino.options.mains[key]));

neutrino.config
.when(hasSourceMap, () => neutrino.use(banner))
.devtool('source-map')
.target(options.target)
.context(neutrino.options.root)
.devtool('source-map')
.output
.library(options.name)
.filename('[name].js')
Expand Down
48 changes: 20 additions & 28 deletions packages/preact/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const web = require('@neutrinojs/web');
const compileLoader = require('@neutrinojs/compile-loader');
const loaderMerge = require('@neutrinojs/loader-merge');
const web = require('@neutrinojs/web');
const { join } = require('path');
const merge = require('deepmerge');

Expand All @@ -8,35 +9,26 @@ const MODULES = join(__dirname, 'node_modules');
module.exports = (neutrino, opts = {}) => {
const options = merge({
hot: true,
babel: {
babel: {}
}, opts);

Object.assign(options, {
babel: compileLoader.merge({
plugins: [
[
require.resolve('babel-plugin-transform-react-jsx'),
{ pragma: 'h' }
],
[
require.resolve('babel-plugin-jsx-pragmatic'),
{
module: 'preact',
export: 'h',
import: 'h'
}
],
[require.resolve('babel-plugin-transform-react-jsx'), { pragma: 'h' }],
[require.resolve('babel-plugin-jsx-pragmatic'), {
module: 'preact',
export: 'h',
import: 'h'
}],
require.resolve('babel-plugin-transform-object-rest-spread'),
process.env.NODE_ENV !== 'development' ?
[require.resolve('babel-plugin-transform-class-properties'), { spec: true }] :
{}
],
env: {
development: {
plugins: [
[require.resolve('babel-plugin-transform-class-properties'), { spec: true }],
require.resolve('babel-plugin-transform-es2015-classes')
]
}
}
}
}, opts);
[require.resolve('babel-plugin-transform-class-properties'), { spec: true }],
process.env.NODE_ENV === 'development'
? require.resolve('babel-plugin-transform-es2015-classes')
: {}
]
}, options.babel)
});

neutrino.use(web, options);

Expand Down
1 change: 1 addition & 0 deletions packages/preact/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"homepage": "https://neutrino.js.org",
"bugs": "https://github.com/mozilla-neutrino/neutrino-dev/issues",
"dependencies": {
"@neutrinojs/compile-loader": "^7.3.2",
"@neutrinojs/loader-merge": "^7.3.2",
"@neutrinojs/web": "^7.3.2",
"babel-plugin-jsx-pragmatic": "^1.0.2",
Expand Down
11 changes: 4 additions & 7 deletions packages/react-components/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,18 +54,15 @@ module.exports = (neutrino, opts = {}) => {
'lib' :
neutrino.options.output;

try {
const pkg = neutrino.options.packageJson;
const hasSourceMap = (pkg.dependencies && 'source-map-support' in pkg.dependencies) ||
(pkg.devDependencies && 'source-map-support' in pkg.devDependencies);

hasSourceMap && neutrino.use(banner);
} catch (ex) {} // eslint-disable-line
const pkg = neutrino.options.packageJson;
const hasSourceMap = (pkg.dependencies && 'source-map-support' in pkg.dependencies) ||
(pkg.devDependencies && 'source-map-support' in pkg.devDependencies);

neutrino.use(react, options);

neutrino.config
.when(options.externals, config => config.externals([nodeExternals(options.externals)]))
.when(hasSourceMap, () => neutrino.use(banner))
.devtool('source-map')
.performance
.hints('error')
Expand Down
25 changes: 12 additions & 13 deletions packages/react/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,19 @@ module.exports = (neutrino, opts = {}) => {
}
],
require.resolve('babel-plugin-transform-object-rest-spread'),
...(process.env.NODE_ENV !== 'development' ?
[[require.resolve('babel-plugin-transform-class-properties'), { spec: true }]] :
[])
...(
process.env.NODE_ENV === 'development'
? [
...(options.hot ? [require.resolve('react-hot-loader/babel')] : null),
[require.resolve('babel-plugin-transform-class-properties'), { spec: true }],
require.resolve('babel-plugin-transform-es2015-classes')
]
: [
[require.resolve('babel-plugin-transform-class-properties'), { spec: true }]
]
)
],
presets: [require.resolve('babel-preset-react')],
env: {
development: {
plugins: [
...(options.hot ? [require.resolve('react-hot-loader/babel')] : []),
[require.resolve('babel-plugin-transform-class-properties'), { spec: true }],
require.resolve('babel-plugin-transform-es2015-classes')
]
}
}
presets: [require.resolve('babel-preset-react')]
}, options.babel)
});

Expand Down

0 comments on commit 16396d2

Please sign in to comment.