1. 准备基础环境
在Debian系统上构建JS项目前,需先安装Node.js(JavaScript运行时)和npm(Node.js包管理器)。推荐通过NodeSource二进制分发库安装稳定版本(如16.x),以避免系统仓库版本过旧的问题:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
安装完成后,通过node -v和npm -v验证安装是否成功(需显示版本号)。
2. 初始化项目(若未创建)
若项目目录为空,需通过npm init生成package.json文件(记录项目元数据和依赖):
mkdir my-js-app && cd my-js-app
npm init -y # 使用默认配置快速初始化
若已有项目,直接进入项目目录即可。
3. 安装项目依赖
根据package.json中的dependencies(生产依赖)和devDependencies(开发依赖)列表,安装所需包:
npm install # 安装所有依赖(包括生产和开发)
# 或仅安装生产依赖(部署时常用)
npm install --production
依赖安装完成后,会生成node_modules目录(存放所有依赖包)。
4. 配置构建工具(可选但常用)
多数JS项目需通过打包工具(如Webpack、Parcel、Rollup)处理模块依赖、转译ES6+语法、压缩代码等。以Webpack为例,配置步骤如下:
npm install --save-dev webpack webpack-cli # 核心工具
webpack.config.js配置文件(定义入口、出口、loader等):const path = require('path');
module.exports = {
entry: './src/index.js', // 项目入口文件
output: { // 输出配置
filename: 'bundle.js', // 打包后文件名
path: path.resolve(__dirname, 'dist') // 输出目录
},
module: { // Loader配置(处理非JS文件,如CSS、图片)
rules: [
{ test: /\.js$/, exclude: /node_modules/, use: 'babel-loader' } // 转译ES6+
]
},
mode: 'production' // 生产模式(自动启用压缩等优化)
};
babel-loader用于转译ES6+):npm install --save-dev babel-loader @babel/core @babel/preset-env
并创建.babelrc文件配置Babel:{ "presets": ["@babel/preset-env"] }
其他工具(如Parcel)无需手动配置,通过npx parcel build即可自动处理。5. 执行构建流程
通过package.json中的scripts字段定义构建命令(常见为build),运行以下命令启动构建:
npm run build
构建完成后,生成的生产文件(如dist/bundle.js)会存放在指定目录(如dist)。
6. 测试项目(可选但推荐)
若项目包含测试用例(如使用Jest、Mocha),运行以下命令执行测试:
npm test
测试通过后,可确保项目功能正常。
7. 部署项目
构建完成后,需将生产文件部署到服务器。常见步骤包括:
scp或rsync将dist目录上传至服务器:scp -r dist/* user@your_server_ip:/var/www/html/
/etc/nginx/sites-available/my-js-app,内容如下:server {
listen 80;
server_name your_domain.com;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
启用配置并重启Nginx:sudo ln -s /etc/nginx/sites-available/my-js-app /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain.com
配置完成后,通过http://your_domain.com访问项目。