Skip to content

Commit

Permalink
Merge pull request #73 from homer0/homer0_dotenv
Browse files Browse the repository at this point in the history
feat(services/building/configuration): load targets dotenv files
  • Loading branch information
homer0 committed Jul 31, 2019
2 parents 9b76607 + e50235e commit 0c4ae38
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 8 deletions.
16 changes: 12 additions & 4 deletions src/services/building/configuration.js
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,18 @@ class WebpackConfiguration {
* @ignore
*/
_getDefinitions(target, env) {
const definitions = {
'process.env.NODE_ENV': `'${env}'`,
[this.buildVersion.getDefinitionVariable()]: JSON.stringify(this.buildVersion.getVersion()),
};
const targetVariables = this.targets.loadTargetDotEnvFile(target, env);
const definitions = Object.keys(targetVariables).reduce(
(current, variableName) => Object.assign({}, current, {
[`process.env.${variableName}`]: JSON.stringify(targetVariables[variableName]),
}),
{}
);

definitions['process.env.NODE_ENV'] = `'${env}'`;
definitions[this.buildVersion.getDefinitionVariable()] = JSON.stringify(
this.buildVersion.getVersion()
);

if (
target.is.browser &&
Expand Down
38 changes: 34 additions & 4 deletions tests/services/building/configuration.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,13 @@ describe('services/building:configuration', () => {
const targetConfig = {
getConfig: jest.fn(() => config),
};
const targets = 'targets';
const envVarName = 'ROSARIO';
const envVarValue = 'Charito';
const targets = {
loadTargetDotEnvFile: jest.fn(() => ({
[envVarName]: envVarValue,
})),
};
const targetRules = 'target-rule';
const targetsFileRules = {
getRulesForTarget: jest.fn(() => targetRules),
Expand Down Expand Up @@ -191,6 +197,8 @@ describe('services/building:configuration', () => {
`webpack/${target.name}.${buildType}.config.js`,
targetConfig
);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledTimes(1);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledWith(target, buildType);
expect(targetConfig.getConfig).toHaveBeenCalledTimes(1);
expect(targetConfig.getConfig).toHaveBeenCalledWith({
target,
Expand All @@ -199,6 +207,7 @@ describe('services/building:configuration', () => {
[target.name]: [path.join(target.paths.source, target.entry[buildType])],
},
definitions: {
[`process.env.${envVarName}`]: `"${envVarValue}"`,
'process.env.NODE_ENV': `'${buildType}'`,
[versionVariable]: `"${version}"`,
},
Expand Down Expand Up @@ -234,6 +243,7 @@ describe('services/building:configuration', () => {
const filesToCopy = ['copy'];
const targets = {
getFilesToCopy: jest.fn(() => filesToCopy),
loadTargetDotEnvFile: jest.fn(() => ({})),
};
const targetRules = 'target-rule';
const targetsFileRules = {
Expand Down Expand Up @@ -300,6 +310,8 @@ describe('services/building:configuration', () => {
`webpack/${target.name}.${buildType}.config.js`,
targetConfig
);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledTimes(1);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledWith(target, buildType);
expect(targetConfig.getConfig).toHaveBeenCalledTimes(1);
expect(targetConfig.getConfig).toHaveBeenCalledWith({
target,
Expand Down Expand Up @@ -347,6 +359,7 @@ describe('services/building:configuration', () => {
const filesToCopy = ['copy'];
const targets = {
getFilesToCopy: jest.fn(() => filesToCopy),
loadTargetDotEnvFile: jest.fn(() => ({})),
};
const targetRules = 'target-rule';
const targetsFileRules = {
Expand Down Expand Up @@ -411,6 +424,8 @@ describe('services/building:configuration', () => {
`webpack/${target.name}.${buildType}.config.js`,
targetConfig
);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledTimes(1);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledWith(target, buildType);
expect(targetConfig.getConfig).toHaveBeenCalledTimes(1);
expect(targetConfig.getConfig).toHaveBeenCalledWith({
target,
Expand Down Expand Up @@ -457,6 +472,7 @@ describe('services/building:configuration', () => {
const filesToCopy = ['copy'];
const targets = {
getFilesToCopy: jest.fn(() => filesToCopy),
loadTargetDotEnvFile: jest.fn(() => ({})),
getBrowserTargetConfiguration: jest.fn(() => targetBrowserConfig),
};
const targetRules = 'target-rule';
Expand Down Expand Up @@ -521,6 +537,8 @@ describe('services/building:configuration', () => {
`webpack/${target.name}.${buildType}.config.js`,
targetConfig
);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledTimes(1);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledWith(target, buildType);
expect(targetConfig.getConfig).toHaveBeenCalledTimes(1);
expect(targetConfig.getConfig).toHaveBeenCalledWith({
target,
Expand Down Expand Up @@ -566,7 +584,9 @@ describe('services/building:configuration', () => {
const targetConfig = {
getConfig: jest.fn(() => config),
};
const targets = 'targets';
const targets = {
loadTargetDotEnvFile: jest.fn(() => ({})),
};
const targetRules = 'target-rule';
const targetsFileRules = {
getRulesForTarget: jest.fn(() => targetRules),
Expand Down Expand Up @@ -634,6 +654,8 @@ describe('services/building:configuration', () => {
`webpack/${target.name}.${buildType}.config.js`,
targetConfig
);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledTimes(1);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledWith(target, buildType);
expect(targetConfig.getConfig).toHaveBeenCalledTimes(1);
expect(targetConfig.getConfig).toHaveBeenCalledWith({
target,
Expand Down Expand Up @@ -677,7 +699,9 @@ describe('services/building:configuration', () => {
const targetConfig = {
getConfig: jest.fn(() => config),
};
const targets = 'targets';
const targets = {
loadTargetDotEnvFile: jest.fn(() => ({})),
};
const targetRules = 'target-rule';
const targetsFileRules = {
getRulesForTarget: jest.fn(() => targetRules),
Expand Down Expand Up @@ -747,6 +771,8 @@ describe('services/building:configuration', () => {
`webpack/${target.name}.${buildType}.config.js`,
targetConfig
);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledTimes(1);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledWith(target, buildType);
expect(targetConfig.getConfig).toHaveBeenCalledTimes(1);
expect(targetConfig.getConfig).toHaveBeenCalledWith({
target,
Expand Down Expand Up @@ -787,7 +813,9 @@ describe('services/building:configuration', () => {
const targetConfig = {
getConfig: jest.fn(() => config),
};
const targets = '';
const targets = {
loadTargetDotEnvFile: jest.fn(() => ({})),
};
const targetRules = 'target-rule';
const targetsFileRules = {
getRulesForTarget: jest.fn(() => targetRules),
Expand Down Expand Up @@ -859,6 +887,8 @@ describe('services/building:configuration', () => {
`webpack/${target.name}.${buildType}.config.js`,
targetConfig
);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledTimes(1);
expect(targets.loadTargetDotEnvFile).toHaveBeenCalledWith(target, buildType);
expect(targetConfig.getConfig).toHaveBeenCalledTimes(1);
expect(targetConfig.getConfig).toHaveBeenCalledWith({
target,
Expand Down

0 comments on commit 0c4ae38

Please sign in to comment.