Make Sails使用正确的CoffeeScript版本

时间:2017-06-18 17:03:13

标签: node.js coffeescript sails.js

对于我的Sails项目,我需要CoffeeScript 2.x.这就是我所做的:

  • 从我的系统中完全删除了coffeescript
  • npm install coffeescript@next --save

packages.json在我的依赖项中显示以下内容:

"dependencies": {
  "coffeescript": "^2.0.0-beta2",
// ...

当我手动编译控制器时:

node-modules/.bin/coffee -c api/controllers/MyController.coffee

我得到了正确的输出。但是,当我启动Sails(node --inspect app.js)时,我可以在调试器中看到控制器是使用较旧版本的coffeescript编译的。这怎么可能,因为2.0.0-beta2是唯一安装的版本?

如何让Sails使用正确版本的CoffeeScript?

2 个答案:

答案 0 :(得分:0)

拉出我的大部分头发后,我终于得到了一些有效的东西。然而,这不是一个理想的解决方案,所以欢迎更好的想法。

  1. 分叉grunt-contrib-coffee,编辑其package.json以依赖我需要的CoffeeScript版本。
  2. 分叉grunt并进行类似的修改。
  3. 分叉sails并编辑相关分支以更新依赖关系,现在将其指定为github:mssever/gruntgithub:mssever/grunt-contrib-coffee。还有一个直接的coffeescript依赖更新。
  4. 编辑项目package.json以反映上述依赖关系。
  5. 卸载系统范围sails并手动删除myproject/node-modules下的符号链接,否则您将收到难以理解的权限错误。
  6. 最后!运行npm update。如果你需要进一步更新,甚至不要考虑将会发生什么,因为这将是一个真正的头痛。

答案 1 :(得分:0)

如果在全局和sails node_modules目录中将coffeescript链接到coffee-script,也可以使其正常工作。它仍然是一个黑客,但可能会减少工作量。

这里的确切说明是逐步说明:

1)使用npm -g全局安装coffeescript和sails,将它们放在目录/ usr / local / lib / node_modules /

npm install -g coffeescript
npm install -g sails

2)进入安装目录并将coffeescript链接到coffee-script

cd /usr/local/lib/node_modules/coffeescript 
ln -s coffeescript coffee-script

3)进入sails node_modules目录,将coffee-script重命名为其他名称,并将名称链接到全局coffeescript

cd /usr/local/lib/node_modules/sails/node_modules
mv coffee-script coffee-script-old
ln -s /usr/local/lib/node_modules/coffeescript coffee-script

这对我来说似乎很有用,我最终可以在我的coffeescript中使用async / await而不会刮起风帆,但我有兴趣找到正确的解决方案。