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

@steinwei/cli-demo

v0.0.5

Published

> TODO: description

Downloads

2

Readme

cli-demo

前言

自制脚手架,参考ivweb团队的脚手架制作并完成。仅作为学习使用。

  • cli-core (ok)
  • builder-webpack (ok)
  • generator-template (ok)

流程

这里制作分为三个模块进行。

一个是核心模块 cli-demo。

builder-webpack 为本地构建器。

generator 为 模板生成器。

cli-demo 里包含有 command,builder,generator几大主要功能模块。

暂未实现功能

  • checkUpdate 检测脚手架更新 以及 检测插件的更新
  • 根据互动,自动下载插件或模板到本地
  • build,没打通CI/CD,仅仅是单纯的webpack工具的打包,需要自己另外接入CICD流程中

已实现功能

  • install,安装插件到本地
  • init, 生成指定模板
  • dev, 本地构建前端应用
  • build, 本地打包

command

command 的主要作用是来调度任务。脚手架初始化阶段,command 内部建立一个对象存储每个任务。

当用户向脚手架传递任务作为参数的时候,command 会搜索到对应的任务,并执行。

比如这里,我们使用

  • init 作为调度generator 的一个指令
  • install 作为安装插件指令
  • dev 作为本地构建指令
  • build 作为打包指令

它的代码实现非常简单。仅有几行代码。

builder

builder 的主要作用是把上下文传递给 builder-webpack进行本地构建。

builder 仅仅做的事情只是把获取 builder-webpack的入口,

然后把 上下文传递给它。

上下文包括下什么呢?这里稍微列举一些它的属性。

class cli{
    logger: any;
    pluginDir: pathName;
    homeDir: pathName;
    pkgPath: pathName;
    workDir: pathName;
    args: any;
}

传递之后,builder-webpack会根据 workDir 在工作文件夹 利用webpack 进行本地构建或者打包。

这里的webpack 配置是经过优化过的。 默认是多页面MPA的配置。

用到了一些比较流行的优化配置。这里列举一部分。

  • mini-css-extract-plugin CSS压缩插件
  • happypack 多线程构建工具

generator

generator 的主要作用是把上下文传递给 generator, generator 利用 yeoman工具生成本地文件模板。

解释下为何要另外分插件来安装

这里考虑过参考 create-react-app 的方案,在用inquirer做选择时,

根据answer来决定捆绑哪个插件下载到本地,这样就无须另外手动去安装插件。

目前没有实现这个功能。

分插件安装,是因为可能有很多不同的场景需要定制。

因此插件是根据场景定制的,并且这边定制的话其实也不难,只是把文件拷贝一下就可以了。

如果有特殊逻辑的话,可以修改 ~/.cli-demo/node_modules/${插件名}/generators/app/index.js

如何实现定制化

也就是自己可以自定义写入 react模板或者是 vue 模板,用同一套的webpack构建。

另外模板文件里面要包含,yeoman-generator。

脚手架就是通过yeoman来生成模板的,因此模板中会需要到它。

生成后的模板不会与yeoman有联系。

声明

此项目借鉴于腾讯ivweb团队的外部开源脚手架,侵权即删。