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

knighkit

v0.9.1

Published

knighkit 是自动化,模块开发,并支持自动打包,支持远程调试的前端开发框架。 目的是减少前端开发过程中的重复工作,使你更关注程序本身。

Downloads

19

Readme

欢迎使用 knighkit.

knighkit 是自动化,模块开发,并支持自动打包,支持远程调试的前端开发框架。 目的是减少前端开发过程中的重复工作,使你更关注程序本身。

推荐:基于webpack架构全新工作流tua

功能

自动化生成项目结构

一条命令,完成项目的结构

集成常用的 jquery underscore 库等

jquery 主要用于功能的开发,underscore 用于数据的处理等

集成开发阶段使用的模块化开发库 seajs

seajs 用来完成开发阶段的模块加载和调试

新型的模版组成方式,模版即模块。

每个模块都是一个文件夹,每个模块由以下文件构成:

  • m.html/hogan/vm/jade 模版文件,支持4种,自动识别编译
  • index.js 本模块的js业务逻辑文件
  • index.json 本模块的测试数据
  • data.js 模版的数据处理逻辑部分
index.js

index.js 是标准的 commonjs 模块,自动生成时,以以下代码为模板:

define(function (require, exports, module) {
    var _$ = require('jsonselect');  // 工具类
    var _g = require('global');  // 工具类
    var utils = require('utils/utils');
    var tpHelper = require('tpHelper'); // 用于模版模块生成的工具类
    module.exports = {
        render: function (data) {
            return ___template___(data);
        }
    }
});

其中,m.html/hogan/vm/jade 编译完毕后的代码,会替换代码中的 template(param) 部分。

模板文件中的静态资源引用

m.html 中,css文件的引用,以及img标签引用的图片,都可以使用相对路径,如:

<link href="./xxx.css">

<div>
    <img src='./a.jpg'/>
</div>

<div>
    <img src='./<%= fileDir %>/b.jpg'/>
</div>

以上代码中第一个img标签中使用的图片是相对于m.html的图片,css 文件时相对于html的css文件。 第二个img标签含有变量,此时的路径就是针对于使用m.html的 html 文件的相对路径。

index.js 和 data.js 中,完整的img标签引用的图片或link引用的css资源,如果是相对路径,是相对于 m.html,否则,也是相对于使用该模板的页面。

xxx.css 中,资源引用可以依照 css 文件使用相对路径,如:

div{
    background: url(./a.jpg);
}

以上代码引用的是相对于xxx.css,和其同级的 a.jpg.

集成 jstm 模版管理工具

可以使用任意支持预编译的模版框架,强有力的模版构建管理能力

  • 支持四种模版: jade,ktemplate,mustache(hogan.js),velecity
  • 支持模版数据处理模块
  • 支持将其他模版作为插件添加

单独模版的测试页面

自动生成单独模版的测试页面,自动打包数据,方便测试每个小模块

可定制 html 模版的生成模块

可方便的自行添加模版中需要的js工具库等

自动重新编译

自动化监测模版文件变化,自动重新编译已修改的模版文件

内建预览服务器

不需要启动自己的 HTTP 服务器,内置的服务器用一条命令就可以启动

内建 weinre 远程调试服务器

一条命令就可以启动 weinre,简单方便的调试移动端

支持 css 的合并压缩

内置打包工具

自动打包,打包后不依赖 seajs

How to start?

$ npm install -g knighkit

安装成功后,可以输入

$ kkit -?
$ kkit -h
$ kkit --help

查看帮助。

构建你第一个 knighkit 项目

初始化项目

kkit -g
kkit --generate

此命令可在执行命令的目录下,生成一个 knighkit 开发项目。

生成模版

kkit -i
kkit --init

根据以上生成项目的 src/template/good.json 生成模版。

生成的模版在src/template中。

添加一个模版

kkit -b list.html

运行上面的命令,会在 src/template 文件夹下生成 list 文件夹,并生成空的 index.js xxx.css m.__html__等。

list的后缀表示使用的模板引擎类型。

如果想使用 jade 模板,命令如下:

kkit -b list.jade

src/template 下,生成 list 文件夹,并生成空的 index.js xxx.css m.__jade__.

编译模版

kkit -b
kkit --build

src/template中的模版会被编译输出到 output文件夹下。

合并压缩

