Ember CLI #

一、Ember CLI概述 #

Ember CLI是Ember.js的官方命令行工具,提供了完整的项目开发工作流:

  • 项目创建和初始化
  • 代码生成(蓝图)
  • 开发服务器
  • 构建和打包
  • 测试运行
  • 插件管理

1.1 安装 #

bash
# 全局安装
npm install -g ember-cli

# 验证安装
ember --version

# 输出示例
ember-cli: 5.0.0
node: 18.17.0
os: darwin arm64

1.2 基本命令结构 #

bash
ember <command> [options] [arguments]

# 示例
ember new my-app
ember generate component user-card
ember serve --port 4201

二、项目创建 #

2.1 创建新项目 #

bash
# 创建新项目
ember new my-app

# 创建项目并使用yarn
ember new my-app --yarn

# 创建项目并使用pnpm
ember new my-app --pnpm

# 跳过git初始化
ember new my-app --skip-git

# 跳过npm安装
ember new my-app --skip-npm

2.2 项目初始化 #

bash
# 在现有目录初始化
ember init

# 强制覆盖现有文件
ember init --force

2.3 创建插件 #

bash
# 创建插件项目
ember addon my-addon

# 创建引擎
ember engine my-engine

三、代码生成 #

3.1 生成命令概览 #

bash
ember generate <blueprint> <name> [options]
# 简写
ember g <blueprint> <name>

3.2 常用生成命令 #

路由 #

bash
# 生成路由
ember generate route about
ember g route about

# 生成嵌套路由
ember g route posts/new

# 生成路由并跳过模板
ember g route about --skip-template

生成文件:

text
app/routes/about.js
app/templates/about.hbs
tests/unit/routes/about-test.js

组件 #

bash
# 生成组件
ember generate component user-card
ember g component user-card

# 生成模板only组件
ember g component user-card --template-only

# 生成类only组件
ember g component user-card --no-template

# 生成Pods结构组件
ember g component user-card --pod

生成文件:

text
app/components/user-card.js
app/components/user-card.hbs
tests/integration/components/user-card-test.js

模型 #

bash
# 生成模型
ember generate model post
ember g model post

# 带属性
ember g model post title:string body:text

# 带关联
ember g model comment body:text post:belongs-to:user

生成文件:

text
app/models/post.js
tests/unit/models/post-test.js

控制器 #

bash
# 生成控制器
ember generate controller posts
ember g controller posts

生成文件:

text
app/controllers/posts.js
tests/unit/controllers/posts-test.js

服务 #

bash
# 生成服务
ember generate service session
ember g service session

生成文件:

text
app/services/session.js
tests/unit/services/session-test.js

Helper #

bash
# 生成Helper
ember generate helper format-date
ember g helper format-date

生成文件:

text
app/helpers/format-date.js
tests/unit/helpers/format-date-test.js

Modifier #

bash
# 生成Modifier
ember generate modifier autofocus
ember g modifier autofocus

生成文件:

text
app/modifiers/autofocus.js
tests/integration/modifiers/autofocus-test.js

3.3 资源生成 #

bash
# 生成完整资源(路由+模板+模型+测试)
ember generate resource post
ember g resource post

# 带属性
ember g resource post title:string body:text

生成文件:

text
app/models/post.js
app/routes/posts.js
app/templates/posts.hbs
tests/unit/models/post-test.js
tests/unit/routes/posts-test.js
tests/acceptance/posts-test.js

3.4 其他生成命令 #

bash
# 生成适配器
ember g adapter application
ember g adapter post

# 生成序列化器
ember g serializer application
ember g serializer post

# 生成转换器
ember g transform date

# 生成初始化器
ember g initializer session

# 生成实例初始化器
ember g instance-initializer session

3.5 销毁命令 #

bash
# 销毁生成的代码
ember destroy component user-card
ember d component user-card

# 销毁路由
ember d route about

# 销毁模型
ember d model post

四、开发服务器 #

4.1 启动服务器 #

bash
# 启动开发服务器
ember serve
ember s

# 指定端口
ember serve --port 4201

# 指定host
ember serve --host 0.0.0.0

# 指定环境
ember serve --environment production

# 禁用live reload
ember serve --live-reload false

# 指定proxy
ember serve --proxy http://api.example.com

4.2 开发服务器选项 #

选项 说明 默认值
--port 端口号 4200
--host 主机地址 localhost
--environment 环境 development
--live-reload 热重载 true
--live-reload-port 热重载端口 7020
--proxy API代理 -
--secure-proxy HTTPS代理 true
--ssl 启用SSL false
--ssl-key SSL密钥文件 -
--ssl-cert SSL证书文件 -

4.3 环境变量 #

