Object.freeze globals to prevent accidental mutation during the life of your program.
You'll first need to install ESLint:
npm i eslint --save-dev
Next, install eslint-plugin-freeze-global
:
npm install eslint-plugin-freeze-global --save-dev
Add eslint-plugin-freeze-global
to the plugins section of your .eslintrc
configuration file:
{
"plugins": [
"freeze-global"
]
}
Then configure the rules you want to use under the rules section.
{
"rules": {
"freeze-global/no-mutable-global": 2
}
}
❌ Invalid
import zod from 'zod';
const GLOBAL = {
a: 1,
b: 2,
c: {
d: 'e'
}
};
✅ Valid with ["error", "no-mutable-global"]
import zod from 'zod';
const GLOBAL = Object.freeze({
a: 1,
b: 2,
c: Object.freeze({
d: 'e',
})
});
{
"rules": {
"freeze-global/no-naked-global": 2
}
}
❌ Invalid
import zod from 'zod';
const GLOBAL = {};
✅ Valid with ["error", "no-naked-global"]
import zod from 'zod';
const GLOBAL = Object.freeze({});
Or refactor into a class or applicable location.