Skip to content

Commit

Permalink
Merge branch 'master' into feature/loader-build-time-comparison
Browse files Browse the repository at this point in the history
  • Loading branch information
The-Only-Matrix committed Feb 5, 2021
2 parents 3d31a6d + b5ff09e commit 1ca618f
Show file tree
Hide file tree
Showing 46 changed files with 151,224 additions and 104,138 deletions.
99 changes: 99 additions & 0 deletions .all-contributorsrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
{
"projectName": "speed-measure-webpack-plugin",
"projectOwner": "stephencookdev",
"repoType": "github",
"repoHost": "https://github.com",
"files": [
"README.md"
],
"imageSize": 100,
"commit": true,
"commitConvention": "none",
"badgeTemplate": "<a href=\"https://travis-ci.org/stephencookdev/speed-measure-webpack-plugin\"><img src=\"https://travis-ci.org/stephencookdev/speed-measure-webpack-plugin.svg?branch=master\" /></a> <a href=\"https://npmjs.com/package/speed-measure-webpack-plugin\"><img src=\"https://img.shields.io/npm/dw/speed-measure-webpack-plugin.svg\" /></a> <a href=\"https://npmjs.com/package/speed-measure-webpack-plugin\"><img src=\"https://img.shields.io/node/v/speed-measure-webpack-plugin.svg\" /></a> <a href=\"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/prettier/prettier\"><img src=\"https://img.shields.io/badge/code_style-prettier-ff69b4.svg\" /></a> <a href=\"#contributors\"><img src=\"https://img.shields.io/badge/all_contributors-<%= contributors.length %>-orange.svg\" /></a>",
"contributors": [
{
"login": "stephencookdev",
"name": "Stephen Cook",
"avatar_url": "https://avatars.githubusercontent.com/u/8496655?v=4",
"profile": "https://stephencookdev.co.uk/",
"contributions": [
"code",
"doc",
"blog",
"design",
"question",
"review"
]
},
{
"login": "scarletsky",
"name": "scarletsky",
"avatar_url": "https://avatars.githubusercontent.com/u/2386165?v=4",
"profile": "https://scarletsky.github.io/",
"contributions": [
"code"
]
},
{
"login": "wayou",
"name": "牛さん",
"avatar_url": "https://avatars.githubusercontent.com/u/3783096?v=4",
"profile": "https://github.com/wayou",
"contributions": [
"code",
"bug"
]
},
{
"login": "ThomasHarper",
"name": "Thomas Bentkowski",
"avatar_url": "https://avatars.githubusercontent.com/u/3199791?v=4",
"profile": "https://github.com/ThomasHarper",
"contributions": [
"doc"
]
},
{
"login": "alan-agius4",
"name": "Alan Agius",
"avatar_url": "https://avatars.githubusercontent.com/u/17563226?v=4",
"profile": "https://github.com/alan-agius4",
"contributions": [
"code",
"bug"
]
},
{
"login": "NdYAG",
"name": "Ximing",
"avatar_url": "https://avatars.githubusercontent.com/u/1396511?v=4",
"profile": "https://daix.me/",
"contributions": [
"code",
"bug"
]
},
{
"login": "tanhauhau",
"name": "Tan Li Hau",
"avatar_url": "https://avatars.githubusercontent.com/u/2338632?v=4",
"profile": "https://twitter.com/lihautan",
"contributions": [
"code",
"bug",
"test"
]
},
{
"login": "ZauberNerd",
"name": "Björn Brauer",
"avatar_url": "https://avatars.githubusercontent.com/u/249542?v=4",
"profile": "https://github.com/ZauberNerd",
"contributions": [
"code",
"bug"
]
}
],
"contributorsPerLine": 7
}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
node_modules
lerna-debug.log
npm-debug.log
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
12.20.0
2 changes: 0 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
language: node_js
node_js:
- "6"
script:
- npm run test
- npm run functional-test
Expand Down
60 changes: 56 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@
<div><sup><em>(for webpack)</em></sup></div>
</h1>

<a href="https://travis-ci.org/stephencookdev/speed-measure-webpack-plugin"><img src="https://travis-ci.org/stephencookdev/speed-measure-webpack-plugin.svg?branch=master" /></a>
<a href="https://npmjs.com/package/speed-measure-webpack-plugin"><img src="https://img.shields.io/npm/dw/speed-measure-webpack-plugin.svg" /></a>
<a href="https://npmjs.com/package/speed-measure-webpack-plugin"><img src="https://img.shields.io/node/v/speed-measure-webpack-plugin.svg" /></a>
<a href="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/prettier/prettier"><img src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg" /></a>
<!-- ALL-CONTRIBUTORS-BADGE:START -->
<a href="https://travis-ci.org/stephencookdev/speed-measure-webpack-plugin"><img src="https://travis-ci.org/stephencookdev/speed-measure-webpack-plugin.svg?branch=master" /></a> <a href="https://npmjs.com/package/speed-measure-webpack-plugin"><img src="https://img.shields.io/npm/dw/speed-measure-webpack-plugin.svg" /></a> <a href="https://npmjs.com/package/speed-measure-webpack-plugin"><img src="https://img.shields.io/node/v/speed-measure-webpack-plugin.svg" /></a> <a href="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/prettier/prettier"><img src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg" /></a> <a href="#contributors"><img src="https://img.shields.io/badge/all_contributors-8-orange.svg" /></a>
<!-- ALL-CONTRIBUTORS-BADGE:END -->

