目录
- Plop介绍
Plop的具体应用
- 具体步骤
- 总结
Plop介绍
次要用于创立我的项目中特定文件类型的小工具,相似于Yeoman
中的sub generator
,个别不会独立应用。个别会把Plop
集成到我的项目中,用来自动化的创立同类型的我的项目文件。
- plop-npm
- plop-github
Plop的具体应用
具体步骤
- 新建目录,初始化
npm init -y
,装置Plop
npm install -g plop
- 在目录下创立
plop-templates
文件夹,外面创立三个模板文件
- component.css.hbs
.{{name}} { }
- component.hbs
import React from 'react';export default () => ( <div className="{{ name }}"> <h1>{{name}} Component</h1> </div>)
- component.test.hbs
import React from 'react';import ReactDOM from 'react-dom';import {{name}} from './{{name}}';it('renders widthout crashing', () => { const div = document.createElement('div'); ReactDOM.render(<{{name}} />, div); ReactDOM.unmountComponentAtNode(div);});
- 在根目录下创立一个
plopfile.js
的文件,这个文件是Plop
的入口文件,须要导出一个函数,这个函数接管一个plop
对象,用于创立生成器工作。
plop.setGenerator
:设置一个生成器,第一个参数是项目名称,第二个函数是对象,对应设置选项配置项内容:
description
:形容
prompts
:值是数组,命令行交互问题,一个问题对应一个对象actions
:值是数组,实现命令行交互过后实现的一些动作,一个对象一个动作
module.exports = plop => { // 设置一个生成器,第一个参数是项目名称,第二个函数是对象,对应设置选项 plop.setGenerator('compontent', { // 形容 description: 'create a component', // 命令行交互问题 prompts: [ // 一个问题对应一个对象,配置参考自定义Generator { type: 'input', name: 'name', message: 'component name', default: 'MyComponent' } ], // 实现命令行交互过后实现的一些动作 actions: [ //每一个对象都是一个动作 { type: 'add', // 代表增加文件 // 被增加的文件在输入的哪个门路,双花括号插值表达式能够获取交互失去的数据 path: 'src/components/{{name}}/{{name}}.js', // 模板文件是什么 templateFile: 'plop-templates/component.hbs' }, { type: 'add', path: 'src/components/{{name}}/{{name}}.css', templateFile: 'plop-templates/component.css.hbs' }, { type: 'add', path: 'src/components/{{name}}/{{name}}.test.js', templateFile: 'plop-templates/component.test.hbs' } ] })}
- 在
package.json
中增加
"scripts": { "plop": "plop" }
- 运行
npm run plop# 输出模块名称? component name Header#√ ++ \src\components\Header\Header.js#√ ++ \src\components\Header\Header.css#√ ++ \src\components\Header\Header.test.js
此时在根目录的src\components
上面,有了三个文件
- Header.js
import React from 'react';export default () => ( <div className="Header"> <h1>Header Component</h1> </div>)
- Header.css
.Header { }
- Header.test.js
import React from 'react';import ReactDOM from 'react-dom';import Header from './Header';it('renders widthout crashing', () => { const div = document.createElement('div'); ReactDOM.render(<Header />, div); ReactDOM.unmountComponentAtNode(div);});
这样,就能够依据模板一键生成一个组件目录。
总结
- 将
plop
模块作为我的项目开发依赖装置 - 编写用于生成特定类型文件的模板
- 在我的项目根目录下创立一个
plopfile.js
文件 - 在
plopfile.js
文件中定义脚手架工作 - 通过
Plop
提供的CLI
运行脚手架工作