Skip to content

Commit 02764b2

Browse files
Merge pull request #944 from pattern-lab/dev
Beta Beta
2 parents de86738 + 97948b2 commit 02764b2

35 files changed

+397
-97
lines changed

README.md

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,7 @@ Refer to the [core usage guidelines](https://github.com/pattern-lab/patternlab-n
2424

2525
As of Pattern Lab Node 3.0.0, installation of [Editions](http://patternlab.io/docs/advanced-ecosystem-overview.html) is accomplished via the command line interface.
2626

27-
_0 to 60mph_
28-
29-
The below assume a new directory and project is required.
27+
The below assumes a new directory and project is required. This is likely what you want to do if starting from scratch. You could also run this within an existing project. The CLI will ask you for the installation location.
3028

3129
1. Open a terminal window and following along below:
3230
```bash
@@ -36,31 +34,10 @@ The below assume a new directory and project is required.
3634
```
3735
> If you get an error stating that `npx` is not installed, ensure you are on `npm 5.2.0` or later by running `npm -v` or install it globally with `npm install -g npx`. [Learn more about npx.](https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b)
3836
1. Follow the on-screen prompts to choose your Edition and a Starterkit should you want one.
39-
1. Run `npm install` one last time to ensure any transient packages from the CLI are installed.
40-
1. Open `package.json` and add the following to your `scripts` object
41-
```diff
42-
"scripts": {
43-
+ "patternlab": "patternlab"
44-
},
45-
```
46-
This tells `npm` to look in the local `node_modules/.bin` directory for the `patternlab` CLI.
47-
1. In your terminal, run `npm run patternlab <command>`, where `<command>` is a documented method on the CLI, such as `build`, `serve`, or `help`.
48-
49-
50-
_Established npm projects_
37+
- If you chose `edition-node`, new commands in the "scripts" will be added in your `package.json`.
38+
- If you chose `edition-node-gulp`, a `gulpfile.js` will be added to your project.
5139

52-
1. Run the following command from a terminal:
53-
```bash
54-
npm install @pattern-lab/cli --save-dev
55-
```
56-
1. Open `package.json` and add the following to your `scripts` object
57-
```diff
58-
"scripts": {
59-
+ "patternlab": "patternlab"
60-
},
61-
```
62-
This tells `npm` to look in the local `node_modules/.bin` directory for the `patternlab` CLI.
63-
1. In your terminal, run `npm run patternlab init`. Follow the on-screen prompts to choose your Edition and a Starterkit should you want one.
40+
> Notice that `@pattern-lab/cli` was installed as a depdendency. Learn how to further [use the cli in your own project](https://github.com/pattern-lab/patternlab-node/blob/dev/packages/cli/readme.md#configuring-your-project-to-use-the-cli).
6441

6542

6643
## Ecosystem
@@ -85,7 +62,6 @@ Pattern Lab / Node wouldn't be what it is today without the support of the commu
8562
* **[Brad Frost](http://bradfrost.com/)**
8663
* [Marcos Peebles](https://twitter.com/marcospeebles)
8764
* [Susan Simkins](https://twitter.com/susanmsimkins)
88-
* [Wilfred Nas](https://twitter.com/wnas)
8965
9066
## Contributing
9167

packages/cli/bin/cli-actions/build.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
'use strict';
22
const buildPatterns = require('../build');
3-
const copyFiles = require('../copy-source-files');
43
const resolveConfig = require('../resolve-config');
54
const { error, info, wrapAsync } = require('../utils');
65

76
const build = options =>
87
wrapAsync(function*() {
98
try {
109
const config = yield resolveConfig(options.parent.config);
11-
yield copyFiles(config.paths);
1210
yield buildPatterns(config, options);
1311
info(`build: Yay, your Pattern Lab project was successfully built ☺`);
1412
} catch (err) {

packages/cli/bin/cli-actions/serve.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
'use strict';
22
const resolveConfig = require('../resolve-config');
3-
const build = require('./build');
43
const servePatterns = require('../serve');
54
const wrapAsync = require('../utils').wrapAsync;
65

76
const serve = options =>
87
wrapAsync(function*() {
98
const config = yield resolveConfig(options.parent.config);
10-
yield build(options);
11-
servePatterns(config, options.watch);
9+
servePatterns(config, options);
1210
});
1311

1412
module.exports = serve;

packages/cli/bin/copy-source-files.js

Lines changed: 0 additions & 27 deletions
This file was deleted.

packages/cli/bin/patternlab.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ cli
5757
.alias('compile')
5858
.description('Build Pattern Lab. Optionally (re-)build only the patterns')
5959
.option('-p, --patterns-only', 'Whether to only build patterns')
60+
.option('--no-watch', 'Start watching for changes')
6061
.action(build);
6162

6263
/**
@@ -130,7 +131,7 @@ cli
130131
.command('serve')
131132
.alias('browse')
132133
.description('Starts a server to inspect files in browser')
133-
.option('-w, --watch', 'Start watching for changes')
134+
.option('--no-watch', 'Start watching for changes')
134135
.action(serve);
135136

136137
// Show additional help

packages/cli/bin/serve.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ const { error, info } = require('./utils');
99
* @func serve
1010
* @desc Start a browser-sync server in the Pattern Lab public dir
1111
* @param {object} config - The passed Pattern Lab config
12+
* @param {object} options - The passed options at invocation time
1213
*/
13-
function serve(config) {
14+
function serve(config, options) {
1415
if (!isValidConfig) {
1516
throw new TypeError(
1617
'serve: Expects config not to be empty and of type object.'
@@ -37,7 +38,7 @@ function serve(config) {
3738
try {
3839
info(`serve: Serving your files …`);
3940
const pl = patternlab(config);
40-
pl.server.serve({});
41+
pl.server.serve(options);
4142
} catch (err) {
4243
error(err);
4344
}

packages/cli/readme.md

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,44 @@
1414
#### Via Yarn
1515
`yarn add @pattern-lab/cli --dev`
1616

17-
## Getting Started
18-
1. In order to use Pattern Lab you need to initialize a Pattern Lab project with `patternlab init`. The CLI will ask you some setup question and scaffold your project based on it.
19-
2. Build your patterns use `patternlab build`. The Pattern Lab CLI will assume that the `patternlab-config.json` is in the project root. Othewise specify a custom path to config with `patternlab build --config path/to/config`
20-
3. To view your patterns in the browser preview `patternlab serve` or again specify a custom config location `patternlab serve --config path/to/config`
21-
4. To export your patterns in the browser preview `patternlab export` or again specify a custom config location `patternlab export --config path/to/config`
17+
## Configuring Your Project to Use the CLI
18+
19+
If the CLI is installed globally, you may call commands directly, such as `patternlab --version`.
20+
21+
If the CLI is not installed globally, you need to tell `npm` where to find the executable when invoking commands.
22+
23+
Open `package.json` and add the following to your `scripts` object:
24+
25+
```diff
26+
"scripts": {
27+
+ "patternlab": "patternlab"
28+
},
29+
```
30+
This tells `npm` to look in the local `node_modules/.bin` directory for the `patternlab` CLI.
31+
32+
Subcommands and options can then be forwarded to the CLI like this:
33+
34+
```bash
35+
npm run patternlab -- serve
36+
```
37+
38+
Installing [`edition-node`](https://github.com/pattern-lab/patternlab-node/tree/master/packages/edition-node) will add the following CLI commands for convenience:
39+
40+
```diff
41+
"scripts": {
42+
+ "pl:build": "patternlab build --config ./patternlab-config.json",
43+
+ "pl:help": "patternlab --help",
44+
+ "pl:install": "patternlab install --config ./patternlab-config.json",
45+
+ "pl:serve": "patternlab serve --config ./patternlab-config.json",
46+
+ "pl:version": "patternlab --version"
47+
},
48+
```
49+
50+
Then you can invoke any of these like this:
51+
52+
```
53+
npm run pl:serve
54+
```
2255

2356
## API & Usage
2457
### General usage

packages/core/docs/README.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ Builds patterns, copies assets, and constructs user interface
6363
**Emits**: <code>event:PATTERNLAB_BUILD_START</code>, <code>event:PATTERNLAB_BUILD_END</code>
6464
**See**: [all events](./events.md)
6565

66-
| Param | Type | Description |
67-
| --- | --- | --- |
68-
| options | <code>object</code> | an object used to control build behavior |
69-
| options.cleanPublic | <code>bool</code> | whether or not to delete the configured output location (usually `public/`) before build |
70-
| options.data | <code>object</code> | additional data to be merged with global data prior to build |
71-
| options.watch | <code>bool</code> | whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild |
66+
| Param | Type | Default | Description |
67+
| --- | --- | --- | --- |
68+
| options | <code>object</code> | | an object used to control build behavior |
69+
| [options.cleanPublic] | <code>bool</code> | <code>true</code> | whether or not to delete the configured output location (usually `public/`) before build |
70+
| [options.data] | <code>object</code> | <code>{}</code> | additional data to be merged with global data prior to build |
71+
| [options.watch] | <code>bool</code> | <code>true</code> | whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild |
7272

7373
<a name="patternlab+getDefaultConfig"></a>
7474

@@ -122,11 +122,11 @@ Builds patterns only, leaving existing user interface files intact
122122
**Kind**: instance property of [<code>patternlab</code>](#patternlab)
123123
**Returns**: <code>Promise</code> - a promise fulfilled when build is complete
124124

125-
| Param | Type | Description |
126-
| --- | --- | --- |
127-
| options | <code>object</code> | an object used to control build behavior |
128-
| options.cleanPublic | <code>bool</code> | whether or not to delete the configured output location (usually `public/`) before build |
129-
| options.data | <code>object</code> | additional data to be merged with global data prior to build |
125+
| Param | Type | Default | Description |
126+
| --- | --- | --- | --- |
127+
| [options.cleanPublic] | <code>bool</code> | <code>true</code> | whether or not to delete the configured output location (usually `public/`) before build |
128+
| [options.data] | <code>object</code> | <code>{}</code> | additional data to be merged with global data prior to build |
129+
| [options.watch] | <code>bool</code> | <code>true</code> | whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild |
130130

131131
<a name="patternlab.getDefaultConfig"></a>
132132

@@ -162,12 +162,12 @@ Build patterns, copies assets, and constructs user interface. Watches configured
162162
**Kind**: static method of [<code>server</code>](#patternlab.server)
163163
**Returns**: <code>Promise</code> - a promise fulfilled when build is complete
164164

165-
| Param | Type | Description |
166-
| --- | --- | --- |
167-
| options | <code>object</code> | an object used to control build behavior |
168-
| options.cleanPublic | <code>bool</code> | whether or not to delete the configured output location (usually `public/`) before build |
169-
| options.data | <code>object</code> | additional data to be merged with global data prior to build |
170-
| options.watch | <code>bool</code> | **ALWAYS OVERRIDDEN to `true`** whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild |
165+
| Param | Type | Default | Description |
166+
| --- | --- | --- | --- |
167+
| options | <code>object</code> | | an object used to control build behavior |
168+
| [options.cleanPublic] | <code>bool</code> | <code>true</code> | whether or not to delete the configured output location (usually `public/`) before build |
169+
| [options.data] | <code>object</code> | <code>{}</code> | additional data to be merged with global data prior to build |
170+
| [options.watch] | <code>bool</code> | <code>true</code> | whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild |
171171

172172
<a name="patternlab.server.reload"></a>
173173

packages/core/docs/events.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
Pattern Lab emits numerous events during the [build](../docs/) process. Some uses of events:
66

77
* Core uses `patternlab-pattern-change` events when watching for changes in order to trigger another build
8-
* Plugins such as [plugin-node-tab](https://github.com/pattern-lab/plugin-node-tab) can use an event like `patternlab-pattern-write-end` to define additional code tabs to the pattern viewer / modal
8+
* Plugins such as [plugin-tab](https://github.com/pattern-lab/patternlab-node/tree/master/packages/plugin-tab) can use an event like `patternlab-pattern-write-end` to define additional code tabs to the pattern viewer / modal
99

1010
Learn more about [Creating Plugins](https://github.com/pattern-lab/patternlab-node/wiki/Creating-Plugins).
1111

packages/core/src/index.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ const patternlab_module = function(config) {
8484
* @name build
8585
* @instance
8686
* @param {object} options an object used to control build behavior
87-
* @param {bool} options.cleanPublic whether or not to delete the configured output location (usually `public/`) before build
88-
* @param {object} options.data additional data to be merged with global data prior to build
89-
* @param {bool} options.watch whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild
87+
* @param {bool} [options.cleanPublic=true] whether or not to delete the configured output location (usually `public/`) before build
88+
* @param {object} [options.data={}] additional data to be merged with global data prior to build
89+
* @param {bool} [options.watch=true] whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild
9090
* @emits PATTERNLAB_BUILD_START
9191
* @emits PATTERNLAB_BUILD_END
9292
* @see {@link ./events.md|all events}
@@ -231,9 +231,9 @@ const patternlab_module = function(config) {
231231
* @memberof patternlab
232232
* @name patternsonly
233233
* @instance
234-
* @param {object} options an object used to control build behavior
235-
* @param {bool} options.cleanPublic whether or not to delete the configured output location (usually `public/`) before build
236-
* @param {object} options.data additional data to be merged with global data prior to build
234+
* @param {bool} [options.cleanPublic=true] whether or not to delete the configured output location (usually `public/`) before build
235+
* @param {object} [options.data={}] additional data to be merged with global data prior to build
236+
* @param {bool} [options.watch=true] whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild
237237
* @returns {Promise} a promise fulfilled when build is complete
238238
*/
239239
patternsonly: function(options) {
@@ -264,15 +264,14 @@ const patternlab_module = function(config) {
264264
* @method serve
265265
* @memberof patternlab.server
266266
* @param {object} options an object used to control build behavior
267-
* @param {bool} options.cleanPublic whether or not to delete the configured output location (usually `public/`) before build
268-
* @param {object} options.data additional data to be merged with global data prior to build
269-
* @param {bool} options.watch **ALWAYS OVERRIDDEN to `true`** whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild
267+
* @param {bool} [options.cleanPublic=true] whether or not to delete the configured output location (usually `public/`) before build
268+
* @param {object} [options.data={}] additional data to be merged with global data prior to build
269+
* @param {bool} [options.watch=true] whether or not Pattern Lab should watch configured `source/` directories for changes to rebuild
270270
* @returns {Promise} a promise fulfilled when build is complete
271271
*/
272272
serve: options => {
273-
const _options = Object.assign({}, options, { watch: true });
274273
return _api
275-
.build(_options)
274+
.build(options)
276275
.then(() => server.serve())
277276
.catch(e =>
278277
logger.error(`error inside core index.js server serve: ${e}`)

0 commit comments

Comments
 (0)