flecks/packages/core/build/.neutrinorc.js

79 lines
1.9 KiB
JavaScript
Raw Normal View History

2022-02-25 04:58:08 -06:00
const {chmod} = require('fs');
const {join} = require('path');
const airbnb = require('@neutrinojs/airbnb');
const banner = require('@neutrinojs/banner');
const copy = require('@neutrinojs/copy');
const node = require('@neutrinojs/node');
const glob = require('glob');
const {
2022-02-28 05:16:24 -06:00
FLECKS_CORE_ROOT = process.cwd(),
2022-02-25 04:58:08 -06:00
} = process.env;
module.exports = require('../src/bootstrap/fleck.neutrinorc');
// Dotfiles.
module.exports.use.push((neutrino) => {
['eslintrc', 'eslint.defaults'].forEach((filename) => {
neutrino.config
2022-03-09 07:25:58 -06:00
.entry(`server/build/.${filename}`)
2022-02-25 04:58:08 -06:00
.clear()
2022-03-09 07:25:58 -06:00
.add(`./src/server/build/${filename}`);
2022-02-25 04:58:08 -06:00
})
});
// Tests.
module.exports.use.push((neutrino) => {
// Test entrypoint.
2022-02-28 05:16:24 -06:00
const testPaths = glob.sync(join(FLECKS_CORE_ROOT, 'test/*.js'));
testPaths.push(...glob.sync(join(FLECKS_CORE_ROOT, `test/platforms/server/*.js`)));
2022-02-25 04:58:08 -06:00
if (testPaths.length > 0) {
const testEntry = neutrino.config.entry('test').clear();
testPaths.forEach((path) => testEntry.add(path));
}
});
module.exports.use.unshift((neutrino) => {
neutrino.config.plugins.delete('start-server');
});
2022-02-28 21:49:35 -06:00
module.exports.use.unshift(node({clean: {cleanStaleWebpackAssets: false}}));
2022-02-25 04:58:08 -06:00
module.exports.use.unshift(
airbnb({
eslint: {
baseConfig: {
2022-03-09 07:25:58 -06:00
...require('../src/server/build/eslint.defaults'),
2022-02-25 04:58:08 -06:00
env: {
mocha: true,
},
},
},
}),
);
module.exports.use.push(banner({
banner: '#!/usr/bin/env node',
include: /^cli\.js$/,
pluginId: 'shebang',
raw: true,
}))
module.exports.use.push(({config}) => {
config
.plugin('executable')
.use(class Executable {
apply(compiler) {
compiler.hooks.afterEmit.tapAsync(
'Executable',
(compilation, callback) => {
chmod(join(__dirname, '..', 'dist', 'cli.js'), 0o755, callback);
},
)
}
});
});