离线插件装不上,90%是因为没执行apm install --production;atom只加载含node_modules和有效入口文件的完整插件目录,需同版本构建后迁移,依赖实时api、动态下载或apm登录态的插件无法离线使用。

离线插件装不上,90% 是因为没执行 apm install --production,而不是路径放错了。
插件文件夹放进 ~/.atom/packages 后为什么没反应
Atom 不会自动解析源码、安装依赖或构建产物。它只加载已准备就绪的插件目录——即包含 node_modules 和有效入口文件(如 lib/main.js)的完整结构。
- 直接解压 GitHub 的
xxx-master.zip到packages/,几乎必然失败:缺少node_modules,require('season')会报Cannot find module - Windows 用户常把插件拖进
%USERPROFILE%\.atom根目录,而非%USERPROFILE%\.atom\packages—— Atom 完全不扫描根目录 - macOS/Linux 用户若用 Homebrew 装 Node,
npm install可能因权限拒绝写入node_modules;此时应优先用apm install,它默认绕过全局 npm 权限链 - 文件夹名必须与
package.json中的"name"字段完全一致(包括大小写),否则 Atom 启动时直接跳过该目录
apm install --production 必须在目标环境 Atom 版本下执行
离线部署不是“拷贝即用”,而是“同版本构建后迁移”。apm 会校验 engines.atom、调用特定 Electron 头文件、执行插件自定义 postinstall 脚本(比如编译 native 模块)。
- 在 A 机(Atom v1.69.0)上用
apm install --production linter-gcc构建,才能迁移到另一台 v1.69.0 的离线 B 机;v1.72.0 构建的插件在 v1.69.0 上可能报Cannot read property 'onDidStopChanging' of undefined -
--production关键:跳过devDependencies,避免装入测试工具、构建脚本等离线无用且易失败的包 - 执行后务必检查插件子目录下是否存在
node_modules,且其中包含该插件声明的直接依赖(如linter-gcc目录下应有gcc、atom-linter等子目录) - 不要用
npm install替代——它不触发apm的 Atom 专属逻辑,language-rust类插件可能因此缺失语法定义文件
哪些插件根本没法离线用
即使你把 node_modules 打包拷过去,以下三类插件在断网状态下注定启动失败:
- 依赖实时 API 的:如
autocomplete-atom-api(首次启用时硬性请求https://api.github.com/repos/atom/atom/git/trees/...获取 API 文档) - 含动态下载逻辑的:如某些
language-rust版本会在第一次打开.rs文件时拉取rustc语法树,地址写死在代码里 - 需要全局
apm登录态的:如sync-settings,初始化阶段必须调用apm login获取 token,离线机从未连过服务器就卡住 - 控制台报错典型特征:
Failed to fetch https://...、getaddrinfo ENOTFOUND、长时间白屏无响应
重启 Atom 后插件仍不生效?先开控制台看报错
别猜,直接按 Ctrl+Shift+I(Win/Linux)或 Cmd+Shift+I(macOS),切到 Console 标签页。真实线索都在这里:
-
Error: Cannot find module 'fs-plus'→package.json缺失,或"main"字段指向了不存在的路径(比如写成./src/main.js但实际是./lib/main.js) -
Failed to activate package 'autocomplete-python' because it depends on 'language-python@^0.49.0'→ 该插件未安装,或已安装但未激活(需先打开一个.py文件触发语言包加载) -
Activation hook 'language-python:grammar-used' never fired→activationHooks配置错误,或language-python包本身因构建失败而无法加载 - 报错中出现
gyp ERR!或node-gyp→ 插件含原生模块,离线机缺 Python 2.7 / VS Build Tools / Xcode Command Line Tools
最麻烦的从来不是复制文件,而是每个插件对 activationHooks、依赖粒度、构建产物路径、甚至 Electron 版本都有隐式要求。离线前,最好在联网机上跑通一次 apm test,确认它真正依赖什么。











