webstorm 新建文件自动添加头部注释必须通过 file and code templates → files 配置,模板需归类到对应语言节点、扩展名严格匹配,变量统一用 ${user} 等 velocity 语法,修改后需重启 ide 才生效。

WebStorm 新建文件时自动带作者、日期、文件名等头部注释,不是靠 Live Template 实现的,必须走 File and Code Templates 路径,且模板必须建在 Files 栏下、扩展名严格匹配、变量用 ${USER} 这类大括号语法才生效。
模板建在哪?90% 的人错在位置和分类
很多人在 Live Templates 或 Includes 里建了“头部注释”,结果新建文件时根本不出现在右键菜单里。这是因为:
-
Live Templates只在已有文件中按缩写 + Tab 插入片段(比如输cmt+ Tab),不控制新建文件内容 -
Includes是供其他模板用#parse引用的,不会单独出现在新建菜单 - 真正起作用的是
Editor → File and Code Templates → Files下的模板,且必须拖到左侧语言节点下(如JavaScript或TypeScript) - 如果右键新建时只看到
File,没你的模板名,大概率是模板没归类到对应语言节点,或扩展名填错了(比如想建.ts文件,但模板扩展名写了js)
变量怎么写?${NAME} 和 $NAME 不通用
WebStorm 支持两种变量写法,但行为不同:
- 推荐统一用
${NAME}(Velocity 语法),它更稳定,尤其在嵌套或条件逻辑场景下不会被误解析 -
$NAME是旧式简写,在某些上下文(比如 shell 脚本模板里)可能被当成环境变量,导致替换失败 - 常用变量有:
${USER}(系统当前用户名)、${YEAR}-${MONTH}-${DAY}(比${DATE}更可控)、${NAME}(新建时输入的文件名,不含扩展名)、${HOUR}:${MINUTE}(避免${TIME}在某些系统不刷新) - 别手写字符串代替变量,比如写
@author: zhangsan—— 这样就失去了自动填充意义
JS/TS 模板示例与常见踩坑点
以 JavaScript 为例,正确配置路径是:Settings → Editor → File and Code Templates → Files → + → JavaScript File,命名如 JS with Header,扩展名必须填 js(否则右键看不到)。
模板正文建议这样写:
/**
* @author: ${USER}
* @date: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}
* @file: ${NAME}.js
*/
- 如果项目用 TypeScript,要另建一个模板,扩展名填
ts,并确保Settings → Languages & Frameworks → JavaScript中已启用 TS 支持(否则模板可能被忽略) - 别加
@file—— JSDoc 规范里没有这个 tag;想标归属,用@module或自然语言描述更稳妥 - 若需团队统一加 license 或版本号,直接写进这个模板最可靠,因为每次新建都强制带上
- Linux 系统下注意:部分发行版对
${USER}解析异常(返回空),可临时改用${env.USER}作为兜底
为什么改了模板,新建文件还是没反应?
这不是缓存问题,而是 WebStorm 对模板的加载机制很“死板”:
- 模板修改后,必须关闭并重新打开项目,或重启 WebStorm 才会生效(尤其在 Linux tar.gz 安装版中更明显)
- 如果新建的是
.jsx或.tsx,要确认模板建在React或TypeScript分类下,而不是通用JavaScript节点 - 检查是否启用了 “Create files from templates” 选项:
Settings → Editor → General → When pressing New in Project view,这里必须勾选 - 模板正文里不能有语法错误(比如多了一个
/或少了一个*),否则整个模板会被跳过,不报错也不提示











