Bundle command
Summary:
Command which transpiles and bundles plugin code.
It is supposed to be used in "prepack" script for all open-sourced plugin packages to bundle them before publishing like this:
```
{
"devDependencies": {
"flipper-pkg": "latest"
},
"scripts": {
"prepack": "flipper-pkg bundle"
}
}
```
Also made directory parameter of other command "pack" optional so it also can be called from plugin directory simply by `flipper-pkg pack`.
Changelog: "flipper-pkg bundle" command for bundling plugins before publishing.
Reviewed By: mweststrate
Differential Revision: D21129691
fbshipit-source-id: 8f97bc950c28cf9ad8b0117c0e1d811ed1b988eb
This commit is contained in:
committed by
Facebook GitHub Bot
parent
105345facd
commit
1491e111c9
@@ -24,8 +24,26 @@ USAGE
|
||||
<!-- usagestop -->
|
||||
# Commands
|
||||
<!-- commands -->
|
||||
* [`flipper-pkg bundle [DIRECTORY]`](#flipper-pkg-bundle-directory)
|
||||
* [`flipper-pkg help [COMMAND]`](#flipper-pkg-help-command)
|
||||
* [`flipper-pkg pack DIRECTORY`](#flipper-pkg-pack-directory)
|
||||
* [`flipper-pkg pack [DIRECTORY]`](#flipper-pkg-pack-directory)
|
||||
|
||||
## `flipper-pkg bundle [DIRECTORY]`
|
||||
|
||||
transpiles and bundles plugin
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ flipper-pkg bundle [DIRECTORY]
|
||||
|
||||
ARGUMENTS
|
||||
DIRECTORY [default: .] Path to plugin package directory for bundling. Defaults to the current working directory.
|
||||
|
||||
EXAMPLE
|
||||
$ flipper-pkg bundle optional/path/to/directory
|
||||
```
|
||||
|
||||
_See code: [src/commands/bundle.ts](https://github.com/facebook/flipper/blob/v0.37.0/src/commands/bundle.ts)_
|
||||
|
||||
## `flipper-pkg help [COMMAND]`
|
||||
|
||||
@@ -44,16 +62,20 @@ OPTIONS
|
||||
|
||||
_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v2.2.3/src/commands/help.ts)_
|
||||
|
||||
## `flipper-pkg pack DIRECTORY`
|
||||
## `flipper-pkg pack [DIRECTORY]`
|
||||
|
||||
packs a plugin folder into a distributable archive
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ flipper-pkg pack DIRECTORY
|
||||
$ flipper-pkg pack [DIRECTORY]
|
||||
|
||||
ARGUMENTS
|
||||
DIRECTORY [default: .] Path to plugin package directory to pack. Defaults to the current working directory.
|
||||
|
||||
OPTIONS
|
||||
-o, --output=output [default: .] Where to output the package, file or directory. Defaults to '.'.
|
||||
-o, --output=output [default: .] Where to output the package, file or directory. Defaults to the current working
|
||||
directory.
|
||||
|
||||
EXAMPLE
|
||||
$ flipper-pkg pack path/to/plugin
|
||||
|
||||
49
desktop/pkg/src/commands/bundle.ts
Normal file
49
desktop/pkg/src/commands/bundle.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {Command} from '@oclif/command';
|
||||
import {args} from '@oclif/parser';
|
||||
import fs from 'fs-extra';
|
||||
import path from 'path';
|
||||
import {runBuild, getPluginDetails} from 'flipper-pkg-lib';
|
||||
|
||||
export default class Bundle extends Command {
|
||||
public static description = 'transpiles and bundles plugin';
|
||||
|
||||
public static examples = [`$ flipper-pkg bundle optional/path/to/directory`];
|
||||
|
||||
public static args: args.IArg[] = [
|
||||
{
|
||||
name: 'directory',
|
||||
required: false,
|
||||
default: '.',
|
||||
description:
|
||||
'Path to plugin package directory for bundling. Defaults to the current working directory.',
|
||||
},
|
||||
];
|
||||
|
||||
public async run() {
|
||||
const {args} = this.parse(Bundle);
|
||||
const inputDirectory: string = path.resolve(process.cwd(), args.directory);
|
||||
const stat = await fs.lstat(inputDirectory);
|
||||
if (!stat.isDirectory()) {
|
||||
this.error(`Plugin source ${inputDirectory} is not a directory.`);
|
||||
}
|
||||
const packageJsonPath = path.join(inputDirectory, 'package.json');
|
||||
if (!(await fs.pathExists(packageJsonPath))) {
|
||||
this.error(
|
||||
`package.json is not found in plugin source directory ${inputDirectory}.`,
|
||||
);
|
||||
}
|
||||
const plugin = await getPluginDetails(inputDirectory);
|
||||
const out = path.resolve(inputDirectory, plugin.main);
|
||||
await fs.ensureDir(path.dirname(out));
|
||||
await runBuild(inputDirectory, plugin.source, out);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
|
||||
import {Command, flags} from '@oclif/command';
|
||||
import {args} from '@oclif/parser';
|
||||
import {promises as fs} from 'fs';
|
||||
import {mkdirp, pathExists, readJSON, ensureDir} from 'fs-extra';
|
||||
import * as inquirer from 'inquirer';
|
||||
@@ -32,11 +33,19 @@ export default class Pack extends Command {
|
||||
char: 'o',
|
||||
default: '.',
|
||||
description:
|
||||
"Where to output the package, file or directory. Defaults to '.'.",
|
||||
'Where to output the package, file or directory. Defaults to the current working directory.',
|
||||
}),
|
||||
};
|
||||
|
||||
public static args = [{name: 'directory', required: true}];
|
||||
public static args: args.IArg[] = [
|
||||
{
|
||||
name: 'directory',
|
||||
required: false,
|
||||
default: '.',
|
||||
description:
|
||||
'Path to plugin package directory to pack. Defaults to the current working directory.',
|
||||
},
|
||||
];
|
||||
|
||||
public async run() {
|
||||
const {args, flags: parsedFlags} = this.parse(Pack);
|
||||
|
||||
Reference in New Issue
Block a user