mirror of
https://github.com/ezolenko/rollup-plugin-typescript2.git
synced 2025-12-08 19:06:16 +00:00
- basically, general format is:
```ts
import x from "external-dep"
import y from "./internal-dep"
```
- so external deps, new line, then internal/local deps
- with some further sorting within there, like trying to keep Node
built-ins (e.g. `path`) at the top half of externals, then core deps
like `typescript`, then any other external deps
- and similar for internal deps -- core internals at the top half of
internals, then any other internal deps
- just to keep things consistent between files -- makes the top
easier to read through when it's similar between files
- also makes it easier for contributors to understand where to put
imports, as there's a sorting already there
- this is how I generally sort my imports and how I wrote most of the
unit test suite's imports as well
- there is automation for this that we should probably add once TSLint
is replaced here; some previous art:
- https://github.com/trivago/prettier-plugin-sort-imports
- https://github.com/lydell/eslint-plugin-simple-import-sort/
- Older:
- https://github.com/renke/import-sort/tree/master/packages/import-sort-style-module
- https://github.com/mcdougal/js-isort
- inspired by Python's `isort` ofc
66 lines
1.5 KiB
TypeScript
66 lines
1.5 KiB
TypeScript
import * as _ from "lodash";
|
|
import { PluginContext } from "rollup";
|
|
|
|
import { IContext, VerbosityLevel } from "./context";
|
|
|
|
export class RollupContext implements IContext
|
|
{
|
|
private hasContext: boolean = true;
|
|
|
|
constructor(private verbosity: VerbosityLevel, private bail: boolean, private context: PluginContext, private prefix: string = "")
|
|
{
|
|
this.hasContext = _.isFunction(this.context.warn) && _.isFunction(this.context.error);
|
|
}
|
|
|
|
public warn(message: string | (() => string)): void
|
|
{
|
|
if (this.verbosity < VerbosityLevel.Warning)
|
|
return;
|
|
|
|
const text = _.isFunction(message) ? message() : message;
|
|
|
|
if (this.hasContext)
|
|
this.context.warn(`${text}`);
|
|
else
|
|
console.log(`${this.prefix}${text}`);
|
|
}
|
|
|
|
public error(message: string | (() => string)): void
|
|
{
|
|
if (this.verbosity < VerbosityLevel.Error)
|
|
return;
|
|
|
|
const text = _.isFunction(message) ? message() : message;
|
|
|
|
if (this.hasContext)
|
|
{
|
|
if (this.bail)
|
|
this.context.error(`${text}`);
|
|
else
|
|
this.context.warn(`${text}`);
|
|
}
|
|
else
|
|
console.log(`${this.prefix}${text}`);
|
|
}
|
|
|
|
public info(message: string | (() => string)): void
|
|
{
|
|
if (this.verbosity < VerbosityLevel.Info)
|
|
return;
|
|
|
|
const text = _.isFunction(message) ? message() : message;
|
|
|
|
console.log(`${this.prefix}${text}`);
|
|
}
|
|
|
|
public debug(message: string | (() => string)): void
|
|
{
|
|
if (this.verbosity < VerbosityLevel.Debug)
|
|
return;
|
|
|
|
const text = _.isFunction(message) ? message() : message;
|
|
|
|
console.log(`${this.prefix}${text}`);
|
|
}
|
|
}
|