Skip to content

Commit

Permalink
Modularise scripts (facebook#1433)
Browse files Browse the repository at this point in the history
* Refactor start script into modules

* Move dev server config into config file

* Replace eject file whitelist with a "remove-file-on-eject" flag

* Move utils into scripts folder (for inclusion in ejection)

* Add missed changes

* Pass showInstructions as an argument

* Fix eject bug

* Don't eject babelTransform

# Conflicts:
#	packages/react-cy-scripts/scripts/eject.js
#	packages/react-cy-scripts/scripts/start.js
#	packages/react-cy-scripts/utils/createJestConfig.js
#	packages/react-scripts/scripts/utils/createJestConfig.js
#	packages/react-scripts/utils/createJestConfig.js
  • Loading branch information
djgrant authored and SpaceK33z committed Mar 7, 2017
1 parent 151f08f commit 3d0cb3a
Show file tree
Hide file tree
Showing 9 changed files with 353 additions and 273 deletions.
1 change: 1 addition & 0 deletions packages/react-cy-scripts/config/jest/babelTransform.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// @remove-file-on-eject
/**
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
*
Expand Down
54 changes: 30 additions & 24 deletions packages/react-cy-scripts/scripts/eject.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// @remove-file-on-eject
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
Expand All @@ -7,13 +8,14 @@
* of patent rights can be found in the PATENTS file in the same directory.
*/

var createJestConfig = require('../utils/createJestConfig');
var fs = require('fs-extra');
var path = require('path');
var paths = require('../config/paths');
var prompt = require('react-cy-dev-utils/prompt');
var spawnSync = require('cross-spawn').sync;
var chalk = require('chalk');
var prompt = require('react-dev-utils/prompt');
var paths = require('../config/paths');
var createJestConfig = require('./utils/createJestConfig');

var green = chalk.green;
var cyan = chalk.cyan;

Expand Down Expand Up @@ -45,44 +47,48 @@ prompt(

var folders = [
'config',
path.join('config', 'jest'),
'scripts'
'config/jest',
'scripts',
'scripts/utils',
];

var files = [
path.join('config', 'env.js'),
path.join('config', 'paths.js'),
path.join('config', 'polyfills.js'),
path.join('config', 'webpack.config.dev.js'),
path.join('config', 'webpack.config.prod.js'),
path.join('config', 'jest', 'cssTransform.js'),
path.join('config', 'jest', 'fileTransform.js'),
path.join('scripts', 'build.js'),
path.join('scripts', 'start.js'),
path.join('scripts', 'test.js')
];
// Make shallow array of files paths
var files = folders.reduce(function (files, folder) {
return files.concat(
fs.readdirSync(path.join(ownPath, folder))
// set full path
.map(file => path.join(ownPath, folder, file))
// omit dirs from file list
.filter(file => fs.lstatSync(file).isFile())
);
}, []);

// Ensure that the app folder is clean and we won't override any files
folders.forEach(verifyAbsent);
files.forEach(verifyAbsent);

// Copy the files over
console.log();
console.log(cyan('Copying files into ' + appPath));

folders.forEach(function(folder) {
fs.mkdirSync(path.join(appPath, folder))
});

console.log();
console.log(cyan('Copying files into ' + appPath));
files.forEach(function(file) {
console.log(' Adding ' + cyan(file) + ' to the project');
var content = fs
.readFileSync(path.join(ownPath, file), 'utf8')
var content = fs.readFileSync(file, 'utf8');

// Skip flagged files
if (content.match(/\/\/ @remove-file-on-eject/)) {
return;
}
content = content
// Remove dead code from .js files on eject
.replace(/\/\/ @remove-on-eject-begin([\s\S]*?)\/\/ @remove-on-eject-end/mg, '')
// Remove dead code from .applescript files on eject
.replace(/-- @remove-on-eject-begin([\s\S]*?)-- @remove-on-eject-end/mg, '')
.trim() + '\n';
fs.writeFileSync(path.join(appPath, file), content);
console.log(' Adding ' + cyan(file.replace(ownPath, '')) + ' to the project');
fs.writeFileSync(file.replace(ownPath, appPath), content);
});
console.log();

Expand Down
1 change: 1 addition & 0 deletions packages/react-cy-scripts/scripts/init.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// @remove-file-on-eject
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
Expand Down
Loading

0 comments on commit 3d0cb3a

Please sign in to comment.