NetSuite SuiteScript v1/v2 linting rules for ESLint
npm i -D eslint eslint-plugin-suitescriptRequires eslint@>=9. Users on eslint@<9 (or .eslintrc.* configs with eslint@^9) should stay on eslint-plugin-suitescript@^1.
Create eslint.config.js (or eslint.config.mjs) in your project root:
import suitescript from 'eslint-plugin-suitescript';
export default [
...suitescript.configs.recommended,
// optional: enable SuiteScript 2.x globals (`log`, `util`)
...suitescript.configs.suitescript2,
// or 1.0 globals (`nlapi*`, `nlobj*`)
// ...suitescript.configs.suitescript1,
];Or wire rules manually:
import suitescript from 'eslint-plugin-suitescript';
export default [
{
plugins: { suitescript },
rules: {
'suitescript/script-type': 'error',
'suitescript/no-log-module': 'error',
},
},
];v2 is flat-config only. To migrate:
- Replace
.eslintrc.*witheslint.config.js. - Replace
extends: ['plugin:suitescript/recommended']with...suitescript.configs.recommended(spread). - Replace
env: { 'suitescript/suitescript2': true }with...suitescript.configs.suitescript2. - Bump
eslintto>= 9in your project.
configs.recommended already declares the AMD globals (define, require) and the standard browser globals (window, document, ...) that v1's env: { amd: true, browser: true } provided, so no-undef keeps working on define([...], function() {}) modules and on client scripts that touch the DOM.
Stay on eslint-plugin-suitescript@^1 if you cannot migrate.
- suitescript/api-version: Enforces valid
@NApiVersiontag values - suitescript/entry-points: Enforces inclusion of at least one entry point based on
@NScriptType - suitescript/log-args: Enforces correct log arguments
- suitescript/module-vars: Enforces correct module identifiers for each configured module
- suitescript/no-amd-name: Restricts naming of AMD modules
- suitescript/no-extra-modules: Enforces equal number of module literals and identifiers
- suitescript/no-invalid-modules: Enforces valid SuiteScript modules in
definearray - suitescript/no-log-module: Restricts loading of the N/log module in favor of global
log - suitescript/no-module-extensions: Restricts filename extensions on module dependencies
- suitescript/script-type: Enforces valid
@NScriptTypetag values
eslint-plugin-suitescript is licensed under the MIT License.