kkit -p
kkit --package

根据配置文件中的配置打包,见配置文件

/**                                                  
 * 打包模块, 可设置多个                                       
 * path 是要打包文件的入口模块路径                                
 * name 是输出文件名称                                      
 * -------- begin -----------*/                      
"packModules": [                                     
    {"path": "src/scripts/business", "name": "business"}
]                                                  

以上配置会以 src/script/business 为主入口,打包程序后,以 business 为名称,输出到 dist 下两个文件:

dist/business.js
dist/business-min.js

启动静态服务器

kkit -s http

该命令可以启动一个http静态服务器,服务器的根目录对应项目的根目录。端口号对应配置文件中的端口号:configs.js中的 http.port,默认是 9527。

模板编译中间件

此静态服务器集成了一个模板编译的中间件,作用是,当访问模板文件时,自动编译,返回给js加载器。如:

require('src/template/list');

以上代码在启动了静态服务器后,可以加载 template 模板文件夹下的 list 模板。

如果不启动静态服务器,会默认查找 src/template/list.js,在 knighkit 中,template/list 会是文件夹,其中包含 index.js m.html xxx.css 等。因此,会返回 404。

以上请求,经中间件处理,会编译相应的模板,并将模板编译后的 js 代码返回给 js 加载器。等同于直接加载使用 kkit -b 以后的 js 文件:

require('output/list/list');
使用第一种方式的好处
  • 代码可读性好,让开发者一眼就能看出来引用的模板在哪里。
  • 并将模板编译的细节对开发者做了隐藏,让开发者感觉不到模板的编译中间过程的存在。
  • 提升开发效率,模板修改后,不再需要使用编译命令编译,直接刷新页面即可查看结果。

启动weinre服务器

kkit -s weinre

启动 weinre 服务器。远程调试在手机上测试的页面。注意,手机和调试的 PC 需要在同一个网段内。

项目打包

kkit -e
kkit --export

参数为项目入口的页面文件(如index.html),将文件名(index)作为项目名称,将主页和主页依赖的静态资源都拷贝到该目录下。

具体的步骤为,在项目根目录先会创建__publish__/{项目名}文件夹,经过分析页面,收集页面依赖的css,根据页面的js入口,合并压缩 js,在 html js css中收集依赖的静态资源(图片,svg,字体文件等)。静态资源拷贝到__publish__/{项目名}/statics下,css 拷贝到 __publish__/{项目名}/styles 文件夹下,压缩后的 js 拷贝到 __publish__/{项目名}/script 下;然后,根据配置文件中的staticResource,将相应的资源拷贝到 __publish__/{项目名}下相应的位置下。除配置在 staticResource 中的文件只是拷贝外,其他文件在拷贝后都会使用文件的 md5 值作为版本号。

"staticResource": [                                     
    {"source": "src/styles/icons", "target": "styles"}
]                                                  

通过以上配置,会将icons文件夹,拷贝到 __publish__/{项目名}/styles 下。

如果不传递任何参数,会默认在 __publish__ 下生成一个 __allpacked 的文件夹,程序会遍历根文件夹下的.html的文件,依次作为入口,打包到 __allpacked 文件夹下。这种方式比较适合含有公共模块较多的页面,在上传静态资源时,可以不必手动处理公共的静态资源。

注意:此命令执行时,会自动执行 kkit -b 编译模板的命令,并且在执行后删除 output 文件夹。

CMS提交

kkit -c
kkit --cms

此处的 cms 提交是比较专有的代码,不适合所有公司的普遍情况。

之所以做一个 cms 提交出来,是想提供一种技术方案,即在没有后台 cms 接口,只有 cms 管理网站的情况下,我们如何做到自动提交文件到 cms。同样适用于 CDN 的提交。

内部实现暂时使用了 phantomjs,需配置环境变量,如果在使用npm安装knighkit过程中,phantomjs的自动下载一直被墙,建议直接去phantomjs官网下载,并配置环境变量。然后再执行一遍 npm install -g knighkit 即可安装通过。

CMS 后续打算直接使用 berserkJS,不再使用phantomjs+capsperJS。

Change logs

2016/2/17 version 0.8.0

支持 include 和 puzzle 扩展标签的嵌套

Authors and Contributors

KnightWu (@wulijian)

Support or Contact

[email protected]