forked from yarnpkg/yarn
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Yarn Plug'n'Play: Implementation (yarnpkg#6382)
* Initial pnp implementation * Adds the pnp-env directory for quick checks * Improves the "yarn node" command so that it works with pnp Branch: yarn-node-pnp * Adds the pnp tests to the pkg-tests testsuite Branch: pkg-tests * Fixes various issues with the pnp map generation Branch: pnp-map-improvements * Remove the scriptsPrependNodePath option Branch: lifecycle-wrappers-remove-option * Adds tests to ensure that the lifecycle scripts are called with the right binaries Branch: lifecycle-wrappers-tests * Fixes linting Branch: lifecycle-wrappers-flowlint * Improve the error message when an optional required dependency hasn't been installed Branch: lifecycle-wrappers-improve-pnp-error * Implements lifecycle wrappers Branch: lifecycle-wrappers-main * Adds .pnp.js files to the gitignore * Fallbacks to the toplevel dependencies when a transitive dependency cannot be resolved * Fixes an issue inside the pkg-tests helper Branch: pkg-tests-helper-definition * Improves the fixtures so that they also return info about their dev and peer dependencies Branch: dev-peer-fixtures * Finishes to hide plugnplay behind a yarnrc option (`plugnplay-experimental`) Branch: option-plugnplay-experimental * Adds failing tests for pnp peer dependencies Branch: pnp-peer-dependencies-failing * Prettifies the generated pnp files * Adds the plugnplay flag to the integrity check * Removes the pnp file at link-time if installing with pnp disabled * Improves pnp maps compatibility * Prevents "yarn check" from checking the node_modules existence when under pnp * Adds a missing package to the request cache * Fixes tests Branch: pnp-fix-tests * Reimplements the resolution to correctly account for peer dependencies Branch: better-faster-stronger * Externalizes the creation of proxy scripts Branch: portable-proxy-scripts * Implements support for `yarn run` within pnp-enabled installations Branch: pnp-yarn-run * Makes it possible for dependency binaries to require their own dependencies Branch: pnp-yarn-run-dependencies * Moves the pnp embed api into its own file * Adds the test folder to Jest error messages Branch: jest-better-message * Improves peer dependency tests Branch: peer-deps-tests * Adds tests for require.resolve Branch: require-resolve-tests * Refactors the pnp file Branch: pnp-file-refactoring * Updates the build-webpack script to include a custom resolver Branch: webpack-resolver * Fixes tests Branch: fix-tests * Generates virtual when using peer dependencies Branch: virtual-packages * Refactors the generated pnp files to use the newly generated maps Branch: pnp-refactor-find * Implements Module._findPath Branch: module-findpath * Adds tests for workspaces Branch: workspace-tests * Fixes top level detection Branch: fix-top-level-detection * Implements workspaces support in pnp Branch: pnp-workspaces * Automatically adds workspaces as dependencies of the top-level Branch: auto-workspace-dependencies * Updates the cache path to include the 'node_modules' string Branch: node-modules-cache * Prevents pnp from bootstrapping when running non-pnp-installed scripts Branch: fix-npm-run * Installs peer dependencies symlinks inside a project folder Branch: per-project-virtual-deps * Adds a sample application that showcases webpack, babel, react, jest Branch: sample-app * Ignores the .pnp directory Branch: ignore-pnp * Implements a blacklist that throws nicer errors when a package is required through a realpath'd path. Branch: location-blacklist * Changes the order the locations are matched to package locators Branch: location-to-locator-match-order * Automatically adds packages as dependencies of themselves if possible Branch: implicit-self * Updates the node resolution Branch: node-resolution-improvements * Ensures that binaries are set as executable in the cache Branch: chmod-bins * Disables integrity checks when running under pnp Branch: pnp-no-integrity * Makes the .pnp.js file an actual executable that can be used as a resolution server Branch: pnp-executable * Removes pnp-env * Fixes a few tests * Fixes snapshots * Fixes the lockfile not being written when using pnp Branch: fix-lockfile * Fixes the `yarn node` command being incorrectly forwarded arguments Branch: fix-yarn-node * Uses symlinks instead of a script for bin indirection to allow calling them directly through Node Branch: bin-symlinks * Adds a `yarn bin <name>` command that returns the path of the specified bin on the disk Branch: yarn-bin-name * Implements an --into option to yarn node/yarn run Branch: opt-into * Implements the `--pnp` option Branch: pnp-option * Adds new tests for checking that packages are correctly locked Branch: lock-tests * Bugfixes This diff ships with two fixes: - Fixes calling a pnp script from a non-pnp scripts - Fixes relative requires from binaries It also adds tests for all those cases Branch: bugfixes * Fixes workspace registration Branch: workspace-registration-fix * Uses --enable-pnp (alias --pnp) and --disable-pnp Branch: instalconfig-pnp * Adds the issuer into the error messages when requesting a package one shouldn't have access to. Branch: via-issuer * Implements extendedQualifiedPathResolution Branch: extended-qualified-path-resolution * Changes the return of the pnp daemon to return json data * Implements custom shebangs for the pnp file * Changes the return of the pnp-exposed functions to return null with builtins * Various fixes & improvements * Adds a test, prettier, fixes a test * Don't iterate on the registries * Renames YARN_PLUGNPLAY_EXPERIMENTAL into YARN_PLUGNPLAY_OVERRIDE * Avoids touching the .pnp.js file when it doesn't need to change * Reworks the cache path to contain the "node_modules/<pkg-name>" string * Shims resolve#isCore * Improves error messages * Fixes the environment cast to allow passing false/0 * Implements a pnp blacklist settings * Fixes the fallback resolution to use _resolveFilename instead of _finePath * Fixes fallback relative path resolution * Implements require.cache * Prevents pnp from being enabled on Windows * Removes absolute paths from the pnp files * Implements a super basic offline cache integration * feat(pnp): eject package command (yarnpkg#92) * test(pnp): support ejecting packages * feat(pnp): eject package command * test(pnp): use fs.readdir instead of fs.readdirSync * test(pnp): do not expect specific error message * refactor(pnp): move eject logic to package linker * fix(pnp): change ejected folder to .pnp/ejected/pkgName-pkgVersion/node_modules/pkgName * fix(pnp): do not re-eject package * test(pnp): do not rely on installConfig * Fixes yarn bin * Preserves the node_modules components in zip paths * Fixes the offline cache * Adds a VERSIONS field into the generated resolver * Exposes the "extensions" option to "resolveRequest" * Renames yarn eject into yarn unplug * Tweaks yarn unplug * Removes packageMainEntry from the package information * Makes "unplug" print the list of unplugged packages * Unplugs postinstall packages automatically * Renames things * Adds a warning on Windows to notify that PnP settings are ignored at the moment * Fixes the default shebang * Exports pnpapi * Reworks the resolve shim to only affect liftoff * Guards the pnp file against fs extensions * Fixes the resolve shim * Fixes a broken test * Re-enables the focus tests * Stops relying on bash for test scripts * Fixes nohoist * Revert "Fixes a broken test" This reverts commit 84358aa. * Ensures that the getPackageInformation function returns an absolute path
- Loading branch information
Showing
109 changed files
with
5,030 additions
and
501 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file modified
BIN
+15 Bytes
(100%)
__tests__/fixtures/request-cache/GET/registry.yarnpkg.com/angular/core/-/core-2.4.10.tgz.bin
Binary file not shown.
Binary file added
BIN
+65 KB
__tests__/fixtures/request-cache/GET/registry.yarnpkg.com/types/node/-/node-10.3.2.tgz.bin
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,8 +13,8 @@ jasmine.DEFAULT_TIMEOUT_INTERVAL = 90000; | |
|
||
const path = require('path'); | ||
|
||
// regexp which verifies that cache path contains semver + hash | ||
const cachePathRe = /-\d+\.\d+\.\d+-[\dabcdef]{40}$/; | ||
// regexp which verifies that the cache path contains a path component ending with semver + hash | ||
const cachePathRe = /-\d+\.\d+\.\d+-[\dabcdef]{40}[\\\/]/; | ||
|
||
async function createEnv(configOptions): Object { | ||
const lockfile = new Lockfile(); | ||
|
@@ -82,7 +82,7 @@ addTest( | |
'@foo/[email protected]', | ||
'npm', | ||
async cacheFolder => { | ||
const folder = path.join(cacheFolder, 'npm-@foo', 'bar'); | ||
const folder = path.join(cacheFolder, 'npm-@foo-bar', 'node_modules', '@foo', 'bar'); | ||
await fs.mkdirp(folder); | ||
await fs.writeFile( | ||
path.join(folder, constants.METADATA_FILENAME), | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/dep-loop-entry-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/dep-loop-exit-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/dev-deps-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/dragon-test-1-a-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/dragon-test-1-b-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/dragon-test-1-b-2.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/dragon-test-1-c-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/dragon-test-1-d-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/dragon-test-1-e-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
3 changes: 3 additions & 0 deletions
3
packages/pkg-tests/pkg-tests-fixtures/packages/has-bin-entries-1.0.0/bin-get-pwd.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/usr/bin/env node | ||
|
||
console.log(process.cwd()); |
5 changes: 5 additions & 0 deletions
5
.../pkg-tests/pkg-tests-fixtures/packages/has-bin-entries-1.0.0/bin-with-relative-require.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#!/usr/bin/env node | ||
|
||
const secret = require('./secret'); | ||
|
||
console.log(secret); |
6 changes: 6 additions & 0 deletions
6
packages/pkg-tests/pkg-tests-fixtures/packages/has-bin-entries-1.0.0/bin-with-require.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#!/usr/bin/env node | ||
|
||
const noDeps = require('no-deps'); | ||
|
||
console.log(noDeps.name); | ||
console.log(noDeps.version); |
5 changes: 5 additions & 0 deletions
5
packages/pkg-tests/pkg-tests-fixtures/packages/has-bin-entries-1.0.0/bin.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#!/usr/bin/env node | ||
|
||
for (let t = 2; t < process.argv.length; ++t) { | ||
console.log(process.argv[t]); | ||
} |
10 changes: 10 additions & 0 deletions
10
packages/pkg-tests/pkg-tests-fixtures/packages/has-bin-entries-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
13 changes: 13 additions & 0 deletions
13
packages/pkg-tests/pkg-tests-fixtures/packages/has-bin-entries-1.0.0/package.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
{ | ||
"name": "has-bin-entries", | ||
"version": "1.0.0", | ||
"bin": { | ||
"has-bin-entries": "./bin.js", | ||
"has-bin-entries-with-require": "./bin-with-require.js", | ||
"has-bin-entries-with-relative-require": "./bin-with-relative-require.js", | ||
"has-bin-entries-get-pwd": "./bin-get-pwd.js" | ||
}, | ||
"dependencies": { | ||
"no-deps": "1.0.0" | ||
} | ||
} |
1 change: 1 addition & 0 deletions
1
packages/pkg-tests/pkg-tests-fixtures/packages/has-bin-entries-1.0.0/secret.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
module.exports = 42; |
9 changes: 7 additions & 2 deletions
9
packages/pkg-tests/pkg-tests-fixtures/packages/hoisting-peer-check-child-1.0.0/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
/* @flow */ | ||
|
||
module.exports = require(`./package.json`); | ||
|
||
for (const key of Object.keys(module.exports.dependencies || {})) { | ||
module.exports.dependencies[key] = require(key); | ||
for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { | ||
for (const dep of Object.keys(module.exports[key] || {})) { | ||
// $FlowFixMe The whole point of this file is to be dynamic | ||
module.exports[key][dep] = require(dep); | ||
} | ||
} |
Oops, something went wrong.