Sign inSign up

reechand/nodejs

By reechand

•Updated over 2 years ago

nodejs运行以及开发使用的环境

Image
0

147

reechand/nodejs repository overview

⁠目的和意义

使用docker来存放环境的目的,当然是为了快速地建立起来环境。

⁠02版本

增加了开发electron程序所需的工具。

⁠用法
#! /usr/bin/bash

# 文件名:StartDockerContainer_bash

sudo docker run --rm -it \
-u dev:dev \
-v $(realpath ../03.JavaScript):/work \
reechand/nodejs:02 \
bash --rcfile /ElectronDevBash

进入以后输入h看帮助

⁠electron开发工具的实现
#! ./StartDockerContainer_bash

# 文件名:ElectronDevBash

# 备份文件:le命令需要用备份之前的文件
cp /home/dev/.npmrc /home/dev/.npmrc.bak

function ll(){
    ls -l --color $@
}

function h(){
    echo 'h             帮助(help)'
    echo '==========根工程处理命令(开始)=========='
    echo 'c             1.重新创建(create)根工程'
    echo 'x             2.局部安装(npx)'
    echo 'm             3.局部安装(npm)'
    echo 'n             4.局部安装(node)'
    echo 'e             5.局部安装(electron)'
    echo 'r             6.局部安装打包工具(@electron/packager)'
    echo 'v             7.查看(view)安装的二进制工具(node_modules/.bin)'
    echo 'p             8.实施打包(package)'
    echo '----------根工程处理命令(结束)----------'
    echo '==========参考用的子工程创建命令(开始)=========='
    echo 'evp           1.创参考用的子工程electron-vite-project'
    echo 'ea            2.参考用的子工程electron-app'
    echo '----------参考用的子工程创建命令(结束)----------'
    echo 'q             退出(quit)'
}

function p(){
    rm -rfd ./out-dist-package
    mkdir -pv ./out-dist-package/linux_x64
    echo '正在打包linux版'
    time npx npx electron-packager . hf --platform=linux --arch=x64 --out ./out-dist-package
    echo '正在打包windows版'
    time npx npx electron-packager . hf --platform=win32 --arch=x64  --out ./out-dist-package
}

function r(){
    echo '即将安装打包工具@electron/packager'
    time npx npx npm install @electron/packager --save-dev
}

function e(){
    cp -f /home/dev/.npmrc.bak /home/dev/.npmrc
    echo 'ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/' >> /home/dev/.npmrc
    echo '即将安装解释执行器electron'
    time npx npx npm install electron --save-dev
}


function m(){
    echo '即将安装webstorm和vscode等需要的包管理器npm'
    time npx npm install -D [email protected]
}


function x(){
    echo '即将安装运行局部包需要的工具npx'
    time npm install -D [email protected]
}

function v(){
    echo '查看可用的所有二进制程序'
    ll node_modules/.bin
}

function n(){
    echo '即将局部安装webstorm和vscode等需要的解释器node'
    npx npx npm install -D [email protected]
}

function q(){
    exit
}

