copy-node-modules v1.1.1
copy-node-modules - fast Node.js modules deployment to destination directory
Copy all modules listed in dependencies or/and devDependencies field of package.json to destination directory.
The procedure:
- Read
package.jsonfrom source directory and readdependenciesordevDependenciesfield. - Search for existing modules and ther dependencies in source directory.
- Copy all modules to destination directory.
Modern applications use lots of modules, each module depends on more modules resulting in hundreds of modules being installed when typing npm install. This module will help you to save time from slow npm install when you want to pack/deploy your application to a directory which contains all needed modules.
It will save you a bunch of time to deploy a stand-alone application from existing development directory, no need to fetch all modules from remote repository.
Installation
yarn add copy-node-modules --devor
npm install copy-node-modules --save-devProgrammatic Usage
ES6+ environment:
const copyNodeModules = require('copy-node-modules');ES6+ environment with import support:
import copyNodeModules from 'copy-node-modules'; ES5
var copyNodeModules = require('copy-node-modules');copyNodeModules(srcDir, dstDir, options, callback)
srcDir: source directory containingpackage.jsonfile.dstDir: destination directory to copy modules to (modules will be copied todstDir/node_modulesdirectory).options:devDependencies: boolean value, defaults to false, showing whether modules indevDependenciesfield ofpackage.jsonshould also be copied (when it's set to true).concurrency: integer value, max number of root packages whose files are being copied concurrently.filter:RegExpor function that accepts one value (the full path) and returns a boolean (copy on true).
callback(err, results): A callback which is called when all copy tasks have finished or error occurs,resultsis an array contains copied modules, each item is an object as{name: 'xxx', version: 'xxx'}
Examples
const copyNodeModules = require('copy-node-modules');
const srcDir = '/somewhere/project';
const dstDir = '/somewhere/project/dist';
copyNodeModules(srcDir, dstDir, { devDependencies: false }, (err, results) => {
if (err) {
console.error(err);
return;
}
Object.keys(results).forEach(name => {
const version = results[name];
console.log(`Package name: ${name}, version: ${version}`);
});
});Example with a filter method
const copyNodeModules = require('copy-node-modules');
const srcDir = '/somewhere/project';
const dstDir = '/somewhere/project/dist';
// Filter method that will ignore node_module folders in a node module
const filter = path => {
const firstIndex = path.indexOf('node_modules');
return v.indexOf('node_modules', firstIndex + 1) === -1;
}
copyNodeModules(srcDir, dstDir, { devDependencies: false, filter }, (err, results) => {
if (err) {
console.error(err);
return;
}
Object.keys(results).forEach(name => {
const version = results[name];
console.log(`Package name: ${name}, version: ${version}`);
});
});CLI Usage
copy-node-modules src_dir dest_dir [-d|--dev] [-c|--concurrency] [-v|--verbose] [-f|--filter]src_dir: source directory containingpackage.jsonfile.dest_dir: destination directory to copy modules to (modules will be copied todest_dir/node_modulesdirectory).-d|--dev: whether modules indevDependenciesfield ofpackage.jsonshould be also copied.-c|--concurrency: max number of root packages whose files are being copied concurrently.-v|--verbose: verbose mode.-f|--filter: regular Expression, files that match this expression will be copied; it also matches directories fi: -findex.htmlmatchespath/index.htmlbut notpath/and because of thisindex.htmlis not copied.
License
MIT