mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
const readPkgUp = require('read-pkg-up')
|
|
const path = require('path')
|
|
|
|
const dependencyGraph = new Map()
|
|
exports.dependencyGraph = dependencyGraph
|
|
|
|
exports.entries = new Set()
|
|
|
|
const entryWhitelist = [/\/tests?\//, /\.test\.js$/, /\.config\.js$/]
|
|
|
|
exports.checkEntriesWhitelist = filename => {
|
|
for (const re of entryWhitelist) {
|
|
if (re.test(filename)) {
|
|
exports.entries.add(filename)
|
|
}
|
|
}
|
|
}
|
|
|
|
const packageFile = readPkgUp.sync()
|
|
|
|
function recordPackageEntry(entry) {
|
|
exports.entries.add(path.resolve(packageFile.path, '..', entry))
|
|
}
|
|
|
|
if (packageFile) {
|
|
for (const key in packageFile.packageJson) {
|
|
if (key === 'main') {
|
|
recordPackageEntry(packageFile.packageJson.main)
|
|
} else if (key === 'entries') {
|
|
packageFile.packageJson.entries.forEach(recordPackageEntry)
|
|
} else if (/-bundles$/.test(key)) {
|
|
// github-asset-pipeline internal manifest format
|
|
Object.keys(packageFile.packageJson[key]).forEach(recordPackageEntry)
|
|
}
|
|
}
|
|
}
|
|
|
|
function gatherImported() {
|
|
const filenames = new Set()
|
|
const identifiers = new Set()
|
|
|
|
for (const {imports} of dependencyGraph.values()) {
|
|
for (const [importedFilename, importedIdentifiers] of imports) {
|
|
// require.resolve will expand any symlinks to their fully qualified
|
|
// directories. We can use this (with the absolute path given in
|
|
// importedFilename to quickly expand symlinks, which allows us to have
|
|
// symlinks (aka workspaces) in node_modules, and not fail the lint.
|
|
const fullyQualifiedImportedFilename = require.resolve(importedFilename)
|
|
filenames.add(fullyQualifiedImportedFilename)
|
|
|
|
for (const importedIdentifier of importedIdentifiers) {
|
|
identifiers.add(`${fullyQualifiedImportedFilename}#${importedIdentifier}`)
|
|
}
|
|
}
|
|
}
|
|
|
|
return {filenames, identifiers}
|
|
}
|
|
|
|
let importedCache = null
|
|
|
|
exports.imported = function() {
|
|
if (!importedCache) {
|
|
importedCache = gatherImported()
|
|
}
|
|
return importedCache
|
|
}
|