mirror of
https://github.com/modernweb-dev/rocket.git
synced 2026-03-21 15:54:57 +00:00
Compare commits
6 Commits
@mdjs/core
...
plugins-ma
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f9014c15a6 | ||
|
|
7e277cd88f | ||
|
|
bc6106381c | ||
|
|
00bf3882f6 | ||
|
|
543e297c5b | ||
|
|
70b0ce8e1c |
@@ -112,16 +112,13 @@ addPlugin(MyClass, { otherProp: 'new name' }); // ts error
|
||||
|
||||
Many plugin systems require you to either execute a plugin function like in `rollup`.
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
```js
|
||||
import json from '@rollup/plugin-json';
|
||||
|
||||
/** @type {import('rocket/cli').RocketCliConfig} */
|
||||
export default ({
|
||||
export default /** @type {import('rocket/cli').RocketCliConfig} */ ({
|
||||
plugins: [json({ preferConst: true })],
|
||||
});
|
||||
```
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
or add it in a special way like in `eleventy`
|
||||
|
||||
@@ -254,6 +251,18 @@ addPlugin(myPlugin, { myFlag: true }); // ts ok
|
||||
addPlugin(myPlugin, { notExisting: true }); // ts error
|
||||
```
|
||||
|
||||
Note: There is a "hidden" feature in addPlugin that if you attach a `wrapPlugin` property to the returning function it will call `wrapPlugin` on the plugin before adding it.
|
||||
|
||||
```js
|
||||
// example auto wrap rollup plugins for @web/dev-server
|
||||
import { fromRollup } from '@web/dev-server-rollup';
|
||||
|
||||
const userSetupFunctions = [addPlugin(json)].map(mod => {
|
||||
mod.wrapPlugin = fromRollup;
|
||||
return mod;
|
||||
});
|
||||
```
|
||||
|
||||
## Adjusting Plugin Options
|
||||
|
||||
Adjusting options means to either
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
"update-package-configs": "node scripts/update-package-configs.mjs && yarn format"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@changesets/cli": "^2.12.0",
|
||||
"@changesets/cli": "^2.20.0",
|
||||
"@custom-elements-manifest/analyzer": "^0.4.12",
|
||||
"@open-wc/testing": "^3.0.0-next.1",
|
||||
"@rollup/plugin-commonjs": "^17.0.0",
|
||||
@@ -75,7 +75,7 @@
|
||||
"husky": "^4.3.7",
|
||||
"lint-staged": "^10.5.3",
|
||||
"mocha": "^8.2.1",
|
||||
"node-fetch": "^2.6.1",
|
||||
"node-fetch": "^2.6.7",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"onchange": "^7.1.0",
|
||||
"prettier": "^2.2.1",
|
||||
@@ -84,8 +84,6 @@
|
||||
"puppeteer": "^9.0.0",
|
||||
"remark-emoji": "^2.1.0",
|
||||
"rimraf": "^3.0.2",
|
||||
"rocket-preset-code-tabs": "^0.2.6",
|
||||
"rocket-preset-custom-elements-manifest": "^0.1.7",
|
||||
"rollup": "^2.36.1",
|
||||
"rollup-plugin-terser": "^7.0.2",
|
||||
"sinon": "^9.2.3",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# plugins-manager
|
||||
|
||||
## 0.3.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 7e277cd: Add a "hidden" feature in addPlugin that if you attach a `wrapPlugin` property to the returning function it will call `wrapPlugin` on the plugin before adding it.
|
||||
|
||||
## 0.3.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "plugins-manager",
|
||||
"version": "0.3.0",
|
||||
"version": "0.3.1",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
||||
/**
|
||||
* @template {import('../types/main').Plugin} T
|
||||
* @param {T} plugin
|
||||
@@ -12,6 +13,10 @@ export function addPlugin(plugin, options = {}, { how = 'after', location = 'bot
|
||||
if (plugins === undefined) {
|
||||
plugins = [];
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
const usePlugin = addPluginFn.wrapPlugin ? addPluginFn.wrapPlugin(plugin) : plugin;
|
||||
|
||||
// only add if name is not already in the meta plugin list
|
||||
if (plugins.findIndex(pluginObj => pluginObj.plugin === plugin) === -1) {
|
||||
let index = -1;
|
||||
@@ -40,7 +45,7 @@ export function addPlugin(plugin, options = {}, { how = 'after', location = 'bot
|
||||
}
|
||||
|
||||
plugins.splice(index, 0, {
|
||||
plugin,
|
||||
plugin: usePlugin,
|
||||
options,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -109,4 +109,18 @@ describe('addPlugin', () => {
|
||||
});
|
||||
expect(config.plugins).to.deep.equal(['-- newFirst last Plugin --']);
|
||||
});
|
||||
|
||||
it('[advanced] can add a `wrapPlugin` property to the function itself which will call it on the plugin on init', async () => {
|
||||
function myWrapper(plugin) {
|
||||
return () => 'wrapped' + plugin();
|
||||
}
|
||||
|
||||
const config = applyPlugins({
|
||||
setupPlugins: [addPlugin(insertPlugin)].map(mod => {
|
||||
mod.wrapPlugin = myWrapper;
|
||||
return mod;
|
||||
}),
|
||||
});
|
||||
expect(config.plugins).to.deep.equal(['wrapped-- first last Plugin --']);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user