我目前正在开发一个NPM软件包,它启动了一个用于托管图像的快速服务器。它存在于Laravel项目中的目录中。
目前这仍处于开发阶段,我希望将其开发成可发布模块,因此我在Laravel项目中为此软件包添加了一个.gitignore。
在我的NPM包中,我运行了npm link
,在我的Laravel项目中,我运行了npm link imageserver
, imageserver 是我的包的名称。这确保了我可以开发我的软件包而无需经常发布和使用NPM进行新的更改。
我现在可以使用require()
语句要求我的JavaScript中的包,但我只是想通过npm脚本运行这个包的快速服务器。
在 imageserver 包中,我设置了package.json
包含此内容:
"scripts": {
"start": "nodemon app.js"
}
如何在我链接的包上调用npm run start
脚本?
在我的Laravel项目中,我只想启动我的链接服务器包:
"scripts": {
"start": "imageserver"
}
但是在这种情况下我得到了:
imageserver:not found
通常,如果NPM脚本安装在node_modules
目录中,则可以正常运行包。这不是链接包的情况吗?
修改
我在bin
文件中添加了package.json
属性,使其可执行,并将其添加到我的全局路径中。至少这样我可以从我的NPM脚本中调用imageserver
并且它可以工作。现在我收到了许可错误:
//: Permission denied
/home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: 2: /home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: global.__base: not found
/home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: 4: /home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: //: Permission denied
/home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: 5: /home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: Syntax error: "(" unexpected
答案 0 :(得分:0)
我在我的imageserver
包可执行文件中制作了我的主要JavaScript文件并添加了一个shebang:
在我的目录中。
chmod +x filename.sh
在我的档案中。
#!/usr/bin/env node
我package.json
包的imageserver
现在有了这个:
"bin": "app.js",
当我运行npm link
时,它将imageserver
作为可执行文件添加到我的路径中,我可以将其作为第三方软件包从需要它的项目的scripts
部分执行。
它现在有效,它目前还没有被nodemon控制,我只需要弄清楚如何再次使用它。