@berun/preset-react
Version:
BeRun preset for building React web applications
132 lines (123 loc) • 3.73 kB
text/typescript
import { create as berunJs } from '@berun/berun'
import presetReact from '../src'
test('Gets Webpack module rules configuration', () => {
const berun = berunJs(presetReact)
berun.webpack.toConfig() // run once to set babel, jest config etc.
expect(berun.webpack.module.rule('main').oneOf('image').toConfig()).toEqual({
test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
exclude: [/node_modules/],
use: [
{
loader:
'/Volumes/DATA/projects/berun/node_modules/url-loader/dist/cjs.js',
options: {
limit: 10000,
name: 'static/media/[name].[hash:8].[ext]'
}
}
]
})
expect(berun.webpack.module.rule('main').oneOf('compile').toConfig()).toEqual(
{
test: /\.(js|jsx|ts|tsx)$/,
include: ['/Volumes/DATA/projects/berun'],
exclude: [/node_modules/],
use: [
/* berun.webpack.module.rule('main').oneOf('compile').use('babel') */
{
loader:
'/Volumes/DATA/projects/berun/node_modules/babel-loader/lib/index.js',
options: {
babelrc: false,
cacheCompression: false,
cacheDirectory: true,
compact: false,
highlightCode: true,
presets: ['@berun/babel-preset-react-app'],
sourceType: 'unambiguous'
}
}
]
}
)
expect(berun.webpack.module.rule('main').oneOf('static').toConfig()).toEqual({
exclude: [
/\.(css|scss|sass|js|jsx|mjs|ts|tsx)$/,
/\.ejs$/,
/\.html$/,
/\.json$/,
/node_modules/
],
use: [
/* berun.webpack.module.rule('main').oneOf('static').use('file') */
{
loader:
'/Volumes/DATA/projects/berun/node_modules/file-loader/dist/cjs.js',
options: {
name: 'static/media/[name].[hash:8].[ext]'
}
}
]
})
})
test('Gets Webpack production module rules configuration', () => {
process.env.NODE_ENV = 'production'
const berun = berunJs(presetReact)
berun.webpack.toConfig() // run once to set babel, jest config etc.
expect(berun.webpack.module.rule('main').oneOf('image').toConfig()).toEqual({
test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
exclude: [/node_modules/],
use: [
{
loader:
'/Volumes/DATA/projects/berun/node_modules/url-loader/dist/cjs.js',
options: {
limit: 10000,
name: 'static/media/[name].[hash:8].[ext]'
}
}
]
})
expect(berun.webpack.module.rule('main').oneOf('compile').toConfig()).toEqual(
{
test: /\.(js|jsx|ts|tsx)$/,
include: ['/Volumes/DATA/projects/berun'],
exclude: [/node_modules/],
use: [
/* berun.webpack.module.rule('main').oneOf('compile').use('babel') */
{
loader:
'/Volumes/DATA/projects/berun/node_modules/babel-loader/lib/index.js',
options: {
babelrc: false,
cacheDirectory: true,
cacheCompression: true,
compact: true,
highlightCode: true,
presets: ['@berun/babel-preset-react-app'],
sourceType: 'unambiguous'
}
}
]
}
)
expect(berun.webpack.module.rule('main').oneOf('static').toConfig()).toEqual({
exclude: [
/\.(css|scss|sass|js|jsx|mjs|ts|tsx)$/,
/\.ejs$/,
/\.html$/,
/\.json$/,
/node_modules/
],
use: [
/* berun.webpack.module.rule('main').oneOf('static').use('file') */
{
loader:
'/Volumes/DATA/projects/berun/node_modules/file-loader/dist/cjs.js',
options: {
name: 'static/media/[name].[hash:8].[ext]'
}
}
]
})
})