Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/davidmfoley/node-trucker
import-aware file management and dependency analysis for javascript
https://github.com/davidmfoley/node-trucker
analysis dependencies graphviz nodejs
Last synced: 4 months ago
JSON representation
import-aware file management and dependency analysis for javascript
- Host: GitHub
- URL: https://github.com/davidmfoley/node-trucker
- Owner: davidmfoley
- Created: 2013-12-29T17:46:44.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2023-02-03T22:30:54.000Z (almost 2 years ago)
- Last Synced: 2024-07-06T06:47:26.091Z (5 months ago)
- Topics: analysis, dependencies, graphviz, nodejs
- Language: TypeScript
- Homepage:
- Size: 603 KB
- Stars: 100
- Watchers: 6
- Forks: 7
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![NPM Version](https://img.shields.io/npm/v/trucker.svg)](https://www.npmjs.com/package/trucker)
# truckerTrucker is a tool that helps manage dependencies between javascript files
It has three main functions:
1. Show all inbound and outbound dependencies for javascript and coffeescript source files. (```trucker --info filename.js``` or ```trucker -i filename.js```)
1. Move/rename source files while fixing up the paths used in requires. (```trucker --move source destination``` or ```trucker -m source destination```)
1. Find unused files (files that are not required by any other files). (```trucker --unused``` or ```trucker -u```)
Why is it called trucker? Because it hauls your files around without breaking them.
# Support
## Languages
* Javascript, as parsed by babel (up to ES7)
* Coffeescript
* Typescript
## Module systems
* CommonJS 6 - i.e. ```module.exports``` and ```require()```.
* ECMAScript 6 - i.e. ```export``` and ```import```.
* TypeScript - i.e. ```export``` and ```import```.
# Installation
```npm install -g trucker```
Trucker runs on node.js 10 or greater.
# Usage
### Move files
To move files:
```trucker --move [flags] source [additional sources...] destination```
### Get dependency info about files
To get info about files:
```trucker --info [optional file paths]```
If no paths are passed, trucker will spit out information for all files in the `base` path (see options below).
### Build a graph of dependencies using graphviz
(experimental)To get info about files:
```trucker --info --format dot [optional file paths]```
This will output a [graphviz](http://www.graphviz.org/)-compatible dot file that can be rendered into an image file by the `dot` tool that is part of graphviz.
For example:
```
trucker -i -f dot > ./build/dependencies.dot
dot -Tpng -o ./build/dependencies.png ./build/dependencies.dot
open ./build/dependencies.png
```Here's a graph of trucker's internal structure, generated by the following command:
```
dot -Tsvg -o ./trucker-graph.svg <(trucker --exclude test --exclude examples --info --format dot)
```![Trucker Graph](./trucker-graph.svg)
### Find unused files
Find files that are not required by any other source files in given path
```trucker --unused [path]```
## Examples
in the examples directory (provided), you can try the following (add ```-n``` for dry run mode if desired):
- Get info about all dependencies in the current directory and all sub directories
```trucker --info```- Get dependencies for just one subdirectory
```trucker -i stark/```- Move a single file:
```trucker --move stark/eddard.js deceased/```- Move a single file, specifying destination path:
```trucker -m stark/eddard.js deceased/ned.js```- Move multiple files explicitly
```trucker -m stark/eddard.js tully/catelyn.js deceased/```- Move a directory:
```trucker -m stark deceased/stark```- Paths are automatically created:
```trucker -m stark/eddard.js deceased/in/book1/```## Options
```-h, --help``` prints the help```-n, --dry-run``` tells trucker not to move any files, but to instead print out a list of all of the changes that would have been made if this option was not set.
```-s, --scope``` can be used to expand or contract the set of files that trucker searches for dependencies. This defaults to the present working directory. If you have a very large project you may wish to constrain the scope for performance reasons (analysis takes time), or in some cases you may wish to expand the scope beyond the current directory. Use ```--scope``` for this.
```-q, --quiet``` suppress output
```-e, --exclude``` Add file glob pattern to ignore to those found in the `.gitignore` file. Repeat this options to add many patterns.
# Ignored files
Trucker ignores files using the first .gitignore it finds, starting from the base directory (usually cwd), and ascending to the root.
See too the `--exclude` option above.
# Limitations
## Tested on OSX
Should also work on other platforms. Let me know if you have a problem.
## require syntax
Trucker only recognizes basic require syntax.
Trucker doesn't recognize this, for example:
```javascript
var x = '../foo/bar';
var y = require(x);
```