1
0
Fork 0

Add option to disable the lock file

When the `lock` option is set to false, composer will not write a
`composer.lock` file to disk. This signals that the package is meant
to be developed with unlocked and always updated dependencies. At the
moment, both `install` and `update` are allowed to install the
dependencies for such a package. If #6822 is implemented, only `update`
should be used for packages without a lockfile.

https://github.com/composer/composer/issues/8354
pull/8384/head
Arnout Boks 2019-10-19 21:46:29 +02:00
parent f753c15664
commit 7c5e5e3ede
5 changed files with 16 additions and 1 deletions

View File

@ -296,4 +296,9 @@ Example:
Defaults to `true`. If set to `false`, Composer will not create `.htaccess` files Defaults to `true`. If set to `false`, Composer will not create `.htaccess` files
in the composer home, cache, and data directories. in the composer home, cache, and data directories.
## lock
Defaults to `true`. If set to `false`, Composer will not create a `composer.lock`
file.
← [Repositories](05-repositories.md) | [Community](07-community.md) → ← [Repositories](05-repositories.md) | [Community](07-community.md) →

View File

@ -290,6 +290,10 @@
"sort-packages": { "sort-packages": {
"type": "boolean", "type": "boolean",
"description": "Defaults to false. If set to true, Composer will sort packages when adding/updating a new dependency." "description": "Defaults to false. If set to true, Composer will sort packages when adding/updating a new dependency."
},
"lock": {
"type": "boolean",
"description": "Defaults to true. If set to false, Composer will not create a composer.lock file."
} }
} }
}, },

View File

@ -412,6 +412,7 @@ EOT
), ),
'github-expose-hostname' => array($booleanValidator, $booleanNormalizer), 'github-expose-hostname' => array($booleanValidator, $booleanNormalizer),
'htaccess-protect' => array($booleanValidator, $booleanNormalizer), 'htaccess-protect' => array($booleanValidator, $booleanNormalizer),
'lock' => array($booleanValidator, $booleanNormalizer),
); );
$multiConfigValues = array( $multiConfigValues = array(
'github-protocols' => array( 'github-protocols' => array(

View File

@ -63,6 +63,7 @@ class Config
'archive-dir' => '.', 'archive-dir' => '.',
'htaccess-protect' => true, 'htaccess-protect' => true,
'use-github-api' => true, 'use-github-api' => true,
'lock' => true,
// valid keys without defaults (auth config stuff): // valid keys without defaults (auth config stuff):
// bitbucket-oauth // bitbucket-oauth
// github-oauth // github-oauth
@ -329,6 +330,8 @@ class Config
return $this->config[$key] !== 'false' && (bool) $this->config[$key]; return $this->config[$key] !== 'false' && (bool) $this->config[$key];
case 'use-github-api': case 'use-github-api':
return $this->config[$key] !== 'false' && (bool) $this->config[$key]; return $this->config[$key] !== 'false' && (bool) $this->config[$key];
case 'lock':
return $this->config[$key] !== 'false' && (bool) $this->config[$key];
default: default:
if (!isset($this->config[$key])) { if (!isset($this->config[$key])) {
return null; return null;

View File

@ -118,7 +118,7 @@ class Installer
protected $preferStable = false; protected $preferStable = false;
protected $preferLowest = false; protected $preferLowest = false;
protected $skipSuggest = false; protected $skipSuggest = false;
protected $writeLock = true; protected $writeLock;
protected $executeOperations = true; protected $executeOperations = true;
/** /**
@ -164,6 +164,8 @@ class Installer
$this->installationManager = $installationManager; $this->installationManager = $installationManager;
$this->eventDispatcher = $eventDispatcher; $this->eventDispatcher = $eventDispatcher;
$this->autoloadGenerator = $autoloadGenerator; $this->autoloadGenerator = $autoloadGenerator;
$this->writeLock = $config->get('lock');
} }
/** /**