温馨提示×

如何在Debian上集成JS工具

小樊
39
2025-11-15 12:05:37
栏目: 编程语言

在 Debian 上集成 JS 工具的可执行方案

一 基础环境搭建

  • 使用 NodeSource 仓库安装 Node.jsnpm(推荐,版本可控):
    • 添加仓库并安装(示例为 Node.js 20.x,可按需替换版本号):
      curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
      sudo apt-get update
      sudo apt-get install -y nodejs
      
    • 验证安装:
      node -v
      npm -v
      
  • 如需多版本切换,使用 NVM(Node Version Manager):
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
    source ~/.bashrc
    nvm install --lts
    nvm use --lts
    
  • 可选:配置 npm 镜像源 提升下载速度(如淘宝镜像):
    npm config set registry https://registry.npmmirror.com
    

以上步骤完成后,即可在系统全局使用 nodenpm 命令。

二 集成与运行 JS 工具

  • 全局工具(跨项目使用):
    sudo npm install -g yarn pnpm nodemon eslint prettier
    
  • 项目本地工具(推荐,随项目锁定版本):
    npm init -y
    npm install lodash axios express
    npm install --save-dev jest webpack webpack-cli
    
  • 常用 npm 脚本 示例(写入 package.json):
    {
      "scripts": {
        "start": "node index.js",
        "dev": "nodemon index.js",
        "build": "webpack --mode production",
        "test": "jest"
      }
    }
    
  • 运行与构建:
    npm start
    npm run dev
    npm run build
    npm test
    

上述做法覆盖全局与本地工具集成、脚本化运行与常见构建测试流程。

三 前端资源与浏览器集成

  • 直接在 HTML 中通过 CDN 引入第三方库(快速原型或静态页面):
    <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
    <script>
      console.log(_.chunk([1,2,3,4], 2));
    </script>
    
  • 使用 BrowserifyWebpack 打包前端依赖,生成单一 bundle.js 供浏览器加载:
    npm install -D browserify
    browserify src/main.js -o dist/bundle.js
    
  • 在 HTML 中引入打包产物:
    <script src="dist/bundle.js"></script>
    

以上方式适用于纯前端资源集成与依赖打包。

四 自动化与运维集成

  • 定时任务(Cron)运行脚本:
    chmod +x /path/to/script.js
    crontab -e
    # 每天 01:00 执行
    0 1 * * * /usr/bin/node /path/to/script.js >> /var/log/js-automation.log 2>&1
    
  • 常驻服务(Systemd)守护进程:
    sudo tee /etc/systemd/system/my-js.service >/dev/null <<'EOF'
    [Unit]
    Description=My JavaScript Automation
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/node /path/to/script.js
    Restart=always
    User=your_username
    WorkingDirectory=/path/to
    Environment=NODE_ENV=production
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    sudo systemctl daemon-reload
    sudo systemctl enable --now my-js.service
    
  • 生产进程管理(PM2):
    sudo npm install -g pm2
    pm2 start npm --name "my-app" -- start
    pm2 save
    pm2 startup
    

以上方案覆盖定时执行、系统服务托管与进程守护的常见运维需求。

五 实用集成示例

  • 浏览器自动化(Puppeteer,抓取或截图):
    npm install puppeteer
    
    示例脚本(保存为 puppeteer_demo.js):
    const puppeteer = require('puppeteer');
    
    (async () => {
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
      await page.goto('https://example.com');
      await page.screenshot({ path: 'example.png' });
      const content = await page.content();
      console.log(content.slice(0, 200));
      await browser.close();
    })();
    
    运行:
    node puppeteer_demo.js
    
  • API 文档界面(Swagger UI,Express 集成):
    npm install express swagger-ui-express yamljs
    
    示例(保存为 swagger_demo.js):
    const express = require('express');
    const swaggerUi = require('swagger-ui-express');
    const YAML = require('yamljs');
    
    const app = express();
    const swaggerDocument = YAML.load('./swagger.yaml');
    
    app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
    app.get('/', (req, res) => res.send('API is running'));
    
    const port = process.env.PORT || 3000;
    app.listen(port, () => console.log(`Server on http://localhost:${port}`));
    
    运行并在浏览器访问 http://localhost:3000/api-docs

0