From 6e097528f5aacc6915bc371da05c69eea522fd5b Mon Sep 17 00:00:00 2001 From: Steve Gravrock Date: Sun, 13 Jun 2021 09:45:27 -0700 Subject: [PATCH] Include only specified files in the NPM package --- .gitignore | 1 + .npmignore | 30 ------------------ package.json | 7 +++++ spec/npmPackage/npmPackageSpec.js | 52 +++++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 30 deletions(-) delete mode 100644 .npmignore diff --git a/.gitignore b/.gitignore index 4536a071..644ebecd 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ build/ dist nbproject/ *.iml +.envrc diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 2f53304a..00000000 --- a/.npmignore +++ /dev/null @@ -1,30 +0,0 @@ -dist/ -grunt/ -node_modules -pkg/ -release_notes/ -spec/ -src/ -Gemfile -Gemfile.lock -Rakefile -jasmine-core.gemspec -.bundle/ -.gitignore -.gitmodules -.idea -.jshintrc -.rspec -.sass-cache/ -.circleci -scripts/ -*.sh -*.py -Gruntfile.js -lib/jasmine-core.rb -lib/jasmine-core/boot/ -lib/jasmine-core/spec -lib/jasmine-core/version.rb -lib/jasmine-core/*.py -sauce_connect.log -ci.js diff --git a/package.json b/package.json index da5d4461..9b074f99 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,13 @@ "description": "Official packaging of Jasmine's core files for use by Node.js projects.", "homepage": "https://jasmine.github.io", "main": "./lib/jasmine-core.js", + "files": [ + "MIT.LICENSE", + "README.md", + "images/*.{png,svg}", + "lib/**/*.{js,css}", + "package.json" + ], "devDependencies": { "ejs": "^2.5.5", "eslint": "^6.8.0", diff --git a/spec/npmPackage/npmPackageSpec.js b/spec/npmPackage/npmPackageSpec.js index 70af391b..ada121fa 100644 --- a/spec/npmPackage/npmPackageSpec.js +++ b/spec/npmPackage/npmPackageSpec.js @@ -108,4 +108,56 @@ describe('npm package', function() { false ); }); + + it('does not have any unexpected files in the root directory', function() { + var files = fs.readdirSync(this.tmpDir); + expect(files).toEqual(['package']); + }); + + it('does not have any unexpected files in the package directory', function() { + var files = fs.readdirSync(path.resolve(this.tmpDir, 'package')); + files.sort(); + expect(files).toEqual([ + 'MIT.LICENSE', + 'README.md', + 'images', + 'lib', + 'package.json' + ]); + }); + + it('only has images in the images dir', function() { + var files = fs.readdirSync(path.resolve(this.tmpDir, 'package/images')), + i; + + for (i = 0; i < files.length; i++) { + expect(files[i]).toMatch(/\.(svg|png)$/); + } + }); + + it('only has JS and CSS files in the lib dir', function() { + var files = [], + i; + + function getFiles(dir) { + var dirents = fs.readdirSync(dir, { withFileTypes: true }), + j; + + for (j = 0; j < dirents.length; j++) { + dirent = dirents[j]; + + if (dirent.isDirectory()) { + getFiles(path.resolve(dir, dirent.name)); + } else { + files.push(path.resolve(dir, dirent.name)); + } + } + } + + getFiles(path.resolve(this.tmpDir, 'package/lib')); + + for (i = 0; i < files.length; i++) { + expect(files[i]).toMatch(/\.(js|css)$/); + } + }); });