This PR does two things:

1. I moved `package.json` into the root directory. Why? We are using `npx` from the `Makefile` which is executing usually under the root directory. If we install `node_modules` in `src/js` then these invocations don't see `node_modules` and install an extra copy of the packages. So we want `node_modules` in the root directory. node wants to put `node_modules` in the same directory as `package.json` hence I moved `package.json`. I also updated the build rules so that any recipe that uses `npx` has a dependency on `node_modules/.installed`.
2. We invoke `file_packager.py` from both the Makefile (in two places) and from `build_pkg`. There has been some drift in which options are applied in the two places. I extracted the common options and the task of locating the `file_packager.py` script into `tools/file_packager.sh`. I also shortened the make rules for `distutils.data` and `test.data` and made some minor updates to the dev docs about `file_packager.py`.
MAINT Improvements to node and file_packager invocations. This PR does two things:

1. I moved `package.json` into the root directory. Why? We are using `npx` from the `Makefile` which is executing usually under the root directory. If we install `node_modules` in `src/js` then these invocations don't see `node_modules` and install an extra copy of the packages. So we want `node_modules` in the root directory. node wants to put `node_modules` in the same directory as `package.json` hence I moved `package.json`. I also updated the build rules so that any recipe that uses `npx` has a dependency on `node_modules/.installed`.
2. We invoke `file_packager.py` from both the Makefile (in two places) and from `build_pkg`. There has been some drift in which options are applied in the two places. I extracted the common options and the task of locating the `file_packager.py` script into `tools/file_packager.sh`. I also shortened the make rules for `distutils.data` and `test.data` and made some minor updates to the dev docs about `file_packager.py`.
Author: Kevin Sheppard <kevin.sheppard@gmail.com>
Date:   Sun Aug 30 12:54:22 2020 +0100

    MAINT: Remove duplicated symbols from link step
    
    Included in numpy 1.20.0 (https://github.com/numpy/numpy/pull/17127)

diff --git a/numpy/core/setup.py b/numpy/core/setup.py
index 16a34dd1e..71b4a7c0a 100644
--- a/numpy/core/setup.py
+++ b/numpy/core/setup.py
@@ -930,7 +930,7 @@ def configuration(parent_package='',top_path=None):
 
     config.add_extension('_multiarray_umath',
                          sources=multiarray_src + umath_src +
-                                 npymath_sources + common_src +
+                                 common_src +
                                  [generate_config_h,
                                   generate_numpyconfig_h,
                                   generate_numpy_api,

Author: Kevin Sheppard <kevin.sheppard@gmail.com>
Date:   Sun Aug 30 12:54:22 2020 +0100

    MAINT: Remove duplicated symbols from link step
    
    Included in numpy 1.20.0 (https://github.com/numpy/numpy/pull/17127)

diff --git a/numpy/core/setup.py b/numpy/core/setup.py
index 16a34dd1e..71b4a7c0a 100644
--- a/numpy/core/setup.py
+++ b/numpy/core/setup.py
@@ -930,7 +930,7 @@ def configuration(parent_package='',top_path=None):
 
     config.add_extension('_multiarray_umath',
                          sources=multiarray_src + umath_src +
-                                 npymath_sources + common_src +
+                                 common_src +
                                  [generate_config_h,
                                   generate_numpyconfig_h,
                                   generate_numpy_api,
