如何使用npm链接启动快速服务器包?

时间:2018-05-26 14:10:21

标签: node.js npm node-modules npm-scripts

我目前正在开发一个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

1 个答案:

答案 0 :(得分:0)

我在我的imageserver包可执行文件中制作了我的主要JavaScript文件并添加了一个shebang:

在我的目录中。

chmod +x filename.sh

在我的档案中。

#!/usr/bin/env node

package.json包的imageserver现在有了这个:

"bin": "app.js",

当我运行npm link时,它将imageserver作为可执行文件添加到我的路径中,我可以将其作为第三方软件包从需要它的项目的scripts部分执行。

它现在有效,它目前还没有被nodemon控制,我只需要弄清楚如何再次使用它。