
Product
Rust Support Now in Beta
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
quilk, an easy to understand client side file builder from in-built CommonJS modules for es6, es5, SASS, LESS, rsync and a whole bunch more
Table of Contents generated with DocToc
https://johndcarmichael.github.io/quilk/
1 - Install, npm install quilk --save-dev
then add to your package.json file's script block:
...
"scripts": {
...
"quilk": "quilk -- d=yourdevelopername"
...
},
...
2 - Add your quilk.js(on) file, either vua npm run quilk init
or build your own (see the example below).
3 - Run your quilk build file with any of the following options npm run quilk
runs the default user from the quilk file, or specify the user npm run quilk developer=john
and lastly add a watch flag to re-run the modules after files change
In brief (see the example quilk file before), quilk is a lightweight standardised module runner. Pre-baked modules in quilk can do the following:
Watch a file base and trigger modules on file changes via chokidar, modules include:
quilk.js
will simply sync files from your project to a server. Adding the watch flag will sync the changes files.
module.exports = {
// The modules this quilk file should run
modules: [
{
name: 'Rsync it',
module: 'rsync',
ignore: {
windows: [],
mac: [],
linux: [],
global: [
'.env',
'.git/*',
'node_modules'
]
}
}
],
// Watcher don't run the modules when files change here...
dont_watch: [
'.git/',
'node_modules',
'vendor',
],
// Tell the watcher which project relatives to watch, if not set defaults to the project base
watch_only: [
'/src',
],
// Injections chokidar_options to chokidar
chokidar_options: {
atomic: 50,
depth: 120
},
// The developers own custom settings
developers: {
default: {
platform: 'linux',
notifier: {
on: false
},
rsync: {
// The settings below would result in a command:
// rsync -avz --delete -e 'ssh -J john@myjump:666' ./ www-data@myserver:/var/www/project-x/
e: 'ssh -J john@myjump:666',
localPath: './',
remote: 'www-data@myserver',
serverPath: '/var/www/project-x/'
}
},
}
}
quilk.js
:
module.exports = {
// The modules this quilk file should run
modules: [
{
name: '(custom project specific module) Preapre the js config files based on the .env file',
module: 'prepareJSConfigFiles'
},
{
name: 'App file',
module: 'babelify',
configure: {
babelrc: '.babelrc'
},
extensions: ['.js'],
debug: true,
entries: 'resources/assets/js/app.js',
target: '/public/js/app.js'
},
{
name: 'App CSS',
module: 'sass_std',
outputStyle: 'expanded',
sourceComments: true,
input_path: 'resources/assets/sass/app.scss',
target: '/public/css/app.css'
},
{
name: 'Rsync it',
module: 'rsync',
set: [ /* Additional rsync options to be passed */
'--copy-links',
'--quiet'
],
ignore: {
windows: [
/* Working on windows for a unix production env makes little sense, as such often certain files should not be synced */
'vendor'
],
mac: [],
linux: [],
global: [
'.git/*',
'.idea/*',
'storage/app/*',
'storage/logs/*',
'node_modules'
]
}
}
],
// The projects custom quilk modules location
custom_module_path: 'quilk_modules',
// Watcher don't run the modules when files change here...
dont_watch: [
'.git/',
'node_modules',
'vendor',
'public/css',
'public/fonts',
'public/js'
],
// The watcher options. See https://www.npmjs.com/package/chokidar for all the settings available
chokidar_options: {
awaitWriteFinish: false
},
// Stop the watcher being triggered multiple times by other watchers, this grace time defaults to 500.
watcher_wait_between_changes: 500,
// Additional modules to run for live or staging, eg node_minify for js and css
release_commands_or_modules: {
prod: {
post: [{
name: 'minify the vendor js',
module: 'node_minify',
type: 'uglifyjs',
input: ['/public/js/app.js'],
target: '/public/js/app.js'
}, {
name: 'minify the css',
module: 'node_minify',
type: 'sqwish',
input: ['/public/css/app.css'],
target: '/public/css/app.css'
}]
}
},
// The developers own custom settings
developers: {
default: {
platform: 'windows',
notifier: {
on: false,
style: 'WindowsBalloon',
time: 5000,
sound: true
}
},
john: {
platform: 'windows',
notifier: {
on: false
},
chokidar_options: {
awaitWriteFinish: true,
atomic: 50
},
rsync: {
localPath: './',
remote: 'www-data@myserver',
serverPath: '/var/www/vhosts/project-x/'
}
}
}
}
watcher_wait_between_changes
flag if you're getting collisions..babelrc
file when using any of babel
modules as mentioned abovewatch
flag will rebuild even when it sees a new built file, to prevent this you can tell the watch to not watch specific paths (this is added a regex pattern internally to chokidar)FAQs
quilk, an easy to understand client side file builder from in-built CommonJS modules for es6, es5, SASS, LESS, rsync and a whole bunch more
We found that quilk demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.