Created
May 22, 2019 20:46
-
-
Save Aleksey-Danchin/5860bacac6546a31b7c2a243af3e241d to your computer and use it in GitHub Desktop.
Project initialization script by js under nodejs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const cp = require('child_process') | |
const fs = require('fs') | |
const util = require('util') | |
const exec = util.promisify(cp.exec) | |
const readFile = util.promisify(fs.readFile) | |
const writeFile = util.promisify(fs.writeFile) | |
main() | |
async function main () { | |
console.log('npm init -y') | |
await exec('npm init -y') | |
console.log('npm install --save-dev @babel/core @babel/node @babel/cli @babel/preset-env @babel/plugin-transform-runtime @babel/runtime babel-loader webpack webpack-dev-server webpack-cli') | |
await exec('npm install --save-dev @babel/core @babel/node @babel/cli @babel/preset-env @babel/plugin-transform-runtime @babel/runtime babel-loader webpack webpack-dev-server webpack-cli') | |
console.log('Create nodemon.json') | |
await exec(` | |
echo '{ | |
"ignore": [ | |
"node_modules/*", | |
".babelrc", | |
".gitignore", | |
"index.html", | |
"nodemon.json", | |
"package-lock.json", | |
"package.json", | |
"webpack.config.js" | |
] | |
}' > nodemon.json`) | |
console.log('Create .babelrc') | |
await exec(` | |
echo '{ | |
"presets": ["@babel/preset-env"], | |
"plugins": ["@babel/plugin-transform-runtime"] | |
}' > .babelrc`) | |
console.log('Create .gitignore') | |
await exec(` | |
echo "node_modules | |
/dist | |
# local env files | |
.env.local | |
.env.*.local | |
# Log files | |
npm-debug.log* | |
yarn-debug.log* | |
yarn-error.log* | |
# Editor directories and files | |
.idea | |
.vscode | |
*.suo | |
*.ntvs* | |
*.njsproj | |
*.sln | |
*.sw*" > .gitignore`) | |
console.log('Add commands to package.json') | |
const file = await readFile('package.json', { encoding: 'utf-8' }) | |
const object = JSON.parse(file) | |
object.scripts.dev = "webpack-dev-server --mode development" | |
object.scripts.build = "webpack --mode production" | |
await writeFile('package.json', JSON.stringify(object, null, 2)) | |
console.log('Create webpack.config.js') | |
await exec(` | |
echo "const path = require('path') | |
module.exports = { | |
entry: { | |
app: './src/index.js' | |
}, | |
output: { | |
filename: '[name].js', | |
path: path.join(__dirname, '/dist'), | |
publicPath: '/dist' | |
}, | |
module: { | |
rules: [{ | |
test: /\.js$/, | |
loader: 'babel-loader', | |
exclude: '/node_modules/' | |
}] | |
}, | |
devServer: { | |
overlay: true | |
} | |
}" > webpack.config.js`) | |
console.log('Create index.html') | |
await exec(` | |
echo "<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>Document</title> | |
</head> | |
<body> | |
<script src='/dist/app.js'></script> | |
</body> | |
</html>" > index.html`) | |
console.log('Create src/index.js') | |
try { await exec('mkdir src') } catch (err) {} | |
await exec(` | |
echo "" > src/index.js`) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment