Minify JS build with terser
This commit is contained in:
parent
48743dda44
commit
b4c4dc48ff
5 changed files with 42 additions and 22 deletions
|
|
@ -25,6 +25,7 @@
|
|||
"homepage": "https://github.com/tree-sitter/tree-sitter#readme",
|
||||
"devDependencies": {
|
||||
"chai": "^4.2.0",
|
||||
"mocha": "^6.1.4"
|
||||
"mocha": "^6.1.4",
|
||||
"terser": "^3.17.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
const Parser = require('../../../target/release/tree-sitter.js');
|
||||
const Python = require.resolve('../../../target/scratch/tree-sitter-python.wasm');
|
||||
const JavaScript = require.resolve('../../../target/scratch/tree-sitter-javascript.wasm');
|
||||
const release = '../../../target/release'
|
||||
const Parser = require(`${release}/tree-sitter.js`);
|
||||
const JavaScript = require.resolve(`${release}/tree-sitter-javascript.wasm`);
|
||||
|
||||
module.exports = Parser.init().then(async () => ({
|
||||
Parser,
|
||||
JavaScript: await Parser.Language.load(JavaScript),
|
||||
Python: await Parser.Language.load(Python)
|
||||
}));
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
export EMCC_FORCE_STDLIBS=libc++
|
||||
|
||||
args="-Os"
|
||||
target_dir="target/release"
|
||||
if [[ "$1" == "--debug" ]]; then
|
||||
args="-s SAFE_HEAP=1 -O0"
|
||||
target_dir="target/debug"
|
||||
args="-s ASSERTIONS=1 SAFE_HEAP=1 -O0"
|
||||
fi
|
||||
|
||||
mkdir -p $target_dir
|
||||
mkdir -p target/scratch target/release
|
||||
|
||||
docker run \
|
||||
--rm \
|
||||
|
|
@ -21,7 +21,6 @@ docker run \
|
|||
-s WASM=1 \
|
||||
-s ALLOW_MEMORY_GROWTH \
|
||||
-s MAIN_MODULE=1 \
|
||||
-s ASSERTIONS=1 \
|
||||
-s EXPORT_ALL=1 \
|
||||
$args \
|
||||
-std=c99 \
|
||||
|
|
@ -34,4 +33,21 @@ docker run \
|
|||
--post-js lib/web/binding.js \
|
||||
lib/src/lib.c \
|
||||
lib/web/binding.c \
|
||||
-o $target_dir/tree-sitter.js
|
||||
-o target/scratch/tree-sitter.js
|
||||
|
||||
if [ ! -d lib/web/node_modules/terser ]; then
|
||||
(
|
||||
cd lib/web
|
||||
npm install
|
||||
)
|
||||
fi
|
||||
|
||||
lib/web/node_modules/.bin/terser \
|
||||
--compress \
|
||||
--mangle \
|
||||
--keep-fnames \
|
||||
--keep-classnames \
|
||||
-- target/scratch/tree-sitter.js \
|
||||
> target/release/tree-sitter.js
|
||||
|
||||
mv target/scratch/tree-sitter.wasm target/release/tree-sitter.wasm
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ root_dir=$PWD
|
|||
tree_sitter=${root_dir}/target/release/tree-sitter
|
||||
grammars_dir=${root_dir}/test/fixtures/grammars
|
||||
grammar_names=(
|
||||
c
|
||||
javascript
|
||||
python
|
||||
)
|
||||
|
|
@ -21,4 +22,4 @@ for grammar_name in ${grammar_names[@]}; do
|
|||
$tree_sitter build-wasm ${grammars_dir}/${grammar_name}
|
||||
done
|
||||
|
||||
mv tree-sitter-*.wasm target/scratch/
|
||||
mv tree-sitter-*.wasm target/release/
|
||||
|
|
|
|||
|
|
@ -7,17 +7,20 @@ bundle exec jekyll serve "$@" &
|
|||
|
||||
bundle exec ruby <<RUBY &
|
||||
require "listen"
|
||||
dir = "$root/target/release"
|
||||
puts "Watching #{dir}"
|
||||
listener = Listen.to(dir, only: /^tree-sitter\.(js|wasm)$/, wait_for_delay: 3.0) do
|
||||
puts "WASM files updated. Copying to docs folder..."
|
||||
system(
|
||||
"cp",
|
||||
"$root/target/release/tree-sitter.js",
|
||||
"$root/target/release/tree-sitter.wasm",
|
||||
"$root/docs/assets/js/"
|
||||
)
|
||||
|
||||
def copy_wasm_files
|
||||
`cp $root/target/release/*.{js,wasm} $root/docs/assets/js/`
|
||||
end
|
||||
|
||||
puts "Copying WASM files to docs folder..."
|
||||
copy_wasm_files
|
||||
|
||||
puts "Watching release directory"
|
||||
listener = Listen.to("$root/target/release", only: /^tree-sitter\.(js|wasm)$/, wait_for_delay: 2) do
|
||||
puts "WASM files updated. Copying new files to docs folder..."
|
||||
copy_wasm_files
|
||||
end
|
||||
|
||||
listener.start
|
||||
sleep
|
||||
RUBY
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue