apm install --production是离线构建插件的唯一可靠命令;必须在与目标机完全一致的atom版本下执行,生成含完整node_modules的可运行副本,禁用.zip绿色版,且依赖实时api、动态下载或全局apm的插件无法真正离线使用。

apm install --production 是离线构建插件的唯一可靠命令
直接复制 GitHub 源码到 ~/.atom/packages 必然失败,因为 Atom 不会自动执行依赖安装或编译。真正能离线运行的插件必须带完整的 node_modules 目录,而这个目录只能由 apm install --production 在匹配环境下生成。
常见错误包括:
- 用
npm install替代apm install→ 缺少 Atom 特定的 postinstall 脚本(如原生模块编译、Electron 头文件绑定) - 在 v1.72.0 的 Atom 上构建插件,却部署到 v1.69.0 离线机 → 启动时报
Cannot read property 'onDidStopChanging' of undefined - 只下载源码 zip,没进目录执行构建 → 控制台报
Error: Cannot find module 'season'
正确做法:在与目标离线机**完全一致版本号**的 Atom(例如 1.69.0)中,运行:
apm install --production linter-gcc
然后确认 ~/.atom/packages/linter-gcc/node_modules 下存在 gcc 和 atom-linter 子目录,再整体打包迁移。
必须用官方 deb/rpm/msi 安装 Atom 本体
离线安装插件的前提是 Atom 本体本身能调用 apm 并完成签名验证。所有 zip/tar.gz “绿色版”或非官方镜像包都缺失 resources/app/apm 二进制和证书链,导致后续任何插件构建或加载失败。
各平台强制要求:
- Windows:只认
AtomSetup-x64.exe,AtomSetup-x64.zip是无效包 - Debian/Ubuntu:必须用
atom-amd64.deb,执行dpkg -i自动补全libasound2、libxkbfile1等底层依赖 - CentOS/RHEL:必须用
atom.x86_64.rpm,yum localinstall可解决 glibc 版本冲突 - macOS:必须用官网
Atom-mac.zip(Apple 签名完整包),不是 GitHub Release 里的源码压缩包
哪些插件根本不能离线使用
即使你把 node_modules 打包得再完整,以下三类插件在断网后仍会卡死或报错:
- 依赖实时 API 的插件:
autocomplete-atom-api(需连接 GitHub 获取最新文档)、platformio-ide(启动时强制校验云端 toolchain) - 含动态下载逻辑的插件:
language-rust某些版本首次启用时拉取rustc语法定义,atom-ide-ui会尝试获取远程 LSP 元数据 - 需要全局
apm运行时支持的插件:sync-settings本质包装了apm login和apm publish,离线机从未连过服务器就无法初始化
这类插件控制台必然出现 Failed to fetch https:// 或卡在 Loading... 状态,无需排查路径或权限。
离线机插件不生效?先看开发者工具 Console 报错
别凭“已复制”或“已重启”判断成功。打开 Ctrl+Shift+I,切到 Console 标签页,关键线索有:
-
Error: Cannot find module 'fs-plus'→ 插件根目录缺package.json,或"main"字段指向不存在的入口文件(注意大小写!) -
Failed to activate package 'linter' because it depends on 'linter@^3.0.0'→ 依赖插件未一并离线安装,比如linter-gcc必须和linter主包一起部署 - 空白无报错但功能不触发 → 检查是否满足激活条件,例如
autocomplete-python需打开.py文件且language-python已加载(右下角状态栏显示 Python)
最麻烦的不是复制路径,而是每个插件对构建方式、激活时机、依赖粒度的要求都不一样——minimap 要 npm run build,go-plus 还得配好本地 gopls 二进制。离线前,务必在联网机上跑通一次 apm test 或手动验证核心功能。











