Skip to content

Commit

Permalink
fixed .vscode debug settings, added storybook support
Browse files Browse the repository at this point in the history
  • Loading branch information
tm-3 committed Aug 23, 2017
1 parent 8c65557 commit 6c9b041
Show file tree
Hide file tree
Showing 5 changed files with 280 additions and 86 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ This option performs a series of tasks that are meant to be completed right afte
├──stores
└──util
```

* Runs `getstorybook`. Tests to see if a user has @storybook/cli installed. See the [storybook quick start guide](https://storybook.js.org/basics/quick-start-guide/) for more info.

***NOTE*** I am only testing on linux/ubuntu. Most of these options should work on windows as I'm using shelljs and fs for any file access. I'm happy to accept a PR to fix any windows bugs you may have found.

22 changes: 15 additions & 7 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ const _1 = require("./lib/");
let componentTools = new _1.ComponentTools();
let projectTools = new _1.ProjectTools();
let ui = new inquirer.ui.BottomBar();
clear();
function menuPrompt() {
clear();
console.log(chalk.green(figlet.textSync('rnutils', {
horizontalLayout: 'default',
verticalLayout: 'default'
Expand Down Expand Up @@ -173,18 +173,26 @@ function createNewScreen(screenName) {
*/
function setupProject() {
return __awaiter(this, void 0, void 0, function* () {
yield projectTools.installPackages();
yield projectTools.createDevScripts();
yield projectTools.createStructure();
yield projectTools.createTsConfigJson();
yield projectTools.setupDebugging();
yield projectTools.modifyAppJson();
try {
yield projectTools.installPackages();
yield projectTools.createDevScripts();
yield projectTools.createStructure();
yield projectTools.createTsConfigJson();
yield projectTools.setupDebugging();
yield projectTools.modifyAppJson();
yield projectTools.addStorybook();
return 'done';
}
catch (err) {
return err;
}
});
}
function pathExists(dir) {
return fs.existsSync(dir);
}
function notInProject() {
//not working. Need to learn inquirer.
ui.updateBottomBar('You do not appear to be in a project. Please run rnutils from within your react native project.');
}
menuPrompt();
141 changes: 111 additions & 30 deletions lib/ProjectTools.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ class ProjectTools {
args = args.concat(this.packages);
devArgs = devArgs.concat(this.devPackages);
cmd = 'yarnpkg';
console.log('args: ' + args);
console.log('devArgs: ' + devArgs);
}
else {
//Use NPM
Expand All @@ -64,14 +62,10 @@ class ProjectTools {
args = args.concat(this.packages);
devArgs = devArgs.concat(this.devPackages);
cmd = 'npm';
console.log('args: ' + args);
console.log('devArgs: ' + devArgs);
}
try {
let devResult = spawn.sync(cmd, devArgs, { stdio: 'inherit' });
let result = spawn.sync(cmd, args, { stdio: 'inherit' });
console.log('devResult: ' + devResult);
console.log('result: ' + result);
}
catch (err) {
console.log('err: ' + err);
Expand All @@ -90,9 +84,11 @@ class ProjectTools {
appJson.expo.packagerOpts.sourceExts = ['ts', 'tsx'];
appJson.expo.packagerOpts.transformer = 'node_modules/react-native-typescript-transformer/index.js';
fs.writeFileSync(this.projectRoot + '/app.json', JSON.stringify(appJson, null, 4));
return 'done';
}
catch (err) {
console.log(err);
return err;
}
});
}
Expand All @@ -116,9 +112,11 @@ class ProjectTools {
"increaseWatches": "sudo sysctl -w fs.inotify.max_user_watches=10000"
};
fs.writeFileSync(this.projectRoot + '/package.json', JSON.stringify(packageJson, null, 2));
return 'done';
}
catch (err) {
console.log(err);
return err;
}
});
}
Expand All @@ -127,22 +125,28 @@ class ProjectTools {
*/
createTsConfigJson() {
return __awaiter(this, void 0, void 0, function* () {
let config = {
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"target": "es2015",
"module": "commonjs",
"jsx": "react-native",
"moduleResolution": "node",
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
};
fs.writeFileSync(this.projectRoot + '/tsconfig.json', JSON.stringify(config, null, 4));
this.deleteJsConfigJson();
try {
let config = {
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"target": "es2015",
"module": "commonjs",
"jsx": "react-native",
"moduleResolution": "node",
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
};
fs.writeFileSync(this.projectRoot + '/tsconfig.json', JSON.stringify(config, null, 4));
this.deleteJsConfigJson();
return 'done';
}
catch (err) {
return err;
}
});
}
/**
Expand All @@ -166,13 +170,15 @@ class ProjectTools {
this.projectRoot + '/__tests__/stores',
this.projectRoot + '/__tests__/util'
]);
return 'done';
}
else {
console.log('Please run rnutils from within your react native project.');
}
}
catch (err) {
console.log(err);
return err;
}
});
}
Expand All @@ -189,18 +195,93 @@ class ProjectTools {
console.log(err);
}
}
addStorybook() {
return __awaiter(this, void 0, void 0, function* () {
try {
if (this.userHasStorybook()) {
let cmd = 'getstorybook';
let result = spawn.sync(cmd, null, { stdio: 'inherit' });
return 'done';
}
}
catch (err) {
return err;
}
});
}
setupDebugging() {
return __awaiter(this, void 0, void 0, function* () {
let settings = {
"react-native": {
"packager": {
"port": 19001
try {
let settings = {
"react-native": {
"packager": {
"port": 19001
}
}
}
};
fs.writeFileSync(this.projectRoot + '/.vscode/settings.json', JSON.stringify(settings, null, 4));
};
let launch = {
"version": "0.2.0",
"configurations": [
{
"name": "Debug Android",
"program": "${workspaceRoot}/.vscode/launchReactNative.js",
"type": "reactnative",
"request": "launch",
"platform": "android",
"sourceMaps": true,
"outDir": "${workspaceRoot}/.vscode/.react"
},
{
"name": "Debug iOS",
"program": "${workspaceRoot}/.vscode/launchReactNative.js",
"type": "reactnative",
"request": "launch",
"platform": "ios",
"target": "iPhone 5s",
"sourceMaps": true,
"outDir": "${workspaceRoot}/.vscode/.react"
},
{
"name": "Attach to packager",
"program": "${workspaceRoot}/.vscode/launchReactNative.js",
"type": "reactnative",
"request": "attach",
"sourceMaps": true,
"outDir": "${workspaceRoot}/.vscode/.react"
},
{
"name": "Debug in Exponent",
"program": "${workspaceRoot}/.vscode/launchReactNative.js",
"type": "reactnative",
"request": "launch",
"platform": "exponent",
"sourceMaps": true,
"outDir": "${workspaceRoot}/.vscode/.react"
}
]
};
shelljs.mkdir(this.projectRoot + '/.vscode');
fs.writeFileSync(this.projectRoot + '/.vscode/settings.json', JSON.stringify(settings, null, 4));
fs.writeFileSync(this.projectRoot + '/.vscode/launch.json', JSON.stringify(launch, null, 4));
return 'done';
}
catch (err) {
return err;
}
});
}
userHasStorybook() {
try {
const result = spawn.sync('getstorybook', ['-V'], { stdio: 'ignore' });
if (result.error || result.status !== 0) {
return false;
}
return true;
}
catch (err) {
return false;
}
}
userHasYarn() {
try {
const result = spawn.sync('yarnpkg', ['--version'], { stdio: 'ignore' });
Expand All @@ -209,7 +290,7 @@ class ProjectTools {
}
return true;
}
catch (e) {
catch (err) {
return false;
}
}
Expand Down
25 changes: 16 additions & 9 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ let componentTools = new ComponentTools();
let projectTools = new ProjectTools();
let ui = new inquirer.ui.BottomBar();


clear();

function menuPrompt() {
clear();
console.log(
chalk.green(
figlet.textSync('rnutils', {
Expand Down Expand Up @@ -45,7 +44,6 @@ function menuPrompt() {
]).then((answers) => {
switch (answers.options) {
case 'Create Component':

inquirer.prompt({
type: 'input',
name: 'componentName',
Expand Down Expand Up @@ -203,12 +201,20 @@ function createNewScreen(screenName: string) {
* Creates a standard project folder structure.
*/
async function setupProject() {
await projectTools.installPackages();
await projectTools.createDevScripts();
await projectTools.createStructure();
await projectTools.createTsConfigJson();
await projectTools.setupDebugging();
await projectTools.modifyAppJson();

try {
await projectTools.installPackages();
await projectTools.createDevScripts();
await projectTools.createStructure();
await projectTools.createTsConfigJson();
await projectTools.setupDebugging();
await projectTools.modifyAppJson();
await projectTools.addStorybook();
return 'done';
}
catch (err) {
return err;
}
}


Expand All @@ -217,6 +223,7 @@ function pathExists(dir: string) {
}

function notInProject() {
//not working. Need to learn inquirer.
ui.updateBottomBar('You do not appear to be in a project. Please run rnutils from within your react native project.')
}

Expand Down
Loading

0 comments on commit 6c9b041

Please sign in to comment.