我有一个生活在GitHub上的NPM包。由于它使用现代ES,我将其作为install
脚本的一部分进行分析:
...
"license": "MIT",
"scripts": {
"install": "mkdir -p lib && babel src/index.js -o lib/index.js",
"test": "jest src"
},
"dependencies": {
...
这需要Babel,它位于devDependencies
:
"devDependencies": {
"@babel/cli": "^7.0.0-beta.37",
"@babel/core": "^7.0.0-beta.37",
"@babel/node": "^7.0.0-beta.37",
"@babel/preset-env": "^7.0.0-beta.37"
}
Babel不需要使用该包,只需要构建它。
但是,运行devDependencies
脚本时,NPM不会安装install
。这会导致install
失败:
$ npm install git+ssh://git@github.com:user/repo.git
Error: Couldn't find preset "@babel/preset-env" relative to directory
"/Users/User/Documents/js/test/node_modules/mylib"
...
我可以移动devDependencies
中的dependencies
,但这会使包裹膨胀。
我该如何解决这个问题?
答案 0 :(得分:0)
但是,运行安装脚本时,NPM不会安装devDependencies。
这是不对的。 npm install
将安装dependencies
和devDependencies
。
仅安装dependencies
,您需要在安装时传递--production
。
运行npm install @babel/preset-env --save-dev
重新安装pkg,然后重试。