www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

watch.js (2071B)


      1 const path = require('path');
      2 const chokidar = require('chokidar');
      3 const multimatch = require('multimatch');
      4 const { dirs, jsFiles, ignoreMask, copyDirs, symlinkFiles } = require('./config');
      5 const { onSuccess, onError, getSignatures, writeSignatures, cleanUp, formatDirsForMatcher } = require('./utils');
      6 const getJS = require('./js');
      7 const getSass = require('./sass');
      8 const getCopy = require('./copy');
      9 const getSymlinks = require('./symlinks');
     10 
     11 
     12 const ROOT = path.resolve(__dirname, '..');
     13 const source = [
     14 	'chrome',
     15 	'components',
     16 	'defaults',
     17 	'resource',
     18 	'scss',
     19 	'test',
     20 	'styles',
     21 	'translators',
     22 	'scss',
     23 	'chrome/**',
     24 	'components/**',
     25 	'defaults/**',
     26 	'resource/**',
     27 	'scss/**',
     28 	'test/**',
     29 	'styles/**',
     30 	'translators/**',
     31 	'scss/**'
     32 ];
     33 
     34 const symlinks = symlinkFiles
     35 				.concat(dirs.map(d => `${d}/**`))
     36 				.concat([`!${formatDirsForMatcher(dirs)}/**/*.js`])
     37 				.concat([`!${formatDirsForMatcher(copyDirs)}/**`]);
     38 
     39 var signatures;
     40 
     41 process.on('SIGINT', () => {
     42 	writeSignatures(signatures);
     43 	process.exit();
     44 });
     45 
     46 function getWatch() {
     47 	let watcher = chokidar.watch(source, { cwd: ROOT })
     48 	.on('change', async (path) => {
     49 		try {
     50 			if (multimatch(path, jsFiles).length && !multimatch(path, ignoreMask).length) {
     51 				onSuccess(await getJS(path, { ignore: ignoreMask }, signatures));
     52 			} else if (multimatch(path, 'scss/*.scss').length) {
     53 				onSuccess(await getSass(path, {}, signatures));
     54 			} else if (multimatch(path, copyDirs.map(d => `${d}/**`)).length) {
     55 				onSuccess(await getCopy(path, {}, signatures));
     56 			} else if (multimatch(path, symlinks).length) {
     57 				onSuccess(await getSymlinks(path, { nodir: true }, signatures));
     58 			}
     59 			onSuccess(await cleanUp(signatures));
     60 		} catch (err) {
     61 			onError(err);
     62 		}
     63 
     64 	})
     65 	.on('unlink', async () => {
     66 		const signatures = await getSignatures();
     67 		onSuccess(await cleanUp(signatures));
     68 	});
     69 
     70 	watcher.add(source);
     71 	console.log('Watching files for changes...');
     72 }
     73 
     74 module.exports = getWatch;
     75 
     76 if (require.main === module) {
     77 	(async () => {
     78 		signatures = await getSignatures();
     79 		getWatch();
     80 	})();
     81 }