Skip to content

Latest commit

 

History

History
59 lines (39 loc) · 2.42 KB

no-unpublished-require.md

File metadata and controls

59 lines (39 loc) · 2.42 KB

Disallow require() expressions which import private modules (n/no-unpublished-require)

💼 This rule is enabled in the following configs: ☑️ flat/recommended, 🟢 flat/recommended-module, ✅ flat/recommended-script, ☑️ recommended, 🟢 recommended-module, ✅ recommended-script.

If a require() expression's target is not published, the program works in local, but will not work after published to npm. This rule disallows require() expressions of unpublished files/modules.

📖 Rule Details

If a source code file satisfies all of the following conditions, the file is *published*.

  • "files" field of package.json includes the file or "files" field of package.json does not exist.
  • .npmignore does not include the file.

Then this rule warns require() expressions in *published* files if the require() expression imports *unpublished* files or the packages of devDependencies.

This intends to prevent "Module Not Found" error after npm publish.
💡 If you want to import devDependencies, please write .npmignore or "files" field of package.json.

Options

{
    "rules": {
        "n/no-unpublished-require": ["error", {
            "allowModules": [],
            "convertPath": null,
            "tryExtensions": [".js", ".json", ".node"]
        }]
    }
}

allowModules

This can be configured in the rule options or as a shared setting settings.allowModules. Please see the shared settings documentation for more information.

resolvePaths

This can be configured in the rule options or as a shared setting settings.resolvePaths. Please see the shared settings documentation for more information.

convertPath

This can be configured in the rule options or as a shared setting settings.convertPath. Please see the shared settings documentation for more information.

tryExtensions

This can be configured in the rule options or as a shared setting settings.tryExtensions. Please see the shared settings documentation for more information.

🔎 Implementation