
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
I wanted a way to build a single javascript module from several source files. Jake/Rake/Make aren't really doing enough for me. Everything else I found that came close was also trying to enforce how that output got used (Ender, Require, etc.).
I built anvil for myself, but I hope others find it useful.
Here's the current feature list:
npm install anvil.js -g
Without a build file, Anvil will make assumptions. Here's the list:
There isn't a wrapper by convention.
{
"source": "src",
"output": "build",
"lint": {},
"uglify": {},
"gzip": {},
"extensions": { "uglify": "min", "gzip": "gz" },
"wrap": {
"prefix": "(function(context) {",
"suffix": "})(this);"
}
}
source is where Anvil expects all your code. Don't get fancy or Anvil can't help you :(
output is where Anvil will write all the build output and temp files. This should NOT be the same as source.
lint specifies that you want your output files run through JSLint before Uglify and Gzip occur.
uglify specifies that you want your output uglified. (happens before gzip)
gzip specifies that you want your output gzipped.
wrap
There's also another option called justCoffee that will cause anvil to maintain all output in coffeescript instead of compiling it to js.
Anvil will build a set of standard project directories for you and even spit out a build.json file based on the conventional use.
anvil -n <projectName>
Will produce a directory structure that looks like this:
-projectName
|-ext
|-src
|-lib
|-spec
build.json
If you don't specify your own build file, anvil assumes you intend to use a build.json file. If one isn't present, it will use its own conventions to build your project. If that's all you need, great! Chances are you'll want a build.json that's configured for your specific project.
Anvil allows you to combine source files by using a commented command Javascript //import("dependency.js");
Coffeescript ###import "dependency.js" ###
When you use Anvil to compile your project, it will traverse all the files in your source directory and combine them so that your top level files are what get output. Warning Currently, Anvil is not clever enough to detect circular import statements and it will break the world if you do this.
To build with a specific build file type
anvil -b <buildfile>
To create a build file, you can just type the following:
anvil -t <buildfile>
and it will create the build file for you. If you don't include the file name, anvil will create a build.json (possibly overwriting your existing one, be careful!)
Anvil will watch your source directory for changes and rebuild the project in the event any changes are saved to the files in the directory.
anvil --ci
Anvil will generate a pavlov test page for your output and host it in express at port :1580. All scripts in the lib and ext folders will be included in this test page. The pavlov, qunit and jquery resources are symlinked into your root directory so that express will load these files correctly.
anvil -p
If you have the source, check out the demo directory. It's intended to play around and test different features out. If you've installed anvil from npm, all you have to do is type:
cd demo
anvil
and watch how anvil builds the demo project.
If you've pulled the repository down, then try this: cd demo ../bin/anvil
If all's well, you should get some console output and the build directory should have three output files.
I suggest testing the --ci and -p arguments here. There's a silly test included in the spec folder to demonstrate the pavlov host.
FAQs
an extensible build system
The npm package anvil.js receives a total of 5 weekly downloads. As such, anvil.js popularity was classified as not popular.
We found that anvil.js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers 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.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.