关于node.js:如何在节点js中卸载npm模块?

How to uninstall npm modules in node js?

众所周知,任何NPM模块都可以通过运行一个简单的命令来安装:npm install

我已经安装了一些不再使用的模块,我只想把它们卸下来。关于这一点,我有几个问题:

  • 我们是否有从根目录卸载模块的命令或过程(比如npm uninstall )或者仅仅删除模块文件就可以了?

  • 如果我们保留未使用的模块,它将如何影响我们?


命令只是npm uninstall

nodejs文档https://npmjs.org/doc/包含了您需要知道的所有与npm有关的命令。

本地安装将位于应用程序的node_modules/目录中。如果一个模块在没有引用的情况下仍然存在,这不会影响应用程序。

但是,如果要删除全局包,引用它的任何应用程序都将崩溃。

以下是不同的选项:

npm uninstall node_modules中删除模块,而不是从package.json中删除模块。

npm uninstall --save也将其从package.jsondependencies中删除。

npm uninstall --save-dev也将其从package.jsondevDependencies中删除。

npm -g uninstall --save也在全球范围内删除了它。


如果它不适用于npm uninstall ,请在全球范围内键入-g

也许你只需要以超级用户/管理员的身份使用sudo npm uninstall 就可以了。


为了完整地回答这个问题,有两种方法:(例如,我们将已安装的模块称为模块1)

  • 要在不更改package.json的情况下删除module1,请执行以下操作:

    npm uninstall module1

  • 要使用更改package.json删除module1,并将其从package.json中的依赖项中删除,请执行以下操作:

    npm uninstall --save module1

  • 注意:为了简化上述命令,可以使用-s而不是--save,也可以使用remove、rm、r、un、unlink而不是uninstall。


    我只是默认地在home目录下安装触控笔,所以我只是使用npm uninstall stylus将其分离,或者您可以尝试使用npm rm


    要卸载节点模块:

    1
    npm uninstall <module_name>

    这将从node_模块中删除模块,但不会从package.json中删除。所以当我们再次安装NPM时,它将下载模块。

    因此,要从package.json中删除模块,请使用:

    1
    npm uninstall <module_name> --save

    这也会从package.json中删除依赖项。

    如果要卸载任何全局模块,可以使用:

    1
    npm -g uninstall <module_name> --save

    这将全局删除依赖项。


    我发现这很难,即使它看起来很明显。

    我最初尝试通过脚本中的简单for循环来遍历运行npm uninstall module-name的node_modules目录。我发现如果你调用完整路径,它将不起作用,例如

    1
    npm uninstall module-name

    在工作,但是

    1
    npm uninstall /full/path/to/node_modules/module-name

    不工作。


    对于Windows用户-如果要一次删除所有安装的节点模块:

    • 开式动力壳
    • 进入node_modules文件夹(cd node_modules)
    • 运行此命令-"NPM uninstall(get childitem).name"

    它将卸载所有模块。


    要批量删除node_modules/中的包,您还可以从package.json中删除它们,保存它,然后在终端上运行npm prune

    这将删除文件系统中存在但未使用/声明的那些包package.json

    p.s>这在Windows上特别有用,因为您经常会遇到由于"超过路径长度限制"而无法删除某些文件的问题。


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # login as root (might be required depending on install)
    su -
    # list all global packages
    npm ls -g --depth=0
    # list all local (project) packages
    npm ls -p --depth=0
    # remove all global packages
    npm ls -g --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
    # remove all local packges
    npm ls -p --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -p rm

    # NOTE (optional): to use node with sudo you can add the bins to /usr/bin
    # NOTE $PATHTONODEINSTALL is where node is installed (e.g. /usr/local/node)
    sudo ln -s $PATHTONODEINSTALL/bin/node /usr/bin/node
    sudo ln -s $PATHTONODEINSTALL/bin/npm /usr/bin/npm


    使用npm uninstall --save卸载一个包并删除它在package.json中的条目。

    如果该包是在全球添加的,npm uninstall -g --save将卸载该包。


    当我试图对安装时使用的命令(正如我使用@latest指令安装时)使用相同的命令时,uninstall选项对我不起作用。

    例如,我安装了这样的软件包:

    1
    npm install  @ngtools/webpack@latest

    然后我想卸载它,所以我使用了相同的命令(包括@latest)

    1
    npm uninstall  @ngtools/webpack@latest

    所以上面的卸载不起作用,我必须删除@latest,然后才能正常工作。

    1
    npm uninstall  @ngtools/webpack

    我希望这有帮助


    有时,npm uninstall -g packageName不起作用。

    在这种情况下,您可以手动删除包。

    在Mac上,转到文件夹/usr/local/lib/node_modules,然后删除包含所需包的文件夹。就是这样。使用此命令npm list -g --depth=0检查全局安装的软件包列表。


    要使用NPM卸载模块,可以使用:

    1
    npm uninstall moduleName

    此外,如果要卸载并希望更改反映在package.json中,那么可以使用--save标志,如下所示:

    1
    2
    3
    npm uninstall moduleName --save
    OR
    npm uninstall -S

    如果您想从devdependencies中卸载一个模块,并希望更改反映在package.json中,那么您可以使用-d标志,如下所示:

    1
    npm uninstall moduleName -D

    您还可以用速记方式运行以下内容:

    npm un packageNamenpm rm packageName

    注意:在命令末尾添加-g以卸载全局包。


    另外,如果您已经开始使用yarn,而不是npmyarn remove

    相当于:npm uninstall --save

    本遗嘱-从package.json中取出包装,以及-从项目的node-modules文件夹中卸载它


    卸载node module的命令:

    1
    npm uninstall <module_name>

    这将从本地node-module目录中卸载模块,这不会影响应用程序。

    但是,如果您引用了全局范围或希望更改package.json中的依赖项

    这里有一些不同的选择

    npm uninstall --savepackage.json中的dependencies中删除模块。

    npm uninstall --save-devpackage.json中的devDependencies中取出模块。

    npm uninstall -g --save用于全局删除模块。

    带所有选项的完整文档,请参阅NPM卸载


    使用

    1
    npm uninstall <package_name>

    卸载Express的示例

    1
    npm uninstall express

    如果您不需要在项目中使用包,可以将其卸载并从项目的依赖项中删除。

    要卸载任何本地包,请使用以下命令:

    1
    npm uninstall <package_name>

    要卸载任何全局包,请使用以下命令:

    1
    npm uninstall -g <package_name>

    要确认NPM卸载已成功运行,请检查node_modules目录不再包含已卸载包的目录。


    最简单的解决方案是:

    1
    npm uninstall packageName --save-dev

    请参见项目中的上层包名称:

    1
    npm list --depth=0

    输出如下:

    1
    2
    3
    [email protected] /home/jackkobec/projects/myAppName
    ├── packageName@packageVersion
    ├── [email protected]

    复制包名称并执行NPM卸载命令。快速包裹示例:

    1
    npm uninstall express --save-dev


    更新NPM 5:

    从NPM 5.0.0开始,默认情况下,作为依赖项添加/删除已安装/卸载的模块,因此不再需要--save选项。

    运行

    1
    npm uninstall <package>

    例如:

    1
    npm uninstall mongodb

    它还将从node_modules文件夹和package.json文件中删除模块。


    如果要卸载多个模块,只需运行npm uninstall。然后转到package.json,从中删除不需要的模块,然后运行命令npm install。它应该能解决你的问题。