Disallow import declarations which import private modules (n/no-unpublished-import) ​
💼 This rule is enabled in the following configs: 🟢 recommended-module, ✅ recommended-script.
This is similar to no-unpublished-require, but this rule handles import declarations.
📖 Rule Details ​
If a source code file satisfies all of the following conditions, the file is *published*.
"files"field ofpackage.jsonincludes the file or"files"field ofpackage.jsondoes not exist..npmignoredoes not include the file.
Then this rule warns import declarations in *published* files if the import declaration imports *unpublished* files or the packages of devDependencies.
This intends to prevent "Module Not Found" error after
npm publish.
💡 If you want to importdevDependencies, please write.npmignoreor"files"field ofpackage.json.
Options ​
{
"rules": {
"n/no-unpublished-import": ["error", {
"allowModules": [],
"convertPath": null
}]
}
}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.
resolverConfig ​
This can be configured in the rule options or as a shared setting settings.resolverConfig. 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.
ignoreTypeImport ​
If using typescript, you may want to ignore type imports. This option allows you to do that.
{
"rules": {
"n/no-unpublished-import": ["error", {
"ignoreTypeImport": true
}]
}
}In this way, the following code will not be reported:
import type foo from "foo";ignorePrivate ​
In a private package you sometimes want to disable checking for unpublished dependencies, e.g. if the package is not published.
However, there are situations where you want to mark it as private, though still ensure only published dependencies are used in your source code. An example, for such a case would be a package that is deployed to a server.
Defaults to true.
package.json:
{
"private": true,
...
}{
"rules": {
"n/no-unpublished-import": ["error", {
"ignorePrivate": true
}]
}
}