fix(cp-frontend): gracefully handle multiple postinstall executions

checks if the webpack backup exists already before trying to create it
This commit is contained in:
Sérgio Ramos 2017-05-25 14:41:29 +01:00
parent c45fb3ce41
commit 73899b2784
3 changed files with 50 additions and 25 deletions

View File

@ -41,6 +41,7 @@
"unitcalc": "^1.0.4" "unitcalc": "^1.0.4"
}, },
"devDependencies": { "devDependencies": {
"apr-main": "^1.0.7",
"babel-plugin-inline-react-svg": "^0.4.0", "babel-plugin-inline-react-svg": "^0.4.0",
"babel-plugin-styled-components": "^1.1.4", "babel-plugin-styled-components": "^1.1.4",
"babel-preset-joyent-portal": "^1.0.0", "babel-preset-joyent-portal": "^1.0.0",
@ -52,6 +53,7 @@
"jest-matcher-utils": "^20.0.3", "jest-matcher-utils": "^20.0.3",
"jest-snapshot": "^20.0.3", "jest-snapshot": "^20.0.3",
"jest-styled-components": "^2.0.0", "jest-styled-components": "^2.0.0",
"mz": "^2.6.0",
"npm-run-all": "^4.0.2", "npm-run-all": "^4.0.2",
"react-scripts": "^1.0.0", "react-scripts": "^1.0.0",
"react-test-renderer": "^15.5.4", "react-test-renderer": "^15.5.4",

View File

@ -1,7 +1,11 @@
const fs = require('fs'); const { readFile, writeFile, exists } = require('mz/fs');
const main = require('apr-main');
const path = require('path'); const path = require('path');
// TODO: this will need to happen for prod and test too // TODO: this will need to happen for prod and test too
const enhancedConfigPath = path.join(__dirname, './webpack.config.dev.js');
const configPath = path.join( const configPath = path.join(
__dirname, __dirname,
'../node_modules/react-scripts/config/webpack.config.dev.js' '../node_modules/react-scripts/config/webpack.config.dev.js'
@ -10,30 +14,15 @@ const orignalConfigPath = path.join(
__dirname, __dirname,
'../node_modules/react-scripts/config/webpack.config.dev.original.js' '../node_modules/react-scripts/config/webpack.config.dev.original.js'
); );
const enhancedConfigPath = path.join(__dirname, './webpack.config.dev.js');
// bit of healthy callback hell for making it spicy main((async () => {
fs.readFile(configPath, (error, orignalConfig) => { const orignalConfigPathExists = await exists(orignalConfigPath);
if (error) {
console.log('Original config read error', error);
} else {
fs.writeFile(orignalConfigPath, orignalConfig, error => {
if (error) {
console.log('Original config write error', error);
} else {
fs.readFile(enhancedConfigPath, (error, enhancedConfig) => {
if (error) {
console.log('Enhanced config read error', error);
} else {
fs.writeFile(configPath, enhancedConfig, error => {
if (error) {
console.log('Enhanced config write error', error);
}
});
}
});
}
});
}
});
if (!orignalConfigPathExists) {
const orignalConfig = await readFile(configPath, 'utf-8');
await writeFile(orignalConfigPath, orignalConfig);
}
const enhancedConfig = await readFile(enhancedConfigPath);
await writeFile(configPath, enhancedConfig)
})());

View File

@ -147,6 +147,10 @@ ansi-styles@^3.0.0:
dependencies: dependencies:
color-convert "^1.0.0" color-convert "^1.0.0"
any-promise@^1.0.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
anymatch@^1.3.0: anymatch@^1.3.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
@ -190,6 +194,12 @@ append-transform@^0.4.0:
dependencies: dependencies:
default-require-extensions "^1.0.0" default-require-extensions "^1.0.0"
apr-main@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/apr-main/-/apr-main-1.0.7.tgz#4f2592e20cb236b09c3c3d98a95088fbcc5fad4d"
dependencies:
lodash.isfunction "^3.0.8"
aproba@^1.0.3: aproba@^1.0.3:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab"
@ -4114,6 +4124,10 @@ lodash.isequal@^4.1.1:
version "4.5.0" version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
lodash.isfunction@^3.0.8:
version "3.0.8"
resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz#4db709fc81bc4a8fd7127a458a5346c5cdce2c6b"
lodash.isobject@^3.0.2: lodash.isobject@^3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d"
@ -4359,6 +4373,14 @@ mute-stream@0.0.7:
version "0.0.7" version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
mz@^2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/mz/-/mz-2.6.0.tgz#c8b8521d958df0a4f2768025db69c719ee4ef1ce"
dependencies:
any-promise "^1.0.0"
object-assign "^4.0.1"
thenify-all "^1.0.0"
nan@^2.3.0: nan@^2.3.0:
version "2.6.2" version "2.6.2"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
@ -6575,6 +6597,18 @@ text-table@0.2.0, text-table@^0.2.0, text-table@~0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
thenify-all@^1.0.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
dependencies:
thenify ">= 3.1.0 < 4"
"thenify@>= 3.1.0 < 4":
version "3.3.0"
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839"
dependencies:
any-promise "^1.0.0"
throat@^3.0.0: throat@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/throat/-/throat-3.0.0.tgz#e7c64c867cbb3845f10877642f7b60055b8ec0d6" resolved "https://registry.yarnpkg.com/throat/-/throat-3.0.0.tgz#e7c64c867cbb3845f10877642f7b60055b8ec0d6"