#!/bin/sh
echo PROGRAMA: Cria project typescript Básico
echo AUTOR: Paulo Pacheco
echo DATA DA CRIAÇÃO: 01/06/2021
echo DATA DA ULTIMA ATUALIZAÇÃO: 08/06/2021
echo 0.2.0
echo .
rename(){
fileName="$1";
fileNameOld="$2";
if [ -f $fileNameOld ]; then
rm $fileNameOld
fi
if [ -f $filename ]; then
mv $fileName $fileNameOld
fi
}
ifExistProject(){
if [ -z $project ];
then
project="./myproject"
else
project="./$project"
fi
if [ -d $project ]; then
exit EEXIST
fi
}
createProject(){
ifExistProject
mkdir $project
mkdir ./"$project"/src
mkdir ./"$project"/src/html
mkdir ./"$project"/src/css
mkdir ./"$project"/src/js
mkdir ./"$project"/src/ts
mkdir ./"$project"/dist
}
createWorkspace(){
cat >"./"$project"/workspace.code-workspace"<<EOT
{
"folders": [
{
"path": "."
}
]
}
EOT
}
createFileIndexHtml(){
cat >"./"$project"/src/html/index.html"<<EOT
<!DOCTYPE html>
<html dir="ltr" lang="pt-br">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Modelo de project typescript</title>
<meta name="createDate" content="28/05/2021" />
<meta name="createDateUpdate" content="25/05/2021" />
<meta name="description" content="Todos project typescript deve seguir essa sequência ao iniciar..." />
<meta name="keywords" content="typescript,webpack" />
<link type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
rel="stylesheet" />
</head>
<bodY>
<p>Alo mundo</p>
</body>
</html>
EOT
}
createFiledefaultThemeCss() {
cat >"./"$project"/src/css/defaulttheme.css"<<EOT
html {
scroll-behavior: smooth;
/* scroll lento*/
}
body {
margin: 0;
font-family: Arial
}
EOT
}
createIndexTs(){
cat >"./"$project"/src/ts/index.ts"<<EOT
console.log('Alo mundo');
EOT
}
execTscInit(){
cd $project
tsc-init
}
installPackages(){
npm install --save-dev html-webpack-plugin
npm install --save-dev html-loader
}
alterWebpackConfig(){
echo "... ";
echo "Adiciona const path = require('path') em webpack.config.js;"
echo "Adiciona a declaração \"const HtmlWebpackPlugin = require('html-webpack-plugin')\" em webpack.config.js"
subStrOrigem='module.exports = {'
subStrDestino=" const path = require('path');\n const HtmlWebpackPlugin = require('html-webpack-plugin'); \n\n module.exports = {"
fileNameOld="./webpack.config.js.ant"
fileName="./webpack.config.js"
rename "$fileName" "$fileNameOld"
sed "s/$subStrOrigem/$subStrDestino/g" $fileNameOld > $fileName
echo ...
echo Adiciona a propriedade "HtmlWebpackPlugin" em module.exports = { webpack.config.js
subStrOrigem='module.exports = {'
subStrDestino="module.exports = \{plugins:\[new HtmlWebpackPlugin\(\{filename:'index.html',template:'.\/src\/html\/index.html',inject:'body'\}\)\],"
fileNameOld="./webpack.config.js.ant"
fileName="./webpack.config.js"
rename "$fileName" "$fileNameOld"
sed "s/$subStrOrigem/$subStrDestino/g" $fileNameOld > $fileName
echo ...
echo ...
echo Alterar o arquivo webpack.config.js
subStrOrigem="entry: '.\/index.ts'"
subStrDestino="entry: '.\/src\/ts\/index.ts'"
fileNameOld="./webpack.config.js.ant"
fileName="./webpack.config.js"
rename "$fileName" "$fileNameOld"
sed "s/$subStrOrigem/$subStrDestino/g" $fileNameOld > $fileName
}
alterPackage(){
echo ...
echo Atualiza script "dev" do package.json
subStrOrigem="webpack-dev-server --inline --hot"
subStrDestino="webpack serve --mode development --env development --hot --port 3000"
fileNameOld="./package.json.ant"
fileName="./package.json"
rename "$fileName" "$fileNameOld"
sed "s/$subStrOrigem/$subStrDestino/g" $fileNameOld > $fileName
echo ...
echo Atualiza script "build" do package.json
subStrOrigem="webpack -p"
subStrDestino="webpack --mode='production'"
fileNameOld="./package.json.ant"
fileName="./package.json"
rename "$fileName" "$fileNameOld"
sed "s/$subStrOrigem/$subStrDestino/g" $fileNameOld > $fileName
}
alterTsconfig(){
echo ...
echo Adiciona a propriedade "outDir" em "compilerOptions": {} do tsconfig.json
subStrOrigem='"compilerOptions": {'
subStrDestino='"compilerOptions": {"outDir": ".\/src\/js",'
fileNameOld="./tsconfig.json.ant"
fileName="./tsconfig.json"
rename "$fileName" "$fileNameOld"
sed "s/$subStrOrigem/$subStrDestino/g" $fileNameOld > $fileName
echo ...
}
project="$1"
createProject
createWorkspace
createFileIndexHtml
createFiledefaultThemeCss
createIndexTs
execTscInit
installPackages
alterWebpackConfig
alterPackage
alterTsconfig
echo fim do script