function c(){
    rm -rfd /work/*
    npm init -y
}

h

# 如果工作目录存在就自动切换过去
if [ -d /work ]; then
    cd /work
fi

function evp(){
    clear
    echo '已经进入evp工作环境'
    /usr/bin/bash --rcfile /electron-vite-project
    clear
    h
}
function ea(){
    clear
    echo '已经进入ea工作环境'
    /usr/bin/bash --rcfile /electron-app
    clear
    h
}
⁠参考用子工程的维护脚本electron-vite-project
#! ./StartDockerContainer_bash

# 文件名:electron-vite-project

function h(){
    echo 'h             参考工程evp(electron-vite-project)的帮助(help)'
    echo '=========================================================================================='
    echo 'c             1.创建(create)子工程electron-vite-project'
    echo '                1.1.命令名evp是子工程名的首字母缩写'
    echo '                1.2.交互过程中一般按回车,工程模板有三个可选:Vue、React和Vanilla'
    echo '                1.3.交互过程不能选择TypeScript支持,默认就是启用的(演示代码都是TypeScript书写)'
    echo 'i             2.局部安装(install)子工程electron-vite-project需要的所有软件包'
    echo 'l             3.查错(eslint):使用react框架的工程才可用'
    echo 'p             4.编译并打包(package),能够起到排查错误的作用'
    echo 'd             5.支持热更新的开发(dev)用的web服务器'
    echo 's             6.发布编译后资源的静态(static)web服务器'
    echo 'q             7.离开(quit)'
}

function c(){
    # 1.再次删除目录
    rm -rfd ./electron-vite-project
    # 4.创建子工程相关文件(主要是子工程的package.json)
    npx npx npm init electron-vite -D
}
function i(){
    cp -f /home/dev/.npmrc.bak /home/dev/.npmrc
    echo 'ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/' >> /home/dev/.npmrc
    bash -c "cd electron-vite-project && npx npx npm install"
}

function l(){
    bash -c "cd electron-vite-project && npx npx npm run lint"
}

function p(){
    bash -c "cd electron-vite-project && npx npx npm run build"
}

function d(){
    bash -c "cd electron-vite-project && npx npx npm run dev"
}

function s(){
    bash -c "cd electron-vite-project && npx npx npm run preview"
}

function q(){
    exit
}

h
⁠参考用子工程electron-app的维护脚本
#! ./StartDockerContainer_bash

# 文件名: electron-app

function h(){
    echo 'h             参考子工程ea(electron-app)的帮助(help)'
    echo '=========================================================================================='
    echo 'c             1.创建(create)子工程electron-app'
    echo '                1.1.命令名ea是子工程名的首字母缩写'
    echo '                1.2.交互过程中一般按回车,工程模板有五个可选:Vanilla、Vue、React、svelte、solid'
    echo '                1.3.交互过程可以选择是否需要TypeScript支持'
    echo 'i             2.局部安装(install)子工程electron-app需要的所有软件包'
    echo 'l             3.查错(eslint)'
    echo 'p             4.编译并打包(package),能够起到排查错误的作用'
    echo 'd             5.支持热更新的开发(dev)用的web服务器'
    echo 's             6.发布编译后资源的静态(static)web服务器'
    echo 'q             7.退出(quit)'
}

function c(){
    # 1.彻底删除目标目录
    rm -rfd ./electron-app
    # 2.使用向导创建目标目录
    npx npx npm create @quick-start/electron@latest
}
function i(){
    cp -f /home/dev/.npmrc.bak /home/dev/.npmrc
    echo 'ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/' >> /home/dev/.npmrc
    bash -c "cd electron-app && npx npx npm install"
}

function l(){
    bash -c "cd electron-app && npx npx npm run lint"
}

function p(){
    bash -c "cd electron-app && npx npx npm run build:win && npx npx npm run build:linux"
}

function d(){
    bash -c "cd electron-app && npx npx npm run dev"
}

function s(){
    bash -c "cd electron-app && npx npx npm run start"
}

function q(){
    exit
}

h
⁠Dockerfile(特别简单)
#! ./BuildDockerImage
FROM reechand/nodejs:01
# 下面这个工具脚本是维护根工程使用的
COPY ./ElectronDevBash /ElectronDevBash
# 下面这两个工具脚本是维护参考用的子工程用的
COPY ./electron-vite-project /electron-vite-project
COPY ./electron-app /electron-app
⁠生成DockerImage的脚本命令(也特别简单)
#! /usr/bin/bash
sudo docker build --tag reechand/nodejs:02 .

⁠01版

⁠功能

只是增加了npm的国内源

⁠用法演示
#! /usr/bin/bash

sudo docker run --rm -it \
-u dev:dev \
-e DISPLAY \
reechand/nodejs:01 \
bash -c 'npm config get registry&& cnpm -v'
⁠Dockerfile
#! ./03_run_update_docker_image
# 01.原型
FROM reechand/ubuntu:06
# 02.安装npm(apt自带的版本,会自动安装node)
RUN apt install -y --no-install-recommends npm
# 03.启用npm的国内源
RUN npm config set registry https://registry.npmmirror.com
# 04.安装cnpm
RUN npm install -g cnpm
# 05.升级node到最新的LTS版
RUN npm install -g [email protected]
# 06.设置用户dev的npm国内源
RUN apt install -y --no-install-recommends sudo
RUN sudo -u dev npm config set registry https://registry.npmmirror.com/
⁠编译脚本
#! /usr/bin/bash

# 1.获得当前脚本所在目录
DirOfScript=$(dirname $0)
# 2.使用配置文件更新Docker Image
clear
sudo docker build \
    --file ${DirOfScript}/03_config_Dockerfile \
    --tag reechand/nodejs:01 \
    ${DirOfScript}

Tag summary

Content type

Image

Digest

sha256:f6dd179d8…

Size

1.2 GB

Last updated

over 2 years ago

docker pull reechand/nodejs:02