@strapi/generate-new
Advanced tools
Comparing version 4.2.0-alpha.1 to 4.2.0-alpha.3
@@ -17,3 +17,2 @@ 'use strict'; | ||
const packageJSON = require('./resources/json/package.json'); | ||
const createDatabaseConfig = require('./resources/templates/database.js'); | ||
@@ -27,21 +26,42 @@ const createAdminConfig = require('./resources/templates/admin-config.js'); | ||
const { rootPath } = scope; | ||
const { rootPath, useTypescript } = scope; | ||
const resources = join(__dirname, 'resources'); | ||
const language = useTypescript ? 'ts' : 'js'; | ||
try { | ||
// copy files | ||
await fse.copy(join(resources, 'files'), rootPath); | ||
await fse.copy(join(resources, 'files', language), rootPath); | ||
// copy dot files | ||
await fse.writeFile(join(rootPath, '.env'), createEnvFile()); | ||
const dotFiles = await fse.readdir(join(resources, 'dot-files')); | ||
await Promise.all( | ||
dotFiles.map(name => { | ||
return fse.copy(join(resources, 'dot-files', name), join(rootPath, `.${name}`)); | ||
}) | ||
); | ||
const copyDotFilesFromSubDirectory = subDirectory => { | ||
const files = fse.readdirSync(join(resources, 'dot-files', subDirectory)); | ||
return Promise.all( | ||
files.map(file => { | ||
const src = join(resources, 'dot-files', subDirectory, file); | ||
const dest = join(rootPath, `.${file}`); | ||
return fse.copy(src, dest); | ||
}) | ||
); | ||
}; | ||
// Copy common dot files | ||
copyDotFilesFromSubDirectory('common'); | ||
// Copy JS dot files | ||
// For now we only support javascript and typescript, so if we're not using | ||
// typescript, then we can assume we're using javascript. We'll need to change | ||
// this behavior when we'll abstract the supported languages even more. | ||
if (!useTypescript) { | ||
copyDotFilesFromSubDirectory('js'); | ||
} | ||
await trackUsage({ event: 'didCopyProjectFiles', scope }); | ||
// copy templates | ||
const packageJSON = require('./resources/json/common/package.json'); | ||
await fse.writeJSON( | ||
@@ -64,11 +84,26 @@ join(rootPath, 'package.json'), | ||
if (useTypescript) { | ||
const tsJSONDir = join(__dirname, 'resources', 'json', 'ts'); | ||
const files = ['tsconfig-admin.json.js', 'tsconfig-server.json.js']; | ||
files.forEach(file => { | ||
const srcPath = join(tsJSONDir, file); | ||
const destPath = join(rootPath, `${file.slice(0, -3)}`); | ||
const json = require(srcPath)(); | ||
fse.writeJSONSync(destPath, json); | ||
}); | ||
} | ||
// ensure node_modules is created | ||
await fse.ensureDir(join(rootPath, 'node_modules')); | ||
// create config/database.js | ||
// create config/database | ||
await fse.writeFile( | ||
join(rootPath, `config/database.js`), | ||
join(rootPath, `config/database.${language}`), | ||
createDatabaseConfig({ | ||
client, | ||
connection, | ||
useTypescript, | ||
}) | ||
@@ -78,3 +113,6 @@ ); | ||
// create config/server.js | ||
await fse.writeFile(join(rootPath, `config/admin.js`), createAdminConfig()); | ||
await fse.writeFile( | ||
join(rootPath, `config/admin.${language}`), | ||
createAdminConfig({ useTypescript }) | ||
); | ||
await trackUsage({ event: 'didCopyConfigurationFiles', scope }); | ||
@@ -81,0 +119,0 @@ |
@@ -10,3 +10,3 @@ 'use strict'; | ||
const createCLIDatabaseProject = require('./create-cli-db-project'); | ||
const createCustomizeProject = require('./create-customized-project'); | ||
const createCustomizedProject = require('./create-customized-project'); | ||
const createQuickStartProject = require('./create-quickstart-project'); | ||
@@ -32,3 +32,3 @@ | ||
// create a project with full list of questions | ||
return createCustomizeProject(scope); | ||
return createCustomizedProject(scope); | ||
}; |
@@ -58,2 +58,3 @@ 'use strict'; | ||
additionalsDependencies: {}, | ||
useTypescript: Boolean(cliArguments.typescript), | ||
}; | ||
@@ -60,0 +61,0 @@ |
@@ -9,4 +9,7 @@ 'use strict'; | ||
module.exports = () => { | ||
const tmpl = fs.readFileSync(path.join(__dirname, `admin-config.template`)); | ||
module.exports = ({ useTypescript }) => { | ||
// resolve ts or js version depending on project type | ||
const language = useTypescript ? 'ts' : 'js'; | ||
const tmpl = fs.readFileSync(path.join(__dirname, language, `admin-config.template`)); | ||
const compile = _.template(tmpl); | ||
@@ -16,3 +19,4 @@ | ||
adminJwtToken: crypto.randomBytes(16).toString('hex'), | ||
useTypescript, | ||
}); | ||
}; |
@@ -7,4 +7,7 @@ 'use strict'; | ||
module.exports = ({ connection, client }) => { | ||
const tmpl = fs.readFileSync(path.join(__dirname, 'database-templates', `${client}.template`)); | ||
module.exports = ({ connection, client, useTypescript }) => { | ||
const language = useTypescript ? 'ts' : 'js'; | ||
const tmpl = fs.readFileSync( | ||
path.join(__dirname, language, 'database-templates', `${client}.template`) | ||
); | ||
const compile = _.template(tmpl); | ||
@@ -11,0 +14,0 @@ |
{ | ||
"name": "@strapi/generate-new", | ||
"version": "4.2.0-alpha.1", | ||
"version": "4.2.0-alpha.3", | ||
"description": "Generate a new Strapi application.", | ||
@@ -55,3 +55,3 @@ "keywords": [ | ||
}, | ||
"gitHead": "3a3567a85026c7685bbd826eed690044f602d876" | ||
"gitHead": "0095f4ec55ca381a4d1bb7d4fdfc105fa38f8fe7" | ||
} |
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
61603
66
1296
14