重新安装DevDependences中列出的程序包后,npm脚本不起作用
我一直在使用npm脚本为前端开发人员开发一个构建系统,在重新安装DevDependences中列出的程序包后,npm脚本不起作用,npm,npm-install,package.json,npm-scripts,Npm,Npm Install,Package.json,Npm Scripts,我一直在使用npm脚本为前端开发人员开发一个构建系统,在package.json的scripts部分定义了几个任务。这些包括典型的任务,例如:缩小css、代码过滤、生成文档、传输JavaScript……等等 定义的所有脚本任务都通过CLI执行命令来实现预期结果,例如$npm run build,$npm run docs,$npm run watch 为了测试在重新安装所需的节点包后构建系统是否可以成功复制,我执行以下操作: 制作项目目录的副本 从复制的项目目录中删除节点\u模块文件夹 通过$n
package.json
的scripts
部分定义了几个任务。这些包括典型的任务,例如:缩小css、代码过滤、生成文档、传输JavaScript……等等
定义的所有脚本任务都通过CLI执行命令来实现预期结果,例如$npm run build
,$npm run docs
,$npm run watch
为了测试在重新安装所需的节点包后构建系统是否可以成功复制,我执行以下操作:
节点\u模块
文件夹$npm install
在复制的项目目录中执行新安装package.json
的devDependencies
部分中列出的内容下载所需的节点包
但是,在运行新的npm安装后
定义的一些脚本任务,例如:$npm run watch
不再从复制的项目中成功运行
进一步调查显示,重复项目目录(即新安装后的目录)的“node_modules”文件夹中列出的顶级软件包数量比成功运行任务的原始项目目录少约30个。缺少的包似乎都是我安装的包所依赖的子依赖项
此外,当通过CLI在原始项目目录和复制项目目录(即新安装的目录)中运行$npm list
时,列出的软件包有所不同
因此,我现在的处境是,如果不包含节点_modules
文件夹(及其内容),我就无法共享项目目录。理想情况下,我希望与其他开发人员共享样板代码,他们只需将cd
放到项目目录中,自己运行$npm install
如果您能就如何解决这个问题提出建议,我将不胜感激。这不是我以前遇到过的
提前感谢。我猜您在
包.json中松散地指定了您的版本范围(带有^
、~
或*
)。您的原始目录包含过时的版本。在新目录中运行npm install
时,将安装更高(且不兼容)的版本(具有不同的依赖项)
要进行验证,请转到原始目录并运行npm-outleted
。这将为您提供所有过时依赖项的列表,以及安装的当前版本、包.json中版本范围允许的最新版本以及包的最新版本号。像这样:
$ npm outdated
Package Current Wanted Latest Location
eslint 1.10.3 1.10.3 3.9.1 postcss-import
eslint-config-i-am-meticulous 2.0.0 2.0.0 5.0.2 postcss-import
pkg-resolve 0.1.14 0.1.14 0.2.2 postcss-import
postcss-scss 0.1.9 0.1.9 0.4.0 postcss-import
如果当前
和想要的
版本号有任何不同,则在新目录中重新安装将导致安装不同的版本
大多数npm包使用。除非您在包.json
中使用*
作为版本号,否则大部分情况下您都不会破坏更改。然而,包作者是人类,有时他们会搞乱semver。还有一些npm包不遵循semver。这些软件包要么不应使用,要么应固定其版本号
如果您发布您的包.json的devDependencies
部分,可能会有所帮助。我猜您的包.json
(带有^
,~
或*
)中对您的版本范围进行了松散的指定。您的原始目录包含过时的版本。在新目录中运行npm install
时,将安装更高(且不兼容)的版本(具有不同的依赖项)
要进行验证,请转到原始目录并运行npm-outleted
。这将为您提供所有过时依赖项的列表,以及安装的当前版本、包.json中版本范围允许的最新版本以及包的最新版本号。像这样:
$ npm outdated
Package Current Wanted Latest Location
eslint 1.10.3 1.10.3 3.9.1 postcss-import
eslint-config-i-am-meticulous 2.0.0 2.0.0 5.0.2 postcss-import
pkg-resolve 0.1.14 0.1.14 0.2.2 postcss-import
postcss-scss 0.1.9 0.1.9 0.4.0 postcss-import
如果当前
和想要的
版本号有任何不同,则在新目录中重新安装将导致安装不同的版本
大多数npm包使用。除非您在包.json
中使用*
作为版本号,否则大部分情况下您都不会破坏更改。然而,包作者是人类,有时他们会搞乱semver。还有一些npm包不遵循semver。这些软件包要么不应使用,要么应固定其版本号
如果您发布package.json
的devDependencies
部分,可能会有所帮助