![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
node-module-concat
Advanced tools
Fairly lightweight CommonJS module concatenation tool
This library exposes a single function and stream API that concatenates CommonJS modules within a project. This can be used to obfuscate an entire project into a single file. It can also be used to write client-side JavaScript code where each file is written just like a Node.js module.
Because projects like Webpack and Browserify are cool, but they are a little heavy for my taste. I just wanted something to compile CommonJS modules into a single JavaScript file. This project has one dependency: resolve
npm install node-module-concat
var modConcat = require("node-module-concat");
var outputFile = "./project/concatenated.js";
modConcat("./project/index.js", outputFile, function(err, stats) {
if(err) throw err;
console.log(stats.files.length + " were combined into " + outputFile);
});
var modConcat = require("node-module-concat");
var stream = new modConcat.ModuleConcatStream(entryModulePath [, options])
Constructs a Readable Stream of the concatenated project.
entryModulePath
- the path to the entry point of the project to be
concatenated. This might be an index.js
file, for example.options
- object to specify any of the following options:
outputPath
- the path where the concatenated project file will be
written. Provide this whenever possible to ensure that instances
of __dirname
and __filename
are replaced properly. If
__dirname
and __filename
are not used in your project or your
project dependencies, it is not necessary to provide this path. This
has no effect when the browser
option is set.
excludeFiles
- An Array of files that should be excluded from the
project even if they were referenced by a require(...)
.
Note: These require
statements should probably be wrapped with a
conditional or a try/catch block to prevent uncaught exceptions.
excludeNodeModules
- (boolean or Array) Set to true
if all modules
loaded from node_modules
folders should be excluded from the project.
Alternatively, set to an Array of module names to be excluded from the
project.
For example, require("foobar")
will not be replaced if
excludeNodeModules
is set to an Array containing "foobar"
or if
excludeNodeModules
is set to true
.
extensions
- An Array of extensions that will be appended to the
required module path to search for the module in the file system.
Defaults to [".js", ".json"]
.
For example, require("./foo")
will search for:
./foo
./foo.js
./foo.json
in that order, relative to the file containing the require statement.Another example, require("./foo.js")
will search for:
./foo.js
./foo.js.js
./foo.js.json
Note: ".node" file extensions are considered to be native C/C++ addons and are always excluded from the build.
compilers
- An Object describing how files with certain file extensions
should be compiled to JavaScript before being included in the project.
The example below will allow node-module-concat to handle require
statements pointing to *.coffee files (i.e. require("./foo.coffee")
).
These modules are compiled using the coffee-script compiler before
they are included in the project.
{
".coffee": (src, options) => require("coffee-script").compile(src)
}
options
are passed along to the compiler function, as shown above.
Note: By default, ".json" files are prepended with
module.exports =
. This behavior can be overwritten by explicitly
specifying the ".json" key in the compilers
Object.
Note: By default, the file extensions specified in compilers
are
not added to the extensions
option, so require("./foo")
will not
find ./foo.coffee
unless ".coffee" is explicitly added to extensions
(see above).
browser
- Set to true
when concatenating this project for the
browser. In this case, whenever a required library is loaded from
node_modules
, the browser
field in the package.json
file (if
found) is used to determine which file to actually include in the
project.
allowUnresolvedModules
- Set to true
to prevent unresolved modules
from throwing an Error; instead, the require(...)
expression will not
be replaced, and the unresolved module will be added to
stats.unresolvedModules
(see below). Defaults to false
.
Any [option supported by resolve.sync]
(https://github.com/substack/node-resolve#resolvesyncid-opts) except
basedir
and packageFilter
, which can be overwritten.
Any [option supported by the Readable class] (https://nodejs.org/api/stream.html#stream_new_stream_readable_options)
stream.getStats()
Returns an Object containing statistics about the files included in the project. This object is available after the 'end' event is fired and there is no more data to consume. Properties include:
files
- An Array of files included in the projectaddonsExcluded
- An Array of files excluded from the project because
they are native C/C++ add-ons.unresolvedModules
- An Array of modules that could not be included in the
project because they could not be found. Each element in the Array is an
Object containing these properties:
parent
- the full path of the file containing the require expressionmodule
- the name or path to the module that could not be foundmodConcat(entryModule, outputPath, [options, cb])
Helper function that constructs a new ModuleConcatStream
(see above) with
the following options and pipes the concatenated project to the outputPath
.
entryModule
- the path to the entry point of the project to be
concatenated. This might be an index.js
file, for example.outputFile
- the path where the concatenated project file will be
written.options
- See options
for ModuleConcatStream
above.cb
- Callback of the form cb(err, stats)
. If no callback is provided,
a Promise is returned instead, which resolves to the stats
Object returned
by stream.getStats()
(see above).require()
statements don't work
(i.e. require("./" + variable)
)require.resolve
calls are not modifiedrequire.cache
statements are not modifiedFAQs
Lightweight CommonJS module concatenation tool
The npm package node-module-concat receives a total of 49 weekly downloads. As such, node-module-concat popularity was classified as not popular.
We found that node-module-concat 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.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.