# 脚手架合集 **Repository Path**: run27017/scaffolds ## Basic Information - **Project Name**: 脚手架合集 - **Description**: 简单快乐的脚手架工具,我的 Yeoman 生成器合集 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-01-30 - **Last Updated**: 2024-11-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # simple-scaffolds > 我的 yeoman generators 合集 ## 如何使用 ### 准备工作 脚手架需要使用`Yeoman`来创建,为此需要安装它。在安装之前,确保系统已经有: - Linux(毕竟我没有在其他系统下测试,但问题应该不大) - node(越新越好,至少我在用的时候,是 v12) - 包管理工具(npm 或 yarn) *(以下示例均以`yarn`命令操作,使用`npm`的同学改为对应命令就好了。)* 安装`Yeoman`,在命令行下调用: yarn global add yo ### 拉取项目和所有的子模块 git clone --recursive https://gitee.com/run27017/scaffolds path/to/store 拉取结束后,`path/to/store`的目录结构大致是: - README.md - .gitmodules - ... - generators - webpack-webapp - ... 其中`generators`目录下就是各种的脚手架生成器,你可以通过查看生成器的 README 文件了解这个生成器的主要生成内容。 ### 注册子模块 在使用之前,需要事先注册子模块。例如你想要使用`webpack-webapp`这个生成器: cd generators/webpack-webapp yarn # install packages yarn link 则一个名为`webpack-webapp`的生成器就注册成功了,然后可以使用`yeoman`生成项目了: mkdir my-webapp cd my-webapp yo webpack-webapp ### 更新子模块 更新单个的子模块,只需要在子模块目录下调用: cd generators/webpack-webapp git pull 更新之后可能需要更新`node_modules`: yarn 如果要更新所有的子模块,需要在主项目的根目录调用: git submodule update --remote --merge ## 使用 git 子模块管理 generators > 以 generator-webpack-webapp 为例。 首先,克隆本仓库(包括所有 generators): git clone --recursive https://gitee.com/run27017/simple-scaffolds 然后进入`generator-webpack-webapp`目录,链接它: cd generator-webpack-webapp yarn yarn link 最后即可用`yeoman`安装该脚手架: yo webpack-webapp ## 写在最后 ### 创建该项目的初衷 脚手架项目的解决方案已经有很多种了,例如 yeoman、vue-cli 甚至是 Rails 的模板生成器等。这些脚手架项目的目的都很明确,为了正式项目的生成。通过它们创建的脚手架都很重型,例如 yeoman 中的 fountain-webapp 生成器,会包含 gulp、babel、sass 等,甚至还必须在 react、augular、vue 当中三选一。但我的平时实验性的项目居多,我需要快速地开启一个项目开展我的想法或者学习某个库。例如我在学习 React 的时候就需要搭建一个能管理 packages 的轻量级工程,这时候我想到了 WebPack. 最需要解决的就是包管理的问题。虽然诸如 WebPack 的包管理配置,基本的配置代码估计不下 10 行就可以搞定(事实上,WebPack 可能是最简单的了,其他的如 Java 的 Maven 管理更要复杂),但这仍然会占用我 1、2 分钟的工夫。也许在读者看来,这 1、2 分钟不算什么。但为了这简单的 10 行代码,我需要打开浏览器,在 Google 中键入 WebPack,进入 WebPack 的主页,查看它的文档……每次都这样来一次,说实话是对心力很大的消耗。为什么不能一键就可以进入我的项目呢?就这样,我的这个脚手架合集的项目就这样诞生了。 还有一点需要说明的,**我的这个项目带有较为浓重的个人色彩**。我始终认为配置类的项目只有自己定制的才是最适合自己的,不论是 vim、tmux、firefox 等,这其中也包括脚手架。虽然这个项目是开源的,人人皆可以用,但项目的初期还是以我的个人需要为主。比如 generator-webpack-webapp,我最初的考虑是快速地加入 babel 和 sass 的选项,因为这两个是我最常用的。可能要到很后面才会考虑加入 less 的支持。 ### Git 的子模块 如何实现和管理我的这些脚手架,我摸索了一段时间,直到我接触到 yeoman 和 git 的子模块。yeoman 作为脚手架的编写工具,比单纯地挂载到 git 仓库下带来更多的选择和灵活性。而 git 的子模块,可以让我在一个仓库下很好地管理其他的脚手架仓库。也许有更轻量的方案,但目前来说,这样的方案是可操作的。 为此,我将两者的文档列举在下方,以示敬意: - [Yeoman](https://yeoman.io/) - [Git 子模块](https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97) #### 生成新的子模块 事实上,我们可以事先在项目下创建一个目录作为子模块,然后在子模块目录下初始化 git 仓库、提交、推送都是允许的,就好像这一切都与主模块无关: mkdir generators/webpack-webapp cd generators/webpack-webapp git init touch README.md git add README.md git commit -m "Initial commit" git remote add https://gitee.com/run27017/generator-new git push -u origin master 然后在主项目下添加子模块即可: git submodule add https://gitee.com/run27017/generator-new generators/new #### 开发子模块 同上,继续开发子模块时依然是在子模块下工作,然后提交、推送等。需要注意的是,推送子模块后,**需要主模块提交一遍**。仅仅是因为子模块的引用 hash 变了,注意就是了。 #### 移除子模块 To remove a submodule you need to: - Delete the relevant section from the .gitmodules file. - Stage the .gitmodules changes git add .gitmodules - Delete the relevant section from .git/config. - Run git rm --cached path_to_submodule (no trailing slash). - Run rm -rf .git/modules/path_to_submodule (no trailing slash). - Commit git commit -m "Removed submodule " - Delete the now untracked submodule files rm -rf path_to_submodule ## License MIT