Могу ли я написать пакет npm в coffeescript?
Я использовал coffeescript на некоторое время. Теперь мне нужно написать пакет npm, могу ли я написать его в coffeescript, или я должен скомпилировать coffeescript в javascript?
5 ответов:
Я собираюсь предложить вам написать свой пакет в coffeescript, но только опубликовать его в javascript. Я делаю это так:
- код coffeescript входит
src- код компилируется в
libsrcстремится к моему git РЕПО,libв моем.gitignorelibпубликуется в npm,srcв моем.npmignore- the в моем
devDependenciesвы можете взглянуть на простой пакет Мой,refix, для вдохновения:
- https://github.com/linus/refix
npm install refix
вы можете написать модули NPM в coffeescript, но для того, чтобы их могли использовать пользователи JS, они должны быть скомпилированы в JS перед публикацией на NPM.
package.jsonделает это легко с ихprepublishХук-скрипт, который запускает указанный скрипт перед публикацией. Вот примерprepublishNPM крюк в зомби.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прежде чем они смогут установить ваш модуль.