</div>
<br>
Expand Down Expand Up @@ -120,6 +119,20 @@ const webpackConfig = smp.wrap({
});
```

### `options.loaderTopFiles`

Type: `Number`<br>
Default: `0`

You can configure SMP to include the files that take the most time per loader, when using `outputFormat: 'humanVerbose'`. E.g., to show the top 10 files per loader:

```javascript
const smp = new SpeedMeasurePlugin({
outputFormat: "humanVerbose",
loaderTopFiles: 10,
});
```

### `options.compareLoadersBuild`

Type: `Object`<br>
Expand Down Expand Up @@ -151,6 +164,16 @@ This flag is _experimental_. Some loaders will have inaccurate results:

We will find solutions to these issues before removing the _(experimental)_ flag on this option.

## FAQ

### What does general output time mean?

This tends to be down to webpack reading in from the file-system, but in general it's anything outside of what SMP can actually measure.

### What does modules without loaders mean?

It means vanilla JS files, which webpack can handle out of the box.

## Contributing

Contributors are welcome! 😊
Expand All @@ -164,3 +187,32 @@ SMP follows [semver](https://semver.org/). If upgrading a major version, you can
## License

[MIT](/LICENSE)

## Contributors ✨

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

<!-- ALL-CONTRIBUTORS-LIST:START -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://stephencookdev.co.uk/"><img src="https://avatars.githubusercontent.com/u/8496655?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stephen Cook</b></sub></a><br /><a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=stephencookdev" title="Code">💻</a> <a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=stephencookdev" title="Documentation">📖</a> <a href="#blog-stephencookdev" title="Blogposts">📝</a> <a href="#design-stephencookdev" title="Design">🎨</a> <a href="#question-stephencookdev" title="Answering Questions">💬</a> <a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/pulls?q=is%3Apr+reviewed-by%3Astephencookdev" title="Reviewed Pull Requests">👀</a></td>
<td align="center"><a href="https://scarletsky.github.io/"><img src="https://avatars.githubusercontent.com/u/2386165?v=4?s=100" width="100px;" alt=""/><br /><sub><b>scarletsky</b></sub></a><br /><a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=scarletsky" title="Code">💻</a></td>
<td align="center"><a href="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/wayou"><img src="https://avatars.githubusercontent.com/u/3783096?v=4?s=100" width="100px;" alt=""/><br /><sub><b>牛さん</b></sub></a><br /><a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=wayou" title="Code">💻</a> <a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/issues?q=author%3Awayou" title="Bug reports">🐛</a></td>
<td align="center"><a href="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/ThomasHarper"><img src="https://avatars.githubusercontent.com/u/3199791?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Thomas Bentkowski</b></sub></a><br /><a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=ThomasHarper" title="Documentation">📖</a></td>
<td align="center"><a href="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/alan-agius4"><img src="https://avatars.githubusercontent.com/u/17563226?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan Agius</b></sub></a><br /><a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=alan-agius4" title="Code">💻</a> <a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/issues?q=author%3Aalan-agius4" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://daix.me/"><img src="https://avatars.githubusercontent.com/u/1396511?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ximing</b></sub></a><br /><a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=NdYAG" title="Code">💻</a> <a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/issues?q=author%3ANdYAG" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://twitter.com/lihautan"><img src="https://avatars.githubusercontent.com/u/2338632?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tan Li Hau</b></sub></a><br /><a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=tanhauhau" title="Code">💻</a> <a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/issues?q=author%3Atanhauhau" title="Bug reports">🐛</a> <a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=tanhauhau" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center"><a href="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/ZauberNerd"><img src="https://avatars.githubusercontent.com/u/249542?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Björn Brauer</b></sub></a><br /><a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/commits?author=ZauberNerd" title="Code">💻</a> <a href="https://github.com/stephencookdev/speed-measure-webpack-plugin/issues?q=author%3AZauberNerd" title="Bug reports">🐛</a></td>
</tr>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
19 changes: 17 additions & 2 deletions WrappedPlugin/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ const wrapHooks = (orig, pluginName, smp, type) => {
get: (target, property) => {
const raw = Reflect.get(target, property);

if (Object.isFrozen(target)) {
return raw;
}

if (property === "tap" && typeof raw === "function")
return wrapTap(raw, pluginName, smp, type, method).bind(proxy);
if (property === "tapAsync" && typeof raw === "function")
Expand Down Expand Up @@ -164,12 +168,16 @@ const construcNamesToWrap = [
];

const wrappedObjs = [];
const wrap = (orig, pluginName, smp, addEndEvent) => {
if (!orig) return orig;
const findWrappedObj = (orig, pluginName) => {
const prevWrapped = wrappedObjs.find(
w => w.pluginName === pluginName && (w.orig === orig || w.wrapped === orig)
);
if (prevWrapped) return prevWrapped.wrapped;
};
const wrap = (orig, pluginName, smp, addEndEvent) => {
if (!orig) return orig;
const prevWrapped = findWrappedObj(orig, pluginName);
if (prevWrapped) return prevWrapped;

const getOrigConstrucName = target =>
target && target.constructor && target.constructor.name;
Expand Down Expand Up @@ -217,6 +225,13 @@ const wrap = (orig, pluginName, smp, addEndEvent) => {
getOrigConstrucName(target)
);

if (shouldWrap && property === "compiler") {
const prevWrapped = findWrappedObj(raw, pluginName);
if (prevWrapped) {
return prevWrapped;
}
}

if (typeof raw === "function") {
const ret = raw.bind(proxy);
if (property === "constructor")
Expand Down

0 comments on commit 1ca618f

Please sign in to comment.