Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/plotdb/fedep
Frontend dependency installer
https://github.com/plotdb/fedep
dependency frontend
Last synced: about 2 months ago
JSON representation
Frontend dependency installer
- Host: GitHub
- URL: https://github.com/plotdb/fedep
- Owner: plotdb
- Created: 2020-09-20T10:40:54.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-03-12T17:55:25.000Z (10 months ago)
- Last Synced: 2024-10-28T15:56:53.048Z (about 2 months ago)
- Topics: dependency, frontend
- Language: JavaScript
- Homepage:
- Size: 280 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# fedep
Frontend dependency installer. copy frontend modules to desired directory, with additional configurations in package.json:
"scripts": {
...
"postinstall": "./node_modules/.bin/fedep"
},
"frontendDependencies": {
"root": "web/static/assets/lib",
"modules": [ "ldLazy" ]
}by executing `npx fedep` or invoking via postinstall when `npm i`, `fedep` will do:
- lookup package with given name in `node_modules` folder.
- once found, copy content to `//` from folders of give source packages in following priority:
- `` folder if `dir` option is given ( see below ).
- `dist` folder if `` is omitted, `dist` exists and `--use-dist` option is set to true.
- otherwise, the whole package is copied.
- build a symbolic link from to /main/Once configuration is prepared, run:
npx fedep
for a quick setup of `frontendDependencies` field, run:
npx fedep init
you still have to update its fields according to what you need.
Additionally, you can also use local repo for a specific module:
npx fedep -l :
Use semi comma `;` to separate multiple pairs of local repos:
npx fedep -l "mod1:path-to-mod1;mod2:path-to-mod2;mod3:path-to-mod3"
## Modules Format
you can use either string or object to list modules to be used. e.g.,
["ldLazy", ..., {name: "ldview"}, ...]
If object is used, it contains following fields:
- `name`: module name
- `browserify`: true/object if browserify this module.
- if it's an object, the object will be passed to browserify as it's option object.
- `dir`: subdir to copy in this module. default the whole module, if not specified
- `link`: set true to use symlink instead of copying. default false.
- always false if `browserify` is set to true.
- `transpile`: add this object if you need to transpile module file, which contains following fields:
- `files`: a list of file to transpile.
- `optional`: default false. if true, ignore this entry if it can't be found, even if it's not in `optionalDependencies`.## Publish
Use `npx fedep publish` to publish based on `dist` folder along with core files such as `package.json`. For example, say you have following directory structure:
- dist
- index.js
- README.md
- CHANGELOG.md
- package.json
- LICENSE`npx fedep publish` merge above content into `.fedep/publish` as below:
- .fedep/publish
- index.js
- README.md
- CHANGELOG.md
- package.json
- LICENSEand trigger `npm publish --access public .fedep/publish`. Additionally, `npx fedep publish` also alters copied `package.json` with following changes to reflect the change of the directory structure:
- `files` field removed
- file path in following fields are converted from relative to `root` to relative to `dist`:
- `style`, `browser`, `module`, `main`, `unpkg``publish` command also publish files listed in `files` field, with their original directory structure, except `dist` folder. `dist` is by default removed with its content moved to root. To keep `dist` folder, use `--dup true` option:
npx fedep publish --dup true
You can also use a different dist folder by `folder` option:
npx fedep publish --folder another-dist
## Alternatives
see also:
- frontend-dependencies - https://github.com/msurdi/frontend-dependencies
- pancake - https://github.com/govau/pancake## TODO
add test.
## License
MIT