Improve prepack script (#1747)

* improve prepack script

* remove .npmignore

* make prepack use pkg.files

* fix linter errors
This commit is contained in:
Francisco Giordano
2019-05-14 16:04:40 -03:00
committed by GitHub
parent fa004a7f5d
commit cc19ccfdb3
6 changed files with 202 additions and 111 deletions

42
scripts/prepack.js Normal file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env node
// This script removes the build artifacts of ignored contracts.
const fs = require('fs');
const path = require('path');
const cp = require('child_process');
const match = require('micromatch');
function exec (cmd, ...args) {
cp.execFileSync(cmd, args, { stdio: 'inherit' });
}
function readJSON (path) {
return JSON.parse(fs.readFileSync(path));
}
exec('npm', 'run', 'compile');
const pkgFiles = readJSON('package.json').files;
// Get only negated patterns.
const ignorePatterns = pkgFiles
.filter(pat => pat.startsWith('!'))
// Add **/* to ignore all files contained in the directories.
.flatMap(pat => [pat, path.join(pat, '**/*')])
// Remove the negation part. Makes micromatch usage more intuitive.
.map(pat => pat.slice(1));
const artifactsDir = 'build/contracts';
for (const artifact of fs.readdirSync(artifactsDir)) {
const fullArtifactPath = path.join(artifactsDir, artifact);
const { sourcePath: fullSourcePath } = readJSON(fullArtifactPath);
const sourcePath = path.relative('.', fullSourcePath);
const ignore = match.any(sourcePath, ignorePatterns);
if (ignore) {
fs.unlinkSync(fullArtifactPath);
}
}