A Gulp plugin that runs install commands such as npm install, bower install
gulp-reinstall is a gulp plugin to automatically install npm, bower, tsd, typings,
composer and pip packages/dependencies.
gulp-reinstall runs package install commands based on the files found in a vinyl stream. The filename determines
the command that is run.
The default settings are:
| File Found | Command run |
|---|---|
package.json |
npm install |
bower.json |
bower install |
tsd.json |
tsd reinstall --save |
typings.json |
typings install |
composer.json |
composer install |
requirements.txt |
pip install -r requirements.txt |
It will run the command in the directory it finds the file, so if you have configs nested in a lower
directory than your gulpfile.js, this will still work.
NOTE gulp-reinstall requires at least NodeJS 8.3.
var reinstall = require('gulp-reinstall');gulp.src(['./bower.json', './package.json']).pipe(reinstall());
Type: Object
Default: null
Use this option to add or override the command to be run for a particular filename.
var reinstall = require('gulp-reinstall');gulp.src(__dirname + '/templates/**').pipe(gulp.dest('./')).pipe(reinstall({commands: {'package.json': 'yarn',},yarn: ['install', '--ignore-scripts', '--force'],})); // yarn install --ignore-scripts --force
Type: Boolean
Default: false
Set to true if invocations of npm install and bower install should be appended with the --production parameter.
Example:
var reinstall = require('gulp-reinstall');gulp.src(__dirname + '/templates/**').pipe(gulp.dest('./'))// npm install --production.pipe(reinstall({ production: true }));
Type: Boolean
Default: false
Set to true if invocations of npm install should be appended with the --ignore-scripts parameter. Useful
for skipping postinstall scripts with npm.
Example:
var reinstall = require('gulp-reinstall');gulp.src(__dirname + '/templates/**').pipe(gulp.dest('./'))// npm install --ignore-scripts.pipe(reinstall({ ignoreScripts: true }));
Type: Boolean
Default: false
Set to true if invocations of npm install should be appended with the --no-optional parameter, which will
prevent optional dependencies from being installed.
Example:
var reinstall = require('gulp-reinstall');gulp.src(__dirname + '/templates/**').pipe(gulp.dest('./'))// npm install --no-optional.pipe(reinstall({ noOptional: true }));
Type: Boolean
Default: false
Set to true if invocations of bower install should be appended with the --allow-root parameter.
Example:
var reinstall = require('gulp-reinstall');gulp.src(__dirname + '/templates/**').pipe(gulp.dest('./'))// bower install --allow-root.pipe(reinstall({ allowRoot: true }));
Type: Array | String
Default: undefined
Specify additional arguments that will be passed to all install command(s).
Example:
var reinstall = require('gulp-reinstall');gulp.src(__dirname + '/templates/**').pipe(gulp.dest('./')).pipe(reinstall({args: ['dev', '--no-shrinkwrap'],} // npm install --dev --no-shrinkwrap));
Type: Array | String | Object
Default: null
Use this to specify additional arguments for a particular command.
Example:
var reinstall = require('gulp-reinstall');gulp.src(__dirname + '/templates/**').pipe(gulp.dest('./')).pipe(reinstall({// Either a single argument as a stringnpm: '--production',// Or arguments as an object (transformed using Dargs: https://www.npmjs.com/package/dargs)bower: { allowRoot: true },// Or arguments as an arraypip: ['--target', '.'],}));
This plugin is inspired by gulp-install, and significant parts
of the source code owe a debt to that plugin, although the main plugin logic is largely rewritten.
The gulp-install plugin appears to be no longer maintained, and is dependent on the now-deprecatedgulp-util package. gulp-reinstall removes that dependency, and also reduces the number of package
dependencies to avoid npm audit problems in future.
Contributions are very welcome! The rest of this section describes how to set yourself up for developing gulp-reinstall.
Just clone the repo locally and start hacking. Run npm test to see if stuff broke.
This project follows the Keep a Changelog conventions.
Please use the Angular commit guidelines when
writing commit messages.
(These are mainly notes for the maintainer, if you are contributing you won’t need to worry about this)
The release process is driven by release-it. First you create a draft
GitHub release locally by using release-it, then you publish the release through the GitHub web UI.
To create a draft release:
main branch.npm run release with the options you want, then follow the prompts. The two most useful options are --dry-run--preRelease=alpha (or whatever the pre-release version is). Note that you need to add -- before any release-itExample:
npm run release -- --dry-run --preRelease=alpha
The release-it settings are configured to create a draft release on GitHub. Once the release is published within GitHub,
an automated workflow publishes the package to the npm repository.
Note: in order to run the release process, you need to set up the RELEASEMGMT_GITHUB_API_TOKEN environment variable
on your local computer. This should contain a GitHub PAT with the appropriate permissions - see the
release-it documentation for more details.
Licensed under the MIT License.