2 |
3 | <<%= componentName %> />
4 |
5 |
6 |
7 |
16 |
--------------------------------------------------------------------------------
/circle.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | jobs:
3 | build:
4 | working_directory: ~/repo
5 | docker:
6 | - image: circleci/node:latest
7 | branches:
8 | ignore:
9 | - gh-pages # list of branches to ignore
10 | - /release\/.*/ # or ignore regexes
11 | steps:
12 | - checkout
13 | - restore_cache:
14 | key: dependency-cache-{{ checksum "yarn.lock" }}
15 | - run:
16 | name: install dependences
17 | command: yarn
18 | - save_cache:
19 | key: dependency-cache-{{ checksum "yarn.lock" }}
20 | paths:
21 | - ./node_modules
22 | - run:
23 | name: test
24 | command: yarn test
25 |
--------------------------------------------------------------------------------
/test/test.js:
--------------------------------------------------------------------------------
1 | import path from 'path'
2 | import test from 'ava'
3 | import sao from 'sao'
4 |
5 | const template = path.join(__dirname, '..')
6 |
7 | test('defaults', async t => {
8 | const stream = await sao.mockPrompt(template, {
9 | // To make local and CI generate same result
10 | // We need to use fake data for these fields
11 | author: 'fake-name',
12 | gitUser: 'fake-name',
13 | email: 'fake-email',
14 | description: 'lol'
15 | })
16 | t.snapshot(stream.meta.merged, 'template data')
17 | t.snapshot(stream.fileContents('README.md'), 'readme')
18 | t.snapshot(stream.fileContents('package.json'), 'package.json')
19 | t.snapshot(stream.fileContents('circle.yml'), 'circle.yml')
20 | t.snapshot(stream.fileList, 'files')
21 | })
22 |
--------------------------------------------------------------------------------
/template/circle.yml:
--------------------------------------------------------------------------------
1 | <%_ var lockfile = _.pm === 'npm' ? 'package-lock.json' : 'yarn.lock' -%>
2 | version: 2
3 | jobs:
4 | build:
5 | working_directory: ~/repo
6 | docker:
7 | - image: circleci/node:latest
8 | branches:
9 | ignore:
10 | - gh-pages # list of branches to ignore
11 | - /release\/.*/ # or ignore regexes
12 | steps:
13 | - checkout
14 | - restore_cache:
15 | key: dependency-cache-{{ checksum "<%= lockfile %>" }}
16 | - run:
17 | name: install dependences
18 | command: <%= _.pm %> install
19 | - save_cache:
20 | key: dependency-cache-{{ checksum "<%= lockfile %>" }}
21 | paths:
22 | - ./node_modules
23 | - run:
24 | name: test
25 | command: <%= _.pm %> run test:cov
26 |
--------------------------------------------------------------------------------
/cli.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | const path = require('path')
3 | const cac = require('cac')
4 | const sao = require('sao')
5 | const update = require('update-notifier')
6 | const pkg = require('./package')
7 |
8 | const cli = cac()
9 |
10 | cli.command('*', 'Generate a new project', input => {
11 | const folderName = input[0] || '.'
12 | const targetPath = path.resolve(folderName)
13 | console.log(`> Generating Vue component in ${targetPath}`)
14 |
15 | const templatePath = __dirname
16 |
17 | return sao({
18 | template: templatePath,
19 | targetPath
20 | }).catch(err => {
21 | process.exitCode = 1
22 | if (err.name === 'SAOError') {
23 | sao.log.error(err.message)
24 | } else {
25 | console.error(err.stack)
26 | }
27 | })
28 | })
29 |
30 | cli.parse()
31 |
32 | update({
33 | pkg
34 | }).notify()
35 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cvc",
3 | "version": "1.4.1",
4 | "description": "Create Vue component in 30 seconds.",
5 | "repository": {
6 | "url": "vue-land/create-vue-component",
7 | "type": "git"
8 | },
9 | "bin": {
10 | "create-vue-component": "cli.js",
11 | "cvc": "cli.js"
12 | },
13 | "files": [
14 | "cli.js",
15 | "sao.js",
16 | "template"
17 | ],
18 | "scripts": {
19 | "test": "npm run lint && ava",
20 | "lint": "xo"
21 | },
22 | "author": "egoist <0x142857@gmail.com>",
23 | "license": "MIT",
24 | "dependencies": {
25 | "cac": "^4.0.0",
26 | "pascal-case": "^2.0.1",
27 | "sao": "^0.22.11",
28 | "superb": "^1.3.0",
29 | "update-notifier": "^2.3.0"
30 | },
31 | "devDependencies": {
32 | "ava": "^0.22.0",
33 | "eslint-config-rem": "^3.0.0",
34 | "xo": "^0.18.2"
35 | },
36 | "xo": {
37 | "extends": "rem/prettier",
38 | "ignores": [
39 | "template/**"
40 | ]
41 | },
42 | "ava": {
43 | "files": [
44 | "test/test.js"
45 | ]
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/template/README.md:
--------------------------------------------------------------------------------
1 | # <%= name %>
2 |
3 | [](https://npmjs.com/package/<%= name %>) [](https://npmjs.com/package/<%= name %>) [](https://circleci.com/gh/<%= gitUser %>/<%= name %>/tree/master)
4 |
5 | <%- description %>
6 |
7 | ## Install
8 |
9 | ```bash
10 | yarn add <%= name %>
11 | ```
12 |
13 | CDN: [UNPKG](https://unpkg.com/<%= name %>/) | [jsDelivr](https://cdn.jsdelivr.net/npm/<%= name %>/) (available as `window.<%= pascalCasedComponentName %>`)
14 |
15 | ## Usage
16 |
17 | ```vue
18 |