npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

edulis

v1.0.1

Published

Netease EDU Scaffolding

Downloads

12

Readme

Edulis - A configurable front-end scaffolding based on NEI

GitHub license

网易教育产品交互式前端脚手架

Edulis致力于提供可扩展的、可配置的、基于NEI工程规范的项目脚手架功能吗,每天为你节省5分钟

为什么我们需要交互式脚手架

在NEI工程规范中我们需要类似于:

nei build -sk 8b99059f8292ebced1335a1285e5d94e -module term -name member-list -author hzxxxxx

这样的命令去生成一个工程的初始结构,which means:

  • 每新建一种类型的工程,需要去NEI上找到对应的工程规范的key

  • 需要记住这个工程规范包含的参数名,例如:module,name,author

  • 一条命令包含了多个参数,难以集成到npm scripts里

在诸如module-term这样的工程里,每新建一个module或component,其命令的module参数其实都是相同的,变化的只有name和author参数。但是由于以上的命令里包含了所有三个参数,所以很难把上面的命令集成到module-term的package.json的scripts里,如果我们添加如下的scripts:

{
    "scripts":{
        "component": "nei build -sk 8b99059f8292ebced1335a1285e5d94e -module term"
    }
}

则需要在npm run component之后手动添加-name member-list -author hzxxxxx,这种体验显然是不自然和不友好的,很容易因为忘记添加后面的参数导致生成了错误的文件

Edulis的用法

由于Edulis基于NEI工程规范,显然你需要先安装NEI:

npm install -g nei

然后安装Edulis:

npm install -g edulis

因为Edulis的全局配置文件应放置于用户而不是root的home目录下,所以不推荐用sudo进行安装,如果出现非sudo安装权限不够的情况,你可能需要sudo chown YOUR_USER_NAME /usr/local/lib/node_modules

你可以看到Edulis基本用法如下:

  Usage: edulis <command> [--option [value]]

  Options:

    -V, --version            output the version number
    -h, --help               output usage information

  Commands:

    *                        help
    component|com [options]  Build A New Component
    update                   Update Config
    delete                   Delete All Files and Folders in the Current Dictionary

在你需要新建module和component的目录,例如~/develop/module-term/,运行:

edulis component

你可以看到:

? Choose a Component Template : (Use arrow keys)
❯ 云课堂 - cms组件
  教育产品 - 通用组件
  教育产品 - 通用模块
  教育产品 - 模块组件
  教育产品 - 业务组件
  教育产品 - 通用缓存

就可以用方向键和Enter选择对于的工程模板了,在选择之后,就可以键入对应的参数值。对于上面提到的例子,我们可以这样使用Edulis实现:

? Choose a Component Template : 教育产品 - 通用模块
? Input the component module: term
? Input the component name: member-list
? Input the component author: hzxxxxx

然后,一个新的“通用模块”就在当前目录诞生啦

Edulis的配置

NEI上的工程规范那么多,Edulis只会把其中最通用的一部分包含进来。Edulis的全局配置在~/.edulis.json,内容如下:

{
    "prefix": "nei build -sk",
    "templates": [

        //...

        {
            "des": "教育产品 - 通用组件",
            "key": "8b99059f8292ebced1335a1285e5d94e",
            "params": [
                "module",
                "name",
                "author"
            ]
        },
        
        //...

    ]
}

每一项加入Edulis的工程规范,必须在templates数组里有一个对应的配置对象。

其中,

  • des字段表示在Edulis中显示的该工程规范的名称
  • key字段表示该工程规范的key
  • params表示该工程规范需要的参数

Notice :

  1. 要新加入一个工程模板,必须先在NEI上新建对应的工程规范
  2. 新加入的工程规范如需要配置到Edulis全局配置中,请联系作者
  3. 全局安装Edulis后,会在home目录自动添加全局配置,如遭遇全局配置错误,可以使用edulis update初始化全局配置
  4. 受限于NEI,Edulis生成新项目的过程并不原子,无法撤销,只能手动删除

Edulis集成到业务工程里

  1. 对于上面提到的module-term的例子,我们可以添加这样的npm scripts:

    {
        "scripts":{
            "component": "edulis component -k 8b99059f8292ebced1335a1285e5d94e -m term"
        }
    }

    -k指定对于工程规范的key,用-m指定对应工程规范的module参数,这样,以后使用npm run component的时候就不需要在选择模板和输入module参数了,只需要输入name和author参数

  2. 有一些业务线里专用的工程规范(例如上面出现过的“云课堂 - cms组件”),我们不需要将其加入全局配置中,只要在相应业务工程中可以使用就行了。Edulis支持业务配置,在实际使用中,Edulis实际取到的配置其实是业务配置和全局配置的和。

    对于“云课堂 - cms组件”这个工程规范,我们可以在component-cms这个工程的根目录里添加业务配置.edulis.json:

    [
        {
            "des": "云课堂 - cms组件",
            "key": "fb85e7dbb675ef5e194b6234cfcc90d9",
            "params": [
                "name",
                "author"
            ]
        }
    ]

    注意,此时可以省略templates字段,内容直接为templates数组

    添加了以上的业务配置后,只要Edulis在component-cms目录下运行,就能够找到“云课堂 - cms组件”这个工程规范。

未来计划

  • 添加更多通用工程规范
  • 集成umi2project功能,用umi配置生成工程结构

Others

本项目开源在Github,欢迎Star,欢迎Contribute,欢迎各业务线接入