mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-06-28 14:20:12 +00:00
Add types for postcss-import (#43085)
* Add types for postcss-import * Use require instead of import statements * Fix return type fo resolve and load `resolve` may return an array of paths as well, and both functions may return a promise.
This commit is contained in:
81
types/postcss-import/index.d.ts
vendored
Normal file
81
types/postcss-import/index.d.ts
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
// Type definitions for postcss-import 12.0
|
||||
// Project: https://github.com/postcss/postcss-import#readme
|
||||
// Definitions by: Remco Haszing <https://github.com/remcohaszing>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
import { AcceptedPlugin, Transformer } from 'postcss';
|
||||
|
||||
export = atImport;
|
||||
|
||||
/**
|
||||
* This plugin can consume local files, node modules or web_modules. To resolve path of an `@import` rule, it can look into root directory (by default `process.cwd()`), `web_modules`, `node_modules`
|
||||
* or local modules. _When importing a module, it will look for `index.css` or file referenced in `package.json` in the `style` or `main` fields._ You can also provide manually multiples paths where
|
||||
* to look at.
|
||||
*
|
||||
* **Notes:**
|
||||
*
|
||||
* - **This plugin should probably be used as the first plugin of your list. This way, other plugins will work on the AST as if there were only a single file to process, and will probably work as you
|
||||
* can expect**.
|
||||
* - This plugin works great with [postcss-url](https://github.com/postcss/postcss-url) plugin, which will allow you to adjust assets `url()` (or even inline them) after inlining imported files.
|
||||
* - In order to optimize output, **this plugin will only import a file once** on a given scope (root, media query…). Tests are made from the path & the content of imported files (using a hash table).
|
||||
* If this behavior is not what you want, look at `skipDuplicates` option
|
||||
* - **If you are looking for glob, or sass like imports (prefixed partials)**, please look at [postcss-easy-import](https://github.com/trysound/postcss-easy-import) (which use this plugin under the
|
||||
* hood).
|
||||
* - Imports which are not modified (by `options.filter` or because they are remote imports) are moved to the top of the output.
|
||||
* - **This plugin attempts to follow the CSS `@import` spec**; `@import` statements must precede all other statements (besides `@charset`).
|
||||
*/
|
||||
declare function atImport(options?: atImport.AtImportOptions): Transformer;
|
||||
|
||||
declare namespace atImport {
|
||||
interface AtImportOptions {
|
||||
/**
|
||||
* Define the root where to resolve path (eg: place where `node_modules` are). Should not be used that much.
|
||||
*
|
||||
* _Note: nested @import will additionally benefit of the relative dirname of imported files._
|
||||
*
|
||||
* Default: `process.cwd()` or dirname of [the postcss from](https://github.com/postcss/postcss#node-source)
|
||||
*/
|
||||
root?: string;
|
||||
|
||||
/**
|
||||
* A string or an array of paths in where to look for files.
|
||||
*/
|
||||
path?: string | string[];
|
||||
|
||||
/**
|
||||
* An array of plugins to be applied on each imported files.
|
||||
*/
|
||||
plugins?: AcceptedPlugin[];
|
||||
|
||||
/**
|
||||
* You can provide a custom path resolver with this option. This function gets `(id, basedir, importOptions)` arguments and should return a path, an array of paths or a promise resolving to
|
||||
* the path(s). If you do not return an absolute path, your path will be resolved to an absolute path using the default resolver. You can use
|
||||
* [resolve](https://github.com/substack/node-resolve) for this.
|
||||
*/
|
||||
resolve?: (
|
||||
id: string,
|
||||
basedir: string,
|
||||
importOptions: AtImportOptions,
|
||||
) => string | string[] | PromiseLike<string | string[]>;
|
||||
|
||||
/**
|
||||
* You can overwrite the default loading way by setting this option. This function gets `(filename, importOptions)` arguments and returns content or promised content.
|
||||
*/
|
||||
load?: (filename: string, importOptions: AtImportOptions) => string | Promise<string>;
|
||||
|
||||
/**
|
||||
* By default, similar files (based on the same content) are being skipped. It's to optimize output and skip similar files like `normalize.css` for example. If this behavior is not what you
|
||||
* want, just set this option to false to disable it.
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
skipDuplicates?: boolean;
|
||||
|
||||
/**
|
||||
* An array of folder names to add to Node's resolver. Values will be appended to the default resolve directories: `["node_modules", "web_modules"]`.
|
||||
*
|
||||
* This option is only for adding additional directories to default resolver. If you provide your own resolver via the `resolve` configuration option above, then this value will be ignored.
|
||||
*/
|
||||
addModulesDirectories?: string[];
|
||||
}
|
||||
}
|
||||
6
types/postcss-import/package.json
Normal file
6
types/postcss-import/package.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"postcss": "^7.0.27"
|
||||
}
|
||||
}
|
||||
23
types/postcss-import/postcss-import-tests.ts
Normal file
23
types/postcss-import/postcss-import-tests.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import postcss = require('postcss');
|
||||
import atImport = require('postcss-import');
|
||||
|
||||
postcss().use(atImport());
|
||||
postcss().use(atImport({ root: '' }));
|
||||
postcss().use(atImport({ path: '' }));
|
||||
postcss().use(atImport({ path: [''] }));
|
||||
postcss().use(atImport({ plugins: [atImport()] }));
|
||||
postcss().use(atImport({ resolve: (id, basedir, importOptions) => id + basedir + importOptions.root }));
|
||||
postcss().use(atImport({ load: (filename, importOptions) => filename + importOptions.root }));
|
||||
postcss().use(atImport({ skipDuplicates: false }));
|
||||
postcss().use(atImport({ addModulesDirectories: [''] }));
|
||||
postcss().use(
|
||||
atImport({
|
||||
root: '',
|
||||
path: '',
|
||||
plugins: [atImport()],
|
||||
resolve: (id, basedir, importOptions) => id + basedir + importOptions.root,
|
||||
load: (filename, importOptions) => filename + importOptions.root,
|
||||
skipDuplicates: false,
|
||||
addModulesDirectories: [''],
|
||||
}),
|
||||
);
|
||||
23
types/postcss-import/tsconfig.json
Normal file
23
types/postcss-import/tsconfig.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictFunctionTypes": true,
|
||||
"strictNullChecks": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"postcss-import-tests.ts"
|
||||
]
|
||||
}
|
||||
1
types/postcss-import/tslint.json
Normal file
1
types/postcss-import/tslint.json
Normal file
@@ -0,0 +1 @@
|
||||
{ "extends": "dtslint/dt.json" }
|
||||
Reference in New Issue
Block a user