• Stars
    star
    215
  • Rank 183,925 (Top 4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 7 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Build tool based on Webpack

Athena2

node version npm npm GitHub license GitHub stars

O2Team构建项目流程工具,基于Webpack3打包,提供多页、单页、H5三种模板选择,支持Nerv、React、Vue三大框架编译。

一次安装,到处运行

功能一览

创建项目

  • 生成项目、模块、页面、组件文件结构
  • 提供多页、单页、H5三大模板
  • 支持NervReactVue 热门前端框架

编译预览

  • 轻量组件化功能
  • Sass 编译
  • CSS合并压缩
  • CSS prefix,px转rem
  • JS合并压缩
  • 自动生成雪碧图,自动多倍图
  • 自动获取图片宽高
  • 文件内联,自定义图片转base64
  • 图片压缩
  • 字体压缩
  • 文件MD5戳
  • 本地预览

项目部署

  • 资源定位(图片等资源路径替换)
  • 生成CSS页面片
  • 部署到预览机和开发机

安装

基于node,请确保已具备较新的node环境(>=4.0.0),推荐使用node版本管理工具nvm,这样不仅可以很方便地切换node版本,而且全局安装时候也不用加sudo了。

安装本项目 athena2

$ [sudo] npm install -g athena2

由于国外源实在太慢,建议使用国内源来安装

$ [sudo] npm i -g athena2 --registry=http://registry.npm.taobao.org --disturl=http://npm.taobao.org/mirrors/node

目前已支持sass文件的编译

快速开始

基于命令 athena2,同时提供了简写ath2

初始化

首先需要初始化Athena2,在这一步会有初始化工作目录、输入用户名等操作

$ ath2 init

生成新项目

生成一个新的项目目录

$ ath2 a [项目名称]

同时提供了通过携带参数快速创建项目的命令

$ ath2 a --name test --description 测试 --sass --template complete --framework nerv

快速生成H5应用目录

$ ath2 a --h5 [h5 template]

参数说明

参数 --name 指定项目名称

参数 --description 指定项目描述

参数 --template 指定项目使用的模板,输入模板名称,支持complete(多页)、simple(单页)、h5(H5活动)三种应用模式。

参数 --framework 指定项目使用的框架,输入框架名称,支持Nerv、React、Vue三大框架。

参数 --sass 指定项目使用 sass

每个参数都是可缺省的。

然后根据提示一步一步来,将会自动生成项目的结构和所需文件代码

创建模块

注:单页应用及H5无此功能

创建命令

$ ath2 m [模块名]

多页应用每个模块相当于一个页面

同时提供了通过携带参数快速创建模块的命令

$ ath2 m --name hhh --description 测试

参数说明

参数 --name 指定模块名称

参数 --description 指定模块描述

每个参数都是可缺省的

然后根据提示一步一步来,将会自动生成项目的结构和所需文件代码

创建页面

注:H5应用无此功能

创建命令

$ ath2 pa [页面名]

多页应用需进入到该模块 下,执行以上命令,单页应用直接在根目录下执行

同时提供了通过携带参数快速创建页面的命令

$ ath2 pa --name hello --description 测试

参数 --name 指定页面名称

参数 --description 指定页面描述

每个参数都是可缺省的

然后根据提示一步一步来,将会自动生成athena2的page目录和模板

创建组件

H5应用每个组件相当于一个js类

创建命令

$ ath2 c [组件名]

多页应用需进入到该模块 下,执行以上命令,单页应用直接在根目录下执行

同时提供了通过携带参数快速创建组件的命令

$ ath2 c --name topbar --description 测试

参数说明

参数 --name 指定组件名称

参数 --description 指定组件描述

每个参数都是可缺省的

然后根据提示一步一步来,将会自动生成athena2的component目录和模板

编译

// 编译所有模块
$ ath2 s
// 多页应用同时编译多个模块
$ ath2 s mod1 mod2

打包

// 打包所有模块
$ ath2 build
// 多页应用同时打包多个模块
$ ath2 build mod1 mod2
// H5支持打包生成zip压缩包
$ ath2 build --zip

自定义配置

基础配置

项目根目录下的config目录即配置文件目录,里面包含

  • 公共配置文件:index.js
  • 编译配置文件:dev.js
  • 打包配置文件:prod.js 可根据需要自行配置相关参数,如publicPath、sourceRoot、outputRoot、port、host等。建议如无特殊情况,可不修改基础配置

Webpack配置

如需添加Webpack其他配置,可在相应配置文件中添加webpack参数,填入相关配置

例如:添加json-loader

module.exports = {
  ...
  webpack: {
    module: {
      rules: [
        {
          test: /\.json$/,
          use: 'json-loader'
        }
      ]
    }
  }
}

Postcss配置

Postcss相关配置可在相应配置文件的module>postcss中填入

自动css前缀 autoprefixer

该功能默认开启,如不需要,配置enable: false

更多配置参数详见:https://github.com/postcss/autoprefixer

module.exports = {
  ...
  webpack: {},
  module: {
    postcss: {
      autoprefix: {
        enable: true,
        // 其他options
      }
    }
  }
}

REM转换

该功能H5应用默认开启

module.exports = {
  ...
  webpack: {},
  module: {
    postcss: {
      pxtorem: {
        enable: true,
        // 其他options
      }
    }
  }
}

更多配置参数详见:https://github.com/ant-tool/postcss-plugin-px2rem

获取图片宽高 assets

该功能H5应用默认开启

自动获取1倍图宽高

body {
  width: width('images/foobar.png'); /* 320px */
  height: height('images/foobar.png'); /* 240px */
  background-size: size('images/foobar.png'); /* 320px 240px */
}

自动获取多倍图宽高

body {
  width: width('images/foobar.png', 2); /* 160px */
  height: height('images/foobar.png', 2); /* 120px */
  background-size: size('images/foobar.png', 2); /* 160px 120px */
}
module.exports = {
  ...
  webpack: {},
  module: {
    postcss: {
      assets: {
        enable: true,
        // 其他options
      }
    }
  }
}

更多配置参数详见:https://github.com/assetsjs/postcss-assets

雪碧图 sprites

该功能H5应用默认开启,会将img/images目录下的按文件夹划分的所有图片合成一张雪碧图,例如

/* Input */
.comment { background: url(img/icon/ico-comment.png) no-repeat 0 0; }
.bubble { background: url(img/icon/ico-bubble.png) no-repeat 0 0; }

/* ---------------- */

/* Output */
.comment { background-image: url(img/sprite.icon.png); background-position: 0 0; }
.bubble { background-image: url(img/sprite.icon.png); background-position: 0 -50px; }

使用多倍图时需按文件夹划分图片,文件夹命名格式如:name@2x。使用了pxtorem功能无需按文件夹划分多倍图

// prod.js
module.exports = {
  ...
  webpack: {},
  module: {
    postcss: {
      sprites: {
        enable: true,
        // 其他options
      }
    }
  }
}

更多配置参数详见:https://github.com/2createStudio/postcss-sprites

其他功能

图片压缩

图片压缩功能主要在打包时应用,H5应用默认开启该项功能

// prod.js
module.exports = {
  ...
  webpack: {},
  module: {
    imageMin: {
      enable: true,
      // 其他options
    }
  }
}

更多配置参数详见:https://github.com/tcoopman/image-webpack-loader

Base64 limit

该功能主要配置图片、文字转base64时的limit尺寸,默认为2000

module.exports = {
  ...
  webpack: {},
  module: {
    base64: {
      imageLimit: 8000,
      fontLimit: 000
    }
  }
}

LICENCE

MIT License

Copyright (c) 2017 o2team

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

More Repositories

1

wxapp-market

小程序营销组件,Marketing components for WeChatApp
JavaScript
2,667
star
2

wxapp-img-loader

适用于微信小程序的图片预加载组件
JavaScript
1,104
star
3

athena

O2前端流程工具
JavaScript
979
star
4

H5Skills

移动端开发技巧集合
831
star
5

xcel

一个基于 Electron 和 Vue 的 Excel 数据过滤工具——凹凸实验室出品 https://aotu.io/notes/2016/11/15/xcel/
Vue
666
star
6

guide

O2前端规范文档
JavaScript
538
star
7

elf

灵活可扩展的 HTML5 构建工具
JavaScript
493
star
8

o2team.github.io

Site of Aotu.io
JavaScript
307
star
9

mac

Best Installation Guides For Full-Stack Developers Using MAC OS - MAC全栈开发环境搭建指南
JavaScript
255
star
10

taro-ebook-source

Taro 掘金小册源码
JavaScript
231
star
11

cases

精选网页应用案例期刊
JavaScript
214
star
12

sign

O2 team mail signature generator
HTML
105
star
13

tech-weekly

JELLY Tech Weekly
JavaScript
104
star
14

sketch-plugin-boilerplate

sketch-plugin-boilerplate
JavaScript
75
star
15

app

Application store for AotuLabs
JavaScript
58
star
16

elf-preloader.js

A simple Javascript library for preload image and audio
JavaScript
57
star
17

wxapp-component-base

京东微信小程序组件方案 - 组件基类
JavaScript
57
star
18

tictactoe-sample

【微信小游戏开发入门:从 0 到 1 实现井字棋游戏】掘金小册示例
JavaScript
47
star
19

elf-orientation.js

A js library extend on DeviceOrientation Event
JavaScript
34
star
20

weapp-css-modules

小程序的简化版css-modules,比标准css-modules代码量更少的优化方案
JavaScript
34
star
21

es5-polyfill

ECMAScript 5 Polyfill for IE-8
JavaScript
30
star
22

timer-miniprogram

小程序定时器管理库,更合理地使用 setTimeout 和 setInterval,在页面显示时重启定时器,页面隐藏时暂停定时器,页面卸载时清除定时器
JavaScript
26
star
23

halojs

JavaScript
24
star
24

athena-component

athena组件平台,提供组件上传、预览、拉取
19
star
25

o2blog-wx

aotu.io文章转公众号自定义排版工具
JavaScript
10
star
26

eslint-config-o2team

ESLint Shareable Config for the O2Team Javascript Style Guide
JavaScript
7
star
27

image-color-utils

图片取色工具
JavaScript
6
star
28

misc

Static assets for aotu.io
6
star
29

books

books published by o2labs
JavaScript
5
star
30

brand

Aotu.io Brand Copyright Protection
HTML
4
star
31

postcss-athena-spritesmith

css spritesmith for athena
JavaScript
3
star
32

image-compress

图片压缩工具
JavaScript
3
star
33

athena-png-native

JavaScript
2
star
34

geeks

极客沙龙·Geek Talks
JavaScript
2
star
35

sketch-app-types

TypeScript declaration files for Sketch App
TypeScript
1
star
36

generator-athena

[DEPRECATED]JDC构建项目生成工具
JavaScript
1
star
37

eslint-config-o2team-rn

ESLint Shareable Config for the O2Team RN Style Guide. Based on eslint-config-o2team.
JavaScript
1
star
38

blog

凹凸实验室博客
1
star
39

eslint-config-o2team-wx

ESLint Shareable Config for the O2Team WXAPP Style Guide. Based on eslint-config-o2team.
JavaScript
1
star