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

78 lines
1.7 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 glob = require('glob');
2022-03-12 07:01:00 -06:00
const fleck = require('../src/bootstrap/fleck');
2022-02-25 04:58:08 -06:00
const {
2022-02-28 05:16:24 -06:00
FLECKS_CORE_ROOT = process.cwd(),
2022-02-25 04:58:08 -06:00
} = process.env;
2022-03-12 07:01:00 -06:00
const config = require('../src/bootstrap/fleck.neutrinorc');
2022-02-25 04:58:08 -06:00
// Dotfiles.
2022-03-12 07:01:00 -06:00
config.use.push(({config}) => {
2022-02-25 04:58:08 -06:00
['eslintrc', 'eslint.defaults'].forEach((filename) => {
2022-03-12 07:01:00 -06:00
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.
2022-03-12 07:01:00 -06:00
config.use.push(({config}) => {
2022-02-25 04:58:08 -06:00
// 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) {
2022-03-12 07:01:00 -06:00
const testEntry = config.entry('test').clear();
2022-02-25 04:58:08 -06:00
testPaths.forEach((path) => testEntry.add(path));
}
});
2022-03-12 07:01:00 -06:00
config.use.unshift(fleck());
2022-02-25 04:58:08 -06:00
2022-03-12 07:01:00 -06:00
config.use.unshift(
2022-02-25 04:58:08 -06:00
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,
},
},
},
}),
);
2022-03-12 07:01:00 -06:00
config.use.push(banner({
2022-02-25 04:58:08 -06:00
banner: '#!/usr/bin/env node',
include: /^cli\.js$/,
pluginId: 'shebang',
raw: true,
}))
2022-03-12 07:01:00 -06:00
config.use.push(({config}) => {
2022-02-25 04:58:08 -06:00
config
.plugin('executable')
.use(class Executable {
apply(compiler) {
compiler.hooks.afterEmit.tapAsync(
'Executable',
(compilation, callback) => {
chmod(join(__dirname, '..', 'dist', 'cli.js'), 0o755, callback);
},
)
}
});
});
2022-03-12 07:01:00 -06:00
module.exports = config;