From mboxrd@z Thu Jan 1 00:00:00 1970 From: swedebugia Subject: Improved NPM importer with blacklist (Was: Re: NPM importer) Date: Fri, 30 Nov 2018 17:13:44 +0100 Message-ID: <12fdf913-eb03-b898-f9ff-8dd455935975@riseup.net> References: <70F182DB-C157-4763-A4C6-89985545661C@lepiller.eu> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------04EC75CC97E6F4546FD29A73" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:42051) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSlKX-0001Ah-6m for guix-devel@gnu.org; Fri, 30 Nov 2018 11:07:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gSlKU-0002lM-Ft for guix-devel@gnu.org; Fri, 30 Nov 2018 11:07:49 -0500 Received: from mx1.riseup.net ([198.252.153.129]:53550) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gSlKS-0002iZ-BF for guix-devel@gnu.org; Fri, 30 Nov 2018 11:07:46 -0500 In-Reply-To: <70F182DB-C157-4763-A4C6-89985545661C@lepiller.eu> Content-Language: en-US List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Julien Lepiller , guix-devel@gnu.org This is a multi-part message in MIME format. --------------04EC75CC97E6F4546FD29A73 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi :) On 2018-11-11 16:37, Julien Lepiller wrote: > I improved a bit over jlicht's work here, but there still a few tgings we want co work on: https://framagit.org/tyreunom/guix/tree/npm > > There is an importer and a build system as well as a few packages. One of tge issue is that the importer is not recursive, so it doesn't get the specified version, and the packages aren't tested because the tests depend on cylic dependencies (and sometimes very big circles). There is a stub of a recursive importer, but it does not seem to work. -- I improved on Julliens work and added a blacklister. After much sweat it now works and the blacklist is populated with a lot of unneeded development dependencies and complex packages. I added the version to all imported npm-packages and to the inputs as it does not make sense to reference the packages without a version given all the cyclic dependencies. Thanks for all the help! TODO: * make npm-recursive-import work by not fetching blacklisted packages * implement keyword blacklisting based on the descriptions * match not just the whole string of blacklisted packages: e.g. match also "rollup-plugin" when "rollup" is in the blacklist. * get the tarballs from npm-registry instead as they are never missing (githubs sometimes are) and likely reproducible. * Output a (define-public (inherit -)) for all imported npm-packages. * Make it possible to specify a specific version to import (and perhaps the latest of all minor versions of a package :D). (For async that would be "0.1.22", "0.2.10", "0.3.0", etc all the way up to "2.6.1" which is the current beast. This would mean that we in total import about 477.000 packages times the number of minor releases (mean ~10?) that equals 4,7 mio. npm-packages :p) Then we will definitely need to speed up guile. My guess is that we will have to import at least 1,5 versions for every npm package to mitigate cyclic dependencies (this means 477.000*1,5 = 715.500 npm-package-versions). * Make it easy to analyze a given npm-package to see when deps/devdeps were added. In the case async, propose we import 0.9.0 first which is the last version without lodash as devdep. From 1.0.0 more devdeps were added. (source: https://registry.npmjs.org/async) Perhaps some kind of tree output for these complex packages with versions as branches and dependencies as subbranches would be nice? -- See the files I changed attached. -- Cheers Swedebugia --------------04EC75CC97E6F4546FD29A73 Content-Type: application/x-bzip; name="npm.scm.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="npm.scm.bz2" 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 --------------04EC75CC97E6F4546FD29A73 Content-Type: text/x-scheme; name="npm-blacklist.scm" Content-Disposition: attachment; filename="npm-blacklist.scm" Content-Transfer-Encoding: quoted-printable ;;; Copyright =C2=A9 2018 swedebugia ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (guix import npm-blacklist) #:export (blacklist keyword-blacklist)) ;; Many of these are already in debian. (define blacklist-benchmark '( "matcha" "benchmark" )) =20 (define blacklist-complex ;; Complex packages we should not begin with '( ;; From debian wiki /Javascript: ;; Packages used to transform code written for nodejs to run in ;; the browser: "babel" "@babel" "babel-core" "webpack" "rollup" "rollup-plugin-node-resolve" "browserify" ;This can be replaced by one ;of the above. ;; jquery dependant "async" "ember" ;A JavaScript framework for creating ambitious web applicatio= ns "broccoli" ;Browser compilation library "nsp" ;security related ;; Other complex packages not yet in debian: "electron" "statsd" "vega" "grunt-release" "lineman" "lineman-angular" "lerna" "openlayers" "openpgp" "yarnpkg" "wekan" "etherpad-lite" "meteor" )) (define blacklist-deprecated '( ;; From debian wiki: "keybase" )) (define blacklist-doc '( ;; From underscore: "docco" ;; From mocha: "jsdoc" "markdown-toc")) (define blacklist-lint '( ;; From underscore: "eslint" ;; From mocha: "eslint-config-prettier" "eslint-config-semistandard" "eslint-config-standard" "eslint-plugin-import" "eslint-plugin-node" "eslint-plugin-prettier" "eslint-plugin-promise" "eslint-plugin-standard" "lint-staged" "markdownlint-cli" "prettier-eslint-cli" ;;From yargs "standard" ;linter & automatic code fixer "standard-version" ;Automate versioning and CHANGELOG generation ;;From tap "jscs" ;JavaScript Code Style checker ;; From nsp "eslint-config-nodesecurity" ;; From "@ljharb/eslint-config" ;; From eslint-config "editorconfig-tools" ;A tool to verify ;; From requirejs "jshint" ;; from path-is-absolute "xo" ;; from glob "tick" ;; video.js "tsml" ;; callsites "tsd-check" ;; promptly "@commitlint/config-conventional" "eslint-config-moxy" "@commitlint/cli" ;; async "jshint-stylish" ;; fs-extra "standard-markdown" ;; is "safe-publish-latest" )) (define blacklist-grunt '( ;; From tap: "grunt" ;The JavaScript Task Runner - is in ;debian "grunt-contrib-concat" "grunt-contrib-uglify" ;; From jquery "grunt-compare-size" =20 )) (define blacklist-management '( ;; From parser5: "lerna" ;; CI "vows")) (define blacklist-other '( ;; From mocha: "husky" "nps" "rimraf" ;complex also ;;async "colors" ;cli "cli-table" =20 )) (define blacklist-test-assertion '( ;; mocha "chai" ;Chai is an assertion library. "unexpected" )) (define blacklist-test-browser '( ;; mocha "karma" "karma-qunit" "karma-sauce-launcher" ;; async "karma-browserify" )) (define blacklist-test-coverage '( ;; mocha "coveralls" ;is in debian "covert" ;code coverage command "nyc" )) (define blacklist-test-general ;; sinon and tape are the most common '( ;; From underscore: "qunit-cli" "qunit" ;; From yargs "mocha" ;is in debian "yargs-test-extends" ;; From commander "sinon" ;Test spies, stubs and mocks ;; From nsp "code" ;assertion, fork of chai ;; From minimist "tape" ;tap-producing test harness ;; universalify "colortape" "airtap" "tap" ;Test-Anything-Protocol ;library ;; klaw "tap-spec" "lab" ;Node.js test framework ;; From nsp "mock-fs" ;; From many :) "nyc" ;istanbul coverage, testing ;; from is-wsl "proxyquire" ;; mocha "coffe-script" "cross-swawn" ;; secure-random "terst" ;; through2 "stream-spigot" ;; is "make-generator-function" ;; From github search "test" javascript, sort by stars "forking-tap" "bogota" "faucet" "gremlins" "jest" "redux-mock-store" "webdriverio" "ava" "enzyme" "testem" "protractor" "testcafe" "test262" "storybook" "jasmine" "volkswagen" "nightwatch" "supertest" "istanbul" "sizzy" "zombie" "PhantomCSS" )) (define blacklist ;; Combine blacklists into one. (append blacklist-benchmark blacklist-complex blacklist-deprecated blacklist-doc blacklist-lint blacklist-grunt blacklist-management blacklist-other blacklist-test-assertion blacklist-test-browser blacklist-test-coverage blacklist-test-general )) (define keyword-blacklist ;; Blacklist based on description or keywords '("assert" "assertion" "check" "test" "testing" "mock" "coverage" "lint" "linter" "security"))=20 ;; Debugging ;; (format (current-error-port) "Blacklisted: ~a \n" blacklist) ;; (force-output) ;; (format (current-error-port) "Total: ~a packages blacklisted \n" (leng= th blacklist)) --------------04EC75CC97E6F4546FD29A73--