copy-with-symlinks v0.0.0
copy-with-symlinks
under development
this utility works as is, but does a lot of redundant copying. Please check it later.
why
If you have symbolic links in your node_modules,
and run npm instal or gulp-install task, this will create new node_modules folder for production with broken symbolic links. (not tested on linux or darwin)
copy-with-symlinks utility will copy all folders from sourceRoot/dirName to destinationRoot/dirName with actual folders instead of symbolic links.
copyWithSymlinks(sourceRoot, destinationRoot, dirName, options, cb);NOTE:
The destinationRoot/dirName folder MUST NOT exist before this operation. This folder will be created. Otherwise strange things will happen to symlinks on Windows. (not tested on linux or darwin)
Symbolic links are great for private modules, but npm should handle it for production release.
To check if you have symbolic links in node_modules, look for little link arrows on the folder icon in file explorer:
This utility will copy any folder, not only node_modules but it was specifically designed to work as a gulp task.
gulp use example
NOTE:
The copy-with-symlinks only copies existing folders form DEV node_modules to BUILD. Run npm install in DEV before, to make sure that your modules are in order.
const gulp = require('gulp');
const copyWithSymlinks = require('copy-with-symlinks');
var dest = 'BUILD';
function cb(){console.log('done.');}
gulp.task('copy-npm-modules', function(cb){
copyWithSymlinks(
'./', // sourceRoot
dest, // destinationRoot
'node_modules', // dirName
{
quiet: false, // print copied files to console
noDevDependencies: true // do not copy devDependencies (form package.json)
},
cb // callback for gulp task
);
});option noDevDependencies looks into package.json file and excludes modules listed in devDependencies
gulp - remove useless files and folders from node_modules
try gulp-dmn
advanced example - one task to copy and purge node_modules
const gulp = require('gulp');
const copyWithSymlinks = require('copy-with-symlinks');
const gulpDmn = require('gulp-dmn');
var dest = 'BUILD';
function cb(){console.log('done.');}
gulp.task('copy-npm-modules', function(cb){
copyWithSymlinks('./', dest, 'node_modules', {quiet: false, noDevDependencies: true}, function(){
gulpDmn(dest, {dryRun: false, list: false}, cb);
});
});requirements
tested on Win7 with NodeJS v8 and gulp v3
todo
This utility is synchronous (slow) for now. (Maybe if future I'll make it async)