Skip to content

Commit

Permalink
refactor(server): move filename option from create config to api
Browse files Browse the repository at this point in the history
  • Loading branch information
knagaitsev committed Jul 10, 2019
1 parent 8738bd1 commit d0c07dd
Show file tree
Hide file tree
Showing 7 changed files with 162 additions and 85 deletions.
4 changes: 0 additions & 4 deletions lib/utils/createConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,6 @@ function createConfig(config, argv, { port }) {
}
}

if (!options.filename && firstWpOpt.output && firstWpOpt.output.filename) {
options.filename = firstWpOpt.output && firstWpOpt.output.filename;
}

if (!options.watchOptions && firstWpOpt.watchOptions) {
options.watchOptions = firstWpOpt.watchOptions;
}
Expand Down
13 changes: 13 additions & 0 deletions lib/utils/setFilename.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'use strict';

function setFilename(compiler, options) {
const firstWpOpt = compiler.compilers
? compiler.compilers[0].options
: compiler.options;

if (!options.filename && firstWpOpt.output && firstWpOpt.output.filename) {
options.filename = firstWpOpt.output.filename;
}
}

module.exports = setFilename;
3 changes: 3 additions & 0 deletions lib/utils/updateCompiler.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@
const webpack = require('webpack');
const addEntries = require('./addEntries');
const getSocketClientPath = require('./getSocketClientPath');
const setFilename = require('./setFilename');

function updateCompiler(compiler, options) {
setFilename(compiler, options);

if (options.inline !== false) {
const findHMRPlugin = (config) => {
if (!config.plugins) {
Expand Down
45 changes: 0 additions & 45 deletions test/server/utils/__snapshots__/createConfig.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -283,51 +283,6 @@ Object {
}
`;

exports[`createConfig filename option (in devServer config) 1`] = `
Object {
"filename": "[name]-dev-server-bundle.js",
"hot": true,
"hotOnly": false,
"noInfo": true,
"port": 8080,
"publicPath": "/",
"stats": Object {
"cached": false,
"cachedAssets": false,
},
}
`;

exports[`createConfig filename option (in output config) 1`] = `
Object {
"filename": "[name]-output-bundle.js",
"hot": true,
"hotOnly": false,
"noInfo": true,
"port": 8080,
"publicPath": "/",
"stats": Object {
"cached": false,
"cachedAssets": false,
},
}
`;

exports[`createConfig filename option (in webpack config) 1`] = `
Object {
"filename": "[name]-bundle.js",
"hot": true,
"hotOnly": false,
"noInfo": true,
"port": 8080,
"publicPath": "/",
"stats": Object {
"cached": false,
"cachedAssets": false,
},
}
`;

exports[`createConfig historyApiFallback option (in devServer config) 1`] = `
Object {
"historyApiFallback": true,
Expand Down
49 changes: 49 additions & 0 deletions test/server/utils/__snapshots__/setFilename.test.js.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`setFilename existing devServer.filename, existing compiler filename should set correct options.filename 1`] = `
Object {
"filename": "devserver-bundle.js",
}
`;

exports[`setFilename existing devServer.filename, no compiler filename should set correct options.filename 1`] = `
Object {
"filename": "devserver-bundle.js",
}
`;

exports[`setFilename multi compiler, existing devServer.filename, existing compiler filename should set correct options.filename 1`] = `
Object {
"filename": "devserver-bundle.js",
}
`;

exports[`setFilename multi compiler, existing devServer.filename, no compiler filename should set correct options.filename 1`] = `
Object {
"filename": "devserver-bundle.js",
}
`;

exports[`setFilename multi compiler, no devServer.filename, existing compiler filename should set correct options.filename 1`] = `
Object {
"filename": "mybundle.js",
}
`;

exports[`setFilename multi compiler, no devServer.filename, no compiler filename should set correct options.filename 1`] = `
Object {
"filename": "[name].js",
}
`;

exports[`setFilename no devServer.filename, existing compiler filename should set correct options.filename 1`] = `
Object {
"filename": "mybundle.js",
}
`;

exports[`setFilename no devServer.filename, no compiler filename should set correct options.filename 1`] = `
Object {
"filename": "[name].js",
}
`;
36 changes: 0 additions & 36 deletions test/server/utils/createConfig.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -276,42 +276,6 @@ describe('createConfig', () => {
expect(config).toMatchSnapshot();
});

it('filename option (in webpack config)', () => {
const config = createConfig(
Object.assign({}, webpackConfig, {
output: { filename: '[name]-bundle.js' },
}),
argv,
{ port: 8080 }
);

expect(config).toMatchSnapshot();
});

it('filename option (in output config)', () => {
const config = createConfig(
Object.assign({}, webpackConfig, {
output: { filename: '[name]-output-bundle.js' },
}),
argv,
{ port: 8080 }
);

expect(config).toMatchSnapshot();
});

it('filename option (in devServer config)', () => {
const config = createConfig(
Object.assign({}, webpackConfig, {
devServer: { filename: '[name]-dev-server-bundle.js' },
}),
argv,
{ port: 8080 }
);

expect(config).toMatchSnapshot();
});

it('watchOptions option (in output config)', () => {
const config = createConfig(
Object.assign({}, webpackConfig, {
Expand Down
97 changes: 97 additions & 0 deletions test/server/utils/setFilename.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
'use strict';

const webpack = require('webpack');
const setFilename = require('../../../lib/utils/setFilename');

describe('setFilename', () => {
const cases = [
{
title: 'no devServer.filename, no compiler filename',
webpackFilename: null,
multiCompiler: false,
options: {},
},
{
title: 'no devServer.filename, existing compiler filename',
webpackFilename: 'mybundle.js',
multiCompiler: false,
options: {},
},
{
title: 'existing devServer.filename, no compiler filename',
webpackFilename: null,
multiCompiler: false,
options: {
filename: 'devserver-bundle.js',
},
},
{
title: 'existing devServer.filename, existing compiler filename',
webpackFilename: 'mybundle.js',
multiCompiler: false,
options: {
filename: 'devserver-bundle.js',
},
},
{
title: 'multi compiler, no devServer.filename, no compiler filename',
webpackFilename: null,
multiCompiler: true,
options: {},
},
{
title:
'multi compiler, no devServer.filename, existing compiler filename',
webpackFilename: 'mybundle.js',
multiCompiler: true,
options: {},
},
{
title:
'multi compiler, existing devServer.filename, no compiler filename',
webpackFilename: null,
multiCompiler: true,
options: {
filename: 'devserver-bundle.js',
},
},
{
title:
'multi compiler, existing devServer.filename, existing compiler filename',
webpackFilename: 'mybundle.js',
multiCompiler: true,
options: {
filename: 'devserver-bundle.js',
},
},
];

cases.forEach((data) => {
describe(data.title, () => {
let compiler;
beforeAll(() => {
let webpackConfig;
if (data.multiCompiler) {
// eslint-disable-next-line global-require
webpackConfig = require('../../fixtures/multi-compiler-config/webpack.config');
if (data.webpackFilename) {
webpackConfig[0].output.filename = data.webpackFilename;
}
} else {
// eslint-disable-next-line global-require
webpackConfig = require('../../fixtures/simple-config/webpack.config');
if (data.webpackFilename) {
webpackConfig.output.filename = data.webpackFilename;
}
}

compiler = webpack(webpackConfig);
});

it('should set correct options.filename', () => {
setFilename(compiler, data.options);
expect(data.options).toMatchSnapshot();
});
});
});
});

0 comments on commit d0c07dd

Please sign in to comment.