Skip to content

Commit 38b0298

Browse files
authored
fix: do not crash rule no-unpublished-require (#49)
Fixes #48
1 parent d7b975a commit 38b0298

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

lib/util/check-publish.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,22 @@ exports.checkPublish = function checkPublish(context, filePath, targets) {
4949
if (!npmignore.match(toRelative(filePath))) {
5050
// This file is published, so this cannot import private files.
5151
for (const target of targets) {
52-
const isPrivateFile =
53-
target.moduleName == null &&
54-
npmignore.match(toRelative(target.filePath))
55-
const isDevPackage =
52+
const isPrivateFile = () => {
53+
if (target.moduleName != null) {
54+
return false
55+
}
56+
const relativeTargetPath = toRelative(target.filePath)
57+
return (
58+
relativeTargetPath !== "" &&
59+
npmignore.match(relativeTargetPath)
60+
)
61+
}
62+
const isDevPackage = () =>
5663
target.moduleName != null &&
5764
devDependencies.has(target.moduleName) &&
5865
!dependencies.has(target.moduleName) &&
5966
!allowed.has(target.moduleName)
60-
61-
if (isPrivateFile || isDevPackage) {
67+
if (isPrivateFile() || isDevPackage()) {
6268
context.report({
6369
node: target.node,
6470
loc: target.node.loc,
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"files": [
3+
"**/*.js"
4+
]
5+
}

tests/lib/rules/no-unpublished-require.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,23 @@ ruleTester.run("no-unpublished-require", rule, {
223223
env: { node: true },
224224
},
225225

226+
// Should work fine if the target is the package directory.
227+
{
228+
filename: fixture("issue48n/test.js"),
229+
code: "require('.');",
230+
env: { node: true },
231+
},
232+
{
233+
filename: fixture("issue48n/test.js"),
234+
code: "require('./');",
235+
env: { node: true },
236+
},
237+
{
238+
filename: fixture("issue48n/test/test.js"),
239+
code: "require('..');",
240+
env: { node: true },
241+
},
242+
226243
// allowModules option
227244
{
228245
filename: fixture("1/test.js"),

0 commit comments

Comments
 (0)