* Revert "Revert "Respect EditorConfig settings" (#3213)" This reverts commitmasterd2241fc0d5
. * Comment out EditorConfig docs See https://github.com/prettier/prettier/pull/3213#issuecomment-343009769 * editorconfig: Support `indent_size = 0` See https://github.com/prettier/prettier/pull/2760#discussion_r137447715 andc38b84c42a
* Revert "Comment out EditorConfig docs" This reverts commit ddfa529c55cac4853a1e76e00c8b5e3ef158c01f. * Mark EditorConfig functionality as v1.9.0+ See https://github.com/prettier/prettier/pull/3255#discussion_r150432508 * editorconfig: Upgrade editorconfig-to-prettier to 0.0.4 * editorconfig: Only enable for CLI, by default https://github.com/prettier/prettier/pull/3255#issuecomment-348420546 * editorconfig: Add tests confirming that editorconfig is ignored by default in the API https://github.com/prettier/prettier/pull/3255#issuecomment-348420546 * editorconfig: Add/fix CLI option parsing * editorconfig: Move docs from configuration.md to options.md * editorconfig: Add `oppositeDescription` to show docs for `--no-editorconfig` Addresses https://github.com/prettier/prettier/pull/3255#discussion_r154542792 * editorconfig: Update test snapshots * editorconfig: Remove unnecessary options parsing code Addresses https://github.com/prettier/prettier/pull/3255#discussion_r154544560 * editorconfig: Move docs from options.md to api.md and cli.md Addresses https://github.com/prettier/prettier/pull/3255#discussion_r154545979 * resolveConfig: return null if both .prettierrc and .editorconfig are missing Addresses https://github.com/prettier/prettier/pull/3255#discussion_r154574613 * Don't add now-failing tests The way these tests work, both `tests_integration/cli/config/.prettierrc` and `.prettierrc` apply to `tests_integration/cli/config/editorconfig/file.shouldnotexist`, so the test wouldn't work even on master. Here's a way to confirm that: ```js const path = require('path') const assert = require('assert') const prettier = require('./') const file = './tests_integration/cli/config/editorconfig/file.shouldnotexist' console.log(prettier.resolveConfig.sync(file)) assert(prettier.resolveConfig.sync(file) === null) ```
parent
1122701053
commit
cecf0657a5
|
@ -49,6 +49,12 @@ prettier.resolveConfig(filePath).then(options => {
|
|||
});
|
||||
```
|
||||
|
||||
If `options.editorconfig` is `true` and an [`.editorconfig` file](http://editorconfig.org/) is in your project, Prettier will parse it and convert its properties to the corresponding prettier configuration. This configuration will be overridden by `.prettierrc`, etc. Currently, the following EditorConfig properties are supported:
|
||||
|
||||
* `indent_style`
|
||||
* `indent_size`/`tab_width`
|
||||
* `max_line_length`
|
||||
|
||||
Use `prettier.resolveConfig.sync(filePath [, options])` if you'd like to use sync version.
|
||||
|
||||
## `prettier.clearConfigCache()`
|
||||
|
|
|
@ -94,6 +94,10 @@ If a config file is found will evaluate it and ignore other CLI options. If no c
|
|||
|
||||
This option adds support to editor integrations where users define their default configuration but want to respect project specific configuration.
|
||||
|
||||
## `--no-editorconfig`
|
||||
|
||||
Don't take .editorconfig into account when parsing configuration. See the [`prettier.resolveConfig` docs](./api.md) for details.
|
||||
|
||||
## `--with-node-modules`
|
||||
|
||||
Prettier CLI will ignore files located in `node_modules` directory. To opt-out from this behavior use `--with-node-modules` flag.
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
"cosmiconfig": "3.1.0",
|
||||
"dashify": "0.2.2",
|
||||
"diff": "3.2.0",
|
||||
"editorconfig": "0.14.2",
|
||||
"editorconfig-to-prettier": "0.0.4",
|
||||
"emoji-regex": "6.5.1",
|
||||
"escape-string-regexp": "1.0.5",
|
||||
"esutils": "2.0.2",
|
||||
|
@ -37,6 +39,7 @@
|
|||
"minimatch": "3.0.4",
|
||||
"minimist": "1.2.0",
|
||||
"parse5": "3.0.3",
|
||||
"path-root": "0.1.1",
|
||||
"postcss-less": "1.1.3",
|
||||
"postcss-media-query-parser": "0.2.3",
|
||||
"postcss-scss": "1.0.2",
|
||||
|
|
|
@ -158,6 +158,14 @@ const detailedOptions = normalizeDetailedOptions({
|
|||
"debug-print-doc": {
|
||||
type: "boolean"
|
||||
},
|
||||
editorconfig: {
|
||||
type: "boolean",
|
||||
category: CATEGORY_CONFIG,
|
||||
description: "Take .editorconfig into account when parsing configuration.",
|
||||
oppositeDescription:
|
||||
"Don't take .editorconfig into account when parsing configuration.",
|
||||
default: true
|
||||
},
|
||||
"find-config-path": {
|
||||
type: "path",
|
||||
category: CATEGORY_CONFIG,
|
||||
|
|
|
@ -159,6 +159,7 @@ function getOptionsOrDie(argv, filePath) {
|
|||
: `resolve config from '${filePath}'`
|
||||
);
|
||||
const options = resolver.resolveConfig.sync(filePath, {
|
||||
editorconfig: argv.editorconfig,
|
||||
config: argv["config"]
|
||||
});
|
||||
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
"use strict";
|
||||
|
||||
const editorconfig = require("editorconfig");
|
||||
const mem = require("mem");
|
||||
const pathRoot = require("path-root");
|
||||
const editorConfigToPrettier = require("editorconfig-to-prettier");
|
||||
|
||||
const maybeParse = (filePath, config, parse) => {
|
||||
const root = filePath && pathRoot(filePath);
|
||||
return filePath && !config && parse(filePath, { root });
|
||||
};
|
||||
|
||||
const editorconfigAsyncNoCache = (filePath, config) => {
|
||||
return Promise.resolve(maybeParse(filePath, config, editorconfig.parse)).then(
|
||||
editorConfigToPrettier
|
||||
);
|
||||
};
|
||||
const editorconfigAsyncWithCache = mem(editorconfigAsyncNoCache);
|
||||
|
||||
const editorconfigSyncNoCache = (filePath, config) => {
|
||||
return editorConfigToPrettier(
|
||||
maybeParse(filePath, config, editorconfig.parseSync)
|
||||
);
|
||||
};
|
||||
const editorconfigSyncWithCache = mem(editorconfigSyncNoCache);
|
||||
|
||||
function getLoadFunction(opts) {
|
||||
if (!opts.editorconfig) {
|
||||
return () => null;
|
||||
}
|
||||
|
||||
if (opts.sync) {
|
||||
return opts.cache ? editorconfigSyncWithCache : editorconfigSyncNoCache;
|
||||
}
|
||||
|
||||
return opts.cache ? editorconfigAsyncWithCache : editorconfigAsyncNoCache;
|
||||
}
|
||||
|
||||
function clearCache() {
|
||||
mem.clear(editorconfigSyncWithCache);
|
||||
mem.clear(editorconfigAsyncWithCache);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getLoadFunction,
|
||||
clearCache
|
||||
};
|
|
@ -5,6 +5,8 @@ const minimatch = require("minimatch");
|
|||
const path = require("path");
|
||||
const mem = require("mem");
|
||||
|
||||
const resolveEditorConfig = require("./resolve-config-editorconfig");
|
||||
|
||||
const getExplorerMemoized = mem(opts =>
|
||||
thirdParty.cosmiconfig("prettier", {
|
||||
sync: opts.sync,
|
||||
|
@ -26,23 +28,47 @@ function getLoadFunction(opts) {
|
|||
return getExplorerMemoized(opts).load;
|
||||
}
|
||||
|
||||
function resolveConfig(filePath, opts) {
|
||||
function _resolveConfig(filePath, opts, sync) {
|
||||
opts = Object.assign({ useCache: true }, opts);
|
||||
const load = getLoadFunction({ cache: !!opts.useCache, sync: false });
|
||||
return load(filePath, opts.config).then(result => {
|
||||
return !result ? null : mergeOverrides(result, filePath);
|
||||
});
|
||||
const loadOpts = {
|
||||
cache: !!opts.useCache,
|
||||
sync: !!sync,
|
||||
editorconfig: !!opts.editorconfig
|
||||
};
|
||||
const load = getLoadFunction(loadOpts);
|
||||
const loadEditorConfig = resolveEditorConfig.getLoadFunction(loadOpts);
|
||||
const arr = [load, loadEditorConfig].map(l => l(filePath, opts.config));
|
||||
|
||||
const unwrapAndMerge = arr => {
|
||||
const result = arr[0];
|
||||
const editorConfigured = arr[1];
|
||||
const merged = Object.assign(
|
||||
{},
|
||||
editorConfigured,
|
||||
mergeOverrides(Object.assign({}, result), filePath)
|
||||
);
|
||||
|
||||
if (!result && !editorConfigured) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return merged;
|
||||
};
|
||||
|
||||
if (loadOpts.sync) {
|
||||
return unwrapAndMerge(arr);
|
||||
}
|
||||
|
||||
return Promise.all(arr).then(unwrapAndMerge);
|
||||
}
|
||||
|
||||
resolveConfig.sync = (filePath, opts) => {
|
||||
opts = Object.assign({ useCache: true }, opts);
|
||||
const load = getLoadFunction({ cache: !!opts.useCache, sync: true });
|
||||
const result = load(filePath, opts.config);
|
||||
return !result ? null : mergeOverrides(result, filePath);
|
||||
};
|
||||
const resolveConfig = (filePath, opts) => _resolveConfig(filePath, opts, false);
|
||||
|
||||
resolveConfig.sync = (filePath, opts) => _resolveConfig(filePath, opts, true);
|
||||
|
||||
function clearCache() {
|
||||
mem.clear(getExplorerMemoized);
|
||||
resolveEditorConfig.clearCache();
|
||||
}
|
||||
|
||||
function resolveConfigFile(filePath) {
|
||||
|
|
|
@ -3,7 +3,22 @@
|
|||
exports[`CLI overrides take precedence (stderr) 1`] = `""`;
|
||||
|
||||
exports[`CLI overrides take precedence (stdout) 1`] = `
|
||||
"console.log(
|
||||
"function f() {
|
||||
console.log(
|
||||
\\"should have tab width 8\\"
|
||||
)
|
||||
}
|
||||
function f() {
|
||||
console.log(
|
||||
\\"should have space width 2\\"
|
||||
)
|
||||
}
|
||||
function f() {
|
||||
console.log(
|
||||
\\"should have space width 8\\"
|
||||
)
|
||||
}
|
||||
console.log(
|
||||
\\"jest/__best-tests__/file.js should have semi\\"
|
||||
);
|
||||
console.log(
|
||||
|
@ -84,7 +99,16 @@ exports[`resolves configuration file with --find-config-path file (write) 1`] =
|
|||
exports[`resolves configuration from external files (stderr) 1`] = `""`;
|
||||
|
||||
exports[`resolves configuration from external files (stdout) 1`] = `
|
||||
"console.log(\\"jest/__best-tests__/file.js should have semi\\");
|
||||
"function f() {
|
||||
console.log(\\"should have tab width 8\\")
|
||||
}
|
||||
function f() {
|
||||
console.log(\\"should have space width 2\\")
|
||||
}
|
||||
function f() {
|
||||
console.log(\\"should have space width 8\\")
|
||||
}
|
||||
console.log(\\"jest/__best-tests__/file.js should have semi\\");
|
||||
console.log(\\"jest/Component.js should not have semi\\")
|
||||
console.log(\\"jest/Component.test.js should have semi\\");
|
||||
function js() {
|
||||
|
|
|
@ -89,6 +89,19 @@ Default: -1
|
|||
|
||||
exports[`show detailed usage with --help cursor-offset (write) 1`] = `Array []`;
|
||||
|
||||
exports[`show detailed usage with --help editorconfig (stderr) 1`] = `""`;
|
||||
|
||||
exports[`show detailed usage with --help editorconfig (stdout) 1`] = `
|
||||
"--editorconfig
|
||||
|
||||
Take .editorconfig into account when parsing configuration.
|
||||
|
||||
Default: true
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`show detailed usage with --help editorconfig (write) 1`] = `Array []`;
|
||||
|
||||
exports[`show detailed usage with --help find-config-path (stderr) 1`] = `""`;
|
||||
|
||||
exports[`show detailed usage with --help find-config-path (stdout) 1`] = `
|
||||
|
@ -226,6 +239,17 @@ exports[`show detailed usage with --help no-config (stdout) 1`] = `
|
|||
|
||||
exports[`show detailed usage with --help no-config (write) 1`] = `Array []`;
|
||||
|
||||
exports[`show detailed usage with --help no-editorconfig (stderr) 1`] = `""`;
|
||||
|
||||
exports[`show detailed usage with --help no-editorconfig (stdout) 1`] = `
|
||||
"--no-editorconfig
|
||||
|
||||
Don't take .editorconfig into account when parsing configuration.
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`show detailed usage with --help no-editorconfig (write) 1`] = `Array []`;
|
||||
|
||||
exports[`show detailed usage with --help no-semi (stderr) 1`] = `""`;
|
||||
|
||||
exports[`show detailed usage with --help no-semi (stdout) 1`] = `
|
||||
|
@ -522,6 +546,7 @@ Config options:
|
|||
--config-precedence <cli-override|file-override|prefer-file>
|
||||
Define in which order config files and CLI options should be evaluated.
|
||||
Defaults to cli-override.
|
||||
--no-editorconfig Don't take .editorconfig into account when parsing configuration.
|
||||
--find-config-path <path>
|
||||
Find and print the path to a configuration file for the given input file.
|
||||
--ignore-path <path> Path to a file with patterns describing files to ignore.
|
||||
|
@ -660,6 +685,7 @@ Config options:
|
|||
--config-precedence <cli-override|file-override|prefer-file>
|
||||
Define in which order config files and CLI options should be evaluated.
|
||||
Defaults to cli-override.
|
||||
--no-editorconfig Don't take .editorconfig into account when parsing configuration.
|
||||
--find-config-path <path>
|
||||
Find and print the path to a configuration file for the given input file.
|
||||
--ignore-path <path> Path to a file with patterns describing files to ignore.
|
||||
|
|
|
@ -80,7 +80,22 @@ exports[`CLI overrides take lower precedence with --config-precedence file-overr
|
|||
exports[`CLI overrides take precedence with --config-precedence cli-override (stderr) 1`] = `""`;
|
||||
|
||||
exports[`CLI overrides take precedence with --config-precedence cli-override (stdout) 1`] = `
|
||||
"console.log(
|
||||
"function f() {
|
||||
console.log(
|
||||
\\"should have tab width 8\\"
|
||||
)
|
||||
}
|
||||
function f() {
|
||||
console.log(
|
||||
\\"should have space width 2\\"
|
||||
)
|
||||
}
|
||||
function f() {
|
||||
console.log(
|
||||
\\"should have space width 8\\"
|
||||
)
|
||||
}
|
||||
console.log(
|
||||
\\"jest/__best-tests__/file.js should have semi\\"
|
||||
);
|
||||
console.log(
|
||||
|
@ -137,7 +152,22 @@ exports[`CLI overrides take precedence with --config-precedence cli-override (wr
|
|||
exports[`CLI overrides take precedence without --config-precedence (stderr) 1`] = `""`;
|
||||
|
||||
exports[`CLI overrides take precedence without --config-precedence (stdout) 1`] = `
|
||||
"console.log(
|
||||
"function f() {
|
||||
console.log(
|
||||
\\"should have tab width 8\\"
|
||||
)
|
||||
}
|
||||
function f() {
|
||||
console.log(
|
||||
\\"should have space width 2\\"
|
||||
)
|
||||
}
|
||||
function f() {
|
||||
console.log(
|
||||
\\"should have space width 8\\"
|
||||
)
|
||||
}
|
||||
console.log(
|
||||
\\"jest/__best-tests__/file.js should have semi\\"
|
||||
);
|
||||
console.log(
|
||||
|
|
|
@ -102,6 +102,103 @@ test("API resolveConfig.sync with file arg and extension override", () => {
|
|||
});
|
||||
});
|
||||
|
||||
test("API resolveConfig with file arg and .editorconfig", () => {
|
||||
const file = path.resolve(
|
||||
path.join(__dirname, "../cli/config/editorconfig/file.js")
|
||||
);
|
||||
return prettier.resolveConfig(file, { editorconfig: true }).then(result => {
|
||||
expect(result).toMatchObject({
|
||||
useTabs: true,
|
||||
tabWidth: 8,
|
||||
printWidth: 100
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test("API resolveConfig.sync with file arg and .editorconfig", () => {
|
||||
const file = path.resolve(
|
||||
path.join(__dirname, "../cli/config/editorconfig/file.js")
|
||||
);
|
||||
|
||||
expect(prettier.resolveConfig.sync(file)).toMatchObject({
|
||||
semi: false
|
||||
});
|
||||
|
||||
expect(
|
||||
prettier.resolveConfig.sync(file, { editorconfig: true })
|
||||
).toMatchObject({
|
||||
useTabs: true,
|
||||
tabWidth: 8,
|
||||
printWidth: 100
|
||||
});
|
||||
});
|
||||
|
||||
test("API resolveConfig with nested file arg and .editorconfig", () => {
|
||||
const file = path.resolve(
|
||||
path.join(__dirname, "../cli/config/editorconfig/lib/file.js")
|
||||
);
|
||||
return prettier.resolveConfig(file, { editorconfig: true }).then(result => {
|
||||
expect(result).toMatchObject({
|
||||
useTabs: false,
|
||||
tabWidth: 2,
|
||||
printWidth: 100
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test("API resolveConfig.sync with nested file arg and .editorconfig", () => {
|
||||
const file = path.resolve(
|
||||
path.join(__dirname, "../cli/config/editorconfig/lib/file.js")
|
||||
);
|
||||
|
||||
expect(prettier.resolveConfig.sync(file)).toMatchObject({
|
||||
semi: false
|
||||
});
|
||||
|
||||
expect(
|
||||
prettier.resolveConfig.sync(file, { editorconfig: true })
|
||||
).toMatchObject({
|
||||
useTabs: false,
|
||||
tabWidth: 2,
|
||||
printWidth: 100
|
||||
});
|
||||
});
|
||||
|
||||
test("API resolveConfig with nested file arg and .editorconfig and indent_size = tab", () => {
|
||||
const file = path.resolve(
|
||||
path.join(__dirname, "../cli/config/editorconfig/lib/indent_size=tab.js")
|
||||
);
|
||||
return prettier.resolveConfig(file, { editorconfig: true }).then(result => {
|
||||
expect(result).toMatchObject({
|
||||
useTabs: false,
|
||||
tabWidth: 8,
|
||||
printWidth: 100
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test("API resolveConfig.sync with nested file arg and .editorconfig and indent_size = tab", () => {
|
||||
const file = path.resolve(
|
||||
path.join(__dirname, "../cli/config/editorconfig/lib/indent_size=tab.js")
|
||||
);
|
||||
|
||||
expect(prettier.resolveConfig.sync(file)).toMatchObject({
|
||||
semi: false
|
||||
});
|
||||
|
||||
expect(
|
||||
prettier.resolveConfig.sync(file, { editorconfig: true })
|
||||
).toMatchObject({
|
||||
useTabs: false,
|
||||
tabWidth: 8,
|
||||
printWidth: 100
|
||||
});
|
||||
});
|
||||
|
||||
test("API clearConfigCache", () => {
|
||||
expect(() => prettier.clearConfigCache()).not.toThrowError();
|
||||
});
|
||||
|
||||
test("API resolveConfig.sync overrides work with absolute paths", () => {
|
||||
// Absolute path
|
||||
const file = path.join(__dirname, "../cli/config/filepath/subfolder/file.js");
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
semi: false
|
||||
|
||||
overrides:
|
||||
- files: "*.js"
|
||||
options:
|
||||
semi: false
|
||||
- files: "*.ts"
|
||||
options:
|
||||
semi: true
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
root = true
|
||||
|
||||
[*.js]
|
||||
indent_style = tab
|
||||
tab_width = 8
|
||||
indent_size = 2 # overridden by tab_width since indent_style = tab
|
||||
max_line_length = 100
|
||||
|
||||
# Indentation override for all JS under lib directory
|
||||
[lib/**.js]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[lib/indent_size=tab.js]
|
||||
indent_size = tab
|
|
@ -0,0 +1,3 @@
|
|||
function f() {
|
||||
console.log("should have tab width 8");
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
function f() {
|
||||
console.log("should have space width 2");
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
function f() {
|
||||
console.log("should have space width 8");
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
# This file should be overridden by prettier.config.js
|
||||
|
||||
[*]
|
||||
tab_width = 1
|
|
@ -0,0 +1,7 @@
|
|||
# This file should be overridden by package.json
|
||||
|
||||
[*]
|
||||
tab_width = 1
|
||||
|
||||
[*.ts]
|
||||
tab_width = 1
|
42
yarn.lock
42
yarn.lock
|
@ -827,6 +827,10 @@ block-stream@*:
|
|||
dependencies:
|
||||
inherits "~2.0.0"
|
||||
|
||||
bluebird@^3.0.5:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
|
||||
|
||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
|
||||
version "4.11.6"
|
||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
|
||||
|
@ -1391,6 +1395,20 @@ ecc-jsbn@~0.1.1:
|
|||
dependencies:
|
||||
jsbn "~0.1.0"
|
||||
|
||||
editorconfig-to-prettier@0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/editorconfig-to-prettier/-/editorconfig-to-prettier-0.0.4.tgz#762f569ea26d890ebbe83f2bae231d28c489a66a"
|
||||
|
||||
editorconfig@0.14.2:
|
||||
version "0.14.2"
|
||||
resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.14.2.tgz#60fe3336878f38d6e19e0b16cf1f41903f57e6f4"
|
||||
dependencies:
|
||||
bluebird "^3.0.5"
|
||||
commander "^2.9.0"
|
||||
lru-cache "^3.2.0"
|
||||
semver "^5.1.0"
|
||||
sigmund "^1.0.1"
|
||||
|
||||
elliptic@^6.0.0:
|
||||
version "6.4.0"
|
||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
|
||||
|
@ -2878,6 +2896,12 @@ loud-rejection@^1.0.0:
|
|||
currently-unhandled "^0.4.1"
|
||||
signal-exit "^3.0.0"
|
||||
|
||||
lru-cache@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee"
|
||||
dependencies:
|
||||
pseudomap "^1.0.1"
|
||||
|
||||
lru-cache@^4.0.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
|
||||
|
@ -3331,6 +3355,16 @@ path-parse@^1.0.5:
|
|||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
|
||||
|
||||
path-root-regex@^0.1.0:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"
|
||||
|
||||
path-root@0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7"
|
||||
dependencies:
|
||||
path-root-regex "^0.1.0"
|
||||
|
||||
path-to-regexp@^1.0.1:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
|
||||
|
@ -3510,7 +3544,7 @@ prr@~0.0.0:
|
|||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
|
||||
|
||||
pseudomap@^1.0.2:
|
||||
pseudomap@^1.0.1, pseudomap@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
||||
|
||||
|
@ -3958,7 +3992,7 @@ sax@^1.2.1:
|
|||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828"
|
||||
|
||||
"semver@2 || 3 || 4 || 5", semver@5.4.1, semver@^5.3.0:
|
||||
"semver@2 || 3 || 4 || 5", semver@5.4.1, semver@^5.1.0, semver@^5.3.0:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
||||
|
||||
|
@ -4006,6 +4040,10 @@ shellwords@^0.1.0:
|
|||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14"
|
||||
|
||||
sigmund@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
|
||||
|
||||
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||
|
|
Loading…
Reference in New Issue