Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Automatic conversion using init does not take into account $npm_package #226

@ben-eb

Description

@ben-eb
  • nps version: 5.10.0
  • node version: 12.16.1
  • npm version: 6.13.4

Scripts file (or at least the relevant bits):

module.exports = {
  scripts: {
    build: 'eleventy --input src --output dst',
    develop: '$npm_package_scripts_build --serve',
    test: 'echo "Error: no test specified" && exit 1'
  }
};

The command executed:

nps develop

The output:

nps is executing `develop` : $npm_package_scripts_build --serve
/bin/sh: --serve: command not found
The script called "develop" which runs "$npm_package_scripts_build --serve" failed with exit code 127 https://github.com/sezna/nps/blob/master/other/ERRORS_AND_WARNINGS.md#failed-with-exit-code

Problem description:

npm allows templating in values from package.json; a script like $npm_package_scripts_build --serve would be expanded out to eleventy --input src --output dst --serve (given a build script of eleventy --input src --output dst). As nps init blows away the existing scripts, even if this variable were templated in it would not be valid.

Suggested solution:

Perhaps it could be enough to throw on init if one of these variables are found, since automatic conversion is not necessarily what you want. For instance, you could have a script like this:

{
  "scripts": {
    "version": "echo Current version: v$npm_package_version"
  }
}

Capturing the version as a static value into your package-scripts.js on nps init is not equivalent here. 🙂

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions