create-react-boilerplate-app
Advanced tools
Comparing version 0.1.9 to 0.1.10-beta.0
@@ -15,3 +15,3 @@ 'use strict'; | ||
this.program = this.commandSetting(); | ||
var boilerplateJson = this.getBoilerpalteJson(); | ||
// var boilerplateJson = this.getBoilerpalteJson(); | ||
this.packageJson = { | ||
@@ -22,11 +22,9 @@ version: '0.0.1', | ||
}; | ||
this.packageJson.name = boilerplateJson.name || 'app'; | ||
this.packageJson.name = 'app'; | ||
this.dependencies = ['react', 'react-dom', 'prop-types']; | ||
this.dependencies = this.dependencies.concat( | ||
boilerplateJson.dependencies || [] | ||
); | ||
this.devDependencies = ['react-boilerplate-app-scripts']; | ||
this.devDependencies = this.devDependencies.concat( | ||
boilerplateJson.devDependencies || [] | ||
); | ||
this.devDependencies = [ | ||
'react-boilerplate-app-utils', | ||
'react-boilerplate-app-scripts', | ||
'react-boilerplates', | ||
]; | ||
this.allDependencies = [] | ||
@@ -82,22 +80,22 @@ .concat(this.dependencies) | ||
} | ||
//获取当前模板的json文件信息,用于生产app的package.json信息 | ||
//boilerplate.json的结构跟package.json很相似。 | ||
getBoilerpalteJson() { | ||
var boilerplate = this.program.boilerplate; | ||
var boilerplateJsonPath = path.resolve( | ||
__dirname, | ||
'../boilerplate-config', | ||
boilerplate + '.json' | ||
); | ||
//获取当前模板的config.json | ||
getConfigJson() { | ||
try { | ||
var boilerplateJson = fs.readJsonSync(boilerplateJsonPath); | ||
return boilerplateJson; | ||
const boilerplate = this.program.boilerplate; | ||
const node_modules = path.resolve(process.cwd(), 'node_modules'); | ||
let configPath = path.resolve( | ||
node_modules, | ||
'react-boilerplates', | ||
boilerplate, | ||
'config.json' | ||
); | ||
return fs.readJsonSync(configPath); | ||
} catch (e) { | ||
//如果不存在,返回空对象 | ||
return {}; | ||
} | ||
} | ||
//检测appName是否合法 | ||
checkAppName() { | ||
var validationResult = validateNpmPackageName(this.appName); | ||
const validationResult = validateNpmPackageName(this.appName); | ||
if (!validationResult.validForNewPackages) { | ||
@@ -141,3 +139,3 @@ console.error( | ||
* 检查当前目录是否合法 | ||
* @return { Boolean } true or false | ||
* @return { boolean } true or false | ||
*/ | ||
@@ -173,3 +171,62 @@ checkPathDirIsValid() { | ||
} | ||
symlinkBoilerplates() { | ||
const node_modules = path.resolve(process.cwd(), 'node_modules'); | ||
const symlinkPath = path.resolve( | ||
node_modules, | ||
'react-boilerplate-app-scripts/template' | ||
); | ||
fs.removeSync(symlinkPath); | ||
fs.symlinkSync( | ||
path.resolve(node_modules, 'react-boilerplates'), | ||
symlinkPath, | ||
'dir' | ||
); | ||
} | ||
/** | ||
* 安装boilerpalte中config.json的dependencies | ||
*/ | ||
installConfigJsonPackages() { | ||
const configJson = this.getConfigJson(); | ||
this.dependencies = this.dependencies.concat(configJson.dependencies || []); | ||
this.devDependencies = this.devDependencies.concat( | ||
configJson.devDependencies || [] | ||
); | ||
const allConfigDependencies = [] | ||
.concat(configJson.dependencies) | ||
.concat(configJson.devDependencies); | ||
util.installPackages(allConfigDependencies).then(() => { | ||
try { | ||
this.symlinkBoilerplates(); | ||
this.writeResultPackageJson(); | ||
this.initApp(); | ||
} catch (e) { | ||
console.log(e); | ||
} | ||
}); | ||
} | ||
installPackages(allDependencies) { | ||
allDependencies = allDependencies.map(dependency => { | ||
switch (dependency) { | ||
case 'react-boilerplate-app-utils': | ||
case 'react-boilerplate-app-scripts': | ||
case 'react-boilerplates': | ||
if (fs.exists(path.resolve(__dirname, '../../packages'))) { | ||
const targetPath = path.resolve(__dirname, '../../', dependency); | ||
//非安装环境使用当前的packages/xxx,不使用远程的。 | ||
return targetPath; | ||
} | ||
break; | ||
default: | ||
return dependency; | ||
} | ||
}); | ||
console.log('Installing packages. This might take a couple minutes.'); | ||
util.installPackages(allDependencies).then(() => { | ||
try { | ||
this.installConfigJsonPackages(); | ||
} catch (e) { | ||
console.log(e); | ||
} | ||
}); | ||
} | ||
run() { | ||
@@ -188,10 +245,3 @@ this.appPath = util.resolveCwd(this.appName); | ||
this.writeInitialPackageJson(); | ||
util.installPackages(this.allDependencies).then(() => { | ||
try { | ||
this.writeResultPackageJson(); | ||
this.initApp(); | ||
} catch (e) { | ||
console.log(e); | ||
} | ||
}); | ||
this.installPackages(this.allDependencies); | ||
} | ||
@@ -198,0 +248,0 @@ } |
{ | ||
"name": "create-react-boilerplate-app", | ||
"version": "0.1.9", | ||
"version": "0.1.10-beta.0", | ||
"description": "an tool for creating react boilerplate app", | ||
@@ -13,3 +13,3 @@ "engines": { | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"test": "node tool/test.js" | ||
}, | ||
@@ -23,3 +23,3 @@ "author": "", | ||
"fs-extra": "^3.0.1", | ||
"react-boilerplate-app-utils": "^0.0.24", | ||
"react-boilerplate-app-utils": "^0.0.25-beta.0", | ||
"semver": "^5.3.0", | ||
@@ -26,0 +26,0 @@ "validate-npm-package-name": "^3.0.0" |
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
9409
287
2
1
+ Addedreact-boilerplate-app-utils@0.0.25-beta.3(transitive)
- Removedreact-boilerplate-app-utils@0.0.24(transitive)