Skip to content

Instantly share code, notes, and snippets.

@sanemat
Last active November 7, 2015 09:08
Show Gist options
  • Save sanemat/86f424e63c3389ed0f89 to your computer and use it in GitHub Desktop.
Save sanemat/86f424e63c3389ed0f89 to your computer and use it in GitHub Desktop.
be friendly with windows users
node_modules

Be Friendly with Windows users

42% of @nodejs users use Windows as their desktop env. More than any single *nix. If you want devs using your code, this matters. - Isaac Z. Schlueter 2:34 AM - 4 Nov 2015

https://twitter.com/izs/status/661597221763203072

npm 自体がまだwindowsで全部のテストを通そうとしている段階、でもがんばる - Kat Marchán 東京node学園祭2015 "npm": ">=3"

node-coreは頑張っている。npmは対応中、npm v3のflat とかそれ。

差を詰めるmoduleも結構ある。 けど、ユーザーからするとどれを使っていいかわかりにくい。 知っていればできるけど知らないと実質できない問題がある。

npm run scripts is awesome, but

gruntつらいからのgulp、gulpつらいからのnpm run scripts

user moduleはきびしい

みんな大好きreactのmasterのrun scripts

"linc": "git diff --name-only --diff-filter=ACMRTUB `git merge-base HEAD master` | grep '\\.js$' | xargs eslint --",

https://github.com/facebook/react/blob/99fbde54a1486fe67b9f715950bfbf66bf3c881c/package.json#L51

あっ grep, xargs

個人的にきびしい & ほしい

  • find
  • grep
  • xargs
  • ENV_FOO=foo commandで一時的に環境変数付与

だれかwrapperかいてくれ

awesome lists作っているので参考にしてくれ&協力してくれ

jsだけでいいのでは cli要らない

cliになってて他言語からも使えると助かる

For users

for linux, mac users

for windows users

  • cmd.exeとかpowershellとかわからないんで教えて下さい
    • @echo off とかCmdletBinding()とかググりながら泣きながらコピペしてる
    • 動く環境も手元にないし… modern.IE とか使うんだろうか
  • 邪険に扱われてもあきらめないで

まとめ

  • bash, zsh, sh依存のコードは避けて、win/mac/linuxで共通のコマンドを使いましょう
  • というか、js使いましょう
  • appveyor使いましょう
    • esprimaのariya が紹介エントリ書いてる
    • appveyorでネットワークエラー頻発するのでイラッと来るけど泣かない
      • backendはazureやgceらしい
    • appveyor難しい…
      • 困ったらsupportに投げると、メイン開発者が対応してくれる
        • それはそれで大丈夫か…
    • appveyor、ユーザーごとに1並列なので、きびしい
    • が、リポジトリごとにアカウント取るとかしていろいろ厳しくなるとツライなと思ってそれはしてない。
    • appveyorはネットワークがつらい
    • appveyorつらいので知見を一緒にためよう

数は力 force of numbers

:power:

{
"dependencies": {
"express": "^4.13.3",
"marked": "^0.3.5",
"pify": "^2.3.0"
},
"scripts": {
"start": "node server.js"
}
}
const express = require('express');
const fs = require('fs');
const marked = require('marked');
const path = require('path');
const pify = require('pify');
const app = express();
const fileName = 'be-friendly-with-windows-users.md';
app.get('/', (req, res) => {
pify(fs.readFile)(path.join(__dirname, fileName)).then((val) => {
res.send(marked(val.toString()));
});
});
app.listen(3000, 'localhost', (err) => {
if (err) {
console.log(err);// eslint-disable-line no-console
return;
}
console.log('Listening at http://localhost:3000');// eslint-disable-line no-console
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment