Могу ли я написать пакет npm в coffeescript?
Я использовал coffeescript на некоторое время. Теперь мне нужно написать пакет npm, могу ли я написать его в coffeescript, или я должен скомпилировать coffeescript в javascript?
5 ответов:
Я собираюсь предложить вам написать свой пакет в coffeescript, но только опубликовать его в javascript. Я делаю это так:
- код coffeescript входит
src
- код компилируется в
lib
src
стремится к моему git РЕПО,lib
в моем.gitignore
lib
публикуется в npm,src
в моем.npmignore
- the в моем
devDependencies
вы можете взглянуть на простой пакет Мой,refix, для вдохновения:
- https://github.com/linus/refix
npm install refix
вы можете написать модули NPM в coffeescript, но для того, чтобы их могли использовать пользователи JS, они должны быть скомпилированы в JS перед публикацией на NPM.
package.json
делает это легко с ихprepublish
Хук-скрипт, который запускает указанный скрипт перед публикацией. Вот примерprepublish
NPM крюк в зомби.jshttps://github.com/assaf/zombie/blob/master/package.json#L16
Я написал пакеты npm в CoffeeScript с нуля. Я рекомендую вам использовать CoffeScript для узла, а также для браузера. Однако перед использованием или публикацией модуля необходимо скомпилировать исходный код CoffeeScript в JavaScript. Однако это не должно удерживать вас от использования CoffeeScript.
совет: при разработке, использовать
coffee -cw yourfile.coffee
(командная строка) для просмотра изменений в файле и компиляции при сохранении.
хотя я не уверен, что это лучший подход, технически это и можно написать свой пакет в основном в CoffeeScript.
в принципе, вы можете написать JS-файл, который просто обертывает , например:
bin / howl.кофе
console.log 'Awwwooooo!'
bin / howl.js
#!/usr/bin/env node var path = require('path'); var exec = require('child_process').exec; var coffee = path.resolve(__dirname, '../node_modules/coffee-script/bin/coffee'); var howl = path.resolve(__dirname, './howl.coffee'); var command = coffee + ' ' + howl; exec(command, function(error, stdout) { if (error) { throw error }; console.log(stdout); });
под управлением
node howl.js
(или простоhowl
когда он установлен глобально) теперь будет выводитьAwwooooo!
. Вы можете делать вещи какrequire
другие файлы CoffeeScript и аргументы доступа, передавая их из "оболочки" JavaScript в CoffeeScript.в любом случае, могут быть причины не делать этого, но это сработало для меня до сих пор, поэтому я решил представить это для дополнительной перспективы.
для простого примера проекта, использующего эту технику, проверьте https://www.github.com/joshuabc/packdown.
если многие из ваших модулей имеют
coffee-script
в своемdevDependencies
, полезно просто глобально установитьcoffee-script
вместо того, чтобы установить его для каждого модуля (что занимает гораздо больше времени).кофе-построить - это глобальный менеджер версия для
coffee-script
.просто добавьте эти 2 скрипта в свой
package.json
:{ "name": "my-coffee-module", "scripts": { "build": "coffee-build -v 1.11.x -b -o js src", "postinstall": "npm run build" } }
обратите внимание, как
-v 1.11.x
не является точной версией, которая позволяет неявные обновления.единственное падение заключается в том, что пользователи должны
npm install -g coffee-build
прежде чем они смогут установить ваш модуль.