Skip to content

Instantly share code, notes, and snippets.

@Aleksey-Danchin
Created May 22, 2019 20:46
Show Gist options
  • Save Aleksey-Danchin/5860bacac6546a31b7c2a243af3e241d to your computer and use it in GitHub Desktop.
Save Aleksey-Danchin/5860bacac6546a31b7c2a243af3e241d to your computer and use it in GitHub Desktop.
Project initialization script by js under nodejs.
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