bash
# 设置环境变量
PORT=4201 ember serve

# 或
ember serve --port 4201

五、构建命令 #

5.1 开发构建 #

bash
# 开发环境构建
ember build

# 输出到指定目录
ember build --output-path dist/dev

# 监听模式
ember build --watch

5.2 生产构建 #

bash
# 生产环境构建
ember build --environment production

# 简写
ember build -prod

# 输出路径
ember build -prod --output-path dist/prod

5.3 构建输出 #

text
dist/
├── assets/
│   ├── my-app.js
│   ├── my-app.css
│   ├── vendor.js
│   └── vendor.css
├── index.html
├── robots.txt
└── crossdomain.xml

六、测试命令 #

6.1 运行测试 #

bash
# 运行所有测试
ember test
ember t

# 交互模式
ember test --server
ember t -s

# 指定浏览器
ember test --browser chrome

# 指定测试文件
ember test --filter "user-card"

# 指定测试模块
ember test --module "Integration | Component | user-card"

# 指定测试路径
ember test --path tests/integration/components/user-card-test.js

6.2 测试选项 #

选项 说明
--server 交互模式
--browser 浏览器选择
--filter 过滤测试
--module 指定模块
--path 指定文件
--reporter 测试报告格式
--silent 静默模式

6.3 CI环境测试 #

bash
# CI环境运行测试
ember test --path dist

# 使用testem配置
ember test --config testem.js

七、插件管理 #

7.1 安装插件 #

bash
# 安装插件
ember install ember-cli-sass
ember i ember-cli-sass

# 安装指定版本
ember install ember-cli-sass@^10.0.0

# 从git安装
ember install git+https://github.com/user/ember-addon.git

7.2 常用插件 #

bash
# 样式预处理
ember install ember-cli-sass
ember install ember-cli-less

# TypeScript支持
ember install ember-cli-typescript

# 测试工具
ember install ember-qunit
ember install ember-mocha

# 数据可视化
ember install ember-highcharts
ember install ember-cli-d3

# UI组件库
ember install ember-bootstrap
ember install ember-paper

八、其他命令 #

8.1 信息查看 #

bash
# 查看版本
ember version
ember v

# 查看帮助
ember help
ember help generate

# 查看可用蓝图
ember help --verbose

8.2 清理命令 #

bash
# 清理构建缓存
ember clean

# 清理并重新安装
rm -rf node_modules && npm install

8.3 检查命令 #

bash
# 检查依赖更新
npm outdated

# 检查安全漏洞
npm audit

九、配置文件 #

9.1 .ember-cli #

json
{
  "skipGit": false,
  "disableAnalytics": false,
  "isTypeScriptProject": true,
  "useYarn": true
}

9.2 ember-cli-build.js #

javascript
'use strict';

const EmberApp = require('ember-cli/lib/broccoli/ember-app');

module.exports = function (defaults) {
  const app = new EmberApp(defaults, {
    // 应用配置
    'ember-cli-babel': {
      enableTypeScriptTransform: true,
    },

    // 构建配置
    fingerprint: {
      enabled: true,
      extensions: ['js', 'css', 'png', 'jpg', 'gif'],
    },

    // 开发服务器配置
    'ember-cli-uglify': {
      enabled: true,
    },
  });

  return app.toTree();
};

十、自定义蓝图 #

10.1 创建自定义蓝图 #

text
blueprints/
└── my-component/
    ├── files/
    │   └── app/
    │       └── components/
    │           └── __name__.js
    └── index.js

10.2 蓝图定义 #

javascript
// blueprints/my-component/index.js
'use strict';

module.exports = {
  description: '生成自定义组件',

  locals(options) {
    return {
      name: options.entity.name,
      className: options.entity.name.split('-').map(capitalize).join(''),
    };
  },

  afterInstall(options) {
    console.log('组件已生成');
  },
};

function capitalize(str) {
  return str.charAt(0).toUpperCase() + str.slice(1);
}

十一、常用命令速查表 #

命令 说明
ember new 创建新项目
ember serve 启动开发服务器
ember build 构建项目
ember test 运行测试
ember g route 生成路由
ember g component 生成组件
ember g model 生成模型
ember g controller 生成控制器
ember g service 生成服务
ember g resource 生成资源
ember install 安装插件
ember destroy 销毁代码
ember version 查看版本
ember help 查看帮助

十二、总结 #

Ember CLI是Ember开发的核心工具:

功能 命令
项目创建 ember new
代码生成 ember generate
开发服务器 ember serve
构建 ember build
测试 ember test
插件管理 ember install

熟练使用Ember CLI可以大大提高开发效率,遵循CLI生成的约定也是Ember开发的最佳实践。

最后更新:2026-03-28