From b22bacef7629ae574282c31a46e9445ba7759456 Mon Sep 17 00:00:00 2001 From: Thomas Coopman Date: Sat, 30 Sep 2017 18:11:29 +0200 Subject: [PATCH] introduce bucklescript and reason --- .gitignore | 4 +++- bsconfig.json | 9 +++++++++ package-lock.json | 27 +++++++++++++++++++++++++++ package.json | 3 +++ src/Bucklescript.ml | 2 ++ src/Reason.re | 1 + src/index.ts | 6 +++++- webpack.config.js | 11 ++++++++++- 8 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 bsconfig.json create mode 100644 src/Bucklescript.ml create mode 100644 src/Reason.re diff --git a/.gitignore b/.gitignore index 76add87..0eb492b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ node_modules -dist \ No newline at end of file +dist +lib +.merlin \ No newline at end of file diff --git a/bsconfig.json b/bsconfig.json new file mode 100644 index 0000000..7d26266 --- /dev/null +++ b/bsconfig.json @@ -0,0 +1,9 @@ +{ + "name": "typescript-with-bucklescript", + "version": "0.1.0", + "sources": [ + "src" + ], + "package-specs": ["es6"], + "bsc-flags": [ "-bs-super-errors -no-alias-deps", "-color", "always"] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c74b861..65278db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,11 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/node": { + "version": "8.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.31.tgz", + "integrity": "sha512-R+LdMJHJQwRd/Ca0Nr5KnwbSWHxTD3DWz4ivqoPeNH+YPcuirMWK+Ti9Mx32jOecmPhHOCd+6CefU5e1eVq2Ew==" + }, "accepts": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", @@ -320,6 +325,20 @@ "pako": "0.2.9" } }, + "bs-loader": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/bs-loader/-/bs-loader-1.8.0.tgz", + "integrity": "sha512-5rf9LY1J2wajedlkq1YD+2ML7RpoKR1X50ro9mZrPswDlfIR8Nembx2W1q4vYXNOtZNzKOE8+Ug83uGZG6veQA==", + "requires": { + "loader-utils": "1.1.0", + "read-bsconfig": "1.0.2" + } + }, + "bs-platform": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-1.9.3.tgz", + "integrity": "sha512-Y37L43zKPoAJh8t7fbcxLlMYPvsjGR/CZrOF5Mr9tVBq53OaRmSXF9rDRYHjdMY8Nhpp99f0AD8aKnrr/cH6jg==" + }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", @@ -2348,6 +2367,14 @@ "unpipe": "1.0.0" } }, + "read-bsconfig": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/read-bsconfig/-/read-bsconfig-1.0.2.tgz", + "integrity": "sha512-ctORfEnVKmbuvpkdItvgi/uZMlFWd+DGpbmetoN32fTfbfjogFARCnxbQBw+yln4dRMlpxx9Lkthfzdrk17JXA==", + "requires": { + "json5": "0.5.1" + } + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", diff --git a/package.json b/package.json index 1528780..2b22431 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,9 @@ "author": "", "license": "ISC", "dependencies": { + "@types/node": "^8.0.31", + "bs-loader": "^1.8.0", + "bs-platform": "^1.9.3", "source-map-loader": "^0.2.2", "ts-loader": "^2.3.7", "typescript": "^2.5.3", diff --git a/src/Bucklescript.ml b/src/Bucklescript.ml new file mode 100644 index 0000000..a78b75f --- /dev/null +++ b/src/Bucklescript.ml @@ -0,0 +1,2 @@ +let hello name = + Js.log {j|Hi $(name), from Bucklescript.|j} \ No newline at end of file diff --git a/src/Reason.re b/src/Reason.re new file mode 100644 index 0000000..3383d04 --- /dev/null +++ b/src/Reason.re @@ -0,0 +1 @@ +let hello name => Js.log {j|Hi $(name), from Reason.|j}; diff --git a/src/index.ts b/src/index.ts index a1121a1..dbcbec2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1 +1,5 @@ -console.log("Hello from Typescript"); \ No newline at end of file +const helloBucklescript = require('./Bucklescript').hello; +const helloReason = require('./Reason').hello; + +helloBucklescript('Typescript'); +helloReason('Typescript'); \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index c69aab8..34c6486 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,7 +14,7 @@ module.exports = { publicPath: '/dist/', }, resolve: { - extensions: ['.js', '.ts'], + extensions: ['.js', '.ts', '.ml', '.re'], }, module: { rules: [ @@ -30,6 +30,15 @@ module.exports = { loaders: ['ts-loader'], exclude: /node_modules/ }, + { + test: /\.(re|ml)$/, + use: { + loader: 'bs-loader', + options: { + module: 'es6', + } + } + }, ] } }; \ No newline at end of file