Nodejs (Application)
Jump to navigation
Jump to search
nodejs
Install
# shared/opt install schema v1.5.6
#### as common user ####
# define applications vars
export SOFTWARE_PATH="/home/shared/opt/software"
export NAME="nodejs"
export VERSION="v23.10.0"
export URL="https://nodejs.org/dist/${VERSION}/node-${VERSION}-linux-x64.tar.xz"
su - -w SOFTWARE_PATH,NAME,VERSION
#### as root ####
# install packages and prepare destination path
apt-get -q -y install wget coreutils findutils < /dev/null
apt-get -q -y install tar xz-utils < /dev/null
mkdir -m 777 "${SOFTWARE_PATH}/tmp_install/" "${SOFTWARE_PATH}/${NAME}_${VERSION}/"
exit
#### as common user ####
umask 0027
cd "${SOFTWARE_PATH}/tmp_install"
wget -c --no-check-certificate "${URL}"
tar -xJf "node-${VERSION}-linux-x64.tar.xz"
mv "node-${VERSION}-linux-x64/"* "${SOFTWARE_PATH}/${NAME}_${VERSION}"
cd
su - -w SOFTWARE_PATH,NAME,VERSION
#### as root ####
# ensure permissions to destination path
cd "${SOFTWARE_PATH}"
chown -R root:users "${NAME}_${VERSION}"
find "${NAME}_${VERSION}" -type d -exec chmod a-s,u+rwx,g+rx,g-w,o-rwx {} \;
find "${NAME}_${VERSION}" -type f -exec chmod a-s,u+rw,g+r,g-w,o-rwx {} \;
rm -rf tmp_install
ln -s -f -T "${NAME}_${VERSION}" "${NAME}"
exit
#### as common user ####
# test the application (you can put the follow in ~/.profile)
export SOFTWARE_PATH="/home/shared/opt/software"
export NODEJS_HOME="/home/shared/opt/software/nodejs"
export PATH="${PATH}:${HOME}/.npm-global/bin:${NODEJS_HOME}/bin"
# remember to run `npm config set prefix '~/.npm-global'`
npm --version
- configure your npm prefix
npm config set prefix '~/.npm-global'
Sample ES6 (ECMAScript 6 / ECMAScript 2015) application
- from
https://www.nodebeginner.org/blog/post/setting-up-a-javascript-project-for-es6-development-with-babel-and-webpack/ https://www.robinwieruch.de/javascript-project-setup-tutorial/ https://www.robinwieruch.de/webpack-setup-tutorial/
- prepare the folder structure
mkdir dist mkdir src
- define a simple main html
cat > dist/index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="icon" href="data:;base64,=">
<title>Hello Webpack</title>
</head>
<body>
<div id="root"></div>
<script src="bundle.js"></script>
</body>
</html>
EOF
- define a simple hello world application
cat > src/main.js << 'EOF'
import App from "./app.js";
let app = new App("root");
app.write("Hello Webpack");
EOF
cat > src/app.js << 'EOF'
"use strict";
export default class App {
constructor(elementId) {
this.element = window.document.getElementById(elementId);
}
write(content) {
this.element.innerHTML = content;
}
}
EOF
- configure node project
cat > package.json << 'EOF'
{
"name": "test_js_webpack_app",
"main": "src/main.js",
"scripts": {
"start": "webpack-dev-server --config ./webpack.config.js --mode development",
"build": "webpack --config ./webpack.config.js --mode production",
"test": "echo \"Error: no test specified\" && exit 1"
}
}
EOF
- configure webpack
cat > webpack.config.js << 'EOF'
module.exports = {
entry: "./src/main.js",
output: {
path: __dirname + "/dist",
filename: "bundle.js",
publicPath: "/"
},
devServer: {
contentBase: "./dist",
},
module: {
rules: [
{
include: /src/,
test: /\.(js)$/,
exclude: /node_modules/,
use: ['babel-loader']
}
]
}
};
EOF
- configure babel
cat > .babelrc << 'EOF'
{
"presets": ["@babel/preset-env"]
}
EOF
- setup dependencies
npm install --save-dev webpack webpack-dev-server webpack-cli npm install --save-dev @babel/core @babel/preset-env npm install --save-dev babel-loader
- run
npm run start
- build
npm run build
Sample React ES6 (ECMAScript 6 / ECMAScript 2015) application
- from
https://www.nodebeginner.org/blog/post/setting-up-a-javascript-project-for-es6-development-with-babel-and-webpack/ https://www.robinwieruch.de/javascript-project-setup-tutorial/ https://www.robinwieruch.de/webpack-setup-tutorial/
- prepare the folder structure
mkdir dist mkdir src
- define a simple main html
cat > dist/index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="icon" href="data:;base64,=">
<title>Hello React</title>
</head>
<body>
<div id="root"></div>
<script src="bundle.js"></script>
</body>
</html>
EOF
- define a simple hello world application
cat > src/main.js << 'EOF'
import App from "./app.js";
let app = new App("root");
app.write("Hello React");
EOF
cat > src/app.js << 'EOF'
"use strict";
import React from "react";
import ReactDOM from "react-dom";
export default class App {
constructor(elementId) {
this.element = window.document.getElementById(elementId);
}
write(content) {
ReactDOM.render(<div>{content}</div>, this.element);
}
}
EOF
- configure node project
cat > package.json << 'EOF'
{
"name": "test_js_webpack_react_app",
"main": "src/main.js",
"scripts": {
"start": "webpack-dev-server --config ./webpack.config.js --mode development",
"build": "webpack --config ./webpack.config.js --mode production",
"test": "echo \"Error: no test specified\" && exit 1"
}
}
EOF
- configure webpack
cat > webpack.config.js << 'EOF'
const webpack = require('webpack');
module.exports = {
entry: "./src/main.js",
output: {
path: __dirname + "/dist",
filename: "bundle.js",
publicPath: "/"
},
plugins: [
new webpack.HotModuleReplacementPlugin()
],
devServer: {
contentBase: "./dist",
hot: true
},
module: {
rules: [
{
include: /src/,
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ['babel-loader']
}
]
}
};
EOF
- configure babel
cat > .babelrc << 'EOF'
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
EOF
- setup dependencies
npm install --save-dev webpack webpack-dev-server webpack-cli npm install --save-dev @babel/core @babel/preset-env npm install --save-dev babel-loader npm install --save-dev @babel/preset-react npm install --save-dev react-hot-loader npm install --save react react-dom
- run
npm run start
- build
npm run build